tcpprep 对IPV6的支持

在采用tcpreplay对包实施回放前,须要对包执行预处理,tcpprep就是完成这个任务的。
tcpprep要作的处理就是生成一个cache文件,根据tcpprep wiki的介绍http://tcpreplay.synfin.net/wiki/tcpprep
其做用是将数据包两部分,通俗点讲就是区分下数据包中的服务端和客户端。当tcpreplay采用多网卡进行发送时,也能够采用tcpprep对包进行处理,
以决定回放包时,数据包走那一块网卡。同时,预处理过的数据包在进行发送时,采用tcpprep处理事后,能够以更高的速度回放。linux

这里主要介绍下回放IPv6数据包时,如何区分实施数据包的tcpprep工做。基本的tcpprep这部分就不具体介绍了。
经过tcpprep的wiki了解到,目前采用tcpprep进行包处理的模式有8种,包括Auto/Bridge、Auto/Router、Auto/Client、Auto/Server、IPv4/v6 matching CIDR、IPv4/v6 matching Regex、TCP/UDP Port、MAC address。正则表达式

依照wiki上的文档介绍,目前新版本的tcpprep 3.4.2以上才支持IPv6数据包的处理。而且,auto模式(Bridge、Router、Client、Server)还不可以支持IPv6处理。
按照该说明,就依次验证测试下在对IPv6数据包下的处理过程。tcp

一、IPv4/v6 matching CIDR
经过CIDR(无类别域间路由)的方式,经过手工的方式对数据包中的ip地址进行划分。
只要IPv6的CIDR书写的没有问题,tcppre能够按照设定好的路由规则进行数据包分类。
对于IPv6,其CIDR与IPv4比较类似:
好比:tcpprep --cidr=2001:da8:215:833:bce9:8592:cb2f:56be/128 --pcap=pure6-1.pcap --cachefile=pure6-1.cache
数据包就可以以这个IP为标示分红两部分了。
CIDR的IPv6规则条数仍是能够有多条的,好比:
tcpprep --cidr=2001:da8:215:833:bce9:8592:cb2f:56be/128 --pcap=pure6-1.pcap --cachefile=pure6-1.cache测试

二、IPv4/v6 matching Regex
经过IPv6的地址的正则表达式将须要实施IP分类的地址,以正则表达式进行区分。不过在这里,正则表达式只能够有一条。.net

tcpprep --regex="(2001:da8:215:833:bce9:8592)\:*" --pcap=pure6-1.pcap --cachefile=pure6-1.cache
将以2001:da8:215:833:bce9:8592开头的IP地址做为一类。这里只是比较简单的IP分类,能够按照本身的须要斟酌下正则表达式了。ip

三、TCP/UDP Port
这里依据的是IP层以上的部分了。只要可以正常解析数据包就能够。ci

tcpprep  --port --pcap=pure6-1.pcap --cachefile=pure6-1.cache
依照端口划分的依据是一些经常使用的服务端口是肯定的,好比经常使用的80端口,443端口。1024一下的端口均可以认为是服务端口。依据端口特征就能够区分服务端和客户端了。
在linux上,能够参考下/etc/services中服务端口一些介绍。路由

四、MAC address
依照MAC的地址进行数据包的分类。由于这是链路层的,与IP层的关系就比较小了,IPv4与IPv6在这种方式下,也就没有什么分别了。
这里示例一个简单的小例子:
tcpprep --mac=c4:ca:d9:a1:22:1f --pcap=pure6-1.pcap --cachefile=pure6-1.cache
这样就能够依照MAC地址的不一样,实施数据包回放时的分类了。这里的MAC地址能够指定多个,多个之间以逗号分类就行。文档

总结下,对与IPv6数据包进行数据包预处理,自动模式是不可以用了。不过能够采用4中方式进行服务、客户端的区分。
具体采用哪种处理方式,能够依据回放包的特征来选择。从而为tcpreplay的实施作好前期的准备。get

相关文章
相关标签/搜索