TCP Boşaltmayı devre dışı bırakın {tamamen, genel olarak ve kolayca}


15

Debian sunucularımda tcp-offloading ("TOE") özelliğini devre dışı bırakmak istiyorum.

ethtool -K .....

Yine de bazı isteklerim var:

Debian'a temiz bir şekilde entegre edin

Bu okur: hiçbir rc.local, ben de sözde rc-komut dosyası kaçınmak istiyorum ...

Tahmin ediyorum, ethtool yüklüyor ve / etc / network / arabirimlerindeki seçenekleri kullanarak TOE'yi deconfig yapan pre-up.d / -Hook kullanıyor .

FAI kullanarak tüm (gelecekteki) sunucularımı genel bir şekilde yapılandırmak istiyorum . (fai zaten mevcut olduğundan ve istendiğinden!) Bazı donanımlarda desteklenmeyen parmak seçenekleri ne olacak? Mevcut olmayan bir seçenek devre dışı bırakılırsa ağ iletişimi başarısız olur mu? Sanırım bunu yapmamak sağlam olmalı, ama bu da benim istenen çözümüm gibi görünmüyor.

Atm 11 seçenek olduğundan yapılandırmayı çok fazla kümelendirir! Birden fazla NIC kullanarak bu benim için hataya açık kokuyor.

Daha genel bir çözüm yok mu? Aklımda bir sistem var, ama henüz bir tane bulamadım. Dileğim şuydu:

echo 0 > /proc/sys/net/core/enable_tcp_offloading

Not: TOE'yi varsayılan olarak etkinleştirmek için "yeni donanımlarımı" bulmak için oldukça şaşırdım, çünkü: http://www.linuxfoundation.org/collaborate/workgroups/networking/toe


1
TOE ile ilgili argümanlar doğru olsa da, çoğunlukla gerçekçi kısıtlamalarla yaşamak zorunda olmayan Tin-Foil şapka türlerinin (herhangi bir ivmenin genellikle yararlı olduğu) belirtmek isterim. TOE'nin devre dışı bırakılması gereken birçok durum vardır, ancak bu yaygın değildir ve devre dışı bırakmayı "genel ve kolay" hale getirme çabasını hak etmez.
Chris S

1
@Chris S: Doğru, ama berbat olana kadar TOE'ye aldırmadım. Ve son zamanlarda ağ sorunlarının "TOE'yi devre dışı bırakma" için kayda değer olduğunu özetliyor. Bu yüzden istiyorum! : DI, Ethtool-Metodu ile yaşayabilirdi, ama birisinin "topuzu" bilmesini umuyor ....
Michuelnik

@Michuelnik evet - eğer çalışıyorsa, çalışmasına izin verirdim, ancak harekete geçiyor ve sizin için sorunlara neden oluyorsa, devre dışı bırakmak için iyi bir neden. Sen olabilir Linux izin veriyorsa boşaltma motoru aktif olsa bazı bölümlerini bırakmak istiyorum: Boşaltma sağlama (örneğin sert CRC32 berbat ve kartlar daha hızlıdır ve hangi teneke paket başına bir kaç CPU döngülerini tasarruf donanım bunu yüksek trafik ağlarına ekleyin)
voretaq7

@ voretaq7: İyi nokta! Kısaca, kullanılabilir ve sefil seçenekler arasında ayrım yapmam gerekip gerekmediğini düşündüm. Ama TOE'yi çok uzun süre incelemeden oldukça hızlı bir çözüme ihtiyacım vardı, özellikle de TOE şeyler çok fazla satıcıya özgü görünüyor, çünkü zamana yatırım yapmak için çok hızlı yaşlanan bilgi. Wireshark'ımın yanlış chksumlardan şikayetçi olmasının sebebi TX-chksum-offloading mi?
Michuelnik

Devre dışı bıraktığınız özelliklerin TOE olmadığını söylemeliyim. TOE tam bir TCP boşaltma motorudur. Sadece sağlama toplamı yükünü devre dışı bırakıyorsunuz, segmentasyon yükü gönderiyorsunuz ve yeniden montaj yükü alıyorsunuz. Bu özelliklerin hiçbiri TOE değildir. Linux TOE'yi
juhist

Yanıtlar:


13

Debian'da, ethtoolpaket artık if-up.dboşaltma (ve diğer ethtoolayarlar) seçeneklerini uygulayan bir komut dosyası sağlar .

Bu paketi yüklemeniz ve içindeki arayüze bunlar gibi satırlar eklemeniz yeterlidir /etc/network/interfaces.

auto eth0
iface eth0 inet static
    address 10.0.3.1/255.255.248.0
    gateway 10.0.2.10
    offload-tx  off
    offload-sg  off
    offload-tso off

4
kabul edilen cevap bu olmalı
Spongman

7

Eureka! "Benim" çözüm buldum!

Ben sadece kendi yerleştirerek ediyorum devre dışı-toe Script /etc/network/if-up.d/ devre dışı bıraktığı tamamen-boşaltma TCP.

Bonus olarak bunu devre dışı bırakan bir / etc / network / interfaces -Option ekledim .

#!/bin/bash

RUN=true
case "${IF_NO_TOE,,}" in
    no|off|false|disable|disabled)
        RUN=false
    ;;
esac

if [ "$MODE" = start -a "$RUN" = true ]; then
  TOE_OPTIONS="rx tx sg tso ufo gso gro lro rxvlan txvlan rxhash"
  for TOE_OPTION in $TOE_OPTIONS; do
    /sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
  done
fi

"Eureka" nın içinde "H" yoktur.
Chris S


1
Debian (ish) 'ye özgü (veya en azından saygılı şeyler gerektiren if-up.d), ama oldukça zarif - Seviyorum.
voretaq7

@ voretaq7: Teşekkürler! Hâlâ iyileştirmek zorunda - bağ cihazları ve belki de diğer özel durumlar.
Michuelnik

Bir post-up for i in rx tx gso ; do ethtool -K $IFACE $i off; donein/etc/network/interfaces
JB

0

Konu dışı (çeşit) ama burada bazı RHEL6 sunucuları için aynı şeyi nasıl yapacağını anlamaya çalışırken sona erdi. Eğer birisi RHEL / CentOS / Fedora benzeri dağıtımlar için aynı şeyi arıyorsa, cevabı burada bulacaksınız .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.