MPLS

POZNÁMKY
- routová tabulka internetu je dnes cca 920 000
- segment routing?
PIMv2? MLDP?
- traffic engineering není možný na distance vector směrovacích protokolech
- cisco modeling labs - training
xconnect
l2 vpn - vpls
e vpn
 
Example router config
 
 
Breakout UI - lab
gnsko
eve
 
(zajímavé programy to try: KDiff3, 3CDaemon, LAN messenger, Unbrowse SNMP, Fiddler 4, Tera Term, Tftpd64, WinSCP, mRemoveNG,
UltraVNC Server, CM, NTP Time Server, VNC Viewer, UltraVNC Viewer, HTTTrack website copier, Advanced IP address Calculator,
Nmap - Zenmap GUI, UltraVNC Launcher, Cisco AnyConnect, Cisco Configuration Professional, UltraVNC Repeater)
 
na yt videa - MPLS, VPN over MPLS, jak souvisí s BGP, co je to route distinguisher
*****
10.8.16.61
*****
 
######################################################################################################################################################################################################
 
MPLS - multiprotocol label switching
- chceme nahradit klasické směrování pomocí štítků (labelů), které obsahují informace o cestě
- MPLS infrastruktura neslouží jen pro IP sítě, dokáže obsloužit ATM, Frame Relay
- forwarduje velké množství paketů na základě labelů, pakety jsou switchované, ne routované
- pro přidělování labelů - protokol LDP (label distribution protocol), dříve také TDP (tag distribution protocol)
- destination-based unicast bez použití IP směrování
 
- tradiční router vybalí paket z rámce, dělá směrování atd - zdlouhavé, MPLS se dívá na label který je k paketu přidáván
 
- varianta QoS pro MPLS je CoS - až 8 tříd (3 bit v headeru)
- traffic control
 
Základní komponenty:
LSR - Label switching router - swapuje labely, každý 1 hop dojde ke změně labelu
LER - label edge router - provádí zapouzdření, berou si příchozí IP pakety a předávají je do sítě; provádí i opak, odstranění labelu při výstupu paketu z MPLS sítě
 
CE - Customer edge - router na straně u zákazníka, neví že je součástí MPLS sítě, jen předává data od zákazníka dál
Ingress LSR - vstupné router - přebírá traffic do MPLS, přidělí label
Transit LSR - jen přebírají traffic a předávají ho dál
Egress LSR - výstupní router 
 
FEC - Forwarding Equivalent Class - něco, čemu se bude přidělovat label (nějaký subnet)
LIB - Label Information Base - databáze všech labelů, lokálně alokovaných a naučených od LDP peerů
LFIB - Label Forward Information Base - podmnožina LIB, obsahuje informace o specifických cestách
FIB - Forwarding Information Base
 
P - provider - full MPLS router
PE - provider edge - zde začíná a končí MPLS
CE - customer edge - IP směrování
 
 
ARCHITEKTURA
- základ je router information base
 
Control plane - kouká se do směrovací tabulky a podle toho volí label, předávají si informace (LDP)
Data plane - přidělování a měnění labelů
 
- v MPLS síti musí běžet IGP - link state směrovací protokol, nejčastěji se volí OSPF nebo IS-IS; routery si pomocí něj informace o cestách
- dále musí běžet LDP
 
- na data plane jsou pakety odbavovány pomocí štítků na základě control plane
 
- pokud nějaký výpadek, je síť schopná směrovat normálně dle paketů
 
MPLS ACTIONS
- na cisco routerech se používá tzv packet-mode
- IP routing protokoly vytvoří IP routovací tabulku > každý LSR přidělí vlastní labely pro každou FEC > pak si s ostatními routery porovnávají informace
 
- Penultimate Hop Popping - při forwardování labelů ze sítě pryč, upstream router popne label pryč z paketu - příznak "implicit-null"
 
MPLS LABEL
- mezi frame headerem a IP headerem
- 32bit pole - label, experimental, bottom-of-stack, TTL
 
- sousední routery (label distribution peers) si vyměňují informace o labelech přes TCP - 646 - defaultně TCP port na kterém funguje LDP
- LDP - RFC3035, 3036, 3037
 
- label space - platform wide
- interface specific
 
LDP
- messages:
- Discovery messages
- Session messages
 
povinné:
- pro traffic engineering - vrstvení labelů (lable stacking)
- CEF je mandatorní (Cisco express forwarding)
- aktivace MPLS pro IPv4
- aktivace LDP
 
volitelné:
- MTU
 
KONFIGURACE LDP (dva OS, IOS a XR - XR oproti IOSu nepotřebuje restart, příkazy zadávám postupně a vykonají se až když zadám příkaz "commit")
- přepnu se na interface, musím konfigurovat interfaces jednotlivě
# mpls ip //spustí se vyhledávání MPLS partnerů, při nalezení dojde k výměně štítků a rovnou se začíná štítkovat
 
- pro XR:
# mpls ldp
# commit
 
- na straně zákazníka je dobré zablokovat MPLS aby nemohl podvrhovat štítky atd
# ip access-group NoLDP in
# ip access-list NoLDP deny tcp any any eq 646
# ip access-list NoLDP permit ip any any
 
# show mpls interface //zobrazí které if se účastní MPLS
# show mpls ldp discovery
# show mpls ldp parameters //jaké používáme parametry pro ldp (min a max label - rozsah, hold time - jak dlouho držím sousedství, každý keep-alive paket ho prodlužuje)
# show mpls ldp neighbor //ukáže vztahy se sousedy
# show mpls ldp neighbour detail //více detailů
# show mpls ldp bindings //ukáže bindy FEC k labelům
 
# show mpls forwarding-table //základní diagnostický příkaz, vypíše FIB
# show ip cef detail //zobrazí jestli mám danou síť a daný label zavedený 
 
# debug mpls ldp //
# debug pls lfib //
# debug mpls packets [interface] //
// spustí debugovací příkazy, mít na paměti výpočetní výkon jaký to sežere, u zatíženého routeru příkaz "# debug all" router okamžitě shodí
 
# no mpls ip propagate-ttl forwarded
# mpls ldp autoconfig //automatická konfigurace
# mpls mtu <velikost> // konfigurace maximální transfer unit (1512bytes - velikost hlavičky je 12bytes)
 
MPLS/VPN technologies
- MPLS řekneme jen vstupní a výstupní bod - konfigurace je snadná
 
názvosloví:
P-network - provider network
C-network - customer network
VC - virtual circuit
PVC - permanent virtual circuit
SVC - switched virtual circuit
 
2 druhy VPN obecně:
- OVERLAY - vyrobí "virtuální tunel" přes který zákazník vede jakýkoliv provoz
- PEER-to-PEER - převzetí routingu od zákazníka a transport přes MPLS síť do dalších poboček
 
v MPLS
- P routery se nijak zásadně nepodílí
- CE routery používají jen klasický IP routing
- hlavně PE-router
- na vstupu od zákazníka podporuje klasické IP
- na výstupu podporuje labelování
- podporuje VPNky
- mezi PE se přenáší informace o VPN routes pomocí MP-BGP (multiprotocol BGP)
- PE routery spravují globální směrovací tabulku, a další
- na routerech se vytvoří jakoby "virtuální routery" pro každého VPN zákazníka - každý směruje provoz sám
 
- MP-BGP obsahuje - route distinguisher (zajišťuje unikátnost IPv4 adresy), IPv4 adresu, route target, site of origin
 
VRF - Virtual Routing and Forwarding
- přidám route distinguisher
- VRF-lite nepodporuje všechny MPLS-VRF funkcionality, slouží čistě pro oddělení nějakého provozu od sebe
 
# ip vrf <name> //case sensitive
# rd <hodnota_route_distinguisher> //přiřazení route distinguisheru do VRF (ASN:xx a podobně formát)
# route-target export <RT> //pro nastavení bodů zájmu - export
# route-target import <RT> //pro nastavení bodu zájmu - import
# ip vrf forwarding <vrf-name> //přiřazení interface do VRF, v okamžiku kdy tam toto napíšeme, router odstraní IP adresy rozhraní
# show ip vrf 
# show ip vrf interfaces
 
Typické problémy 
- v ruzných VPN na jednom routeru máme od zákazníků stejné subnety, se stejnými směrovacími protokoly
- toto vyřeší "routovací instance" - RIP, EIGRP, BGP//pozn. u externího BGP vždy musíme dát routing-policy
 
# router bgp <AS-number>
# adress-family ipv4 vrf <VRF-name> //slide 266
 
TROUBLESHOOTING
# show ip protocol vrf <VRF-name>
# show ip route vrf <VRF-name>
# show ip bgp vpnv4 vrf <VRF-name>
# show ip bpg vpnv4 vrf <VRF-name> neighbours
# show ip bgp vpnv4 all //ukáže všechny routes
# show ip cef vrf <VRF-name> //ukáže pro dané VRF cef tabulku - jak se bude provádět fast IP switching pro jednotlivé subnety, odchozí interfaces atd
# show ip cef vrf <VRF-name> <prefix> //ukáže jen pro daný prefix
# show mpls forwarding-table
# show mpls forwarding-table vrd <VRF-name> detail
# show ip bgp vpnv4 [ all | rd <rd-value | vrf <VRF-name> ]
# ping crf <VRF-name> <IP-addr>
# trace vrf <VRF-name> <IP-addr>
 
ADVANCED MPLS VPN configuration
- VRF - pomocí route targetu můžeme importovat a exportovat routy - v BGP se tomu vygenerují odpovídající informace, všechny routery se stejnou route target si to načtou
- lze to dělat pomocí "map" jemněji - RTMAP - selektivní načítaní route targets
- stejně tak se dá dělat i selektivní export RTMAP - vyrobíme si nějakou, přidáme kritérium podle kterého bude porovnáváno (subnet)
- je dobré limitovat počet prefixů, které může router dostat od BGP souseda - aby nedošlo k přeplnění paměti 
 
- zákazník chce používat stejné číslo AS na více lokalitách
# neighbour ip-address as-override//dojde k přepsání AS - na přijmovém routeru nedojde k zahození
- zákazník může mít dvě linky které vedou přes nás, je možné že se i přes override druhou linkou vrátí
# neighbour ip-address allowas-in <limit>//vypne hlídání, jestli se vyskytuje moje vlastní AS v AS_path
 
OSPF in MPLS VPN
- když v MPLS síti provozujeme OSPF (podobně is IS-IS)
- PE budou vždy propojené přes BGP - BGP backbone
- OSPF informace se dají přenášet přes BGP pomocí extended communities, cost (OSPF) se přenáší jako MED (BGP)
- stejně tak i RIP se dá přenášet přes BGP (hop count také jako MED)
- sham-linky - "tunel" OSPF přes BGP
 
OVERLAPPING VPNs
- chceme aby např. jedna centrála byla ve více VPNkách
 
- VRF má svou vlastní směrovací tabulku, BGP rozesílá tuto tabulku určeným routerům které mají stejně nakonfigurovaný "route-target import <RD_number>"
 
ROUTE MAPY
- komplexní filtr, specifikujeme pravidla a řekneme, co se má dít když jsou podmínky v pravidle splněny (například se přiřadí AS_path)
# route-map <name> [permit|deny sequence]
# match <podmínka> <podmínka2> //logicky or - podmínka jedna nebo podmínka2 - nejčastěji třeba # match ip address 5; #match metric 100
# match <podmínka3> //logicky and - podmínka a podmínka 3 (v této syntaxi)
- defaultní akcí záznamu je permit
- oddělení route-map pomocí "# continue" - pokud to propadne jedním pravidlem, použije se pravidlo další (nebo specifikované číslem (#continue <číslo routmapy>))
 
INTERNETOVÝ PROVOZ
- lze oddělit na fyzické vrstvě MPLS síť pro zákazníky (VPNky) a internetovou síť
- lze oddělit logicky, jednak pomocí VLAN na CE, druhak pomocí VRF - route leaking - z VRF vede do globální dměrovací tabulku v routeru (tímto ale boříme hranice které jsme si vytvořili VPNkama)
-nejlepší způsob je vytvořit jakoby VPN vedoucí do internetu - provoz pak bude stále oddělený ale přístup do internetu bude ok
 
MPLS OAM
- existují verze ICMP protokolu pro MPLS 
- klasický ping funguje (na IP adresu - icmp echo request, druhá strana ho vyhodnotí a zašle zpět odpověď)
- klasický traceroute (založený na TTL, postupně zvyšujeme pole TTL v záhlaví ICMP paketu, routery které zahazují pakety posílají zpět chybové hlášky a my zapisujeme)
- tyto příkazy fungují i v rámci VRF routovacích tabulek
- můžeme použít ping s příznakem MPLS (# ping mpls ipv4 <ip_address>)
- aby toto fungovalo, musíme mít zapnutou OAM funkci (v MPLS routeru musíme zadat #mpls oam)
- stejně tak můžeme použít traceroute (# traceroute mpls ipv4 <ip_address> verbose)
- můžeme použít multipath traceroute (# traceroute multipath ipv4 <ip_address> verbose) - pro zobrazení veškerých cest v MPLS síti
 
MPLS troubleshooting
- co dělat když MPLS nechodí, nejde připojit VPN zákazník
- chyba control plane/data plane
- kontrola propagace routes
- zda vidíme od začátku cesty k cíli
- kontrola labelování
 
1) je CEF zapnutý? máme IGP (interior gateway protocol) nastavený? máme labely pro dané FEC (forward equivalent class)? neblokuje někdo LDCP provoz
2) kontrolujeme provoz mezi PE a CE; kontrola UP interfaců, ping
3) funguje redistribuce do BGP? fungují extended community? (# show ip bgp vpnv4 vrf <vrf_name> <ip_prefix>) (# show ip bgp vpnv4 univast vrf <vrf_name> <ip_prefix>)
4) přesunují se nám informace mezi PE? (# show ip bgp vpnv4 all <ip_prefix>) //koukáme na routing distinguisher, route target, další komunity (jako OSPF doména), další route targety
5) # show ip route vrf <vrf_name> - vypíše routovací tabulku VRFka; # show ip bgp <ip_address>; # show ip vrf detail 
6) # show ip route - na CEčkách //CEF je mandatorní pro každý box (# show cef interface), # show ip cef vrf <vrf_name> <ip_addr> detail - zobrazí tags imposed: {VPN label} a {LDP label} , kontrola jestli LFIB
7) dál můžeme začít řešit tok dat (jestli se točí counters u labelů (# show mpls forwarding-table)) - vidíme lokální a odchozí tagy, interfaces a next-hop; # show mpls forwarding
 
IPv6 v MPLS
- oproti IPv4 (32bit) má IPv6 128bit adresu, posloupnosti nul se dají zapsat jako ::
# ipv6 unicast-routing
na interfacech
# ipv6 enable
# ipv6 address <address> [eui-64]
# ipv6 unnumbered <interface_id>
# ipv6 address fe80:<ipv6addr>
- link local adresa fe80:addr- adresa která je mandatorní, uvádí se u nich i na jakém interfacu jsou obsažené
- slouží k tomu aby se router stal IPv6 schopným - inzerce sebe a zapojování se do všech multicast skupin
- eui - pokaždé se přiřadí lokální prefix + část adresy vytvořené z MAC adresy - problém soukromí (dá se potenciálně trasovat)
 
- IPv6 over MPLS - více přístupů (IPv6 over L2TPv3; IPv6 over EoMPLS/AToM; IPv6 CE-to-CE IPv6 over IPv4 tunnels; 6PE;
- MPLS vevnitř funguje klasicky pomocí labelů, využívá IPv4 adresy