数据包和数据流

数据包是网络中传输的数据单位,每个数据段经过网络层层封装成为-个可以在网络中流动的包,
从源头到达目的地之后,被目标设备层层解析出来,获得里面的数据。
数据流是一个有序的数据包系列,它需要用一定的顺序进行读取。可以认为,数据流是一次活动包
含的几个部分的信息的连接,例如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免费
领取,关注我持续更新哦! !

Netflow相关技术相关推荐

  1. EF-Entity Framework 相关技术点收集贴

    不定期.偶尔.添加更新 在网络上看到或者自己开发过程中碰到的EF-Entity Framework相关技术点 本文地址:http://www.cnblogs.com/vnii/archive/2012 ...

  2. iOS-FXDanmaku弹幕库介绍、相关技术分享

    前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...

  3. NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴

    NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴:

  4. Python GUI编程-了解相关技术[整理]

    Python GUI编程-了解相关技术[整理] 我们可以看到,其实python进行GUI开发并没有自身的相关库,而是借用第三方库进行开发.tkinter是tcl/tk相关,pyGTK是Gtk相关,wx ...

  5. [转]国内各大互联网公司相关技术站点2.0版 (集合腾讯、阿里、百度、搜狐、新浪、360等共49个)...

    利用闲暇时间整理了一份国内各大互联网公司的相关技术站点,希望能够对大家有所帮助,也欢迎各位帮忙补充. 腾讯系列(13)  阿里系列(18)  百度系列(3)  搜狐系列(3)  新浪系列(2)  36 ...

  6. 【深度学习】计算机视觉相关技术探索(一)

    [深度学习]计算机视觉相关技术探索(一) 文章目录 1 计算机视觉概述 2 使用机器学习解决图像分类问题 3 Keras和神经网络简介 4 卷积神经网络(CNN),迁移学习 5 对象检测问题 6 yo ...

  7. Python后端相关技术/工具栈

    Python后端相关技术/工具栈 转载http://python.jobbole.com/83486/ 整理下目前涉及到的python的技术栈和工具栈(用过或了解的, 其他的后续用到再补充) 编辑器 ...

  8. 《Science》杂志:机器学习究竟将如何影响人类未来的工作? 2018-01-11 Smiletalker AI科技评论 AI 科技评论按:人工智能、机器学习相关技术已经多次刷新了人们对于「计算机能

    <Science>杂志:机器学习究竟将如何影响人类未来的工作? 2018-01-11SmiletalkerAI科技评论 AI 科技评论按:人工智能.机器学习相关技术已经多次刷新了人们对于「 ...

  9. 【转】BI 入门: 体系架构及相关技术

    (1) 老板,你要这么多数据做什么?         假如你是一个商品零售公司的老板.     你的公司很先进,已经实现了业务信息化,每一笔销售单据都保存在数据库中,日积月累,已经保存了十余年的销售数 ...

最新文章

  1. java 线程组作用_浅析Java中线程组(ThreadGroup类)
  2. 分布式架构下的“负载均衡”
  3. MySQL 存储过程参数:in、out、inout
  4. android 蓝牙编程重点---如何发送和接收16进制数据
  5. winform图片操作
  6. UCI数据库使用说明
  7. 你还在为python中的列表、元组、字典发愁嘛,别愣着了,快来看!
  8. Undefined和Null的区别
  9. 了解DPDK——内核NIC接口
  10. 网站服务器日志包含什么,查看网站日志有什么作用?
  11. 搜狐狐友社交软件可以组合各个产品的用户量
  12. 二级c语言自学免费下载,二级C语言学习宝典
  13. 从业编程生涯十年,你要了解的程序员养生之道,以及进阶之路。
  14. 将images按照2:1:1的比例随机分成train,validate,test
  15. link和@import的区别:
  16. 不要逼我……我想做乖孩子
  17. 智能合约_HPB智能合约最佳实践
  18. python web项目源码下载_python web 源码范例
  19. 涉密计算机打印机共享案例分析,又碰到2个打印机无法共享的案例(打印机共享的四个步骤)...
  20. 软件开发:对于产品经理需要哪些日常工作吗

热门文章

  1. ubuntu Android Studio find in files 的快捷键 与搜狗输入法Linux版 简繁体切换快捷键冲突问题的解决办法【ctrl+ shift+F】
  2. 最新论文笔记(+19):TrustFed: A Framework for Fair and Trustworthy Cross-Device Federated Learning in IIoT
  3. 10月份Github上最热门的开源项目
  4. 盛大创新院赞助首届.NET技术交流会 - 演讲录像及下载
  5. 过NAT的SIP通信环境搭建
  6. unity集成InAppPurchase,发布GooglePlay,并在GooglePlay上下载应用,吊起Google支付全流程
  7. PDFill PDF Editor Pro 15特殊版(含Carck)
  8. 第14课:scratchjr踢足球
  9. 怎么用python画省份,区域地图,中国地图
  10. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二