Как захватывать пакеты с разным snaplen для разных пакетов

Как захватывать пакеты с разным snaplen для разных пакетов

Я пытаюсь захватить пакеты для диагностики сетевого приложения. Есть небольшое количество пакетов, которые я хочу захватить полностью для анализа протокола на уровне приложения, но есть большой объем пакетов, которые мне нужно захватить только заголовки и несколько байтов полезной нагрузки. Это на 10-гигабитном (и я хотел бы сделать 25-гигабитном в будущем) канале, и у меня возникли проблемы с поддержанием пропускной способности захвата, когда я захватываю все.

Я посмотрел на tcpdump, dumpcap и tshark, и ни в одной из них, похоже, нет возможности указать переменное поле snaplen. Есть ли инструмент захвата, который может это сделать? Изучая вывод, я dumpcap -dвижу, что возвращаемое значение фильтра — это желаемый snaplen или 0, чтобы не захватывать. Но ни одна из этих программ, похоже, не принимает скомпилированный bfp в качестве входных данных.

решение1

Запустите два одновременных захвата, каждый с соответствующим фильтром и длиной привязки, а затем объедините их с помощью mergecapинструмента, входящего в комплект Wireshark.

Связанный контент