1

我有一台服务器,我需要模拟真实的网络流量。我被要求使用 CAIDA 数据集来执行此操作。我已经下载了公共数据集,可以在这里找到: CAIDA 公共数据集

我还需要将 .pcap 文件中的源 IP 地址重写为服务器之一。我尝试按照本页末尾描述的方式进行操作:tcprewrite wiki

我跑:

tcprewrite --infile=oc48-mfn.dirA.20020814-160000.UTC.anon.pcap --outfile=oc48-mfn.dirA.20020814-160000.UTC.anon_rewrite.pcap --dstipmap=0.0.0.0/0:10.101.30.60 --enet-dmac=00:0c:29:00:b1:bd

我得到:

警告:oc48-mfn.dirA.20020814-160000.UTC.anon.pcap 是使用 48 字节的 snaplen 捕获的。这可能意味着您截断了数据包。

致命错误:来自 ./plugins/dlt_hdlc/hdlc.c:dlt_hdlc_encode() 第 255 行:非 HDLC 数据包需要 --hdlc-address

因此,经过一些这样的尝试后,我终于运行这些来获得一个无错误的 tcprewrite:

tcpprep --auto=bridge --pcap=oc48-mfn.dirA.20020814-160000.UTC.anon.pcap --cachefile=cache1.cache

这使:

警告:oc48-mfn.dirA.20020814-160000.UTC.anon.pcap 是使用 48 字节的 snaplen 捕获的。这可能意味着您截断了数据包。

警告:oc48-mfn.dirA.20020814-160000.UTC.anon.pcap 是使用 48 字节的 snaplen 捕获的。这可能意味着您截断了数据包。

然后我运行:

tcprewrite --infile=oc48-mfn.dirA.20020814-160000.UTC.anon.pcap --outfile=oc48-mfn.dirA.20020814-160000.UTC.anon_rewrite.pcap --dstipmap=0.0.0.0/0:10.101.30.60 --enet-dmac=00:0c:29:00:b1:bd --cachefile=cache1.cache --hdlc-control=0 --hdlc-address=0xBF

我得到:

警告:oc48-mfn.dirA.20020814-160000.UTC.anon.pcap 是使用 48 字节的 snaplen 捕获的。这可能意味着您截断了数据包。

所以这似乎是成功的,除了在每个命令中显示的警告。我使用 tcpdump 打开新的 .pcap 文件,以检查目标 IP 地址是否已更改为服务器之一,并且已完成。

然后我运行 tcpreplay:

tcpreplay -i ens160 --loop 5  --unique-ip oc48-mfn.dirA.20020814-160000.UTC.anon.pcap

我在服务器上运行 tcpdump 以查看来自 .pcap 文件的流量,但流量如下所示:

13:30:50.194780 05:8c:55:6f:40:00(oui 未知)> 0f:00:08:00:45:00(oui

未知),ethertype 未知(0x3406),长度 60:

0x0000: ed11 f484 7785 f477 0d79 0050 0487 007c ....w..wyP..|

0x0010: e7d5 d203 c32b 5010 27f7 aa51 0000 4854 .....+P.'..Q..HT

0x0020: 5450 0000 0000 0000 0000 0000 0000 TP............

我已经从 tcpreplay 的示例捕获中尝试了 smallFlow.pcap:示例捕获

它工作得很好。

那么关于如何正确使用 CAIDA .pcap 文件的任何建议?

4

1 回答 1

0

您的既定目标是“我需要模拟真实的网络流量”,但您使用的是 pcaps,其中“有效负载已从所有数据包中删除”(根据您链接到的 CAIDA 网页)。

这两种说法相互冲突。您所有的数据包实际上都不大于 48 字节,这对于 TCP/IP 标头来说已经足够了(即使如此,在所有情况下都可能不够)。这就是警告告诉你的。你不能把数据放回去。

您需要找到新的 pcaps 来源。

于 2017-11-13T21:17:10.393 回答