====== EtherChannel ====== * Umožňuje vytvořit bundle 2-8 Ethernetových rozhraní. * EC, FEC (1600Mbps),GEC (16Gbps), 10GEC (16Gbps) * Může být v režimu access nebo trunk * Všechny interfejsy nejsou zatěžovány stejně, provoz je balancovám na základě nějakých pravidel * Výpadkem interfejsu se nic nestane, provoz běží po zbytku ==== Pravidla pro EtherChannel ==== * Všechny porty (access) musí být ve stejné VLAN nebo musí být všechny trunk se stejnou nativní VLAN + stejnými přenášenými VLAN + shodná metoda tagování isl/dot1q * Porty musí mít stejnou rychlost a stejně nastavený duplex * Porty musí mít stejné nastavení pro Spanning-tree protocol * Žádný z portů nesmí být SPAN port * případná IP adresa se nastavuje na virt. interfejsu "PortChannel" ==== Rozložení provozu v EtherChannelu ==== Provoz je disribuován na jednotlivé porty na základě Hešovacího algoritmu. Algoritmus rozhoduje dle IP, MAC, TCP/UDP portů. == Jak to funguje: == * Interfejsy v EtherChannelu jsou "očíslovány" od 0 do 7 (000 - 111) * Rozhoduje se na základě nejnižších (pravých) bitů v adresách nebo TCP/UDP portech * Počet rozhodujících bitů je dán počtem interfjsů v channelu (2 interfejsy - 1 bit, 4 int. - 2 bity, 8 int. - 3 bity) * Je-li rozhodováno jen na základě jedné hodnoty (adresy) - hodnota rozhodujících bitů přímo označuje interfejs, přes který bude provoz odeslán * Je-li rozhodováno na základě kombinace dvou hodnot (kombinace adres), provede se nad skupinami rozhodujících bitů operace XOR jejíž výsledek označuje odchozí interfejs * => provoz mezi dvěma hosty jde pořád přes stejný interfejs (adresy jsou pořád stejné) == Příklad: == **src-dst-ip** * src IP: 192.168.1.1 (1 = 001) * dst IP: 172.31.67.46 (6 = 110) * 2 porty v channelu - vybrán interfejs s indexem 1 * 4 portů v channelu - vybrán interfejs s indexem 11 * 8 portů v channelu - vybrán interfejs s indexem 111 ==== Konfigurace Load Balancingu v EtherChannelu ==== Nastavuje se GLOBÁLNĚ >Switch(config)# **port-channel load-balance** //method// ^//method// ^Hash Operation^Switch model^ |**src-ip** | bits | all | |**dst-ip** | bits | all | |**src-dst-ip** | XOR | all | |**src-mac** | bits | all | |**dst-mac** | bits | all | |**src-dst-mac** | XOR | all | |**src-port** | bits | 4500,6500 | |**dst-port** | bits | 4500,6500 | |**src-dst-port**| XOR | 4500,6500 | * Defaultně je použito **src-dst-ip** * 2950 a 3560 mají def. **src-mac** pro L2 switching * S L3 switchingem je nastaveno napevno **src-dst-ip**, nelze konfigurovat. * V případě předpokládaného non-IP provozu je dobré použít nějakou "mac" metodu, jestliže to neuděláme, switch to udělá za nás. Když neví co s tím použije "next lowest" metodu. Z důvodu charakteru některého provozu může dojít k přetěžování některého nebo některých interfejsů v channelu, přičemž ostatní jsou využity málo. Dochází k tomu například v případě, že metoda algorytmu rozhoduje dle cílové IP adresy - při komunikaci s mnoha klientů se serverem, je rozhodováno jen na základě cílové adresy serveru a tím pádem je jeden interfejs zcela přetížen. V tomto případě je tedy třeba změnit metodu algorytmu např. na src-ip nebo src-mac. * V případě připojení routeru k etherchannelu - dst MAC v rámcích směrem k routeru se nemění * V případě komunikace dvou routerů skrz switch - MAC adresy v rámcích se nemění * Použít metodu "ip" * Avšak jsou-li ke switchi připojeny dva routery, přes které spolu komunikují dva servery jsou stejné i IP adresy => použít metodu "TCP/UDP portu" * Příchozí broadcasty se neposílají zpět přes ostatní porty channelu * Odchozí broadcasty se klasicky zpracují Hash algoritmem a odešlou přes příslušný interfejs * V případě non-IP provozu, použít nějakou metodu používající MAC adr. * Jestliže je distr.alg. nastaven na IP a přijde non-IP, je pro zpracování použita jiná, nižší metoda >Switch# **show etherchannel port-channel** - Vypíše zatížení jednotlivých interfejsů v HEX ==== PaGP Port Aggregation Protocol ==== (Cisco) * Slouží k aut. sjednávání EtherChannelu * Porty které detekují stejné Device-ID souseda se stanou součástí bundlu * EtherChannel se sjednává jen na Trunking portech, nebo Access portech ve stejné VLAN * Konfig. změna na jednom z portů se projeví na všech Módy: * **On** * **Auto** (default) - čeká na oslovení * **Desirable** - aktivně sjednává Eth.Chann. ==== LACP Link Aggregation Control Protocol ==== (IEEE 802.3ad) * //system priority// = **2**-byte priority + **6**-byte sw MAC, nižší č. = vyšší priorita * //port priority// = **2**-byte priority + **2**-byte port number, nižší č. = vyšší priorita * Switch s __nejnižší__ //system priority// rozhoduje, které porty se účastní EtherChannelu. * Dle //port priority// se vybírají porty, může jich být až 16. * LACP použije 8 znich jako aktivní a zbytek je standby. Módy: * **On** * **Pasive** - čeká na oslovení * **Active** - aktivně vyjednává ====== Konfigurace ====== Jakmile je nakonfigurován EtherChannel, switch pro něj automaticky vytvoří virt. interface. Ten lze konfigurovat: >SW(config)# **interface port-channel** //number// ===== PaGP ===== >Switch(config)# **port-channel load-balance** //algorythm// >Switch(config)# **interface** //type mod/num// >Switch(config-if)# **channel-protocol pagp** >Switch(config-if)# **channel-group** //number// **mode** {**on** | {{**auto** | **desirable**} [**non-silent**]}} **non-silent** - sw standartně v módu auto a desirable ani nečeká na žádné pagp zprávy (z důvodu připojení zař.,které pagp neumí), tímto příkazem aktivujeme posílání a očekávání pagp zpráv ===== LACP ===== >Switch(config)# **lacp system-priority** //priority(1-65535, def.32768)// >Switch(config)# **interface** //type mod/num// >Switch(config-if)# **channel-protocol lacp** >Switch(config-if)# **channel-group** //number(1-64)// **mode** {**on** | **passive** | **active**} >Switch(config-if)# **lacp port-priority** //priority(1-65535, def.32768)// ====== Troubleshooting ====== >str.116 >Switch# **show etherchannel summary** Switch# show etherchannel summary Flags: D - down P - in port-channel I - stand-alone s - suspended H - Hot-standby (LACP only) R - Layer3 S - Layer2 u - unsuitable for bundling U - in use f - failed to allocate aggregator d - default port Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+--------------+-----------+------------------------------------------------ 1 Po1(SU) PAgP Fa0/41(P) Fa0/42(P) Fa0/43 Fa0/44(P) Fa0/45(P) Fa0/46(P) Fa0/47(P) Fa0/48(P) >Switch# **show etherchannel port** Switch# show etherchannel port Channel-group listing: ----------------------- Group: 1 ---------- Ports in the group: -------------------- Port: Fa0/41 ------------ Port state = Up Mstr In-Bndl Channel group = 1 Mode = Desirable-Sl Gcchange = 0 Port-channel = Po1 GC = 0x00010001 Pseudo port-channel = Po1 Port index = 0 Load = 0x00 Protocol = PAgP Flags: S - Device is sending Slow hello. C - Device is in Consistent state. A - Device is in Auto mode. P - Device learns on physical port. d - PAgP is down. Timers: H - Hello timer is running. Q - Quit timer is running. S - Switching timer is running. I - Interface timer is running. Local information: Hello Partner PAgP Learning Group Port Flags State Timers Interval Count Priority Method Ifindex Fa0/41 SC U6/S7 H 30s 1 128 Any 55 Partner’s information: Partner Partner Partner Partner Group Port Name Device ID Port Age Flags Cap. Fa0/41 FarEnd 00d0.5849.4100 3/1 19s SAC 11 Age of the port in the current state: 00d:08h:05m:28s Normální hláška po přidání portu do etherchannelu: 4d00h: %EC-5-L3DONTBNDL2: FastEthernet0/2 suspended: incompatible partner port with FastEthernet0/1 Channel i port jsou kontrolovánz STP, jakmile nový port projde všemi STP stavy, je pak vše OK. Nový port má jinak nastavený duplex ež ostatní portz channelu: 4d00h: %EC-5-CANNOT_BUNDLE2: FastEthernet0/3 is not compatible with FastEthernet0/1 and will be suspended (duplex of Fa0/3 is full, Fa0/1 is half) >**show running-config interface** //type mod/ num// >**show interface** //type mod/num// **etherchannel** >**show etherchannel summary** >**show etherchannel port** >**show etherchannel port-channel** >**show etherchannel detail** >**show etherchannel load-balance** >**show etherchannel port-channel** >**show {pagp | lacp} neighbor** >**show lacp sys-id**