NetFlow

article/2025/10/14 6:40:13

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
             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/lHR72yda.shtml

相关文章

failed to create network error response from daemon filed to setup ip tables问题

问题 今天在环境上搭建平台,执行docker-compose up -d 报错 Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-b649822bbcff -j RETURN: iptables: No chai…

Devtools 热部署

文章目录 前言使用步骤 1.引入库2.配置总结 前言 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊 一、使…

内网渗透的那些net命令|Net config|Net

Net命令 Net命令是一个命令行命令,Net命令有很多函数用于实用和核算计算机之间的NetBIOS连接,可以查看我们的管理网络环境,服务,用户,登陆等信息内容 Net使用方法 显示当前域的计算机列表net view 查看指定计算机的共享资源列表net view \test 查看共享的资源net share 查看…

failed to load response dataRequest content was evicted from inspector cache

在项目中,我用谷歌浏览器查看后台返回的json数据,但是发现前端页面已经接收成功,并且渲染了对应json数据了,但是network里面的response却报错: 调整对应json数据后发现,当后台返回前端的数据超过了一定大…

火狐浏览器提示响应已被截断(有效解决)

产生问题如下:JSON传递数据超过1M 解决方案: 第一步:地址栏输入about:config 第二步:devtools.netmonitor.responseBodyLimit 改为0,相当于禁用大小限制,保存之后即可。

failed to load response data:Request content was evicted from inspector cache

在项目中,我用谷歌浏览器查看后台返回的json数据,但是发现前端页面已经接收成功,并且渲染了对应json数据了,但是network里面的response却报错: 调整对应json数据后发现,当后台返回前端的数据超过了一定大…

必须做作业三:Network-Monitor观察者模式解析

一、总述 观察者模式,由观察者和被观察对象组成,java已经提供了相关类供我们开发者调用! 当数据变化时,Observable会通知集合里的所有观察者对象!具体在数据变化后,app调用Observable的notifyObservers方法,那么 集合里的所有Observer的update()会被执行! 设计其实很简单&#…

n个数 全排列算法

全排列 给定N个数&#xff0c;如 [1,2,3,4,5]&#xff0c;获取它的全排列 经典交换算法 核心思路是交换 #include<stdio.h> void swap(int* a, int* b){int temp *a;*a *b;*b temp; } //int a[] { 1,2,3,4}; //sort(a, 0, 4); void sort(int* a, int k, int m){…

全排列算法(C语言)

全排列算法&#xff08;C语言&#xff09; 思路图形理解树结构 代码 思路 图形理解 我看先看一下从1–4的全排列&#xff0c;如下&#xff1a; &#xff08;1&#xff09;就整体排列而言可以分为四组&#xff0c;分别是以1打头的&#xff0c;以2打头的&#xff0c;以3打头的&a…

全排列算法(无重复数字全排列/有重复数字全排列)/ 组合算法/ 求子集算法

写在前面全排列1 无重复数字全排列1.1 紫书版本1.2 回溯法 2 有重复数字全排列 复盘易错点&#xff08;可跳过&#xff09; 写在前面 很久很久以前就想写的一篇博客&#xff0c;因为懒一直没开工&#xff0c;但是学习全排列算法算是我对递归理解的转折点&#xff0c;感觉很有意…

全排列算法的全面解析

概述 对数组进行全排列是一个比较常见问题&#xff0c;如果是一个比较喜欢考算法的公司&#xff08;貌似一些大公司都比较喜欢考算法&#xff09;&#xff0c;那么估计就会考察应聘者这个全排列的问题了&#xff08;就算不让你编写完整代码&#xff0c;也会让你描述大致的思路&…

【算法】——全排列算法讲解

前言&#xff1a; 今天&#xff0c;我给大家讲解的是关于全排列算。我会从三个方面去进行展开&#xff1a; 首先&#xff0c;我会给大家分析关于全排列算法的思想和定义&#xff1b;紧接着通过手动实现出一个全排列代码来带大家见见是怎么实现的&#xff1b;最后我会给出两道题…

算法 | 全排列问题(图文详解)

目录 一.全排列的定义 1.什么是全排列 2.例子 二.code 三.分析 一.全排列的定义 1.什么是全排列 从n个不同元素中任取m&#xff08;m≤n&#xff09;个元素&#xff0c;按照一定的顺序排列起来&#xff0c;叫做从n个不同元素中取出m个元素的一个排列。当mn时所有的排列情…

全排列算法思路解析

1.全排列的定义和公式&#xff1a; 从n个数中选取m&#xff08;m<n&#xff09;个数按照一定的顺序进行排成一个列&#xff0c;叫作从n个元素中取m个元素的一个排列。由排列的定义&#xff0c;显然不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数&#…

全排列算法

全排列的概念 排列 从n个数中选取m&#xff08;m<n&#xff09;个数按照一定的顺序进行排成一个列&#xff0c;叫作从n个元素中取m个元素的一个排列。不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数&#xff0c;称为排列数&#xff08;几种排法&#…

激活JRebel

生成新的 GUID 将生成的GUID 粘贴到此处 https://jrebel.qekang.com/ 如&#xff1a; https://jrebel.qekang.com/cf0c9d95-c31f-4e75-bc5a-146291b8bb71

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用 嘚吧嘚设置JRebel快捷键XRebel使用 嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用&#xff0c;不了解的朋友可以补补课哈&#x1f606;。 JRebel&XRebel这款插件不仅仅可以用来热部署&#xff0c;所以继续分享一下这款插件的相关使…

IDEA热部署JRebel插件激活教程

JRebel简介 JRebel是一款实现热部署的开发工具&#xff0c;它可以允许你在启动程序时修改java代码直接进行编译生效&#xff0c;无须手动重启。热部署的实现会为你节省了大量重启时间&#xff0c;明显提高个人开发效率。 安装JReable 同其它插件安装一样&#xff0c;请按照以…

Idea热部署插件JRebel+XRebel

1、下载地址&#xff1a;https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 保险起见这里建议下载2022.4.1版本&#xff0c;否则容易出现JRebel LS client not configured的问题&#xff0c;如果你已经出现了&#xff0c;可以参考 https://blog.csdn.ne…

JRebel 热部署

前言 Jrebel 可快速实现热部署&#xff0c;节省了大量重启时间&#xff0c;提高了个人开发效率。 IDEA上原生是不支持热部署的&#xff0c;一般更新了 Java 文件后要手动重启 Tomcat 服务器&#xff0c;才能生效&#xff0c;浪费时间浪费生命&#xff0c;目前对于idea热部署最…