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. [k8s]jenkins配合kubernetes插件实现k8s集群构建的持续集成

    另一个结合harbor自动构建镜像的思路: 即code+baseimage一体的方案 - 程序员将代码提交到代码仓库gitlab - 钩子触发jenkins master启动一次构建 - jenkin ...

  2. [转]Object.keys()和for in的排序问题

    原文地址:https://www.jianshu.com/p/a086ff48be6e Object.keys()和for in 具有相同的排列顺序 如果属性名的类型是Number,那么Object. ...

  3. Java知多少(8)类库及其组织结构

    Java 官方为开发者提供了很多功能强大的类,这些类被分别放在各个包中,随JDK一起发布,称为Java类库或Java API. API(Application Programming Interfac ...

  4. SPARKR,对RDD操作的介绍

    (转载)SPARKR,对RDD操作的介绍   原以为,用sparkR不能做map操作, 搜了搜发现可以. lapply等同于map, 但是不能操作spark RDD. spark2.0以后, spar ...

  5. HttpWebRequest - Asynchronous Programming Model/Task.Factory.FromAsyc

    Posted by Shiv Kumar on 23rd February, 2011 The Asynchronous Programming Model (or APM) has been aro ...

  6. Java如何获取URL连接的日期?

    Java编程中,如何获取URL连接的日期? 以下示例演示如何使用HttpURLConnection类的httpCon.getDate()方法获取URL连接的日期. package com.yiibai ...

  7. Oracle 11g EM删除重建的方法

    虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,EM可以重建,于是也不打算查找原因了,直接使大招 OS:Windows Server 2012 Oracle:11g R2 ...

  8. PI SQL 语句

    insert [piarchive]..[picomp2](tag,time,value) values('ppnie_test','t',100) INSERT into pipoint..clas ...

  9. javascript实现一行文字随不同设备自适应改变字体大小至字数完全展示

    产品提了一个小需求,希望一行能展示用户输入的所有文字,因为最多限制为25字符,但是如果夹杂英文/韩文/日文等,即使字符数是一样的,但是展示的长度不一样,则有些title标题会被截断. 效果如图 前提是 ...

  10. 仿迅雷播放器教程 -- C++ windows界面库对比(11)

    从上一篇文章中可以看出,C++的界面方向还很弱,没有任何一个界面库可以一统天下,所以才造成了界面库百家争鸣的情况. 从时间上看: 1.出来最早的是QT,1991年就有了. 2.VC++ 虽然1992年 ...