如何从迷你网中的跟踪文件生成流量?



我有跟踪文件名dec-pkt,它有6列如下:

  • 数据包到达的时间戳。

对于跟踪中的第一个数据包,这是 原始 tcpdump 时间戳。 对于其余的 数据包,这是整数的偏移量 第一个时间戳的一部分。

例如,如果第一个时间戳为 187.2,则 第二个是 188.9,第三个是 191.3,然后 ASCII 文件中的前三个时间戳将 分别为 187.2、1.9 (= 188.9-187( 和 4.3 (= 191.3-187(。

请注意,清理合成鳍用作其基准时间 文件中第一个 TCP 数据包的到达, 不是第一个 TCP SYN/FIN/RST 数据包(这有助于 将消毒合成鳍时间与那些 由消毒-TCP生产(。

  • (重新编号(源主机

  • (重新编号(目标主机

    请注意,重新编号过程会丢失任何 IP 网络 信息。

  • 源 TCP 端口

  • 目标 TCP 端口

  • 数据包中的数据字节数,如果没有,则为 0(此 对于仅确认由 另一边(

所以我想知道如何使用这个文件生成这个流量? 可以 Iperf 这样做吗?如果不是,我该怎么做?

您可以通过Scapy轻松生成流量。它还带有Mininet VM,您可以在mininet官方网站上找到它。它可以为 TCP 和 UDP 生成数据包。

下面是一个示例 python 代码。您可以在Github或Scapy的官方教程中找到更多信息。

import sys
import getopt
import time
from os import popen
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import sendp, IP, UDP, Ether, TCP
from random import randrange

def sourceIPgen():
not_valid = [10,127,254,1,2,169,172,192]
first = randrange(1,256)
while first in not_valid:
first = randrange(1,256)
ip = ".".join([str(first),str(randrange(1,256)),str(randrange(1,256)),str(randrange(1,256))])
return ip

def gendest(start, end):
first = 10
second =0; third =0;
ip = ".".join([str(first),str(second),str(third),str(randrange(start,end))])
# print start
# print end
return ip
#if __name__ == '__main__':
#main()
def main(argv):
# global start 
# global end
print argv
try:
opts, args = getopt.getopt(sys.argv[1:],'s:e:',['start=','end='])
except getopt.GetoptError:
sys.exit(2)
for opt, arg in opts:
if opt =='-s':
start = int(arg)
elif opt =='-e':
end = int(arg)
if start == '':
sys.exit()
if end == '':
sys.exit()

interface = popen('ifconfig | awk '/eth0/ {print $1}'').read()
for i in xrange(1000):
packets = Ether()/IP(dst=gendest(start,     end),src=sourceIPgen())/UDP(dport=80,sport=2)
print(repr(packets))
sendp( packets,iface=interface.rstrip(),inter=0.1)
if __name__ == '__main__':
main(sys.argv)

参考资料

你可以这样称呼它

python ./launchTraffic -s 2 -e 28

最新更新