tcpreplay-edit提供了可对包进行修改的高级用法:

      --unique-ip
Modify IP addresses each loop iteration to generate unique flows. This option must appear in combination with the following options: loop. This option must not appear
in combination with any of the following options: seed, fuzz-seed. Ensure IPv4 and IPv6 packets will be unique for each --loop iteration. This is done in a way that will not alter packet CRC, and therefore will genrally not affect per‐
formance. This option will significantly increase the flows/sec over generated over multiple loop iterations. --unique-ip-loops=string
Number of times to loop before assigning new unique ip. This option may appear up to times. This option must appear in combination with the following options: unique-
ip. Number of --loop iterations before a new unique IP is assigned. Default is . Assumes both --loop and --unique-ip.

原包如下:

┬─[tong@T7:~/Data]─[:: AM]
╰─>$ sudo tcpreplay-edit -i replay-br0 -t baidu.pcap

收包如下:

[root@dpdk ~]# tcpdump -i eth1 -nn "tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0"
::17.125017 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::17.125093 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::17.125124 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::17.125133 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length

使用,--uique-ip 参数可以在保证flow关系的前提下修改IP,修改策略是,源IP地址加一,目的IP地址减一

发包如下:

┬─[tong@T7:~/Data]─[:: AM]
╰─>$ sudo tcpreplay-edit -i replay-br0 -t --unique-ip -l3 baidu.pcap

收包如下:

[root@dpdk ~]# tcpdump -i eth1 -nn "tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0"   

::31.745157 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val  ecr ,nop,wscale ], length
::31.745175 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745183 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745186 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745213 IP 192.168.10.55. > 202.89.233.104.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745249 IP 192.168.10.55. > 203.208.39.206.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745278 IP 192.168.10.57. > 120.25.241.228.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745292 IP 192.168.10.57. > 114.55.49.181.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745360 IP 192.168.10.54. > 202.89.233.105.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745395 IP 192.168.10.54. > 203.208.39.207.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745404 IP 192.168.10.58. > 120.25.241.227.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::31.745406 IP 192.168.10.58. > 114.55.49.180.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length

再增加 --unique-ip-loops=3 参数,可以增加策略复杂性,效果就是,第2次loop和第3次loop的包,与第一次loop重复,例子如下:

发包:

┬─[tong@T7:~/Data]─[:: AM]
╰─>$ sudo tcpreplay-edit -i replay-br0 -t --unique-ip --unique-ip-loops= -l9 baidu.pcap

收包:

┬─[tong@T7:~/Data]─[:: AM]
╰─>$ sudo tcpreplay-edit -i replay-br0 -t --unique-ip --unique-ip-loops= -l9 baidu.pcap ::16.886335 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.886981 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.887154 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.887209 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.888984 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.889845 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.889931 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.889944 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.890927 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.891194 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.891251 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.891261 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.891299 IP 192.168.10.55. > 202.89.233.104.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.891473 IP 192.168.10.55. > 203.208.39.206.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.892247 IP 192.168.10.57. > 120.25.241.228.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.892283 IP 192.168.10.57. > 114.55.49.181.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.892333 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.892378 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.892419 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893655 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893749 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893793 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893831 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893841 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893887 IP 192.168.10.54. > 202.89.233.105.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893938 IP 192.168.10.54. > 203.208.39.207.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893979 IP 192.168.10.58. > 120.25.241.227.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.893990 IP 192.168.10.58. > 114.55.49.180.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894044 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894094 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894135 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894284 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894342 IP 192.168.10.56. > 202.89.233.103.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894394 IP 192.168.10.56. > 203.208.39.205.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894439 IP 192.168.10.56. > 120.25.241.229.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
::16.894450 IP 192.168.10.56. > 114.55.49.182.: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length

[tcpreplay] tcpreplay高级用法--使用tcpreplay-edit进行循环动态发包的更多相关文章

  1. [iOS]C语言技术视频-15-指针变量高级用法练习一(函数指针完成动态排序)

    下载地址: 链接: http://pan.baidu.com/s/1o6MOzX4 密码: xzxn

  2. Autofac高级用法之动态代理

    前言 Autofac的DynamicProxy来自老牌的Castle项目.DynamicProxy(以下称为动态代理)起作用主要是为我们的类生成一个代理类,这个代理类可以在我们调用原本类的方法之前,调 ...

  3. 【转】Autofac高级用法之动态代理

    原文:http://www.cnblogs.com/stulzq/p/8547839.html 前言 Autofac的DynamicProxy来自老牌的Castle项目.DynamicProxy(以下 ...

  4. Visual Studio 宏的高级用法

    因为自 Visual Studio 2012 开始,微软已经取消了对宏的支持,所以本篇文章所述内容只适用于 Visual Studio 2010 或更早期版本的 VS. 在上一篇中,我已经介绍了如何编 ...

  5. Bash 脚本编程的一些高级用法

    概述 偶然间发现 man bash 上其实详细讲解了 shell 编程的语法,包括一些很少用却很实用的高级语法.就像发现了宝藏的孩子,兴奋莫名.于是参考man bash,结合自己的理解,整理出了这篇文 ...

  6. SolrNet高级用法(分页、Facet查询、任意分组)

    前言 如果你在系统中用到了Solr的话,那么肯定会碰到从Solr中反推数据的需求,基于数据库数据生产索引后,那么Solr索引的数据相对准确,在电商需求中经常会碰到菜单.导航分类(比如电脑.PC的话会有 ...

  7. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  8. Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)

    上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的 ...

  9. 再谈Newtonsoft.Json高级用法

    上一篇Newtonsoft.Json高级用法发布以后收到挺多回复的,本篇将分享几点挺有用的知识点和最近项目中用到的一个新点进行说明,做为对上篇文章的补充. 阅读目录 动态改变属性序列化名称 枚举值序列 ...

随机推荐

  1. Socket网络编程--聊天程序(3)

    上一小节,已经讲到可以每个人多说话,而且还没有限制,简单的来说,我们已经完成了聊天的功能了,那么接下来我们要实现什么功能呢?一个聊天程序至少应该支持一对多的通讯吧,接下来就实现多个客户端往服务器发送数 ...

  2. 《转》vue更新到2.0之后vue-resource不在更新,axios的使用

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  3. 【平差软件学习---科傻】四、科傻二等水准平差(参数设置和in1文件讲解)

    [平差软件学习---科傻]四.科傻二等水准平差(参数设置和in1文件讲解) 这个算是最后一集了,也可能不是如果我想到不足的地方我会在补上一集视频,或者是文章页.总感觉自己操作的很熟练,到自己真正讲的时 ...

  4. Ubuntu和centos离线安装软件包(apt和yum)

    linux安装软件包要解决包依赖问题,不能简单安装包本身. 离线安装基本思想都是先在一台设备上安装下载所有依赖包,然后拷贝所有依赖包到新设备上安装. Ubuntu下apt离线安装包 执行apt upd ...

  5. 牛客网_Go语言相关练习_选择题(2)

    注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...

  6. Xcode6:模拟器消失了?

    今天打开Xcode,选择模拟器时发现只剩下了“iPhone 5”和“iPhone 5s”,原来什么“iPad Air”,“iPhone 4s”的都哪里去了?丢了? 别着急,依次打开“Xcode-> ...

  7. Android中Sqlite数据库多线程并发问题

    最近在做一个Android项目, 为了改善用户体验,把原先必须让用户“等待”的过程改成在新线程中异步执行.但是这样做遇到了多个线程同时需要写Sqlite数据库,导致操作数据库失败. 本人对Java并不 ...

  8. 从浏览器中输入URL到页面加载的发生了什么-转载

    转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...

  9. linux后台执行命令:&和nohup

    当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件.对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨).为 ...

  10. HTTP协议中GET和POST方法的区别

    转载 通常的理解 w3schools关于这个问题的解答:HTTP 方法:GET 对比 POST 列出了一般的理解: 方法 GET POST 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数 ...