NetFlow学习笔记

article/2025/9/30 22:07:38
NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读。Netflow由Cisco创造。
 
工作原理:NetFlow利用标准的交换模式处理数据流的第一个IP包数据,生成NetFlow 缓存,随后同样的数据基于缓存信息在同一个数据流中进行传输,不再匹配相关的访问控制等策略,NetFlow缓存同时包含了随后数据流的统计信息。NetFlow有两个核心的组件:NetFlow缓存,存储IP流信息;NetFlow的数据导出或传输机制,NetFlow利用此机制将数据发送到网络管理采集器。
概念:一个NetFlow流定义为在一个源IP地址和目的IP地址间传输的单向数据包流,且所有数据包具有共同的传输层源、目的端口号。
 
确定Flow的标识:SIP+DIP+SPORT+DPORT  +Layer 3 protocol type + TOS byte() + Router or switch interface

数据采集格式
  NFC(Cisco NetFlow Collector) 可以定制多种NetFlow数据采集格式,下例为NFC2.0采集的一种流量数据实例,本文的分析都基于这种格式。

             61.*.*.68|61.*.*.195|64917|Others|9|13|4528|135|6|4|192|1
  数据中各字段的含义如下:
       源地址|目的地址|源自治域|目的自治域|流入接口号|流出接口号|源端口|目的端口|协议类型|包数量|字节数|流数量
 
cache缓存空间

可配置的Cache维护机制

一般情况下Cache空间的占用是与所监控的Flow数量呈正比的,但是当链路中充斥着大量的短连接Session时,
Flow表项数量可能会因为没有得到及时释放而过多占用有限的Cache空间。为此,NetFlow提供了一种非常复杂、
高效的算法以快速定位一个数据包在该Cache中的位置或判断是否应新建表项,并且通过管理员给定
的阀值进行各类表项的超时导出,从而及时释放老的表项以容纳新建Flow信息。
Flow Cache表项 Timed-Out操作可由以下几项因素进行驱动:
该表项已经空闲了指定的时间长度(Inactive Timer,缺省15 seconds);
          长连接会话 强制超时(Active Timer,缺省 30 minutes);
          缓存空间耗尽所触发的强制超时;
          TCP FIN/RST触发的超时。

规范的导出报文格式
NetFlow采用了主动式数据推送机制,一般用UDP传送。
NetFlow的封装格式分为1个Header和若干个Record:
Header:主要包括版本号、序列号、后续Record数量、系统启动时间等;
   Record:提供对每个Flow的详细数据记录。
下文以NetFlow V9为例,输出报文Header与Record整体结构如下所示:
在上述格式中,各字段的具体含义描述如下:  
  表格3-3 NetFlow V9各字段含义

字段名称

所处位置

字段长度

含义

Version

Header

2 Bytes

版本号,0x0009

Count

2 Bytes

报文中所有记录的数量(包括template and data两种类型)

System Uptime

4 Bytes

自网元设备加电以来的毫秒数

Unix Seconds

4 Bytes

网元设备当前机器时间(与所在时区相关)与格林威治时间(亦即”0 UTC”)197011 000秒之间的秒数差额

Package Sequence

4 Bytes

网元设备所导出的Flow报文的序列号,顺序递增,可用以检测Flow报文丢失。

Source ID

4 Bytes

0x0000+路由引擎标识+线路板卡标识构成,可与Flow报文源IP地址结合起来唯一的标识Flow信息导出节点。

FlowSet ID

Template FlowSet

2 Bytes

用以区分Template RecordData RecordTemplate RecordFlowSet ID 位于0~255之间,而 Data Record FlowSet ID 总在255以上。

Length

2 Bytes

FlowSet的总体长度。

Template ID

Template Record

2 Bytes

开始一个新的Template Record,声明一个新的Data Record格式的编号ID,数值总大于255,在该网元设备本地有效。

Field Count

2 Bytes

Template Record所包含的字段数量。

Field 1 Type

2 Bytes

开始一个新字段的定义,说明该字段的类型,类型编号与厂商相关,CiscoNetFlow V9中总共定义了89种类型

Field 1 Length

2 Bytes

上述所定义的字段的长度。

……

……

……

Field N Type

2 Bytes

开始第N个新字段的定义,说明该字段的类型。

Field N Length

2 Bytes

上述所定义的字段的长度。

FlowSet ID

Data FlowSet

2 Bytes

引用一个Template Record ID以开始一个新的Data FlowSet。该字段数值总在255以上。

Length

2 Bytes

Data FlowSet的总体长度。

Record 1 - Field 1 value

Data Record

2 Bytes

1Data Record的第1个字段的数值。

……

……

……

Record 1 - Field N value

2 Bytes

1Data Record的第N个字段的数值。

Record N - Field 1 value

2 Bytes

NData Record的第1个字段的数值。

……

……

……

Record N - Field N value

2 Bytes

NData Record的第N个字段的数值。

……

……

……

Padding

报文尾部

填充位,将该Data FlowSet补齐至N*32 bits长度。这些填充位将计算入该Data FlowSetLength数值。

Template功能:NetFlow V9是首先对Template进行支持的版本,
通过Template功能NetFlow V9获得了前所未有的扩展灵活性。
Template描述了NetFlow输出记录的各字段定义,无需改变现有
规范即可支持将来可能出现的增强功能,从而无需重新编译、
修改流量采集分析系统即可快速支持新增功能特征。

     Flow具备详尽的会话描述能力。在NetFlow V9中,缺省提供了多达89种字段类型,并允许通过Template和
Aggregation机制进行任意组合、汇聚,能够详细描述流量分布的各类特征.

NetFlow与SNMP的不同

  无论是MIB还是后来的RMON,SNMP所针对的信息一般都围绕网元设备展开,如Interface吞吐率、
接收到的坏帧数量、CPU/RAM利用率等。
而NetFlow正如同它的名字一样,其所关注的重点在于网络链
路上所传输流量的特征信息,并且这些信息能够更直接的反映出当前网络上访问行为分
布以及合同客户此时所得到的真实的服务质量水平。

  NetFlow与SNMP的主要差异可以从以下几点得到说明:
  NetFlow关注流量特征,SNMP关注设备状态;
  NetFlow直接围绕Session会话连接进行数据提取,而SNMP则以物理接口为基本单位进行数据统计;
  从Agent角度来看,NetFlow采用数据主动推送技术,SNMP则主要采取被动轮询机制;
  NetFlow数据信息更为丰富、描述能力更强;
  NetFlow支持抽样操作,具备良好的扩展弹性,能够更好适应高端网络实际需求;
  SNMP功能通常随着设备销售而免费提供,而在很多现有设备中,NetFlow作为增值功能则需要额外
购买许可License或特定软件包。
  因此,在网络流量测量及分析系统中,如异常流量分析系统,NetFlow已经成为一个重要的数据提取方式,
为高端网络骨干链路的实时流量采集
分析提供高效、准确的数据摘要提取服务,是网络流量分析阵营不可或缺的基础技术。

 
限制条件
     需要网络设备对NetFlow的支持,需要分析NetFlow数据的工具软件,需要网络管理员准确区分正常流量数据和异常流量数据等。 

挑战者SFlow
     NetFlow一样,sFlow是一种向采集器发送报告的推送技术。所不同的是,NetFlow是一种基于软件的技术,而sFlow则采用内置在硬件中的专用芯片。这种做法消除了路由器或交换机的CPU和内存的负担。
     sFlow系统的基本原理为:分布在网络不同位置的sFlow代理把sFlow数据报源源不断地传送给中央sFlow采集器,采集器对sFlow数据报进行分析并生成丰富的、实时的、全网范围的传输流视图。
     sFlow是一种纯数据包采样技术,即每一个被采样的X包的长度被记录下来,而大部分的包则被丢弃,只留下样本被传送给采集器。由于这项技术是基于样本的,如果没有复杂的算法来尝试推测准确的会话字节量,那么几乎不可能获得每台主机流量100%的准确值。在使用这项技术时,交换机每隔100个数据包(可配置)对每个接口采一次样,然后将它传送给采集器。sFlow的规格也支持11的采样率,即对每一个数据包都进行“采样”。对数据包最大采样频率的限制取决于具体的芯片厂商和sFlow实现情况。
     NetFlow更多的是在路由器上得到支持,而sFlow则在交换机上更加流行。两者都是开放标准,但在非常大的流量传输环境中,sFlow采样架构可能要优于NetFlows汇集方式。

其他Flow

Flow名称

代表厂商

主要版本

备注

NetFlow

Cisco

V1V5V7V8V9

应用最广

CFlowd

Juniper

V5V8

厂商跟进力度不高

sFlow

FoundryHPAlcatelNECExtreme

V4V5

实时性较强,具备突出的第二~七层信息描述能力

NetStream

华为

V5V8V9

NetFlow较为类似

IPFIX

IETF标准规范

RFC 3917

NetFlow V9为蓝本


参考:流量分析新贵--NetFlow  http://www.enet.com.cn/ediy/inforcenter/enet_z.jsp?articleid=20060809158100
          百度百科   http://baike.baidu.com/view/490587.htm
          NetFlow还是SFlow    http://www.ccw.com.cn/cso/htm2008/20080225_382116.shtm
          NetFlow流量采集与聚合的研究实现  http://www.21ic.com/app/analog/200907/44851.htm
          Introduction to Cisco IOS NetFlow - A Technical Overview 
                 http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps6601/prod_white_paper0900aecd80406232.html


http://chatgpt.dhexx.cn/article/YCe3xIyk.shtml

相关文章

Tableau基础操作——连接数据源

Tableau基础操作——连接数据源 Tableau基础操作——连接数据源 前言 随着大数据时代的到来,借助于数据分析工具深入分析并可视化呈现变得越来越重要。而Tableau以其低功能强大且学习成本低被越来越多的企业所使用 一、Tableau是什么 Tableau可以方便用户实现快速…

BW系列之数据源

SAP BI 的数据源不局限于SAP 系统,所有向SAP BI 传输数据的系统都称为源系统。几乎任何来源的数据可被用来在SAP BI 中进行数据抽取。如下图所示, 1. 源系统的类型 源系统的主要类型包括以下几种: 1) SAP 系统,如SAP R/3, SAP ERP, SAP CRM, …

SpringBoot动态切换数据源

1、配置文件中配置多个数据库连接 # mysql配置 spring.datasource.local.jdbc-urljdbc:mysql://192.168.1.115:3308/cq_njdd?useUnicodetrue&characterEncodingutf-8&useSSLfalse&serverTimezoneAsia/Shanghai spring.datasource.local.usernameroot spring.data…

springboot jpa 多数据源配置

1.yml多数据源配置 amdb,josdb,josdbqy,分别为自定义数据源名称,type指定数据源使用的连接池。 2.新建类DataSourceProperties用于读取yml文件中的自定义数据源属性 Component public class DataSourceProperties {Value("${spring.datasource.am…

Spring Boot使用动态数据源

文章目录 前言一、什么是动态数据源二、动态数据源实现1.实现原理2.实现过程 前言 有这样一个场景,现在要开发一个数据API功能,用户自己编写数据源脚本,在界面任意选择一个数据源,可选择的数据源列表中数据源类型是多样的&#x…

SpringBoot整合MybatisPlus多数据源

相信在很多使用MybatisPlus框架的小伙伴都会遇到多数据源的配置问题,并且官网也给出了推荐使用多数据源 (dynamic-datasource-spring-boot-starter) 组件来实现。由于最近项目也在使用这个组件来实现多数据源切换,因此想了解一下该组件是如何运行的&…

Springboot/MybatisPlus动态切换数据源

1.1 简述 最近项目中有动态切换数据源需求,主要是要动态切换数据源进行数据的获取,现将项目中实现思路及代码提供出来,供大家参考。当然切换数据源还有其他的方式比如使用切面的方式,其实大体思路是一样的。 1.2 设计思路与代码…

Spring数据源配置

目录 Spring相关的API ApplicationContext的继承体系 ApplicationContext的实现类 getBean()方法使用 Spring配置数据源(连接池) 数据源的开发步骤 加载配置文件方式创建 将DateSource的创建权交给Spring容器去完成 抽取jdbc配置文件 Spring相关的API ApplicationContex…

Java 动态数据源配置

目录 一、动态数据源介绍 1. AbstractRoutingDataSource 2. 实现逻辑 二、源代码 1. 修改配置文件类 2. 创建数据源枚举 3. 数据源切换处理 4. 继承AbstractRoutingDataSource 5. 注入数据源 6. 自定义多数据源切换注解 7. AOP拦截类的实现 8. 使用切换数据源注解 …

SpringBoot实现多数据源配置

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: SpringBoot实现多数据源配置 ⏱️ 创作时间: 2022年06月13…

SAP 数据源

SAP BW或者BI作为数据仓库会抽取SAP系统数据和非SAP系统数据,源系统的主要类型有以下几种: 1、SAP系统:R/3、S/4、CRM、等, 2、文本文件:将数据库转化为XML或者CSV文件放在FTP上,然后去读取数据&#xf…

Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_min, x_max = np.min(data, 0), np.max(data, 0)data = (data - x_min) / (x_max - x_min)fig = plt.figure()ax = plt.s…

降维算法PCA的应用----高维数据的可视化

文章目录 序言废话不多说看代码导入相关模块数据提取降维降维后数据信息展示新的特征矩阵 可视化关于X_dim2[yi, 0]的解释 总结 序言 当我们拿到一堆数据的时候,几乎不可能通过我们的肉眼分辨出数据的分布情况,这时候就想要通过图展示数据的分布&#x…

学习笔记 | 用距离之距离(DoD)变换改进高维数据可视化

文章目录 一、论文关键信息二、主要内容三、总结CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Improved visualization of high-dimensional data using the distance-of-distance transformation 论文地址:https://doi.org/10.1371/journal.…

数据可视化的历史

数据可视化的历史 可视化发展史与测量、绘画、人类现代文明的启蒙和科技的发展一脉相承。在地图、科学与工程制图、统计图表中,可视化理念与技术已经应用和发展了数百年。 17世纪之前:图表萌芽 16世纪时,人类已经掌握了精确的观测技术和设…

【数据可视化】复杂高维多元数据的可视化

1 高维多元数据 每个数据对象有两个或两个以上独立或者相关属性的数据。高维指数据具有多个独立属性,多元指数据具有多个相关属性。由于研究者在很多情况下不确定数据的属性是否独立,因此通常简单地称之为多元数据。例如:电脑配置。 高维多元…

平行坐标图:高维数据可视化必备图形

关于数据可视化,我们之前分享过很多基础图表和进阶图表,都是一些我们常见的图表,如折线图,柱状图,饼图等等。今天分享一个大家应该见过但是不那么熟悉的图表-平行坐标图。 平行坐标图的定义 平行坐标图可以说是折线图…

Umap高维数据可视化与降维

Umap解决高维数据可视化的问题,以及高效降维。 Umap地址:https://github.com/lmcinnes/umap 文档地址:UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction — umap 0.5 documentation 1.pip通过清华镜像安装方式&#xff…

【数据艺术科技1】基于pyhon的高维数据可视化。(1、2维)

引言 描述性分析是与数据科学项目甚至特定研究相关的任何分析生命周期的核心组成部分之一。数据聚合、汇总和可视化是支持这一数据分析领域的一些主要支柱。从传统商业智能时代到如今的人工智能时代,数据可视化一直是一种强大的工具,并因其在提取正确信…

python高维数据可视化_【机器学习】(十六)主成分分析PCA:高维数据可视化、特征提取...

主成分分析(PCA)是一种旋转数据集的方法,旋转后的特征在统计上不相关。 用PCA做数据变换 首先,算法在原始数据点集中,找到方差最大的方向(包含最多信息),标记为‘成分1’。->找到与“成分1”正交(成直角)且包含最多信息的方向,标记为“成分2”。利用这一过程找到的方向…