====== 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**