Netflow相关技术

article/2025/9/30 21:25:02

数据包和数据流

数据包是网络中传输的数据单位,每个数据段经过网络层层封装成为-个可以在网络中流动的包,
从源头到达目的地之后,被目标设备层层解析出来,获得里面的数据。
数据流是一个有序的数据包系列,它需要用一定的顺序进行读取。可以认为,数据流是一次活动包
含的几个部分的信息的连接,例如TCP的三次握手。数据流中包含多个数据包,这些数据包具有共
同的特点,就是IP五元组(源IP地址,源端口,目的IP地址,目的端口,传输层协议)相同。

Netflow

Netlow是一种网络数据包交换技术,用来对数据交换进行加速,同时统计经过网络设备的IP数据
流。Netflow建 立在会话级别上。每个数据流对应一个会话信息。Netflow包含两个部分,一个是
数据流的采集和缓存;另一个是通过UDP的数据导出机制。事实上,一个Netflow包含的都是同一
个TCP会话的数据,但一个TCP会话可能包含多个Netflow流。

数据采集

确定Flow的标识: SIP+ DIP+SPORT+DPORT +Layer 3 protocol type + TOS byte0 +
Router or switch interface
nfc格式的flow统计信息:源地址|目的地址|源自治域目的自治域|流入接口号|流出接口号|源端口|
目的端口|协议类型|包数量|字节数|流数量
Netflow通过识别low的信息,将flow加入到缓存中。随著flow数量的增加,缓存中的表项也在不
断增加,所以需要一个缓存维护机制来清理一些过期flow。 对flow的超时的指定方式:
1.空闲超过了指定空闲时间长度
2.长连接会话强制超时
3.缓存空间耗尽所触发的强制超时
4. TCP FIN/RST触发的超时。

数据导出

Netflow的数据导出是一种使用UDP的主动推送机制。
Netflow封装的格式是header+每个flow的详细记录。

Figure 1 Netflow报头格式

Figure 2 Netflow模板定义方式

Figure 3 Netflow数据部分

数据格式

二进制的数据流经过nfdump的解析。可以得到多种不同格式的文本数据。如以下几种:

raw      Raw record dump.
line     Standard output line format.
long     Standard output line format with additional fields.
csv      ',' separated, machine parseable output format.
json     json output format.
pipe     '|' separated legacy machine parseable output format.


这些不同格式包含了不同的属性信息,以各自定义的连接符把各个字段连接起来。在应用中,根据
实际需要使用相应的格式。在我的项目中,用的是pipe的格式,这一类型用“或”字符把每个字段
连接起来,下面介绍各个字段的含义,为了显示方便,将线性的字段连接分成三个部分,依次相连
就是pipe格式的一行数据。
 

Figure 4 nfdump -o pipe格式

在一个flow中,这些重要属性表示了netflow的各个数据包的统计信息:

●起始时间: flow中第一 个包的时间
●结束时间: flow中最后-一个包的时间
源IP :同属-个flow的包的源p相同
, 源端口:同属一个flow的包的源端口相同
。 目的IP :同属一个flow的包的目的ip相同
, 目的端口:同属一个flow的包的目的端口相同
● 包数:同属一个flow的包的数目
●字节数:同属一个flow的包的总字节数
●标志位: flow中的tcp包中含有的所有tcp flag

nfdump

一个收集、存储和统计分析netflow数据的开源软件。在路由或交换机上配置netflow数据收集传
输功能,在电脑上收集传过来的netflow数据包, 进行可视化和分析。最常用的命令是nfcapd和
nfdump ,它们分别负责收集存储和读取分析两个任务,所以收集和分析是互相独立的,可以分别
进行。并且因此可以查看和分析历史的网络数据,只要那些数据依然存放在存储器上。

nfcapd命令

nfcapd命令用于在终端设备上,例如网络管理器、主机等监听收集netflow数据 ,并存入文件。一
般来说, nfcapd会每五分钟创建一个新文件,然后写入。所以每个文件包含了5分钟的netlow数
据。
nfcapd命令创建的文件是不可直接阅读的二进制文件,因此需要nfdump来对其进行解析。
启动nfcapd监听,其中:

nfcapd -w -D -T all -l<dir>
-D:后台运行
-w:文件轮转与时间间隔对齐
-l:指定数据存放目录,注意这是一个目录,nfcapd将会写入很多个文件,这个目录要先创建好,否则会报bad address错误。
-p:指定监听端口,这个端口是和发送netflow的程序协商好的,要统一使用同一个。
更多参数含义参考[3]或见nfcapd -h

Notice :防火墙开启状态下,可能会收不到数据。检查并关闭防火墙:
systemctl status firewalld.service 
systemctl stop firewalld.service

nfdump命令

nfdump用于从本机数据文件中读取netlow信息并进行展示,也可以做一些简单的统计分析,或
者发送到其他主机上。
这个查询过程有点类似于数据库的查询方式,可以设置查询的时间范围、协议类型、源地址、目的
地址等字段的值,把符合条件的记录展示出来。

nfdump -r<file>
nfdump -r<file> -a
nfdump -r/R -口-0 <mode> > <dst_ file>
-r:读取单文件。指定文件名
-R: 读取多个文件,-R <first_ file>:<1ast fi1e>: -R.可以匹配目示下所有文件。
同样的sip. dip汇总展示
-b:整合成双向f1ow
-n:前n条记录
-M: 读取多个目示下同名文件,需要同时使用-r或-R. -M <dir1:dir....> -r/-R
更多参数含义参考[3]或nfdump -h


上面前两个命令只是输出在命令行中,第三个命令用于写入文件,可以指定写入的格式。这是-种
可以直接打开阅读的文本文件格式。
 

nfpcapd命令

nfpcapd命令可以监听网卡接口, 或者从pcap数据文件中读取数据包,然后统计并存储为netflow
形式的文件,可供nfdump命令读取。这个命令的作用大致相当于路由或交换机中的netflow统计
程序加Enfcapd命令的作用,但其统计的是计算机网卡的流量数据信息。因此,可以在路由上运
行nfpcapd用于收集netlow数据,转发给一 个主机,这个主机通过nfcapd来接收netflow并由
nfdump对其进行解析。

nfpcapd -i <interface> -l <filename>
-i:指定监听的网卡接口卡
-l:netflow数据存储文件名
更多参数如pcap数据文件等参考nfpcapd -h

探索实验

netflow本身有些机制,例如空闲超时机制、长会话超时机制、与tcp会话的对应关系等等,这些一
方面可以通过阅读源码进行探索,另- -方面也可以用wireshark结合nfdump来做实验。实验中,
用一台物理机开启了wireshark抓包,在虚拟机中使用nfpcapd进行监听,然后将两者的结果进行
对比。由于netlow是具有统计意义的概念,而wireshark是对数据包的获取和协议解析,经过过
滤统计的操作,可以将两者的结果做比较。两个监听工具开启完成后,在物理机上用python远
程登录虚拟机,然后按照需要, 执行- -定频率的命令操作。其实就是为了产生数据包而已。之前探
兖了一下空闲超时机制和长会话超时机制,将实验结果展示出来。

import paramiko
import timeip = ''
port = 22
username = 'root'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, username=username)exec_cmd = 'ls'
idx = 0
while idx < 4:stdin, stdout, stderr = ssh.exec_command(exec_cmd)print(stdout.read().decode('utf-8'))idx += 1time.sleep(15)ssh.close()

实验1:验证空闲超时时长为60s的猜想

用python脚本定时每30s输入命令,观察5min内netflow记录:

用python脚本定时每80s输入命令,观察netflow记录:

结论:如果80s产生- -次数据流,则netlow会得到很多个flow ,因此netflow的空闲超时机制小于
80s ;当30s产生一次数据流, netlow只会有一个low ,所以空闲超时机制超过30s。经过更加细
粒度的试验,能够发现这个值接近于60s。

实验2 :验证长会话超时为5 mins的猜想

用python脚本每秒不断输入命令,观察是否连续30分钟后会出现长连接会话强制超时现象表格展
示前6个flow ,后面6个类似。

结论:每个low都在300s多-一些 ,并且查阅nfpcapd -h发现默认长度是300s ,可以根据需要修
改。Tcp的三次握手对应了flow的起始,四次挥手或RST包对应了flow的终止。
空闲超时时长查阅结果是60s ,在实验中只能大概推知60左右,数据无法完全确定这个值。
这些探索实验不-定能够准确无误地获得相关参数的值,但可以让我们更加直观地认识netflow的
机制和netlow相关I具的运行,也是计算机人士发挥动手能力、探索好奇的途径。

参考资料
NetFlow学习笔记. https://blog.csdn.net/jack237/article/details/7371314.
【NetFlow】NetFlow V9协议详细分析. https://blog.csdn.net/simonchi/article/details/71440362
网络流量分析利器-可视化网络-netflow【4】-接收器nfdump简介. https://blog.csdn.net/cnxhsy/article/details/104665404
nfdump的GitHub地址:https://github.com/phaag/nfdump
 原文链接:https://zhuanlan.zhihu.com/p/356098676

学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂
更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,久学习,或点击这里加qun免费
领取,关注我持续更新哦! ! 


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

相关文章

Netflow及其及配置案例

NetFlow 是Cisco发布的一款用于分析网络数据包信息的工具包&#xff1b; 根据不同的需要定制不同的方案&#xff1b; 典型的是对网络数据的源地址、目的地址的分析&#xff0c;对流量各种应用的分析或者路由器上各个端口的负载等&#xff1b; addr、dstaddr、port、dstport、pr…

路由器安全-NetFlow

1、NetFlow介绍 提供高层次的诊断&#xff0c;分类和识别网络异常。使用NetFlow来检查哪些行为改变明显的攻击是非常有效的。就像Wiretap一样捕获数据包。NetFlow像电话账单。&#xff08;谁和谁在通话&#xff0c;通过什么协议和端口&#xff0c;多长时间&#xff0c;速度如何…

NetFlow学习笔记

NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图&#xff0c;记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录&#xff0c;但是当汇集起来时&#xff0c;它更加易于管理和易读。Netflow由Cisco创造。 工作原理&#xff1a;NetFlow利用…

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

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

BW系列之数据源

SAP BI 的数据源不局限于SAP 系统&#xff0c;所有向SAP BI 传输数据的系统都称为源系统。几乎任何来源的数据可被用来在SAP BI 中进行数据抽取。如下图所示&#xff0c; 1. 源系统的类型 源系统的主要类型包括以下几种: 1) SAP 系统&#xff0c;如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&#xff0c;分别为自定义数据源名称&#xff0c;type指定数据源使用的连接池。 2.新建类DataSourceProperties用于读取yml文件中的自定义数据源属性 Component public class DataSourceProperties {Value("${spring.datasource.am…

Spring Boot使用动态数据源

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

SpringBoot整合MybatisPlus多数据源

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

Springboot/MybatisPlus动态切换数据源

1.1 简述 最近项目中有动态切换数据源需求&#xff0c;主要是要动态切换数据源进行数据的获取&#xff0c;现将项目中实现思路及代码提供出来&#xff0c;供大家参考。当然切换数据源还有其他的方式比如使用切面的方式&#xff0c;其实大体思路是一样的。 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实现多数据源配置

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot实现多数据源配置 ⏱️ 创作时间&#xff1a; 2022年06月13…

SAP 数据源

SAP BW或者BI作为数据仓库会抽取SAP系统数据和非SAP系统数据&#xff0c;源系统的主要类型有以下几种&#xff1a; 1、SAP系统&#xff1a;R/3、S/4、CRM、等&#xff0c; 2、文本文件&#xff1a;将数据库转化为XML或者CSV文件放在FTP上&#xff0c;然后去读取数据&#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]的解释 总结 序言 当我们拿到一堆数据的时候&#xff0c;几乎不可能通过我们的肉眼分辨出数据的分布情况&#xff0c;这时候就想要通过图展示数据的分布&#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.…

数据可视化的历史

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

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

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

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

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