Проблема может быть в самом tcpdump: если он не отвечает достаточно быстро, тогда старые пакеты будут перезаписаны новыми, что означает, что они отброшены.
Если вы захватываете все байты каждого пакета, очень легко переполнить буфер захвата пакетов ядра. Симптомы этого переполнения состоят в том, что ваша программа трассировки пакетов сообщит, что она отбросила пакеты.
В случае tcpdump он выводит сводную информацию о том, сколько пакетов было захвачено, отфильтровано и отброшено при остановке захвата. Например:
$ sudo tcpdump -i en0 -w trace.pcap tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes ^C 94 packets captured 177 packets received by filter 0 packets dropped by kernel
Если dropped
счетчик не равен нулю, вам нужно увеличить размер буфера захвата пакета, передав -B
опцию tcpdump. Попробуйте также без файла захвата, чтобы увидеть, если это улучшает коэффициент захвата.