12 Mayıs 2016 Perşembe

Raw soket hataları

Her ne kadar Unix sistemlerde RAW soket çok pratik gözükse de aslında kullanımda bir çok problemler vardır.
Bu hataların bazıları(benim başıma gelenler) :
  1. Haddinden büyük paketler (Normalde gönderiyorsanız raw da göndermeniz gerekir), message to long gibi bir hata yükseliyorsa o zaman ethernet kartınıza tecavüz etmekten vazgeçin uyarısı gibi bir uyarıdır.
  2. Aynı nesneyi hem gönderme hem de alma işlemi için kullanmayın. Her gönderimde soketinizin hızı (refleksi) daha da düşer. Minimal TCP (donanım sekmesi) 50 ms gecikme olduğunu var sayarsak sürekli gönderimler donanım tampon belleğini aşacağı için kuyruk oluşur. Bu kuyruk sizin paket eşleştirme yada karşılaştırma işlemlerinizi sekteye uğratır.
  3.  İnternet soket tipi kesinlikle 3 (ALL, 0x0003) olmalıdır. Aksi takdirde donanıma gelen gövdesiz paketleri maalesef görüntüleyemezsiniz.
  4. Dinleme objesinde (server) tampon boyutunu 65535 yapın ki bazı paketler standart paket boyutunu (< 1600) aşmaktadır. Paket boyutu (gelen) tampon değerinizin üzerine çıkarsa ya o paketi alamaz yada bozuk içerikli bir paket görüntülersiniz.
  5. Sanal ağ uygulamalarında mutlaka içkesme (interrupt) kullanmanız gerekir. Ayrıca her bir paket için(gönderme) yaklaşık 1 ms geçikme kullanın ki paketlerin yanıtlarını kontrol edebilin.
  6. Paket alımında (server) mutlaka filtre uygulayın. Paket başlıkları üzerinden yapacağınız filtre sizin alakasız paketleri işlemenize engel olacaktır, bu şekilde yazdığınız aplikasyon daha performanslı çalışacaktır. Filitrenin temel öğesi `source port mac` (kaynak port mac adresi) dır. Farklı bir filitre ancak ana filitrelerden sonra uygulanabilir.

Hiç yorum yok:

Yorum Gönder