www.SAMURAJ-cz.com 

19.04.2024 Rostislav Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Cisco IOS 21 - EtherChannel, Link Agregation, PAgP, LACP, NIC Teaming

Upraveno 01.07.2009 16:55 | vytvořeno 08.06.2009 09:41 | Samuraj - Petr Bouška |
EtherChannel je technologie pro agregaci linek (jinak řečeno bundlování portů) na switchích, routerech a serverech. Dovoluje spojit několik fyzických ethernetových portů/linek do jedné logické linky, která poskytuje fault tolerance a zvyšuje rychlost (load balancing). EtherChannel můžeme konfigurovat ručně nebo využít proprietární protokol Cisco Port Aggregation Protocol (PAgP) nebo standardizovaný Link Aggregation Control Protocol (LACP). Tato technologie se používá mezi switchi, ale je možno ji využít i pro připojení serveru, zde se označuje jako NIC Teaming nebo Bonding.

EtherChannel - Link Aggregation

EtherChannel je značně rozšířený termín, ale používá jej primárně firma Cisco. K tomu se váže i Cisco protokol PAgP (Port Aggregation Protocol). Obdobným termínem je Link Aggregation, který je používán i ve standardu IEEE 802.1ax (dříve se jednalo o IEEE 802.3ad, který je stále často uváděn). V této normě je popsán i protokol LACP (Link Aggregation Control Protocol). Pro tuto technologii se používá i řada jiných termínů, ve světě serverů se jedná o označení NIC Teaming (nebo NIC bonding či link bundling).

Schméma EtherChannelu a teamingu

Můj popis se bude, jak je zde běžné, zaměřovat na Cisco zařízení. V dnešní době je i na malých Cisco switchích podporovaný EtherChannel, a to jak pomocí Cisco protokolu PAgP, tak i standardního LACP.

EtherChannel je metoda, která zařizuje odesílání a přijímání dat přes více interfaců. Protokoly PAgP a LACP slouží k automatickému vyjednání a vytvoření EtherChannelu. Pro vytvoření EtherChannelu můžeme použít 2 až 8 fyzických interfaců (L2 nebo L3) pro PAgP nebo až 16 interfaců pro LACP (ale pouze 8 je active a ostatní jsou standby). Podmínkou je, aby byly stejného typu a rychlosti, zařazené do stejné VLANy nebo v trunk módu se stejnými parametry. Na switchi můžeme vytvořit až 48 (skupin) EtherChannelů. Původně byla podmínka, aby se všechny porty jedné strany skupiny, nacházely na jednom switchi. Dnes je možno, aby porty byly součástí jednoho stacku.

Původní použití EthernetChannelu bylo pro propojení páteře sítě (například spojení Core switchů s Distribution), kdy se dosáhlo vyšší spolehlivosti a hlavně vyšší rychlosti. Dnes je častým použitím i připojení serveru přes více portů/síťových karet.

Když vytvoříme EtherChannel, tak se vytvoří jeden virtuální port, s kterým dále pracují všechny technologie. Takže například Spanning Tree vidí skupinu portů jako jeden port a vše tudíž pracuje jak má (nedojde k blokování těchto redundantních linek).

EtherChannel používá Load Balancing, aby rozložil zátěž na všechny linky ve skupině. Když odesílá data, tak podle MAC adresy, IP adresy, zdrojové či cílové určuje, přes jakou linku data odešle (není to závislé na vytížení nebo rychlosti linky). Je snaha, aby rámce z jedné TCP session byly odesílány přes stejnou linku, jinak by mohlo dojít k doručení mimo pořadí a dalším problémům. Příchozí data se sdružují ze všech interfaců do virtuálního portu. Když se jedna linka přeruší, tak se provoz bez přerušení přesměruje na zbývající (dojde asi ke vteřinovému zpoždění, ale nepřeruší se session a třeba kopírování po síti funguje dál).

NIC Teaming

Umožňuje spojit 2 nebo více fyzických NIC (síťových karet) do jednoho logického adaptéru, který se označuje jako bound (svazek). Může využívat standard IEEE 802.3ad. Pokud máme správný ovladač pro síťovou kartu (ten nalezneme například pro většinu Intel NIC a z tohoto ovladače vychází můj další krátký popis), tak na ní můžeme konfigurovat VLANy a NIC Teaming. Pomocí VLAN rozdělíme jeden fyzický adaptér na více virtuálních. Pomocí Teamingu naopak spojíme více fyzických portů do jednoho virtuálního.

NIC Teaming může fungovat i s obyčejným switchem/hubem, které nepodporuje Link Aggregation. Tehdy konfigurujeme pouze na straně serveru a uplatňuje se (primárně) pro odchozí provoz. Síťové adaptéry mohou být zapojeny i do různých switchů a mohou mít jinou rychlost a duplex. Vytvořením teamu podle 802.3ad se vytvoří jeden virtuální interface, který získá MAC adresu jednoho z fyzických interfaců a můžeme mu nastavit jednu nebo více IP adres. Pokud použijeme některý mód nezávislý na switchi, tak všechny fyzické porty (uvnitř virtuálního) používají svoji MAC adresu.

Pokud máme možnost nastavit Teaming, tak většinou můžeme volit jednu z řady metod nebo typů teamingu.

  • Adapter Fault Tolerance, kdy je jeden adaptér aktivní a ostatní jsou standby (přepnou se v případě výpadku), nenastavuje se na straně switche
  • Switch Fault Tolerance podporuje dvě linky připojené do dvou různých switchů, jedna je aktivní a druhá standby, nenastavuje se na straně switche
  • Adaptive Load Balancing odesílaný provoz je vyvažován přes všechny adaptéry, zároveň poskytuje fault tolerance, může provádět load balancing i na příchozím provozu, nenastavuje se na straně switche
  • Static Link Aggregation je použití manuálního EtherChannelu, kdy je na switchi nastaven mód on
  • Dynamic Link Aggregation využívá LACP protokol podle IEEE 802.3ad

Port Aggregation Protocol - PAgP

Jedná se o protokol vytvořený firmou Cisco a podporovaný, téměř výlučně, pouze na Cisco switchích. PAgP podporuje vytvoření EtherChannelu pouze z interfaců na jednom switchi (ne v rámci stacku).

PAgP může pracovat buď v aktivním módu, kdy se aktivně snaží vyjednat ustanovení EtherChannelu, ten se označuje jako desirable. Nebo v pasivním módu, kdy se EtherChannel začne vyjednávat, pouze když přijde požadavek z druhé strany (sám nikdy nezačne vyjednávání), to je mód auto.

Link Aggregation Control Protocol - LACP

LACP má dva módy, obdobné jako PAgP. Jejich označení je active, tehdy sám odesílá pakety pro vyjednání spojení, a passive, kdy čeká na začátek vyjednávání.

Manuální EtherChannel

EtherChannel můžeme ustanovit i manuálně napevno. Tehdy je třeba, aby porty na obou stranách byly nastaveny do módu on. Nezasílají se žádná LACP PDU ani pakety PAgP protokolu.

Rozdíl mezi LACP/PAgP a manuální EtherChannel

Hlavní vlastnosti jsou stejné, ať použijeme nějaký protokol pro vyjednání agregace linek nebo jej nastavíme ručně. V obou případech musíme provést konfiguraci na obou stranách a na všech portech. Když dojde k výpadku nějaké linky, tak se komunikace automaticky přesměruje na ostatní, a pokud se obnoví, tak se zas začne používat.

Takže v čem je rozdíl? V řadě praktických situací můžeme provést manuální konfiguraci. Použití protokolu přidává jednu vlastnost. Mezi přímo připojenými zařízeními (přesněji jejich porty) se odesílají rámce (LACPDU) a podle nich se zjišťuje, jestli je linka dostupná (bez protokolu se bere pouze stav link down). Také se pomocí těchto rámců ověří, že je druhá strana správně konfigurovaná.

Konfigurace v Cisco IOSu

Před začátkem konfigurace EtherChannelu je důležité zkontrolovat, zda mají vybrané porty stejnou konfiguraci. Potom, co vytvoříme EtherChannel, tak všechny konfigurační změny, které aplikujeme na vzniklý virtuální port, se uplatní na všechny fyzické porty. Ale příkazy, které zadáme pro fyzický port, se uplatní pouze na tomto portu (a pokud změníme některou základní hodnotu, tak může dojít k vyřazení interfacu z EtherChannelu).

Pozn.: Pro konfiguraci PAgP nebo LACP se používají stejné příkazy.

L2 EtherChannel vytvoříme tak, že zařadíme porty do channel group (číslo 1 až 48). Tím se automaticky vytvoří logický interface port-channel. Následně jsou zobrazeny jednotlivé módy pro EtherChannel a příklad konfigurace.

SWITCH(config-if)#channel-group 1 mode ?
   active     Enable LACP unconditionally
   auto       Enable PAgP only if a PAgP device is detected
   desirable  Enable PAgP unconditionally
   on         Enable Etherchannel only
   passive    Enable LACP only if a LACP device is detected
SWITCH(config-if)#channel-group 1 mode desirable non-silent 

Tím, že zařadíme porty do channel group, se vytvoří virtuální interface (pokud již neexistuje) s názvem Port-channel a číslo skupiny, například Port-channel 1, odkazovat jej můžeme zkráceně Po1. Tím, že odstraníme porty z channel group se nezruší port-channel. Ten musíme smazat ručně. Pokud však odstraníme port-channel, tak se porty, které v něm byly zařazeny, vypnou (shutdown) a odstraní ze skupiny.

SWITCH(config)#no interface port-channel 1 

L3 EtherChannel vytvoříme z fyzických routovaných portů (na portu zadáme no switchport). IP adresu nezadáváme na fyzických portech, ale na EtherChannelu.

SWITCH(config)#interface port-channel 3
SWITCH(config-if)#no switchport
SWITCH(config-if)#ip address 192.168.10.5 255.255.255.0

Globálně můžeme určit, jaká metoda se použije pro Load Balancing uvnitř EtherChannelu. Může se jednat o zdrojovou IP nebo MAC, cílovou IP nebo MAC, zdrojovou i cílovou IP nebo MAC. Výchozí nastavení je src-mac.

SWITCH(config)#port-channel load-balance dst-mac

Určitému portu můžeme nastavit prioritu, čím větší je priorita, tím spíše se vybere daný port pro odesílání. Defaultní priorita pro PAgP je 128 a můžeme nastavit 0 až 255.

SWITCH(config-if)#pagp port-priority 200

U LACP může být maximálně 8 portů aktivních a dalších 8 může být v režimu Hot-standby. Který port se stane aktivním, se určuje podle LACP system priority, switch MAC, LACP port priority a číslo portu. Nižší hodnoty mají přednost. Hodnoty priorit jsou od 1 do 65535, default je 32768.

SWITCH(config)#lacp system-priority 16384
SWITCH(config-if)#lacp port-priority 16384

Pro úplnost uvedu ještě jeden příkaz, který jsem neviděl příliš popisovaný. Jedná se o manuální volbu, jaký protokol se má použít na interfacu. Tento protokol se jinak určuje podle modu, který zvolíme při zařazování portu do skupiny.

SWITCH(config-if)#channel-protocol lacp  // druhá možnost je pagp

Příkazy pro kontrolu nastavení

Jestli daný interface podporuje EtherChannel můžeme zkontrolovat následujícím příkazem. Výsledek je v řádku Channel.

SWITCH#show interfaces g1/0/1 capabilities
GigabitEthernet1/0/1
  Model:                 WS-C3750E-48PD
  Type:                  10/100/1000BaseTX
  Speed:                 10,100,1000,auto
  Duplex:                half,full,auto
  Trunk encap. type:     802.1Q,ISL
  Trunk mode:            on,off,desirable,nonegotiate
  Channel:               yes
  Broadcast suppression: percentage(0-100)
  Flowcontrol:           rx-(off,on,desired),tx-(none)
  Fast Start:            yes
  QoS scheduling:        rx-(not configurable on per port basis),
                         tx-(4q3t) (3t: Two configurable values and one fixed.)
  CoS rewrite:           yes
  ToS rewrite:           yes
  UDLD:                  yes
  Inline power:          yes
  SPAN:                  source/destination
  PortSecure:            yes
  Dot1x:                 yes

Některé další informační příkazy:

SWITCH#show etherchannel 1 detail
SWITCH#show etherchannel load-balance
SWITCH#show etherchannel port
SWITCH#show etherchannel protocol
SWITCH#show etherchannel summary 
SWITCH#show pagp 1 neighbor
SWITCH#show lacp 2 counters

Ladění problémů - troubleshooting

Porty pro port-channel je dobré konfigurovat dohromady, abychom dosáhli stejného nastavení. Předtím je můžeme zresetovat do defautního stavu.

SWITCH(config)#default interface range g1/0/7,g3/0/6
SWITCH(config)#interface range g1/0/7,g3/0/6
SWITCH(config-if-range)#switchport mode access
SWITCH(config-if-range)#switchport access vlan 100
SWITCH(config-if-range)#channel-group 1 mode on
Creating a port-channel interface Port-channel 1

Tím se nám vytvořil virtuální interface, ale ještě to neznamená, že jsou porty správně zařazeny. Když si vypíšeme údaje o Etherchannelu, tak můžeme vidět i něco následujícího. U Port-channel1 vidíme SD, to znamená, že se jedná o Layer2 etherchannel a je Down. U jednotlivých portů vidíme, že jsou suspended.

SWITCH#show etherchannel 1 summary | begin Group
Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SD)          -        Gi1/0/7(s)  Gi3/0/6(s)

To znamená, že došlo k chybě při zařazování portu do bundlu. V logu můžeme najít více informací.

SWITCH#show logging
 ...
Jul  1 16:26:53: %EC-5-CANNOT_BUNDLE2: Gi1/0/7 is not compatible with Po1 and will be suspended (dtp mode of Gi1/0/7 is off, Po1 is on)
S2NP01#show int g1/0/7 status
Port      Name               Status       Vlan       Duplex  Speed Type
Gi1/0/7   test-bundl         suspended    100        a-full a-1000 10/100/1000BaseTX

Z logu vidíme, že portchannel Po1 má jinou konfiguraci než port G1/0/7, který do něj chceme zařadit. Zde to vzniklo tak, že Po1 již existoval z předchozích konfigurací. Takže jej buď mažeme a vytvoříme znovu nebo upravíme jeho konfiguraci.

SWITCH#show running-config interface Po1
Building configuration...
Current configuration : 92 bytes
!
interface Port-channel1
 switchport trunk encapsulation dot1q
 switchport mode trunk
end
SWITCH#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SWITCH(config)#int po1
SWITCH(config-if)#switchport mode access
SWITCH(config-if)#no switchport trunk encapsulation dot1q
SWITCH(config-if)#switchport access vlan 100
SWITCH(config-if)#^Z
SWITCH#show etherchannel 1 summary | begin Group
Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)          -        Gi1/0/7(P)  Gi3/0/6(P)

Nyní již vidíme, že portchannel je Up a jednotlivé porty se účastní etherchannelu. Na závěr jedno doporučení. Když chceme provést změny typu etherchannelu, tak nejprve shutdown porty, pak odstranit starou konfiguraci, vytvořit novou a nahodit port.

Link State Tracking

Jedná se o pomocnou metodu, která sváže stavy několika interfaců. To znamená, když všechny primární interfacy ztratí link (jdou dolů), tak se transparentně změní stav sekundárních interfaců na error-disabled.

Pro Link State Tracking vytváříme link-state skupiny a do těchto skupin zařazujeme interfacy (EtherChannel, L2, L3 port). Některé nastavíme jako downstream a ty jsou automaticky navázány na upstream. Mezi upstream interfacy zařazujeme spoje do distribuční/core vrstvy či gatewaye. Jako downstream se zařazují interfacy, kde jsou připojené servery. Změna stavu upstream interfacu se projeví na downstream.

Tuto techniku můžeme využít ve spojení s NIC Teamingem. Pokud provedeme například zapojení, kdy server připojíme primární síťovou kartou k jednomu switchi a sekundární k druhému. Nad těmito NIC zapneme Teaming Fault Tolerance. Tak komunikace funguje přes primární adaptér, v případě výpadku adaptéru nebo změny jeho link stavu (celý switch nebo připojený port jde dolů), se přepne na sekundární adaptér. Pokud však port na switchi je stále nahoře, ale dojde k poruše například na spoji s core switchem, tak server nic nepozná. Proto využijeme Link State Tracking, aby i v tomto případě došlo k přepnutí na sekundární adaptér.

Konfigurace v Cisco IOSu

Na jednom switchi můžeme nakonfigurovat maximálně 10 link-state skupin. Interface může být členem pouze jedné skupiny a může být buď upstream nebo downstream.

SWITCH(config)#link state track 1               // zapnutí funkce
SWITCH(config)#interface Te1/0/1
SWITCH(config-if)#link state group 1 upstream   // nastavení interfacu do skupiny 1 jako  upstream
SWITCH(config)#interface G1/0/5
SWITCH(config-if)#link state group 1 downstream // nastavení interfacu do skupiny 1 jako downstream

Zobrazení informací o link-state skupinách:

SWITCH#show link state group detail
zobrazeno: 55741krát | Komentáře [3]

Autor:

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco.

Link Aggregation

Připojení přes více linek. EtherChannel, Link Aggregation, PAgP, LACP, NIC Teaming, Bonding, Bundling ...

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] cm3l1k1

    jeste:

    show etherchannel summary - nabidne pomerne prehledni vypis v nemz se nejvice hodi flag "U" - in use

    Pondělí, 08.06.2009 16:36 | odpovědět
  2. [2] Samuraj

    odpověď na [1]cm3l1k1: Díky :)

    Pondělí, 08.06.2009 16:42 | odpovědět
  3. [3] Samuraj

    [6]

    Co mi tady vypisuješ za sračky ty zmrde?!?!?

    Čtvrtek, 13.01.2022 10:44 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách