Как контролировать скорость отправки пакетов Scapy? - PullRequest
1 голос
/ 08 марта 2019

Я использую Scapy, чтобы подделать случайные потоки tcp и udp для проверки затопления пакетов в моем эксперименте SDN. Но я не знаю, как контролировать Scapy скорость отправки пакетов. Например, если я хочу установить Scapy отправка пакетов 1000 пкт / с, что мне делать?

1 Ответ

1 голос
/ 09 марта 2019

Самый эффективный способ - использовать sendpfast от scapy вместе с tcpreplay (он должен быть установлен):

>>> pkt = Ether()/IP()/TCP()/"blobofdata". # must be layer 2
# let’s send 10000 packets at 1000 packets per seconds
>>> sendpfast(Ether()/pkt, pps=1000, loop=10000, parse_results=1)
{'packets': 10000,
 'bytes': 660000,
 'time': 9.99,
 'bps': 66006.1,
 'mbps': 0.528,
 'pps': 1000.09,
 'flows': 1,
 'fps': 0.1,
 'flow_packets': 100000000,
 'non_flow': 0,
 'successful': 10000,
 'failed': 0,
 'truncated': 0,
 'retried_enobufs': 0,
 'retried_eagain': 0,
 'command': 'tcpreplay --intf1=enp0s3 --pps=1000 --loop=10000 /tmp/scapyo6ilzjdk',
 'warnings': []}
>>>

Вы даже получаете некоторые характеристики. Это позволяет обойти ограничения Python, которые не позволяют использовать такую ​​высокую скорость пакетов.

Если вы стремитесь к более низким ставкам, вы можете использовать inter с send

>>> sendp(pkt, count=10000, inter=1./20)  # 20 packets per second
...