Konuyu Açan
#1
Sysctl ile Ağ Yığını Ayarları
Giriş ve bağlam
Ağ yığını, bir sistemin ağ protokolü işlemlerini yöneten çekirdek ayarlarının toplamını ifade eder. Özellikle Linux tabanlı sunucularda, performans, güvenlik ve stabilite açısından sysctl üzerinden yapılan ince ayarlamalar önemlidir. Bu ayarlar, TCP/IP yığınının davranışını, bellek yönetimini ve paket sıralama/geri göndermeyi etkiler. Doğru konfigürasyon, gecikmeleri azaltabilir, kayıp paketleri azaltabilir ve eşzamanlı akışlarda adil dağılımı koruyabilir.
Temel kavramlar ve hangi alanları kapsar
1) Bellek ve tamponlar
2) TCP davranışı ve akış kontrolü
3) NIC ve yönlendirme iletimleri
Uygulama örneği: güvenli ve dengeli bir başlangıç
Bir sistemde önce hafıza ve kuyruk sınırlarını belirlemek mantıklıdır. Örneğin:
[Yukarıdaki değerler başlangıç noktasıdır; yük altında testlerle ayarlama gerekir.]
Kritik noktalar ve dikkat edilmesi gerekenler
Kapanış ve yorum
Ağ yığını ayarları, hedeflenen trafik profiline göre çok farklı sonuçlar doğurabilir. Özellikle yüksek kısa ömürlü akışlar (burst) veya uzun süreli açık bağlantılar için ince ayar gerekir. Bir sistemde hangi değerlerin işe yaradığına dair kişisel deneyimleriniz veya kurumsal test senaryolarınız nelerdir? Özellikle hangi senaryolarda hangi parametreleri değiştirdiniz ve hangi ölçütlerle başarı çıktı elde ettiniz?
Giriş ve bağlam
Ağ yığını, bir sistemin ağ protokolü işlemlerini yöneten çekirdek ayarlarının toplamını ifade eder. Özellikle Linux tabanlı sunucularda, performans, güvenlik ve stabilite açısından sysctl üzerinden yapılan ince ayarlamalar önemlidir. Bu ayarlar, TCP/IP yığınının davranışını, bellek yönetimini ve paket sıralama/geri göndermeyi etkiler. Doğru konfigürasyon, gecikmeleri azaltabilir, kayıp paketleri azaltabilir ve eşzamanlı akışlarda adil dağılımı koruyabilir.
Temel kavramlar ve hangi alanları kapsar
1) Bellek ve tamponlar
- net.core.rmem_max ve net.core.wmem_max: alınan ve gönderilen socket tamponlarının azami boyutunu belirler. Büyük iletimler için 4MB–256MB arası değerler arasında değişim yaygındır, ancak sistem yüküne göre dinamik ayar gerekir.
- net.ipv4.tcp_rmem ve net.ipv4.tcp_wmem: TCP için hafıza dilimlerini (minimum, default, maksimum) tanımlar. Yüksek trafik altında daha büyük dilimlerle daha stabil bir akış elde edilebilir.
2) TCP davranışı ve akış kontrolü
- net.core.netdev_max_backlog: gelen paketin sıralandığı kuyruğun maksimum boyutudur. Yetersiz backlog uzun gecikmelere ve DROPs’a yol açabilir.
- net.ipv4.tcp_tw_reuse ve net.ipv4.tcp_tw_recycle (modern kernellerde alternatif çözümler gerekir): TIME-WAIT durumlarını nasıl ele alır. Güvenlik ve uyumluluk durumu nedeniyle kullanımı dikkat ister.
- net.ipv4.tcp_congestion_control: kullanılan tıkanıklık kontrol algoritması. ctrl + s ile bürünmüş ağlar için cubic, bbr gibi algoritmaların davranışlarını karşılaştırmalı testlerle seçilmelidir.
3) NIC ve yönlendirme iletimleri
- net.core.default_qdisc: varsayılan kuyruk disiplinini belirler (pfifo_fast, fq_codel, cake). QoS ve Çoklu akışlarda belirgin farklar yaratır.
- net.ipv4.tcp_mtu_probing: Path MTU keşfi için dinamik olarak MTU’yu belirler; büyük paketler nedeniyle oluşan fragmentasyonun önüne geçer.
- net.ipv4.route.gc_timeout ve net.ipv4.ip_forward: yönlendirme tutarlılığı ve paket iletimiyle ilgili ince ayarlar.
Uygulama örneği: güvenli ve dengeli bir başlangıç
Bir sistemde önce hafıza ve kuyruk sınırlarını belirlemek mantıklıdır. Örneğin:
- net.core.rmem_max=134217728
- net.core.wmem_max=134217728
- net.ipv4.tcp_rmem="4096 1048576 134217728"
- net.ipv4.tcp_wmem="4096 1048576 134217728"
- net.core.somaxconn=1024
- net.core.netdev_max_backlog=4096
- net.core.default_qdisc=cake
- net.ipv4.tcp_congestion_control=bbr
[Yukarıdaki değerler başlangıç noktasıdır; yük altında testlerle ayarlama gerekir.]
Kritik noktalar ve dikkat edilmesi gerekenler
- Değişiklikleri kalıcı yapmak için /etc/sysctl.conf veya ilgili include dosyalarına ekleyin ve sysctl -p ile yükleyin.
- Değişiklik sonrası canlı izleme yapın: ss, iperf, tcpdump, dstat gibi araçlarla performansı ve gecikmeleri ölçün.
- Güvenlik ile uyumluluk: bazı eski ayarlar güvenlik açıklarına veya NAT/konak uyumsuzluklarına neden olabilir; özellikle TIME-WAIT ve MTU konularında dikkatli olun.
Kapanış ve yorum
Ağ yığını ayarları, hedeflenen trafik profiline göre çok farklı sonuçlar doğurabilir. Özellikle yüksek kısa ömürlü akışlar (burst) veya uzun süreli açık bağlantılar için ince ayar gerekir. Bir sistemde hangi değerlerin işe yaradığına dair kişisel deneyimleriniz veya kurumsal test senaryolarınız nelerdir? Özellikle hangi senaryolarda hangi parametreleri değiştirdiniz ve hangi ölçütlerle başarı çıktı elde ettiniz?
