summaryrefslogtreecommitdiff
path: root/README.md
blob: 1a3e408dceddf663266547e2e878c6f06f1683ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
Version Maintenance     : LiJia([email protected])
Create Time		: 2013-06-06
Latest Time		: 2018-06-12

tcpburst-2.1:
	支持vxlan封装格式, 将已有的pcap包内容封装在vxlan数据包内, 用于模拟测试串联模式下的平台处理流量情况.

tcpburst-2.0:
    支持marsio发包接口.

tcpburst-1.2:
	20161214, 增加对GRE, 6over4, IPinIP等隧道协议的支持.

tcpburst-1.1
    修改流放大部分算法.

tcpburst-1.0:
    基于标准tcpreplay,增加基于TCP或UDP流的放大功能,可用于大流量包回放、性能测试等.

修改背景:	
    标准的tcpreplay读包速率受硬盘传输速度影响,一般最高在600Mbps左右.
    本程序在tcpreplay的基础上,针对上述瓶颈做了一些修改:
    每读到一个TCP或UDP包,原始包原样转发,然后对其IP地址进行修改后,再次发送N个包,
    这样捕包时会得到不同四元组、但应用层数据相同的流,达到流量放大目的.

功能介绍:	
    例:
    原始TCP流         1.1.1.1:12345<-->10.10.10.10:80

    假设流放大倍数=4,则新回放的包中包含如下TCP流:
                      1.1.1.1:12345<-->10.10.10.10:80
                      2.1.1.1:12345<-->9.10.10.10:80
                      3.1.1.1:12345<-->8.10.10.10:80	
                      4.1.1.1:12345<-->7.10.10.10:80	
                      5.1.1.1:12345<--->6.10.10.10:80	

使用说明:	
    configure
    make
    make install

    在标准tcpreplay基础上,新增加了2个参数:
	
    -m, --stream-multiple=num  Replay streams at a given multiple,流放大倍数;  
    -d, --packet-distance=num  The distance between raw packet and fake replay packet,原始包与虚假回放包的间距. 

    packet-distance的作用:
    假设原始流CPU近似占用率如下:
      cpu
      20|      /\
      15|     /  \	
      10|    /    \    /\
      05|   /      \  /  \
       0|--/--------\/----\-----time

    设参数stream-multiple=4,  packet-distance=0, CPU近似占用率(注意纵坐标的变化!!!):

      cpu
      80|      /\
      40|     /  \	
      60|    /    \    /\
      20|   /      \  /  \
       0|--/--------\/----\-----time
	(因为只改变了四元组,应用层数据是相同的,包间距=0的话,即同样的应用层数据会在短时间内重复处理N次)

    设参数stream-multiple=4,  packet-distance=100,有可能会得到这样的CPU占用率:
      cpu
      40| /\/\/\/\/\/\/\/\/\/\/
      30|     
      20|  
      10|
       0|---------------------- time

    所以,使用流放大功能的话,强烈推荐加-d选项,合理设置packet-distance的值!

*/