Ako zistit LACP status na Linuxe (802.3ad)?

tomasg

Ako zistit LACP status na Linuxe (802.3ad)?
« kdy: 02. 08. 2018, 08:11:18 »
caute,

neviem si s tymto poradit, tak sa skusam spytat tu :)

snazim sa rozbehat LACP (link aggregation), tiez znamy pod 802.3ad.
na jednej strane kam mam pristup je Oracle Linux - co sa tyka driverov a celeho network stacku je to to iste co Red Hat, CentOS a dalsie. na druhej strane prepoja je Cisco, Dell, HP switch, to je uplne jedno - dolezite je iba ze tam nemam pristup.

a moja otazka je, ako zistim na linuxe su porty v bonde skutocne agregovane? status LACP protokolu nad bondom
po googleni som sa dostal len ku commandu: cat /proc/net/bonding/bond0

ten mi ale moc citatelny nepride. mate tu niekto skusenosti s tym ako vypis vyzera v pripade ze porty su:
1. uspesne agregovane
2. 1 port je dole
3. porty sa nepodarilo agregovat (napriklad kvoli tomu ze switch na opacnej strane nie je na to nakonfigurovany)

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Kód: [Vybrat]
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 250
Up Delay (ms): 500
Down Delay (ms): 500

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
        Aggregator ID: 2
        Number of ports: 1
        Actor Key: 13
        Partner Key: 1
        Partner Mac Address: 00:00:00:00:00:00

Slave Interface: em1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 14:9e:cf:6f:65:01
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 4
Partner Churned Count: 5
details actor lacp pdu:
    system priority: 0
    port key: 13
    port priority: 255
    port number: 1
    port state: 69
details partner lacp pdu:
    system priority: 65535
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

Slave Interface: em2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 14:9e:cf:6f:65:02
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 5
Partner Churned Count: 5
details actor lacp pdu:
    system priority: 0
    port key: 13
    port priority: 255
    port number: 2
    port state: 77
details partner lacp pdu:
    system priority: 65535
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

Slave Interface: em3
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 14:9e:cf:6f:70:03
Slave queue ID: 0
Aggregator ID: 3
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 5
Partner Churned Count: 5
details actor lacp pdu:
    system priority: 0
    port key: 13
    port priority: 255
    port number: 3
    port state: 69
details partner lacp pdu:
    system priority: 65535
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

Slave Interface: em4
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 14:9e:cf:6f:70:04
Slave queue ID: 0
Aggregator ID: 4
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 5
Partner Churned Count: 5
details actor lacp pdu:
    system priority: 0
    port key: 13
    port priority: 255
    port number: 4
    port state: 69
details partner lacp pdu:
    system priority: 65535
    oper key: 1
    port priority: 255
    port number: 1
    port state: 1

pri kazdom porte vidim 2x port state, raz pre "details actor lacp pdu" druhy pre "details partner lacp pdu"

ma niekto skusenosti s vytvaranim, pripadne debugom LACP na linuxe?
kazda info cenna, dakujem
« Poslední změna: 13. 08. 2018, 14:25:39 od Petr Krčmář »


Re:ako zistit LACP status na linuxe (802.3ad)
« Odpověď #1 kdy: 02. 08. 2018, 08:49:49 »
Pokud by to fungovalo správně, tak

Number of ports: <-- tady bude počet agregovaných portů
Partner Mac Address: <-- tady bude mac adresa druhé strany

Takže ne, nefunguje to.

Tohle možná pomůže pro rychlé ověření stavu: http://folk.uio.no/trondham/software/check_linux_bonding.html

tomasg

Re:ako zistit LACP status na linuxe (802.3ad)
« Odpověď #2 kdy: 03. 08. 2018, 07:46:57 »
to ze to nefunguje som predpokladal. skor by ma ale zaujimalo co znamena hodnota "port state" a preco je pri kazdom porte 2x. prvy raz ako actor, potom ako partner.

konkretne co znamena to cislo 69. partner ma port status 1, co predpokladam znamena vypnute LACP. pravdepodobne su to nejake masky fungujuce podobne ako prava na subory, 4=read, 2=write, 1=execute. neviete kde sa k tomuto dohrabat?

diky

Re:ako zistit LACP status na linuxe (802.3ad)
« Odpověď #3 kdy: 03. 08. 2018, 10:06:04 »
to ze to nefunguje som predpokladal. skor by ma ale zaujimalo co znamena hodnota "port state" a preco je pri kazdom porte 2x. prvy raz ako actor, potom ako partner.

konkretne co znamena to cislo 69. partner ma port status 1, co predpokladam znamena vypnute LACP. pravdepodobne su to nejake masky fungujuce podobne ako prava na subory, 4=read, 2=write, 1=execute. neviete kde sa k tomuto dohrabat?

diky

Ta definice je v tomhle souboru:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/bonding/bond_3ad.c?h=v4.17.12

LACP se z Linuxu debuguje dost blbě, jediná možnost je tcpdump a chytnout ty packety. Ze strany switche se to řeší mnohem líp.

Osobně bych doporučil odladit si to mezi 2 linuxy a až to bude chodit, tak jít za tím network člověkem a řešit to s nim - chyba bude pravděpodobně tam. Na té funkční konfiguraci mezi 2 linuxy je možné si chytit případně inicializaci tcpdumpem a porovnat to.

Ještě hloupá otázka - neblokuješ firewallem nějakou komunikaci přímo na těch síťových interfacech ?

Jinak funkčni stav vypadá takhle:

Kód: [Vybrat]
Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: FYZICKA MAC INTERFACU
Slave queue ID: 0
Aggregator ID: 1
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: MAC BONDU
    port key: 9
    port priority: 255
    port number: 1
    port state: 63
details partner lacp pdu:
    system priority: 4000
    system mac address: MAC SWITCHE
    oper key: 32815
    port priority: 32768
    port number: 303
    port state: 61

strana actor lacp pdu je ten tvuj linux a partner je druha strana tedy ten switch

tomasg

Re:ako zistit LACP status na linuxe (802.3ad)
« Odpověď #4 kdy: 05. 08. 2018, 11:50:55 »
diky, toto je presne to co som hladal...

Kód: [Vybrat]
#define AD_STATE_LACP_ACTIVITY   0x1
#define AD_STATE_LACP_TIMEOUT    0x2
#define AD_STATE_AGGREGATION     0x4
#define AD_STATE_SYNCHRONIZATION 0x8
#define AD_STATE_COLLECTING      0x10
#define AD_STATE_DISTRIBUTING    0x20
#define AD_STATE_DEFAULTED       0x40
#define AD_STATE_EXPIRED         0x80

"LACP se z Linuxu debuguje dost blbě" - presne preto som sa pytal, lebo oproti overeniu na switchi, mi pride debug katastrofalny.

"Osobně bych doporučil odladit si to mezi 2 linuxy" - je to LACP spoj medzi blade serverom a switchom, ktory je osadeny na inom kontinente, takze nejake prepajanie kablov a skusanie medzi dvoma linuxami neprichadza v uvahu, skoda.

"neblokuješ firewallem nějakou komunikaci přímo na těch síťových interfacech" - priamy prepoj, switch je L2, ziadne firewall pravidla nema + linux ma vypnute iptables/firewalld

dakujem, hlavne za ten prvy bod so statusmi. u nas to bohuzial funguje sposobom ze druha strana problem neriesi pokial nie je jednoznacny dokaz ze chyba je na ich strane. a toto mi na to staci