8 Nisan 2009 Çarşamba

Paket Gönderici

100 mbit lik yerel ağda ağın gerçek hızını tespit edebilmek için bir uygulama geliştirmeye çalışıyorum.
Mantık şu: 1500 byte büyüklüğündeki paketlerden 1 sn. de 10 tane göndersek 15.000 byte=120.000 bit=~117 mbit.
Bu arada birim zamanda gönderilen paketlerin kaç tanesinin alındığını kayıt ederek, 1 dakikalık test sonunda alınan paket / alınması gereken paket ile ağın pratikteki hızını tespit etmeye çalıştım.
Önce, çok kısa beklemeler ile (normalde 10 ms. de bir paket göndermem gerekirken) 1 ms. civarında bekleyerek veri gönderip almayı denedim. Bilgisayarı bırakıp dışarı çıktım. 3 saati aşkın bir süre sonunda baktığımda şu sonuçla karşılaştım:


























Resimdeki gönderilen paket değerine baktığınızda 3 saat 19 dakikada 12 milyar 884 milyon değeri görünüyor ki, ne teoride ne de pratikte bu kadar paket göndermek mümkün değil. Kullandığım Switch Cisco Catalyst, her iki pc deki ethernet kartı Intel, yani ağ donanımında sorun olmamalı idi.

Anladığım kadarıyla TCP/IP stack’i arka arkaya çok fazla raw paket gönderilmeye çalışıldığında bunu engelliyor. http://research.eeye.com/html/tools/RT20060808-1.html adresinde XP SP2 ve w2k3 te TCP SYN paketlerinde böyle bir durumun söz konusu anlatılıyor.

Stack in çöküp çökmediğini kontrol etmek için Internete bağlanmayı denedim. Maalesef bağlanamadı.

Sonuç: Microsoft’un ethernet sürücülerine direk çok hızlı yüklenildiğinde stack çok kısa sürede çöküyor ve ne veri girişine ne de çıkışına izin veriyor!

Bekleme değerlerini daha normal değerlere düşürüp, VOIP ya da MMS stream gibi mantıklı paketler oluşturup veri alışverişi yaparak hız testini yenileyeceğim.

Merak ettiğim konulardan biri ise Microsoft TCP/IP stack’inin (özellikle Vista) Gigabit network e bağlı olduğunda ne kadar dayanabileceği. Kısa vadede eve Gbit networku kurmayı düşünmediğimden bu testi bir süre daha ertelemem gerekli.

Hiç yorum yok:

Yorum Gönder