В Linux, как захватить весь трафик сетевого интерфейса без потери пакетов?

#c #networking #mmap #packet #pcap

#c #сеть #mmap #пакет #pcap

Вопрос:

Я работаю над программой, которая может отслеживать весь трафик в гипервизоре, гипервизор содержит много виртуальных хостов. Я хочу записывать весь трафик с каждой сетевой карты (включая физический сетевой интерфейс и интерфейс подключения виртуального хоста) в гипервизоре, в этом случае я могу использовать анализ информации о записи пути трафика виртуального хоста. Теперь я использую packet_mmap для захвата всего трафика, однако проблема с производительностью packet_mmap невелика. Сравните с не запускаемой программой захвата, pps понижен на 50%. У кого-нибудь есть способ отслеживать весь трафик с меньшей потерей пакетов?

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

1. Если у вас нет специального оборудования, предназначенного для такого захвата, выполнение этого для более чем нескольких интерфейсов с высоким трафиком быстро приведет к перегрузке любой программы и системы. И под «захватом» вы подразумеваете запись пакетов на диск, затем вы добавляете еще одно узкое место.

2. Использовать wireshark или tcpdump для захвата трафика? Если вам нужно какое-либо решение с высокой пропускной способностью, вам, вероятно, следует купить его (аппаратное обеспечение программное обеспечение) или нанять консультанта. Это может помочь, если вы объясните, почему вы пытаетесь это сделать.