Ben kesintiye tcpdump
ile Ctrl+ Cve bu toplam özetini var:
579204 packets captured
579346 packets received by filter
142 packets dropped by kernel
"Çekirdekten düşen paketler" nedir? Bu neden oluyor?
Ben kesintiye tcpdump
ile Ctrl+ Cve bu toplam özetini var:
579204 packets captured
579346 packets received by filter
142 packets dropped by kernel
"Çekirdekten düşen paketler" nedir? Bu neden oluyor?
Yanıtlar:
Tcpdump kılavuzundan:
'`çekirdek tarafından bırakılan paketler' '(bu, işletim sistemi bu bilgileri uygulamalara bildirirse, tcpdump'ın çalıştığı işletim sistemi üzerindeki işletim sistemi paket yakalama mekanizması tarafından, arabellek alanı yetersizliğinden dolayı bırakılan paketlerin sayısıdır; değilse, 0 olarak bildirilecektir.
Biraz açıklama:
tcpdump
Bir ağ arabirimi üzerinden geçen ham paketleri yakalar. Paketlerin komut satırında belirtilen kurallara göre ayrıştırılması ve filtrelenmesi gerekir ve bu biraz zaman alır, bu nedenle gelen paketlerin işlenmesi için arabelleğe alınması (sıraya alınır) gerekir. Bazen çok fazla paket vardır, bunlar bir ara belleğe kaydedilir, ancak işlenenden daha hızlı kaydedilir, bu nedenle arabellek alanı boşalır, böylece çekirdek arabellekte bir miktar boş alan alana kadar tüm diğer paketleri bırakır.
Tampon boyutunu aşağıdaki gibi -B
( --buffer-size
) seçeneğiyle artırabilirsiniz :
tcpdump -B 4096 ....
Boyutun kilobayt cinsinden belirtildiğine dikkat edin, bu nedenle yukarıdaki satır arabellek boyutunu 4 MB olarak ayarlar.
tcpdump -B 4096
.
Göz önünde bulundurulması / denenmesi tcpdump
gereken bir şey daha, IP'leri etki alanı adlarına çözümlemek için DNS sorguları yaparak çok fazla zaman harcamak olabilir. Bunlara ihtiyacınız yoksa, -n
(arama yok) bayrağına atmayı deneyin . Örneğin:
tcpdump -n port 80
-nn -B 4096
izin verdi0 packets dropped by kernel
Göre man tcpdump
:
çekirdek tarafından düşürülen paketler (bu, işletim sistemi bu bilgileri uygulamalara bildirirse, tcpdump'ın çalıştığı işletim sisteminde tcpdump'ın çalıştığı işletim sistemi üzerindeki paket yakalama mekanizması tarafından bırakılan paketlerin sayısıdır) 0 olarak bildirilecektir).
Çekirdek yakalanan paketleri sabit boyutlu yakalama arabelleğine koyar . Bu tcpdump
arabellek yeterince hızlı bir şekilde boşaltılmazsa, çekirdek arabellekteki eski paketlerin üzerine yazmaya ve buna bağlı olarak bırakılan sayacı artırmaya başlar. Bu sayacın değeri "çekirdeğin düştüğü" olarak gördüğünüz değerdir.
Bu arada, şunları yapabilirsiniz yakalama tampon yeniden boyutlandırmak : Pass bir KiB boyutuyla seçeneği.tcpdump
-B
Adam sayfasının söylediklerinin yanı sıra, paketlerin çekirdeğin neden düşmesine neden olabileceği bazı ek nedenler var. tcpdump
Ağdaki tek trafiğin saniyede bir 512B paket PRBS olduğu yerden % 100 paket düşüşüyle karşılaşıyordum . Açıkça arabellek alanı açıklaması burada bir anlam ifade etmiyor - çekirdeğin 0.5kiB / s kullanabileceğini düşünüyorum.
Dağıtımımla (Ubuntu 14.04) birlikte gelen bir şey, bağlantı paketinde test paketlerimi beğenmeyen bir çeşit akıllı filtreleme yapıyor olabilir. Geçici çözümüm şu şekilde yeni bir ağ ad alanı oluşturmaktı:
sudo -i
ip netns add debug
ip link set dev eth0 netns debug
ip netns exec debug bash
ifconfig eth0 1.2.3.4 up
İç netns
kabuğunda, daha önce sorun çıkaran işletim sistemi işlemleri ne olursa olsun resim dışında kalıyor ve tcpdump
görmeyi beklediğim tüm paketleri gösteriyor.