====== L2/L3 (Multilayer) Switch ====== * **MLS** = multilayer switching * Podporováno na switchích z řad 3750, 4500 a 6500 ===== Druhy MLS ===== - Route caching - Topology based switching * **RP** = Route processor * **SE** = Switching engine ==== Route caching ==== * první generace MLS * RP musí zpracovat první paket toku a zjistit jeho cíl * SE naslouchá výsledku zpracovaní prvního paketu toku a tento výsledek si uloží do MLS cache, podle které přepíná zbylé pakety daného toku * Podpora v HW: * Cat6000 + Supervizor1/1 + Multilayer Switch Feature Card (MSFC) * Cat5500 + Route Swich Module (RSM) / Route Switch Feature Card (RSFC) / ext.router * Též zvaný: * //Netflow LAN switching// * //Flow-based switching// * //Demand-based switching// * //Route once, switch many// ==== CEF Cisco Express Forwarding (Topology-based) ==== * druhá generace MLS * pro přepínání se používá specializovaný HW * Též zvaný jako **CEF** = Cisco Express Forwarding * Routovací informace se přenáší do **FIB** = Forward Information Base * 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 CAM table ^timestamp ^MAC adr. ^Port ^VLAN ^ | | | | | FIB table ^IP adr. ^NextHop IP ^NextHop MAC ^Port ^ | | | | | __MLS proces:__ * L2 forwarding table - rozhodování podle Dest.MAC adresy a CAM tabulky. Jestliže rámec obsahuje L3 paket k forwardování a Dest.MAC adr.=MAC adr. L3 rozhraní switche, je jen rozhodnuto, že forwarding proběhne na L3. * L3 forwarding table - rozhodování podle Dest.IP adresy nad FIB tabulkou. Vybrán je záznam, kde je "nejdelší" shoda IP adresy a masky. Díky tomu je získána next-hop IP, next-hop MAC a odchozí port bez potřeby dalších lookupů. * Security ACL - Inbound a Outbound ACLs jsou zakomponovány do TCAM tabulky => zase úspora lookupů * QoS ALC - také v TCAM Před tím než rámec opustí switch, musí být přepočítány kontrolní součty L3 a L2 hlaviček, protože se tyto hlavičky změnily. __MLS vyjímky:__\\ CEF může zpracovávat pouze pakety, které nevyžadují jiné operace s hlavičkami, než změny polí IP, MAC, TTL a checksum. Provoz vyžadující další zpracování zpracovává "process switching". * ARP požadavky a odpovědi * IP pakety vyžadující odpověď od routeru (TTL expired, MTU exceeded, Fragmentation needed,... ) * IP broadcasty přenášené jako unicasty (DHCP request, IP helper funkce) * Routovací updaty * CDP, IPX, non-IP a non-IPX provoz * pakety určené pro NAT ===== Tabulky používané pro switching ===== ==== CAM - Content-Addressable Memory ==== * Používají ji všechny cisco catalyst switche * Do tabuky se zapisují zdrojové MAC adr.,interfejsy a VLANy příchozích rámců + časová známka. * Když rámec se stejnou zdrojovou MAC přijde přes jiný port, je vytvořen nový záznam a ten původní je smazán + je vygenerováno hlášení o flapující MAC mezi porty * Jestliže přijde rámec se stejnou zdrojovou MAC přes stejný port jako předtím, je pouze aktualizována časová známka. * Defaultně jsou "neaktivní" záznamy vymazány po 300 sekundách >Změna doby uchování záznamů v CAM (def.300s) >Switch(config)# **mac address-table aging-time** //seconds// >Přidání statického záznamu do CAM >Switch(config)# **mac address-table static** //aaaa.bbbb.cccc// **vlan** //vlan-id// **interface** //type mod/num// ==== TCAM - Ternary Content-Addressable Memory ==== Při klasickém routingu jsou ACE (Access Controll Entities) ACL vyhodnocována postupně, což může mít za následek zvýšení procesního zpoždění. V multilayer switchích je vyhodnocovací proces ACL implementován v hardwaru. TCAM umožňuje, aby byl paket vyhodnocen pomocí pouze jdnoho lookupu do tabulky. Switche často mívají více TCAM tabulek, což umožňuje zároveň vyhodnocovat vstupní a výstupní ACL, security a QoS ACL, forwarding na druhé a třetí vrstvě. Komponenty Cisco IOS pro TCAM: * **FM = Feature Manager** - zakomponovává ACE do TCAM * **SDM = Switching Database Manager** - lze pomocí něj rozdělovat TCAM na oddíly (partitions) určené pro různé funkce. Cisco 4500 a 6500 mají TCAM rozdělenu napevno. === Struktura TCAM === >str.29 Záznamy se skládají z kombinací VMR: * **Value** - 134bitů, obsahuje např. zdrojovou, cílovou adr., port atp., vyplňuje se podle definovaných ACL * **Mask** - 134bitů, maska sloužící k označení části hodnot Values, které jsou relevantní pro rozhodování - odvozuje se z masek definovaných v ACL * **Result** - číselné hodnoty reprezentující prováděnou akci, jestliže dojde k matchi řádku (permit, deny, pointer to next-hop routing table, index pro QoS policer, atp) TCAM je vždy organizována dle __masek__, kde každá maska má asociovaných __8__ Value paternů. Je-li počet paternů větší než 8, musí se vytvořit nová (stejná maska), ke které se přidávají další paterny. * **access-list 100 permit tcp host 192.168.199.14 10.41.0.0 0.0.255.255 eq telnet** * **access-list 100 permit ip any 192.168.100.0 0.0.0.255** * **access-list 100 deny udp any 192.168.5.0 0.0.0.255 gt 1024** * **access-list 100 deny udp any 192.168.199.0 0.0.0.255 range 1024 2047** ^ MASKS (134 bits) ^ Value patterns (134 bits) ^^^^^^^^ Result ^ | | IP \\ protocol | IP \\ ToS | Source \\ IP | Src \\ Port | S Port \\ LOU | Dest \\ IP | Dest \\ Port | D Port \\ LOU | | | **Maska 1** \\ src.IP 32bits \\ dst.IP 16bits \\ other (xxx) | TCP | | 192.168.199.14 | | | 10.41.0.0 | 23 | | permit | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | | **Maska 2** \\ dst.IP 24bits \\ other (xxx) | | | | | | 192.168.100.0 | | | permit | |::: | UDP | | | | | 192.168.5.0 | | A1 | deny | |::: | UDP | | | | | 192.168.199.0 | | B1:2 | deny | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | |::: | | | | | | | | | | | **Maska 3** \\ ... \\ ..| | | | | | | | | | **LOU register pairs** | **A** | gt \\ 1024 | | | **B** | range start \\ 1024 | range end \\ 2047 | TCAM tabulka není přímo stavěná na složitější porovnávání L4 hodnot (portů), pro případy **gt, lt, neg** a **range** je použit pomocný LOU registr, který uchovává tato pravidla a TCAM se do něj jen odkazuje - umožňuje to např. aby jeden LOU záznam byl společný pro více paternů v TCAM. Velikost LOU je však __omezená__, proto je-li překročena, musí se rozsahy portů rozepsat do TCAM ve stylu "co port, to řádek". Velikost TCAM je také omezená a vpřípadě mnoha ACL vyžadujích L4 operace, může tato tabulka "přetéct" - stane-li se tak, už během konfigurace ACL je vygenerována syslog zpráva o přetečení TCAM. ===== Konfigurace Switching Tables ===== >str.32 POZOR! příkazy lze psát dvěma způsoby: * Po staru: **mac-adress-table** * Po novu: **mac address-table** >Změna doby uchování záznamů v CAM (def.300s) >Switch(config)# **mac address-table aging-time** //seconds// >Přidání statického záznamu do CAM >Switch(config)# **mac address-table static** //aaaa.bbbb.cccc// **vlan** //vlan-id// **interface** //type mod/num// >Zobrazí CAM tabulku >Switch# **show mac address-table dynamic** [**address** //mac-address// | **interface** //type mod/num// | **vlan** //vlan-id//] >Zobrazení counterů (dynamic,static,total) pro jednotlivé VLANy >Switch# **show mac address-table count** >Smazání CAM tabulky nebo její části dle zadaných parametrů >Switch# **clear mac address-table dynamic** [**address** //mac-address// | **interface** //type mod/num// | **vlan** //vlan-id//]