Bağlantı toplama (LACP / 802.3ad) maksimum verim


10

Linux altında bağlı arayüzlerle ilgili bazı kafa karıştırıcı davranışlar görüyorum ve birisinin benim için temizleyebileceği umuduyla durumu oraya atmak istiyorum.

İki sunucum var: Sunucu 1 (S1) 4x 1Gbit ethernet bağlantılarına sahip; Sunucu 2 (S2) 'nin 2x 1Gbit ethernet bağlantısı vardır. Her iki sunucuda, 3.11.0-15 çekirdeği de olsa (lts-saucy linux-generic paketinden) Ubuntu 12.04 çalışıyor.

Her iki sunucu da ilgili tüm ağ arabirimlerine aşağıdaki yapılandırma (in /etc/network/interfaces) ile tek bir bond0 arabiriminde paketlenmiştir :

bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]

Sunucular arasında, söz konusu bağlantı noktalarında LACP için doğru şekilde yapılandırılmış (bence) birkaç HP anahtarı vardır.

Şimdi bağlantı çalışıyor - ağ trafiği her iki makineye de mutlu bir şekilde akıyor. Ve tüm ilgili arayüzler kullanılıyor, bu yüzden toplama tamamen başarısız gibi değil. Ancak, bu iki sunucu arasında mümkün olduğunca fazla bant genişliğine ihtiyacım var ve beklediğim ~ 2Gbit / s almıyorum.

Testlerimde, her sunucunun her TCP bağlantısını (örn. İperf, scp, nfs, her neyse) tek bir bağımlı arabirime ayırdığını görüyorum. Esasen her şey en fazla 1 gigabit ile sınırlı görünüyor.

Ayarlayarak , iki bağımlı arayüze göndermek için bond-xmit-hash-policy layer3+4kullanabilirim iperf -c S1 -P2, ancak sunucu tarafında alım hala sadece bir bağımlı arayüzde gerçekleşiyor ve bu nedenle toplam çıktı 1Gbit / s'de kapatılıyor, yani istemci ~ 40-50MB / s gösteriyor iki bağımlı arayüzde, sunucu bir bağımlı arayüzde ~ 100MB / s gösterir. Ayarlama olmadan bond-xmit-hash-policygönderme işlemi bir bağımlı arabirimle de sınırlıdır.

LACP'nin bu tür bağlantı paketlemesine izin vermesi gerektiği izlenimini edindim, örneğin, iki ana bilgisayar arasındaki tüm kullanılabilir arabirimleri kullanmak için tek bir scp aktarımına izin verdim.

LACP anlayışım yanlış mı? Veya bir yerlerde bazı yapılandırma seçeneklerini kaçırdım mı? Soruşturma için herhangi bir öneri veya ipucu çok takdir edilecektir!

Yanıtlar:


18

Hızlı ve kirli bir açıklama, LACP kullanan tek bir iletişim hattının paketleri birden fazla arabirime bölmeyeceğidir. Örneğin, HostA'dan HostB'ye tek bir TCP bağlantısı akış paketiniz varsa, bu paketleri göndermek için arabirimlere yayılmaz. Son zamanlarda üzerinde çalıştığımız bir çözüm için LACP'ye çok bakıyorum ve bu, LACP ile birden çok ağ arayüzünü 'birleştirmek' veya 'kanallaştırmak' size kombine arayüzlerin bir "verimini" verdiği yaygın bir yanlış anlamadır. Bazı satıcılar, birden fazla arabirim üzerinden yönlendirilecek özel sürücüler yaptı, ancak LACP standardı okuduğumdan değil. Benzer sorunları ararken HP'den bulduğum iyi bir şema ve açıklama bağlantısı: http://www.hp.com/rnd/library/pdf/59692372.pdf


1
Her şey mantıklı. Yanılgımı neden daha önce keşfetmediğime dair hiçbir fikrim yok; Ben sadece doğru arama terimleri ve dokümantasyon sayfaları etrafında süpürüyor olmalıyım. Ağ donanımına bağlı olarak src-dest karma modunu değiştirebilir ve çoklu arayüz veriminde şansımız olabilir, ancak bu aşamada sahip olduğumuz şeyden memnun olacağımı düşünüyorum. Açıklamalarınız ve çok faydalı linkiniz için teşekkürler.
Zetten

Yardımcı olduğuma sevindim. Son zamanlarda farklı satıcılar tarafından farklı olarak kullanılan kanal ve bağ ile ilgili terminoloji hakkında açıklama almaya çalışırken bu konuda çok şey okudum. IEEE satıcıları tarafından tanımlananlar gibi belirli standartların dışında bazı terimleri birbirinin yerine kullanma eğiliminde olduğunu buldum ...
Mike Naylor

6
Doküman artık orijinal URL'de mevcut değil, ancak yine de İnternet Arşivi'nden erişilebilir: web.archive.org/web/20030324105208/http://www.hp.com/rnd/…
smbear

3

bond-xmit-hash-policy layer3+4kaynak sunucunuzdan anahtara yük dengelemesini ayarlar. Yük dengeleme algoritmasını anahtarınızdan ikinci sunucuya ayarlamaz. Bu neredeyse kesinlikle katman-2 veya katman-3 dengeli, yani hiç değil.


2

Öncelikle, bir takım sürücüsü kullandığınızda, bu biraz ek yük oluşturacak ve 1GB adaptörde ~ 940 MB / s olan beklenen maksimum verimi ~% 10 azaltacaktır.

Ne tür bir bağdaştırıcınız olduğundan emin değilim, ancak kutu içindeki sürücüleri kullanıyorsanız, ayarlar maksimum verim için muhtemelen ideal değildir. bağdaştırıcıdaki tek bir kuyruk büyük olasılıkla kablo hızına erişemediğinden 4'e kadar sıra eklemeyi düşünebilirsiniz.

Başka bir husus, iperf'in bir iş parçacığının muhtemelen en yüksek hızları almayacağıdır. 1GB için 2-6 iş parçacığı muhtemelen daha idealdir, aynı anda birden fazla iş parçacığını başlatmak için basit bir bash betiği kullanabilirsiniz.

Intel NIC için, ancak RSS ve Donanım RSC verimi etkileyebilir, Broadcom'da TOE'nin çalıştığından emin olun.

Birinci adım, LAG'ları kaldırmak ve ne kadar verim aldığını görmek için her sistemde 1 bağlantı noktası trafiğini test etmeyi denemek, bunu tüm portlarla yapın, sonra 2'yi deneyin. LACP kurmak için bir kararsız canavar ve bir HP anahtarına kurmaya çalışmadım, sadece Force10 (Dell öncesi).

Ayrıca, neden birkaç anahtar var?


Açıklanan diğer cevapta, temel sorun LACP anlayışımdı, ancak sadece resmi doldurmak için: linux kutuları çekirdeğin bağ sürücüsünü kullanıyor. Her arabirim ayrı ayrı max-gigabit verimini itebilir (görünüşe göre diğer trafiğe bağlı olarak yaklaşık 110-117MB / s), bu yüzden sadece bireysel NIC'leri ayarlamak yerine bant genişliğini artırmak istiyordum. Anahtarlara gelince, çok ofisli bir sitemiz var ve fiber mux / demux ve çeşitli diğer bit ve bobs ile kanal anahtarları var. Test etmek için bir HP 2920-48G anahtarında her iki sunucum da vardı.
Zetten

iperf, --parallelçalıştırılacak paralel istemci akışı sayısını denetleyen bir parametreye sahiptir
8.8.8.8
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.