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

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...