Fórumok
Sziasztok,
Két gigabites hálókártyát (eth0 és eth1) próbálok összehozni LACP-vel Debian 11 alatt úgy, hogy meglegyen a 2Gbit/s-es sebesség.
Azonban hiába megy mindkét hálókártya, sebességtesztben csak 1Gbit/s van.
Ezen kívül a dmesgben egy erre vonatkozó warning ezzel boldogít:
bond0: Warning: No 802.3ad response from the link partner for any adapters in the bond
Eddig ezzel a két switchel próbáltam és ugyanaz a jelenség:
- Mikrotik CRS328-24P-4S+RM
- Zyxel GS2210-48
/etc/network/interfaces erre vonatkozó része:
auto bond0 iface bond0 inet static address 172.22.0.100 netmask 255.255.255.252 gateway 172.22.0.1 dns-nameservers 172.22.0.1 slaves eth0 eth1 bond-mode 802.3ad bond-miimon 100 bond-downdelay 200 bond-updelay 200
Köszönöm az ötleteket!
Hozzászólások
A warning azt jelenti,m hogy nem sikerült összehozni a switch-el az LACP-t.
Nyilván ehhez a switch-nek is tudnia kell ezt a módot (a leírásaik szerint tudják), és várhatóan az érintett portokat is ennek megfelelően kell configurálni.
De még ha össze is jön, ha csak egy tcp session-t használsz, akkor nem fog 1 Gb-nél többet mutatni.
Csak úgy éred el a 2 Gbit-et, ha több kapcsolat is párhuzamosan megy.
zrubi.hu
fixme, de ez szükséges, de nem elégséges feltétel. Emlékeim szerint a balance method is konfigurálandó, ez lehet IP vagy MAC alapján, de adott cím csomagjai azonos linken fognak közlekedni.
Azaz nem elég, hogy több kapcsolat, de több gép (v több ipcím) esetleg propietary protokol is kell hozzá.
elvileg bizonyos eszközök már L3 port alapján is tudják balance-olni a csomagokat, de nem jellemző.
"Probléma esetén nyomják meg a piros gombot és nyugodjanak békében!"
L3 az az IP cím réteg az OSI-ban. Az L4 lesz a TCP/UDP portszám alapú hashing.
// Happy debugging, suckers
#define true (rand() > 10)
ez sok beállítástól függ. Van olyan switch, amelyik a forrás- és cél portot is beteszi a kimenő interface választásba. Ha ez beállítható, akkor több az esély a nagyobb sávszélességre.
A Mikrotiket ez alapján configoltam: https://wiki.mikrotik.com/wiki/SwOS/CSS326#LAG
A Zyxelt pedig ez alapján: https://kb.zyxel.com/KB/searchArticle!gwsViewDetail.action?articleOid=0…
Ennek ellenére eléggé makacsul warningol, hogy mégsem megy az LACP.
A Mikortik-en én azért Active-ba tenném a portokat.
Egyébként a
cat /proc/net/bonding/bond0
mit mutat?
A networkingben az két slave portot felhúztad?
Van/volt valami bug/összevisszaság a Debian 11-ben a bond-al,de mintha már javították volna valamelyik csomagban:
https://www.claudiokuenzler.com/blog/1121/debian-11-bullseye-problem-bo…
/etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
address 172.22.0.100
netmask 255.255.255.252
gateway 172.22.0.1
dns-nameservers 172.22.0.1
slaves eth0 eth1
bond-mode 802.3ad
---
root@nas0:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.15.1
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0
802.3ad info
LACP active: on
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: b6:5f:75:b9:ca:af
Active Aggregator Info:
Aggregator ID: 2
Number of ports: 2
Actor Key: 9
Partner Key: 2
Partner Mac Address: cc:2d:e0:a0:39:50
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:5f:67:0a:b7:10
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: b6:5f:75:b9:ca:af
port key: 9
port priority: 255
port number: 1
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: cc:2d:e0:a0:39:50
oper key: 2
port priority: 32768
port number: 24
port state: 57
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 54:04:a6:94:f4:3d
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: b6:5f:75:b9:ca:af
port key: 9
port priority: 255
port number: 2
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: cc:2d:e0:a0:39:50
oper key: 2
port priority: 32768
port number: 23
port state: 57
Ez pedig jónak tűnik. A Warning a dmesg-ben az rögtön a bond felhúzása után az nem probléma.
De ahogy fentebb többen is írták sima layer2 hashing-el nem biztos hogy el tudsz érni 1Gbps-nél nagyobb sebességet.
Főleg ha nem a LAN-on kommunikál egymással több gép hanem minden a gateway felé megy.
Az
xmit_hash_policy=layer2+3
-re állítsd át legalább.
Ugyanabba a switchbe van bedugva egy másik gép 10Gbit/s-el.
Abból szeretnék kihozni ezzel a módszerrel 2Gbit/s-et a két 1Gbites hálókártyával rendelkező géppel.
Az xmit_hash_policy-t ki fogom próbálni.
namost, ha van egy bond interface-d, annak van 1db mac címe és -gondolom- egy 1db ipcíme.
Melyik hashing eljárás alapján várod (el), hogy mindkét porton kapjál adatot??
Fordítva tudna működni azaz a fenti "bonded" gép a server, akár 4x1G -vel, és a rá csatlakozó gépEK ki tudnák hajtani a vonalakat külön-külön.
layer3+4 legyen mindket oldalon (switch+gep)
ezzel kapcsolatos kérdés: ha nem tcp hanem udp (mondjuk nfs) akkor ugye a serveren is meg a kliensen is lehet több nfs processz.
Ezek elvileg több porton figyelnek, ergo ha tudok ipcim+port alapján megkülönböztetni (talán ez a layer4) akkor mehet akár 2 gép között is a 2Gbit (ebben a speciális esetben nyilván).
Nekem is lesz hasonló projektem a karácsonyi szünetben, majd beszámolok az eredményről.
Gábriel Ákos
Elengedtem az LACP-t, de maradt a két hálókártya két különböző IP címmel ugyanazon a hálózaton. A gépek egyik része az egyik IP-re csatlakozik, másik része pedig a másikra. A probléma ezzel az, hogy amíg ez 10+ éve normálisan működött, az most eléggé bizonytalan lett. Pontosabban először ez még jól ment, azonban ma azt vettem észre, hogy mindkét IP-t érintő forgalom csak az első hálókártyán megy át míg a másik hálókártya kihasználatlanul áll.
Sima bond -on egy tcp kapcsolattal nem tudsz elerni 2Gbit -et.
Probalad tobb kapcsolattal L3L4 hashel.
Nem szokvanyos megoldasokkal talan lehet.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
Próbáltam.
2 párhuzamos TCP kapcsolatnál simán lementek 500Mbit/s-re. Tehát megmaradt az 1G.
Ne ketot probalj hanem 10 -et.
A veletlen muve hogy kulon utakon jar -e,
ha legalabb egy mashol megy ..
A masik dolog egyszer voltam olyan helyzetben hogy az osszes MAC cimem paros volt,
ezert L2 cim alajan hasheles nem ment.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
Ha már 10+ évvel ezelőtt jól működött de manapság már nem, nem lehet h. ebbe a strong/weak host model váltásba futottál bele? Igaz ez a váltás windows-nál volt Vista idejében, linux mindig is weak host elvet követett
https://en.m.wikipedia.org/wiki/Host_model
https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc1…
ha ket halokartya de ugyanaz a ip route+rule-al tudod megoldani, nalam igy van. (nalam kulon halok vannak, de ami eth2-on jon be, az ott is megy ki):
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
uhm. Ezt vajon hol tanítják?
Ne értsd félre, nem személyeskedésnek számon, de már mástól is hallotam ilyen ötleteket...
de ezek a gyakorlatban nem működnek, nem is javasoltak, és szerintem 10 évvel ezelőtt sem volt az.
Nem tudom végülis mit szeretné lelérni, de ez így csak káoszt eredményez.
Ha azt, hogy 2 db 1Gbs interface -ből 2Gbs-t hozzál ki, azt csak bizonyos - és nagyon limitált - körülmények között lehetséges.
Úgy általában simán csak nem lehetséges.
zrubi.hu
Itt van egy cikk, tele van typo-val de az alapötlet benne van, meg lehet csinálni subneten belül a 2 ip-t korrekten:
https://access.redhat.com/solutions/30564
Gábriel Ákos
Egy adott adatstream nem lesz 2 Gbps.
Ha van egy gerinced és bondingolsz, akkor a több src és több dst fogja statisztikailag kihasználni az ilyen módon felnövelt vonalakat.
Közben sikerült megcsinálni LACP-vel a 2 Gbitet:
- A switchen firmware-t kellett frissíteni.
- A /etc/network/interfaces-ben ez lett végül beállítva: bond-xmit-hash-policy layer3+4
- A legtöbb gép 1 Gbiten van, így nem gond ha csak több szállal lesz meg a 2 Gbit.
Jelenleg 2 különböző géppel megy a másolás összesen 2Gbittel (egyik Samba-val csatlakozik, a másik NFS-sel)
Öröm hallani, hogy végül mégis csak a korrekt megoldást sikerült implemetálni, a 'gányolás' helyett! :)
#respect.
zrubi.hu
ez cool, de még a miimon és egyéb opciók jelentését megnézném
Gábriel Ákos
Link-Aggregation megoldható:
1., switch assisted: LACP ( pl.: switch-switch, switch-host - között)
2., host only: STATIC LAG ( máskor MLAG-nak hívják: attól függ hogy ugyanabba a switch-be megy több link vagy több különböző switch-be megy több link - azt fogja össze ) ( pl.: switch-router, switch-host, router-host, router-router - között )
Mindkét esetben bond0 logikai interface lesz, 1., opciónál a switchen külön kell konfigurálni, a 2., opciónal a HOST-on kell csak konfigurálni, bizonyos esetekben pedig csak a 2., opció jöhet szóba - pl.: switch-port és router-port egyszerre kell használni ugyanazon linken, ilyenkor kell egy fizikai visszakötés a kettő között de redundánsan.