Meşgul arayüzde tcpdumping yaparken çok fazla bırakılan paket


12

Zorluğum

Çok fazla veri tcpdumping yapmam gerekiyor - aslında çok fazla trafik görebilen karışık modda kalan 2 arayüzden.

Özetlersek

  • Tüm trafiği 2 arabirimden karışık modda günlüğe kaydet
  • Bu arayüzler edilir değil bir IP adresi atanır
  • pcap dosyaları ~ 1G başına döndürülmelidir
  • 10 TB dosya depolandığında, en eski dosyaları kırpmaya başlayın

Şu anda ne yapıyorum

Şu anda böyle tcpdump kullanıyorum:

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

$FILTERBen kullanabilmesi için src / dst filtreler içeriyor -i any. Bunun nedeni, iki arayüze sahip olduğum ve dökümü iki yerine tek bir iş parçacığında çalıştırmak istiyorum.

compress.sh katranı başka bir CPU çekirdeğine atamaya özen gösterir, verileri sıkıştırır, makul bir dosya adı verir ve bir arşiv konumuna taşır.

İki arayüz belirleyemiyorum, bu yüzden filtreleri kullanmayı ve anyarayüzden dökümü seçtim .

Şu anda herhangi bir temizlik yapmıyorum, ancak diski izlemeyi planlıyorum ve 100G kaldığında en eski dosyaları silmeye başlayacağım - bu iyi olmalı.

Ve şimdi; benim sorunum

Düşen paketler görüyorum. Bu, birkaç saat boyunca çalışan ve yaklaşık 250 gig pcap dosyası toplayan bir dökümünden:

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

Bu kadar çok paketin düşmesini nasıl önleyebilirim?

Zaten denediğim veya baktığım bu şeyler

Değerini değiştirdi /proc/sys/net/core/rmem_maxve /proc/sys/net/core/rmem_defaultbu gerçekten yardımcı oldu - aslında bırakılan paketlerin yaklaşık yarısını halletti.

Aynı zamanda gulp'a da baktım - gulp ile ilgili sorun, bir süreçte birden fazla arabirimi desteklememesi ve arayüzün bir IP adresi yoksa öfkelenmesidir. Ne yazık ki, bu benim durumumda bir anlaşma kırıcı.

Bir sonraki sorun, trafik bir borudan aktığında, otomatik dönüşün devam edememesidir. Bir büyük 10 TB dosyası almak çok verimli değil ve wireshark'ı çalıştırabileceğim 10 TB + RAM'li bir makinem yok, bu yüzden dışarıda.

Önerin var mı? Belki de trafik dökümü yapmanın daha iyi bir yolu.


Benim durumumda -s0 seçeneğini kullanıyordum, bunu -s1600 (MTU'nun üstünde) olarak değiştirmek benim için çözdü.
LatinSuD

Yanıtlar:


11

tcpdump gelen verileri bir halka arabelleğinde saklar. Tcpdump içeriğini işlemeden önce arabellek taşarsa, paketleri kaybedersiniz.

Varsayılan halka arabelleği boyutu muhtemelen 2048'dir (2MiB).

Arabellek boyutunu artırmak için -Bseçeneği ekleyin :

tcpdump -B 4096 ...

Daha hızlı disk depolama alanı kullanmayı da denemelisiniz.


Arabellek boyutunu değiştirmeyi deneyeceğim. Disk depolama hızının sorun olmadığından neredeyse eminim. Boşaltma sırasında ve 17 gig dosyası yazarken yaklaşık 15M / sn ile veri yazar: 17179869184 bayt (17 GB) kopyalandı, 23.5737 s, 729 MB / s (bs = 8k sayısı = 2048k kullanılarak)
Frands Hansen

7

Sonunda birlikte yaşamak için bir çözüm buldum. Bırakılan paketler% 0,0047'den% 0,00013'e düşürüldü - bu ilk başta pek görünmüyor, ancak milyonlarca paket konuşurken, oldukça fazla.

Çözüm birkaç şeyden oluşuyordu. Bunlardan biri, Michael Hampton'un önerdiği gibi halka tampon boyutunu değiştirmekti.

Ayrıca, bir ramfs oluşturdum ve buna boşaltma yaptım, dökümleri ramfs'den diske taşımayı sürdürmek için sıkıştırma betiğimi yeniden yazdım. Bu sadece miktarı çok az azalttı, ancak kayda değer olmak için yeterli - diskin tüm test ve karşılaştırmaları gösterilse bile, diskin darboğaz olmaması gerekir. Sanırım buradaki zaman çok önemli.

Hiper iş parçacığının devre dışı bırakılması da düşündüğünüzden daha fazlasını yaptı.


Şunu mu demek istediniz: "hiper iş parçacığını devre dışı bırakmak" çok yardımcı mı? Ne kadar yardımcı olabilir? Teşekkürler.
fakir geliştirici

Açıkçası, detayları artık hatırlayamıyorum. O zamandan beri işyerini değiştirdim, ancak yazdığımdan hiper iş parçacığını devre dışı bırakmanın soruna yardımcı olduğu görülüyor.
Frands Hansen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.