Články
Cisco IOS 21 - EtherChannel, Link Agregation, PAgP, LACP, NIC Teaming
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).

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
Související články:
Cisco IOS
- Cisco IOS 1 - úvod, příkaz show [08.03.2007 13:00]
- Cisco IOS 2 - verze, upgrade a záloha IOSu [16.03.2007 14:28]
- Cisco IOS 3 - nastavení interface/portu - access, trunk, port security [09.04.2007 11:09]
- Cisco IOS 4 - reset, password recovery [25.04.2007 17:34]
- Cisco IOS 5 - komunikace se switchem [16.05.2007 16:15]
- Cisco IOS 6 - úvodní konfigurace switche [08.06.2007 17:31]
- Cisco IOS 7 - konfigurace VLAN, VTP [18.06.2007 14:12]
- Cisco IOS 8 - ACL - Access Control List [10.08.2007 15:40]
- Cisco IOS 9 - Spanning Tree Protocol [20.08.2007 17:55]
- Cisco IOS 10 - Rapid Spanning Tree Protocol [01.09.2007 14:11]
- Cisco IOS 11 - IEEE 802.1x, autentizace k portu, MS IAS [10.10.2007 14:38]
- Cisco IOS 12 - IEEE 802.1x a pokročilejší funkce [24.10.2007 16:42]
- Cisco IOS 13 - DHCP služby na switchi [06.01.2008 11:24]
- Cisco IOS 14 - tipy pro běžnou práci [29.02.2008 08:15]
- Cisco IOS 15 - zálohy a obnovy konfigurace a obrazů [13.03.2008 09:43]
- Cisco IOS 16 - HSRP - Hot Standby Routing Protocol [27.05.2008 16:05]
- Cisco IOS 17 - více switchů jako Stack - technologie StackWise [29.07.2008 20:27]
- Cisco IOS 18 - inter-VLAN routing a ACL - směrování mezi VLANy [24.12.2008 11:50]
- Cisco QoS 1 - úvod do Quality of Service a DiffServ [18.01.2009 13:31]
- Cisco QoS 2 - Classification and Marking, Modular QoS CLI [26.01.2009 17:21]
- Cisco QoS 3 - omezování rychlosti - Policing, Shaping [01.02.2009 12:20]
- Cisco QoS 4 - garance rychlosti - řazení do front - Queuing [08.02.2009 13:13]
- Cisco QoS 5 - QoS na switchi, MLS, SRR, Auto QoS [14.02.2009 14:55]
- Cisco QoS 6 - praktické příklady použití QoSu [28.02.2009 16:33]
- TCP/IP - Internet Protocol Version 6 - IPv6 [05.03.2009 15:41]
- TCP/IP - skupinové vysílání IP Multicast a Cisco [10.03.2009 20:05]
- Cisco Routing 1 - obecné vlastnosti směrovacích protokolů [20.03.2009 14:43]
- Cisco Routing 2 - EIGRP - Enhanced Interior Gateway Routing Protocol [29.03.2009 19:04]
- Cisco Routing 3 - OSPF - Open Shortest Path First [03.04.2009 10:54]
- Cisco Routing 4 - IS-IS - Intermediate System to Intermediate System [09.04.2009 08:48]
- Cisco IOS 19 - Private VLAN a Protected Port [20.05.2009 18:41]
- Cisco Routing 5 - BGP - Border Gateway Protocol [18.04.2009 13:50]
- Cisco Routing 6 - srovnání routovacích protokolů [28.04.2009 16:27]
- Cisco IOS 20 - VLAN access-map - VLAN map - VACL [29.05.2009 15:05]
- Cisco IOS 21 - EtherChannel, Link Agregation, PAgP, LACP, NIC Teaming [08.06.2009 09:41] právě čtete
- Běžné útoky na switche, Cisco Dynamic ARP Inspection [18.06.2009 10:15]
- Cisco - Router Switching metody a související termíny - CAM, FIB, CEF [28.06.2009 17:15]
- Cisco IOS 22 - monitoring/kontrola/zrcadlení provozu - SPAN a RSPAN [15.07.2009 11:52]
- Cisco IOS 23 - Autentizace uživatele na switchi vůči Active Directory [15.09.2009 17:09]
- Cisco QoS 7 - doplňující informace [05.11.2009 09:31]
Link Aggregation
- Cisco IOS 21 - EtherChannel, Link Agregation, PAgP, LACP, NIC Teaming [08.06.2009 09:41] právě čtete
- Windows a NIC Teaming aneb připojení přes více síťovek [12.08.2009 15:02]
- VMware ESXi a NIC Teaming aneb připojení přes více síťovek [10.10.2009 18:56]
- Připojení rychlejší a spolehlivější [15.11.2009 12:22]
linkuj.cz | jagg.cz | vybrali.sme.sk | del.icio.us.
Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře
jeste:
show etherchannel summary - nabidne pomerne prehledni vypis v nemz se nejvice hodi flag "U" - in use
odpověď na [1]cm3l1k1: Díky :)