Продолжить, несмотря на сбойный пакет при использовании tcpreplay

#tcpreplay

#tcpreplay

Вопрос:

Я пытаюсь использовать tcpreplay для отправки содержимого файла pcap. Он отказывается отправлять некоторые пакеты, потому что они слишком длинные. Однако вместо того, чтобы продолжить работу со следующим пакетом, он останавливается:

  $ tcpreplay -i p4p1 multi.pcap
Warning: May need to run as root to get access to all network interfaces.
Warning: Unable to send packet: Error with PF_PACKET send() [444]: Message too long (errno = 90)
Actual: 443 packets (63852 bytes) sent in 0.203486 seconds
Rated: 313790.6 Bps, 2.51 Mbps, 2177.05 pps
Flows: 115 flows, 565.14 fps, 405 flow packets, 39 non-flow
Statistics for network device: p4p1
        Successful packets:        443
        Failed packets:            1
        Truncated packets:         0
        Retried packets (ENOBUFS): 0
        Retried packets (EAGAIN):  0
 

Я хотел бы пропустить неудачные пакеты и отправить остальные.

Комментарии:

1. Можете ли вы разместить ссылку на multi.pcap

Ответ №1:

У меня была такая же проблема с несколькими файлами, особенно с потоковой передачей. Пример:

 ~# tcpreplay -i eth1 -t -K facebook_audio2b.pcapng
File Cache is enabled
Warning: Unable to send packet: Error with PF_PACKET send() [1611]: Message
too long (errno = 90)
Actual: 1610 packets (382007 bytes) sent in 0.021233 seconds
Rated: 17991192.9 Bps, 143.92 Mbps, 75825.36 pps
Flows: 71 flows, 3343.85 fps, 94008 flow packets, 84 non-flow
Statistics for network device: eth1
        Successful packets:        1610
        Failed packets:            1
        Truncated packets:         0
        Retried packets (ENOBUFS): 0
        Retried packets (EAGAIN):  0
 

Итак, я следил за часто задаваемыми вопросами на веб-сайте Tcpreplay по [ссылке].(https://tcpreplay.appneta.com/wiki/faq.html#packet-length-8892-is-greater-then-mtu-skipping-packet ) это говорит:

В случае, если размер пакета превышает MTU, в качестве альтернативы вы можете указать tcpreplay-edit --mtu-trunc опцию — пакеты будут урезаны до размера MTU, контрольные суммы будут зафиксированы и затем отправлены. Обратите внимание, что это может повлиять на производительность.

Это работает для меня при следующем запуске:

 ~# tcpreplay-edit --mtu-trunc -i eth1 -t -K facebook_audio2b.pcapng
File Cache is enabled
Actual: 94092 packets (14586277 bytes) sent in 0.847842 seconds
Rated: 17204003.8 Bps, 137.63 Mbps, 110978.22 pps
Flows: 71 flows, 83.74 fps, 94008 flow packets, 84 non-flow
Statistics for network device: eth1
        Successful packets:        94092
        Failed packets:            0
        Truncated packets:         0
        Retried packets (ENOBUFS): 0
        Retried packets (EAGAIN):  0
 

Ответ №2:

Причина, по которой вы получаете «слишком длинное сообщение», заключается в том, что MTU в вашем сетевом интерфейсе меньше, чем размер вашего пакета.

Вы можете увеличить размер MTU вашей системы, и тогда все пакеты по pcap будут отправлены.

В Linux из root пользователя вы можете использовать команду: ifconfig {интерфейс} mtu {Новый размер}