Netflow相关技术
创始人
2024-04-03 20:40:02
0

数据包和数据流

数据包是网络中传输的数据单位,每个数据段经过网络层层封装成为-个可以在网络中流动的包,
从源头到达目的地之后,被目标设备层层解析出来,获得里面的数据。
数据流是一个有序的数据包系列,它需要用一定的顺序进行读取。可以认为,数据流是一次活动包
含的几个部分的信息的连接,例如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
-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
nfdump -r -a
nfdump -r/R -口-0  > 
-r:读取单文件。指定文件名
-R: 读取多个文件,-R :<1ast fi1e>: -R.可以匹配目示下所有文件。
同样的sip. dip汇总展示
-b:整合成双向f1ow
-n:前n条记录
-M: 读取多个目示下同名文件,需要同时使用-r或-R. -M  -r/-R
更多参数含义参考[3]或nfdump -h


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

nfpcapd命令

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

nfpcapd -i  -l 
-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免费
领取,关注我持续更新哦! ! 

相关内容

热门资讯

植树节英语作文【精选6篇】 植树节英语作文 篇一Planting Trees on Arbor DayArbor Day is ...
我的生活英语作文(通用6篇) 我的生活英语作文 篇一My Daily RoutineMy daily routine starts...
英语词语辨析:because... 英语词语辨析:because与 because of的区别 篇一因果关系的表达是英语中非常重要的语法...
英语范文我的旅行计划18篇(... 英语范文我的旅行计划18篇 篇一My Travel Plan to ParisParis, the ...
初见英语老师200字作文【优... 初见英语老师200字作文 篇一初见英语老师初中时的我,对英语可谓是一无所知。记得那年开学第一天,我们...
快乐的一天英语作文【精简3篇... 快乐的一天英语作文 篇一:我的快乐一天Today was a truly happy day for...
英语词语学习:outsour... 英语词语学习:outsource 篇一Outsource: Understanding the Co...
创造性英语征文范文【优秀6篇... 创造性英语征文范文 篇一标题:The Power of ImaginationImagination...
青年英语作文(通用6篇) 青年英语作文 篇一:如何提高英语口语能力In today's globalized world, h...
top of the wor... top of the world歌词  top of the world是一首极为经典的英文歌曲,中...
英语四级写作常用单词 英语四级写作常用单词  在学习、工作乃至生活中,大家一定都接触过英语吧,下面是小编收集整理的英语四级...
事业目标英语范文初一(优选6... 事业目标英语范文初一 篇一My Career GoalsAs a freshman in high ...
网购的英语作文【精彩3篇】 网购的英语作文 篇一Online ShoppingIn recent years, online s...
童话故事英语作文【优秀3篇】 童话故事英语作文 篇一: The Magic AppleOnce upon a time, in a...
英语作文范文关于理想工作(通... 英语作文范文关于理想工作 篇一Title: My Ideal JobIntroduction:Eve...
英语朗读比赛作文【实用5篇】 英语朗读比赛作文 篇一The Power of ReadingReading is a powerf...
谦虚的英语作文带翻译【优选3... 谦虚的英语作文 篇一Title: The Importance of Humility in Lif...
母亲的眼睛英语作文【最新3篇... 母亲的眼睛英语作文 篇一Title: The Eyes of a MotherA mother's ...
关于食物的英语句子【精彩4篇... 关于食物的英语句子 篇一Food plays a crucial role in our daily...
书信英语作文范文高中模板88... 书信英语作文范文高中模板88篇 篇一Dear [收信人的姓名],I hope this letter...