Багато скинутих пакетів при tcpdumping на зайнятому інтерфейсі


12

Мій виклик

Мені потрібно зробити tcpdumping багато даних - насправді з 2 інтерфейсів, залишених у розбещеному режимі, які здатні бачити багато трафіку.

Підсумувати це

  • Введіть увесь трафік у безладному режимі з двох інтерфейсів
  • Цим інтерфейсам не призначена IP-адреса
  • Файли pcap повинні обертатися на ~ 1G
  • Коли буде збережено 10 ТБ файлів, починайте обрізати найдавніші

Що я зараз роблю

Зараз я використовую tcpdump так:

ifconfig ethX promisc
ifconfig ethX promisc
tcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER

$FILTERМістить SRC / Dst фільтри , так що я можу використовувати -i any. Причиною цього є те, що у мене є два інтерфейси, і я хотів би запускати дамп в одному потоці, а не в двох.

compress.sh піклується про присвоєння tar для іншого ядра процесора, стискає дані, надає розумне ім'я файлу та переміщує його до місця архіву.

Я не можу вказати два інтерфейси, тому я вирішив використовувати фільтри та скидати з anyінтерфейсу.

Зараз я не займаюся веденням домашнього господарства, але планую провести моніторинг диска, і коли у мене залишиться 100G, я почну протирати найстаріші файли - це повинно бути добре.

А зараз; моя проблема

Я бачу скинуті пакети. Це з дампа, який працює декілька годин і зібрав приблизно 250 гігів файлів pcap:

430083369 packets captured
430115470 packets received by filter
32057 packets dropped by kernel  <-- This is my concern

Як я можу уникнути скидання стільки пакетів?

Ці речі я вже пробував або дивився

Змінили значення /proc/sys/net/core/rmem_maxі /proc/sys/net/core/rmem_defaultщо насправді допомогло - насправді воно подбало лише про половину скинутих пакетів.

Я також переглянув gulp - проблема з gulp полягає в тому, що він не підтримує декілька інтерфейсів за один процес, і він злиться, якщо в інтерфейсі немає IP-адреси. На жаль, це в моєму випадку є розривом угоди.

Наступна проблема полягає в тому, що коли трафік протікає через трубу, я не можу активувати автоматичне обертання. Отримати один величезний 10 ТБ файл не дуже ефективно, і у мене немає машини з 10 ТБ + ОЗУ, на якій я можу запускати проводку, тому це не вдається.

Чи є у вас якісь пропозиції? Можливо, навіть кращий спосіб зробити мій відвал трафіку взагалі.


У моєму випадку я використовував варіант -s0, змінивши його на -s1600 (праворуч над MTU), це вирішило для мене.
LatinSuD

Відповіді:


11

tcpdump зберігає вхідні дані в кільцевий буфер. Якщо буфер переповнюється перед тим, як tcpdump обробляє його вміст, ви втрачаєте пакети.

Типовий розмір буфера кільця, ймовірно, 2048 (2MiB).

Щоб збільшити розмір буфера, додайте -Bпараметр:

tcpdump -B 4096 ...

Спробуйте також скористатися швидшим зберіганням диска.


Я спробую змінити розмір буфера. Я майже впевнений, що швидкість зберігання диска - це не проблема. Він записує дані з швидкістю близько 15 М / сек під час демпінгу та при dd'ing файлі 17 гігів: 17179869184 байтів (17 ГБ) скопійовано, 23,5737 с, 729 Мб / с (з використанням bs = 8 к кол = 2048 к)
Франдс Хансен,

7

Я нарешті знайшов рішення, з яким жити. Знищені пакети знизилися з .0047% до .00013% - що спочатку здається не так вже й багато, але коли ми говоримо про мільйони пакетів, це досить багато.

Рішення складалося з кількох речей. Одне було змінити розмір буфера кільця, як запропонував Майкл Хемптон.

Крім того, я створив ramfs і зробив демпінг в реальному часі до цього, переписав свій сценарій стиснення, щоб подбати про переміщення дампів з ramfs на диск. Це лише зменшило кількість дуже мало, але достатньо, щоб бути помітним - навіть незважаючи на те, що всі тестування та тестування диска показують, що диск не повинен бути вузьким місцем. Я думаю, що тут дуже важливий час доступу.

Вимкнення гіпернарізки також зробило більше, ніж ви думали.


Ви маєте на увазі, що "відключення гіпернарізки" багато допомагає? Наскільки це може допомогти? Спасибі.
поганий розробник

Чесно кажучи, я вже не пам'ятаю конкретику. Я змінив робоче місце з тих пір, але з того, що я написав, видно, що відключення гіпер-потоку допомогло проблемі.
Frands Hansen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.