FreeBSD bağlantı birleştirme, tek bağlantıdan daha hızlı değildir


10

Bir 4 noktası koymak Intel I340-T4 FreeBSD 9.3 sunucu NIC 1 ve bunu yapılandırılmış bağlantı toplama bölgesindeki LACP moduna 2- için bir ana dosya sunucusundan 16 veri TiB için aynanın 8 süresini azaltmak için bir girişimde 4 klon paralel. 4 Gbit / sn'ye kadar toplam bant genişliği almayı bekliyorduk, ancak ne denesek deneriz, asla 1 Gbit / sn'den daha hızlı çıkmaz. 2

Bunu iperf3sessiz bir LAN'da test etmek için kullanıyoruz . 3 İlk örnek beklendiği gibi neredeyse bir gigabite çarpıyor, ancak paralel olarak ikinci bir tane başlattığımızda, iki istemci kabaca ½ Gbit / sn'ye düşüyor. Üçüncü bir istemci eklemek her üç istemcinin hızını ~ ⅓ Gbit / sn'ye düşürür.

iperf3Dört test istemcisinden gelen trafiğin farklı bağlantı noktalarındaki merkezi anahtara geldiği testleri oluşturmaya özen gösterdik :

LACP test kurulumu

Her test makinesinin raf anahtarına giden bağımsız bir yolu olduğunu ve dosya sunucusunun, NIC'sinin ve anahtarın tümünün, lagg0grubu ayırarak ve her birine ayrı bir IP adresi atayarak bunu kaldıracak bant genişliğine sahip olduğunu doğruladık. Bu Intel ağ kartındaki dört arayüzden biri. Bu yapılandırmada ~ 4 Gbit / sn toplam bant genişliği elde ettik.

Bu yola başladığımızda, bunu eski bir SMC8024L2 yönetilen anahtarla yapıyorduk . (PDF veri sayfası, 1.3 MB.) Gününün en üst düzey anahtarı değildi, ancak bunu yapabilmesi gerekiyordu. Geçişin yaşı nedeniyle hatalı olabileceğini düşündük, ancak çok daha yetenekli bir HP 2530-24G'ye yükseltmek semptomu değiştirmedi.

HP 2530-24G anahtarı, söz konusu dört bağlantı noktasının gerçekten dinamik bir LACP bagajı olarak yapılandırıldığını iddia eder:

# show trunks
Load Balancing Method:  L3-based (default)

  Port | Name                             Type      | Group Type    
  ---- + -------------------------------- --------- + ----- --------
  1    | Bart trunk 1                     100/1000T | Dyn1  LACP    
  3    | Bart trunk 2                     100/1000T | Dyn1  LACP    
  5    | Bart trunk 3                     100/1000T | Dyn1  LACP    
  7    | Bart trunk 4                     100/1000T | Dyn1  LACP    

Hem pasif hem de aktif LACP'yi denedik.

Dört NIC bağlantı noktasının da FreeBSD tarafında trafik aldığını doğruladık:

$ sudo tshark -n -i igb$n

Garip bir şekilde, tsharksadece bir istemci durumunda, anahtarın 1 Gbit / sn akışını iki bağlantı noktasına böldüğü anlaşılıyor ve aralarında ping-ponging var. (Hem SMC hem de HP anahtarları bu davranışı gösterdi.)

İstemcilerin toplam bant genişliği yalnızca tek bir yerde bir araya geldiğinden - sunucunun rafındaki anahtarda - yalnızca bu anahtar LACP için yapılandırılır.

Hangi müşteriye ilk başladığımız veya hangi sırayla başlattığımız önemli değil.

ifconfig lagg0 FreeBSD tarafında diyor ki:

lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
    ether 90:e2:ba:7b:0b:38
    inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
    inet6 fe80::92e2:baff:fe7b:b38%lagg0 prefixlen 64 scopeid 0xa 
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    laggproto lacp lagghash l2,l3,l4
    laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

Durumumuza mantıklı gelen FreeBSD ağ ayarlama kılavuzundaki tavsiyelerin çoğunu uyguladık . (Çoğu maksimum FD'lerin artırılması gibi şeyler önemsizdir.)

Sonuçlarda bir değişiklik olmadan TCP segmentasyonu boşaltma işlemini kapatmayı denedik .

İkinci bir test ayarlamak için ikinci bir 4 portlu sunucu NIC'miz yok. 4 ayrı arabirimle yapılan başarılı test nedeniyle, donanımın hiçbirinin hasar görmediği varsayımına devam ediyoruz. 3

Bu yolları ileride görüyoruz, hiçbiri çekici değil:

  1. SMC'nin LACP uygulamasının berbat olmasını ve yeni anahtarın daha iyi olacağını umarak daha büyük, daha kötü bir anahtar satın alın. (HP 2530-24G'ye yükseltmek yardımcı olmadı.)

  2. Bir laggşeyi kaçırdığımızı umarak FreeBSD yapılandırmasına biraz daha bakın. 4

  3. Bağlantı toplamayı unutun ve bunun yerine yük dengelemeyi gerçekleştirmek için yuvarlak DNS'yi kullanın.

  4. Sunucu NIC'sini değiştirin ve bu kez 10 GigE öğesi ile değiştirin, bu LACP deneyinin donanım maliyetinin yaklaşık 4 katı.


Dipnotlar

  1. Neden FreeBSD 10'a geçmiyorsunuz? FreeBSD 10.0-RELEASE hala ZFS havuzu sürüm 28 kullandığından ve bu sunucu FreeBSD 9.3'te yeni bir özellik olan ZFS havuzu 5000'e yükseltildiğinden. 10. x hattı, FreeBSD 10.1 yaklaşık bir ay gelene kadar bunu elde edemez . Ve hayır, 10.0-STABLE kanama kenarına ulaşmak için kaynaktan yeniden inşa etmek bir seçenek değil, çünkü bu bir üretim sunucusu.

  2. Lütfen sonuçlara atlamayın. Sorunun ilerleyen bölümlerindeki test sonuçlarımız, bunun neden bu sorunun kopyası olmadığını söyler .

  3. iperf3saf bir ağ testidir. Nihai hedef, bu 4 Gbit / sn toplam boruyu diskten doldurmaya çalışmak olsa da, henüz disk alt sistemini dahil etmiyoruz.

  4. Buggy veya kötü tasarlanmış, belki, ama fabrikadan çıktığı zamandan daha fazla kırılmaz.

  5. Bunu yapmaktan çoktan şaşkına dönmüştüm.


1
İlk tahminim, kullanılan karma algoritma ile ilgili bir şey olabilirdi, ancak paketleri incelemek gerekiyordu. Bu yardımcı olmazsa, iperf'nin kullandığı TCP penceresini daha büyük bir şeye değiştirmeyi deneyin. Lagg (4) man sayfasının karma boşaltmayı devre dışı bırakma hakkında bir şeyleri var, bunu denemek isteyebilirsiniz.
Giovanni Tirloni

Yanıtlar:


2

Hem sistemde hem de anahtarda kullanılan yük dengeleme algoritması nedir?

Bununla ilgili tüm tecrübelerim FreeBSD ve SMC'de değil Linux ve Cisco'da, ancak aynı teori hala geçerli.

Linux bağlama sürücüsünün LACP modundaki ve 2950 gibi daha eski Cisco anahtarlarındaki varsayılan yük dengeleme modu, yalnızca MAC adresine göre dengelenmektir.

Bu, tüm trafiğinizin bir sistemden (dosya sunucusu) başka bir MAC'a (varsayılan ağ geçidi veya anahtardaki Anahtarlı Sanal Arayüz) geçmesi durumunda kaynak ve hedef MAC'nin aynı olacağı anlamına gelir. kullanılabilir.

Diyagramınızdan varsayılan bir ağ geçidine trafik gönderiyormuşsunuz gibi görünmüyor, ancak test sunucularının 10.0.0.0/24'te olup olmadığından veya test sistemlerinin başka alt ağlarda olup olmadığından ve yönlendirildiğinden emin değilim anahtarda bir Katman 3 arayüzü.

Düğmeye yönlendiriyorsanız, cevabınız var.

Bunun çözümü farklı bir yük dengeleme algoritması kullanmaktır.

Yine BSD veya SMC ile deneyimim yok, ancak Linux ve Cisco L3 bilgilerine (IP adresi) veya L4 bilgilerine (port numarası) göre dengeleyebilir.

Test sistemlerinizin her biri farklı bir IP'ye sahip olması gerektiğinden, L3 bilgilerine göre dengelemeyi deneyin. Bu hala işe yaramazsa, etrafında birkaç IP değiştirin ve yük dengeleme düzenini değiştirip değiştirmediğinizi görün.


Teşekkürler, ama tahmininiz yanlış. Yukarıda gösterilen HP anahtarı yapılandırması L3 dengelemesi yaptığını söylüyor. Ayrıca, bunlar L3 "anahtarları", yani yönlendiriciler değildir. Sadece IGMP gözetleme ve LACP yapmak için yeterli L3 zeki var. Binadaki tek gerçek yönlendirici, Internet ağ geçidinde, yukarıdaki test şemasının perspektifinden bir yan ayak üzerinde kapalı olan yönlendiricidir.
Warren Young

Bunun bir L2 veya L3 anahtarı olması önemli değildir, bu bağın yük dengesini yüklemek için kullandığı yapılandırmadır ve bu farklı bir şeydir. Anahtarın kendisi, VLAN'lar arasında gidecek veya L2'nin ötesindeki trafiği manipüle edecek akıllılara sahip olmayabilir, ancak bağın yük dengeleme algoritması (muhtemelen) olabilir.
suprjami

Anahtarın yukarıda olduğunu görüyorum diyor Load Balancing Method: L3-based (default). Bunu değiştirmeyi deneyin.
suprjami
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.