====== Multilayer switching ======
===== Multilayer switching - CEF =====
* myšlenka "routovat jednou, switchovat mnohokrát"
* RP = Route Procesor
* SE = Switching Engine
==== NetFlow switching ====
(route cache switching)
* první paket nového toku je klasicky routován v RP
* switch si zapamatuje in/out interfacy pro tento tok
* další pakety zpracovává už jen SE
* Podpora v HW:
* Cat6000 + Supervizor1/1 + Multilayer Switch Feature Card (MSFC)
* Cat5500 + Route Swich Module (RSM) / Route Switch Feature Card (RSFC) / ext.router
==== CEF Cisco Express Forwarding====
* vychází z NetFlow switchingu
Podporované platformy:
* Catalyst 6500 Supervisor 720 (with an integrated MSFC3)
* Catalyst 6500 Supervisor 2/MSFC2 combination
* Catalyst 4500 Supervisor III, IV V and 6-E
* Catalyst 3750, 3560, 3550, and 2950
=== FIB Forwarding Information Base ===
{{:wiki:site:cisco:11-3.png|}}
* přeformátovaná a seřazená routovací tabulka s nejpřesněji specifikovanou routou na prvním místě pro každý subnet
* routy jsou řazeny dle délky masky, čím delší maska, tím výš je routa ve FIB
* FIB obsahuje next-hop adresy pro každou routu
* FIB obsahuje i routy s maskou /32, pro přímo připojené hosty, které normálně v routovací tabulce nejsou
* FIB se dynamicky mění dle aktuální routovací tabulky i dle záznamů pro next-hop IP v ARP tabulce
Zobrazení FIB:
>Switch# **show ip cef** [//type mod/num// | **vlan** //vlan-id//] [**detail**]
Switch# show ip cef vlan 101
Prefix Next Hop Interface
10.1.1.0/24 attached Vlan101
10.1.1.2/32 10.1.1.2 Vlan101
10.1.1.3/32 10.1.1.3 Vlan101
>Switch# **show ip cef** [//prefix-ip prefix-mask//] [**longer-prefixes**] [**detail**]
**longer-prefixes** - vypíše i routy s delší maskou než která byla specifikována v příkazu
Switch# show ip cef 10.1.0.0 255.255.0.0 longer-prefixes
Prefix Next Hop Interface
10.1.1.0/24 attached Vlan101
10.1.1.2/32 10.1.1.2 Vlan101
10.1.1.3/32 10.1.1.3 Vlan101
10.1.2.0/24 attached Vlan102
10.1.3.0/26 192.168.1.2 Vlan99
192.168.1.3 Vlan99
10.1.3.64/26 192.168.1.2 Vlan99
192.168.1.3 Vlan99
10.1.3.128/26 192.168.1.4 Vlan99
192.168.1.3 Vlan99
[output omitted]
Switch# show ip cef 10.1.3.0 255.255.255.192 detail
10.1.3.0/26, version 270, epoch 0, per-destination sharing
0 packets, 0 bytes
via 192.168.1.2, Vlan99, 0 dependencies
traffic share 1
next hop 192.168.1.2, Vlan99
valid adjacency
via 192.168.1.3, Vlan99, 0 dependencies
traffic share 1
next hop 192.168.1.3, Vlan99
valid adjacency
0 packets, 0 bytes switched through the prefix
tmstats: external 0 packets, 0 bytes
internal 0 packets, 0 byte
* version = počet updatů CEF záznamu od vytvotření tabulky
* epoch = počet zahození CEF tabulky a vytvoření celé nové
* Jakmile je vytvořena FIB tabulka, pakety jsou hardwarově přepínány (spodní cesta v obrázku)
* Jestliže paket nemůže být směrován dle FIB je označen jako "CEF punt" a poslán do L3 enginu k dalšímu zpracování (horní cesta v obrázku)
Důvody proč paket není směrován dle FIB:
* pro paket není záznam ve FIB
* FIB je plná
* Vypršení IP TTL
* Paket překračuje MTU a musí být fragmentován
* ICMP Redirect
* Nepodporovaný typ enkapsulace
* Tunelovaný provoz, vyžadující kompresi nebo šifrování
* Paket odpovídá ACL s "log" parametrem
* Paket je NATován (kromě 6500, která má NAT v HW)
* **aCEF** (Accelerated CEF) - každá line card na 6500 má v sobě část FIB, co v ní nenajde, je směrováno do L3 enginu.
* **dCEF** (Distributed CEF) - každá line card na 6500 má v sobě celou FIB
=== Adjacency Table ===
* router běžně udržuje routovací tabulku obsahující L3 sítě a next-hop adresy, a ARP tabulku s L3-L2 záznamy
* pro urychlení přepínání, jsou ve FIB udržovány i L2 záznamy pro next-hop - tato část FIB se nazývá //adjacency table//
>Switch# **show adjacency** [//type mod/num// | **vlan** //vlan-id//] [**summary** | **detail**]
Switch# show adjacency summary
Adjacency Table has 106 adjacencies
Table epoch: 0 (106 entries at this epoch)
Interface Adjacency Count
Vlan99 21
Vlan101 3
Vlan102 1
Vlan103 47
Vlan104 7
Vlan105 27
Switch# show adjacency vlan 99 detail
Protocol Interface Address
IP Vlan99 192.168.1.2(5)
0 packets, 0 bytes
000A5E45B145000E387D51000800
ARP 01:52:50
Epoch: 0
IP Vlan99 192.168.1.3(5)
1 packets, 104 bytes
000CF1C909A0000E387D51000800
ARP 04:02:11
Epoch: 0
* **000A5E45B145**000E387D51000800 - Next-hop MAC adresa
* 000A5E45B145**000E387D5100**0800 - lokální MAC (MAC interface Vlan99)
* 000A5E45B145000E387D5100**0800** - Protocol type (IP)
* **ARP 01:52:50** - stáří ARP záznamu
* Adjacency table se vytváří z ARP tabulky
* Je-li v ARP aktualizován záznam - je aktualizován i v adacdency tabulce
* Jestliže v ARP není záznam pro next-hop, je záznam v adjacency tab. označen jako "CEF glean"
* CEF glean nelze přepínat v HW, paket je poslán do L3 enginu, který musí vyvolat ARP request a zjistit MAC next-hopu
* Tento stav se nazývá "CEF glean state"
* ARP throttling, throttling adjacency - V průběhu CEF glean stavu, jsou pakety zahazovány dokud není v L3 enginu zjištěna MAC next-hopu pro tyto pakety
Switch# show ip cef adjacency glean
Prefix Next Hop Interface
10.1.1.2/32 attached Vlan101
127.0.0.0/8 attached EOBC0/0
[output omitted]
Switch# show ip arp 10.1.1.2
Switch# show ip cef 10.1.1.2 255.255.255.255 detail
10.1.1.2/32, version 688, epoch 0, attached, connected
0 packets, 0 bytes
via Vlan101, 0 dependencies
valid glean adjacency
Typy záznamů v adjacency table:
* **Null adjacency** - pro pakety směrované na Null interface
* **Drop adjacency** - používá se pro pakety určené k zahození z důvodu chyby (nepodporovaného protokolu, špatného kontrolního součtu)
Switch# show cef drop
CEF Drop Statistics
Slot Encap_fail Unresolved Unsupported No_route No_adj ChkSum_Err
RP 8799327 1 45827 5089667 32 0
* **Discard adjacency** - pro pakety určené k zahození dle ACL
* **Punt adjacency** - pro pakety posílané do L3 enginu k dalšímu zpracování
Switch# show cef not-cef-switched
CEF Packets passed on to next switching layer
Slot No_adj No_encap Unsupp’ted Redirect Receive Options Access Frag
RP 3579706 0 0 0 41258564 0 0 0
Důvody pro zpracování v L3 enginu:
* **No_adj** - nekompletní adjacency
* **No_encap** - nekompletní ARP resolution
* **Unsupp'ted** - nepodporované featury paketu
* **Redirect** - ICMP redirect
* **Receive** - pakety směrované na L3 interejfejsy (IP adresy int. a broadcasty)
* **Options** - IP options
* **Access** - chyba vyhodnocení ACL
* **Frag** - chyba fragmentace
== Packet Rewrite ==
* vždy musí být přepsány hlavičky zpracovávaného rámce a paketu před opuštěním zařízení
* děje se ve speciálním HW k tomu určeným
- L2 cílová adresa - změna na MAC next-hopu
- L2 zdrojová adresa - změna na MAC odchozího L3 interfejsu switche
- L3 IP TTL - snížení hodnoty o jedna
- L3 IP checksum - přepočítání kontrolního součtu IP hlavičky
- L2 frame checksum - přepočítání kontrolního součtu L2 rámce
=== Konfigurace CEF ===
* defaultně zapnuto
Na Cat3750 a 4500 lze vypnout:
>Switch(config-if)# **no ip route-cache cef**
>Switch(config-if)# **no ip cef**
FIXME VERIFING MLS str.257