Sistem/DevOps•8 dk okuma

Wireshark ile Ağ Tıkanıklığı Tespiti: TCP Retransmission, Window Size Zero ve Gizli Gecikmeler

Ağ kartı bozuk bir cihazın tüm şirketi yavaşlatmasını veya anahtar tampon bellek (buffer) taşmalarını tespit etmek için Wireshark paket analizi, TCP yeniden iletimleri ve TCP ZeroWindow teşhisleri.

AE

Ahmet Ertekin

18 January 2022

Wireshark ile Ağ Tıkanıklığı Tespiti: TCP Retransmission, Window Size Zero ve Gizli Gecikmeler

Wireshark ile Ağ Tıkanıklığı Tespiti: TCP Retransmission, Window Size Zero ve Gizli Gecikmeler

Kullanıcılar "Sunucu çok yavaş yanıt veriyor" dediğinde sistemciler suçu ağcılara, ağcılar yazılımcılara, yazılımcılar ise veritabanına atar. Bu sonsuz suçlama döngüsünü bitirmenin ve gerçeği ortaya çıkarmanın tek bir tarafsız hakemi vardır: Ağ Paketleri. Paketler asla yalan söylemez. Wireshark kullanarak kurumsal ağdaki gizli performans darboğazlarını nasıl teşhis ettiğimi paylaşıyorum.

1. TCP Retransmission (Yeniden İletim): Paket Neden Kaybolur?

TCP güvenilir bir protokoldür; gönderdiği her paket için karşı taraftan bir alındı (ACK) onayı bekler. Eğer belirli bir süre (RTO - Retransmission Timeout) içinde onay gelmezse, paketi tekrar gönderir (TCP Retransmission).

Normal bir yerel ağda (LAN) yeniden iletim oranı %0.1'in altında olmalıdır. Eğer bu oran %2'nin üzerine çıkıyorsa ağda fiziksel bir felaket vardır:

  • Bozuk bir patch kablo veya ezilmiş fiber optik hat.
  • Switch portunda CRC/Input errors artışı.
  • Çift taraflı Duplex uyuşmazlığı (Bir taraf Full-Duplex, diğer taraf Half-Duplex).
Wireshark Filtresi (Yalnızca Yeniden İletimleri Yakala):
tcp.analysis.retransmission

2. TCP ZeroWindow: Sunucu Boğuluyor!

Bazen ağ hattı tertemizdir ancak kullanıcılar yine de yavaşlıktan şikayet eder. Paketleri incelediğinizde Wireshark'ın siyah zemin üzerine kırmızı yazıyla [TCP ZeroWindow] uyarısı bastığını görürsünüz.

  • Pencere Boyutu (Window Size): Alıcının işletim sisteminin gelen verileri tuttuğu TCP tampon (buffer) alanıdır.
  • ZeroWindow Ne Demektir? Hedef sunucunun CPU'su veya diski o kadar yoğundur ki, işletim sistemi gelen ağ paketlerini işleyip uygulamaya teslim edemez. Ağ kartına "Dur! Tamponum tamamen doldu, bana 1 bayt bile gönderme!" sinyali yollar.
  • Teşhis: Sorun ağda değil; hedef sunucunun aşırı yüklü işlemcisinde veya kilitlenen SQL/IIS servisindedir!
Wireshark Filtresi:
tcp.analysis.zero_window

3. Port Aynalama (Port Mirroring / SPAN) ile Doğru Paket Yakalama

Kendi bilgisayarınızdan paket yakalayarak sunucudaki sorunu göremezsiniz. Cisco switch üzerinde SPAN (Switched Port Analyzer) kurarak şüpheli sunucunun tüm trafiğini analiz bilgisayarınıza kopyalamanız gerekir:

! Cisco Switch Üzerinde SPAN Oturumu
monitor session 1 source interface GigabitEthernet1/0/10 both ! Kaynak Sunucu
monitor session 1 destination interface GigabitEthernet1/0/20   ! Wireshark Yüklü Laptop

Karşılaşılan Kritik Hatalar ve Çözüm İpuçları

  • TCP Duplicate ACK Analizi: Wireshark'ta [TCP Dup ACK] paketleri görüyorsanız, paketlerin alıcıya sırasız (Out-of-Order) ulaştığını anlarsınız. Bunun sebebi genellikle iki farklı hat üzerinden dengesiz yük dengeleme yapılmasıdır.
  • Büyük Dosya Kaydetme (Ring Buffer): Yoğun bir sunucuda Wireshark açıp saatlerce beklerseniz laptopunuzun RAM'i tükenip çöker. Capture Options -> Output menüsünden "Ring Buffer" açın: 500 MB'lık dosyalar halinde en fazla 10 dosya tutulsun; eskiler otomatik silinsin.

Mühendis Notu

Bir performans toplantısına elinizde tahminlerle değil; Wireshark'ın Statistics -> Service Response Time grafiğiyle gidin. "Gecikmenin 12 milisaniyesi ağda, 840 milisaniyesi SQL sunucusunun diske yazma yanıtında gerçekleşiyor" dediğiniz an tartışma biter, mühendislik başlar.