Багато скинутих пакетів при 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.