Как определить фактическую потерю пакетов, сравнивая pcap, захваченный с обеих сторон?

На самом деле я пытаюсь оценить производительность и эффективность различных протоколов. Мне известно, что реализация TCP рассматривает пакет как "потерянный", когда получено либо тайм-аут подтверждения, либо 3 дублированных подтверждения. Но это не может сказать, когда пакет фактически потерян среди сети.

Теперь я собираю пакеты по обе стороны соединения через tcpdump и получаю два файла pcap. Могу ли я узнать, какие именно пакеты потеряны при сравнении двух файлов pcap? И стоит ли это пытаться?

Прямая попытка будет отличаться идентификаторами пакетов ip, чтобы получить непревзойденные, что также является моей первой попыткой. Проблема заключается в том, что сетевой адаптер разделяет и объединяет некоторые пакеты, поэтому libpcap не может перехватить фактические IP-пакеты через сеть.

Если я не отключу такие функции, как "универсальная разгрузка приема" на NIC, которые включены по умолчанию, то, что я зафиксировал на стороне отправителя и на стороне получателя, не будет точно совпадать, поэтому простое различие идентификаторов приведет к неверному выводу; Но отключение функций, которые разделяют / объединяют пакеты, может сильно повлиять на производительность транспортировки, и, таким образом, я пришел к другому выводу. Так что я нахожусь в середине дилеммы.

Соответствующий пост о том, как функции "GRO", "LRO" ведут себя на плате NIC: разные tcp-пакеты перехватываются на отправителе и получателе.

0 ответов

Другие вопросы по тегам