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

这里主要介绍下回放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数据包下的处理过程。

1、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

2、IPv4/v6 matching Regex
通过IPv6的地址的正则表达式将需要实施IP分类的地址,以正则表达式进行区分。不过在这里,正则表达式只可以有一条。

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

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

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

4、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的实施做好前期的准备。

最新文章

  1. 3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
  2. 使用代理和block写一个alertView
  3. 解决android中Layout文件下的xml文件配好后,R类中不能自动生成相应代码
  4. [Android Pro] APK
  5. java eclipse环境搭建环境
  6. Unity3D 的摄像机
  7. 陈正冲老师对于c语言野指针的解释
  8. js常用内置对象、Dom对象、BOM对象
  9. php 二维数组按照某value值求出最大值最小值
  10. JSON数据的基础使用
  11. iOS实践03
  12. spring获取bean 实例
  13. Sql Server中三种字符串合并方法的性能比较
  14. android Material Design详解
  15. Docker部署Nginx并修改配置文件
  16. SQL Server中JOIN的使用方法总结
  17. <数据结构与算法分析>读书笔记--数学知识复习
  18. RadGridView添加序号列
  19. R语言中的横向数据合并merge及纵向数据合并rbind的使用
  20. 【转】mysql 解事务锁

热门文章

  1. 多tab页框架的使用场合
  2. MyBatis(3.2.3) - Configuring MyBatis using XML, Environment
  3. Git CMD - show: Show various types of objects
  4. Javascript之响应式相册
  5. get方法与post方法的使用
  6. StrictMode模式介绍
  7. PHP 测试程序运行时间 microtime函数用法
  8. 登堂入室——java流
  9. MD5加密简单算法
  10. 使用VS时点右键卡住—不响应的问题