删繁就简去粗求精
“报文去重”功能在“网络流量可视化分析”中的应用
中创信测迟杨
当前,“网络流量可视化分析”是网络维护保障的发展趋势,相关产品从应用上大体可分为网络性能分析(NPM)和业务性能分析(APM)两大类,前者是针对网络性能指标,诸如:带宽、时延、抖动、丢包、重传、拥塞、网络攻击等进行分析统计和故障定位,后者主要根据数据报文所承载的业务的具体特性,分析业务质量。
进行“网络流量可视化分析”的底层基础是对网络中实时传输的数据报文进行采集捕获,根据对原始数据包中的相关信息的解析进行进一步的统计分析,而在数据采集的过程中,“报文去重”功能有着重要的应用价值。
“报文去重”的含义就是去掉采集到的重复报文,那么为什么会采集到重复报文?什么是重复报文?重复报
文对于后端分析有何影响?如何实现去除这些重复报文?在报文去重中有哪些需要注意的事情呢?带着这些问题,接下来我们详细探讨一下。
问题1:为什么会采集到重复报文?
网络数据包捕获(俗称“抓包”),通常采用两种方式,一种是网路设备端口镜像的方式,另一种是通过分光、高阻、以太网(电口)分路器等方式从链路旁路的方式,如下图所示:
从客户端(Client)发往服务端(Server)的数据报文A,经过网络的传递,对于网络可视化分析系统来说,通常会在全网的端到端布设多个数据采集点,于是在各个采集
点分别会捕获到报文A1、A2、A3、A4、A5,这些报文都是与原始通讯报文A相关的报文,称为同源报文。报文去重就是要去除同源报文中的冗余部分,保留1份数据报文输出给后端的网络可视化分析系统。
问题2:什么是重复报文?
由上面的分析可知,报文A1-A5都是同源报文,因为处的网络位置不同,所以报文的封装以及一些特征字节存在差异。
●报文A1和报文A2是在同一条链路上的两个采集点通过分光方式采集的两个
报文,这两个报文完全相同。
字符串函数去重●报文A3与报文A1和A2相比较,报文承载的Payload相同,A1和A2数据包
存在VLAN tag,A3没有VLAN tag。
●报文A4与报文A3相比较,因为经过了一台交换设备转发,数据包MAC地址、
IP_TTL、IP_Checksum等的值不同。
●报文A5的数据带有GRE、GTP、VxLAN等隧道协议的封装,Payload部分与
报文A4相同,但是多了层隧道协议的封装。
上述各个同源报文根据实际应用中的需求定义均可称为“重复报文”,根据后端应用系统的需要,保留业务报文,去除冗余数据。
问题3:重复报文对于后端分析工具有何影响?为什么要去重?
前端采集捕获的数据包,会发给后端的网络可视化分析工具进行进一步的解码,重复数据包的采集,会给后端分析工具带来影响,所以需要网络智能采集平台进行去重处理,将去重后的数据报文转发至分析工具探针,这些影响主要包括:
●增加处理压力:重复数据的采集,势必带来大量的冗余数据,这些冗余数据会
占用宝贵的分析工具探针的处理性能,特别是对于一些特定的应用场景下(如:
证券业客户每日早9:30的集合竞价交易高峰,电信运营商客户每日20:00前
后的互联网访问高峰),去除重复冗余数据能够在很大程度起到平抑流量峰值
的作用。
●增加业务合成的处理复杂度:一次会话过程的业务合成中如果出现多个冗余数
据,则分析工具探针就需要做冗余判断,才可以确保最终业务合成的准确性,
从而使分析工具探针的处理逻辑更为复杂。
●增加业务统计的处理复杂度:一次业务过程如果因为多次采集带来的冗余数据
的问题,而被合成为多次业务过程,则为了确保业务统计的准确性,后端分析
工具就需要在进行业务统计之前剔除这些冗余记录才能保障统计的准确性。
问题4:报文去重的处理机制是什么?
根据报文重复的特点,以及最终的去重需求,常用报文去重主要分为四种应用场景,在实际应用中灵活选择:
●TCP/UDP的Payload重复:比较下列报文参数(Payload的Hash值、Sip、Dip、
Sport、Dport、Protocol、IP checksum、TCP flag、TCP seq、TCP ack),如全部
相同,则判断为重复报文,只转发首个报文,去除后续重复报文。
●IP的Payload重复:比较下列报文参数(IP头部+TCP头部+Payload的Hash
值、Sip、Dip、Sport、Dport、Protocol、IP checksum、TCP flag、TCP seq、TCP
ack),如全部相同,则判断为重复报文,只转发首个报文,去除后续重复报文。
●MAC层重复报文(即整包数据重复):比较下列报文参数(MAC头部+IP头部
+TCP头部+Payload的Hash值、Sip、Dip、Sport、Dport、Protocol、IP checksum、
TCP flag、TCP seq、TCP ack),如全部相同,则判断为重复报文,只转发首个
报文,去除后续重复报文。
●隧道报文的去重(GRE/GTP/MPLS/VxLAN等):隧道协议封装内部报文的去
重,需要首先对报文进行去封装操作,然后再按照上述去重方法进行去重。
问题5:报文去重有哪些注意事项?
●根据应用需求,灵活调整处理机制:网络流量可视化分析工具的种类有很多,
有些工具关注于业务合成后的分析,有些关注于原始数据报文的分析。在应用
去重功能时,要根据这些具体的需求选择是否进行报文去重,以及具体采用何
种去重方式。
●规避小概率的“哈希碰撞”问题:网络中传递的数据报文的长度是不固定的,
在报文去重判断中,为了提高数据包之间比对的效率,需要对数据包的Payload
等内容进行哈希(Hash)计算。哈希计算的算法将任意长度的二进制值映射为
较短的固定长度的二进制值,所以从原理上讲,存在小概率事件,即两个
Payload不同的数据报文的Hash值恰好相同,此时,如果仅凭Hash值的比对
判断就认为这两个数据包是重复的报文从而去掉一个,显然是错误的。为了避免这种小概率的哈希碰撞带来的去重“误”操作,所以在进行报文对比的时候除了比较Hash值之外,还会比较五元组、Checksum、TCP_seq、TCP_ack等参数,只有这些参数都相同了,才会判断两个数据报文是重复报文,从而减少误去重操作的概率。另外,在处理中还要给每个Hash值配置“生存时间”,超过了这个时间(通常为几十毫秒到几秒之间),就自动清除这个值,使出现哈希碰撞的概率进一步降低。
多次采集带来的多级去重问题:报文去重的目的是去掉重复报文,从前面的图中可见,有时候重复的数据报文不止一个,可能随着采集点的增加,重复报文有多个,那么报文去重就要考虑多级去重的问题,即可以调整最大可去掉多少个重复报文,显然,Hash值的生存时间的配置也要考虑多级报文去重的问题(生存时间设置的越短,越有利于避免哈希碰撞;生存时间设置的越长,越有利于多级去重)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论