MPLS advanced
poznámky:
- XR operating system routery jsou service oriented - zatím co IOS má konfiguraci focused na interfaces, na XR má konfigurační soubor vždy daná sližba (OSPF, MPLS, etc.)
- Small Form-factor Pluggable - port na routerech, do kterého můžu vložit modul, který jakoby převádí mezi nestandardním rozhraním a "ethernetem"
- podívat se na tvorbu VPN (L2 A L3) pomocí IPv6
KURZ Advanced MPLS
- MPLS je providerská funkcionalita, hlavní důvodem bylo poskytnout VPN služby
- IP routing je v podstatě celý závislý na destination IP (destination based routing)
- základním principem je že používání labelů místo IP, label má asociaci s cílem; LSR nedělají IP lookup, podívají se pouze na label, na základě LFIB switchují
- nedíváme se do payloadu (nemusím vědět IP adresy, nezajímá mě co je uvnitř - multiprotokolový) - přes MPLS síť můžu transportovat nejen pakety, ale i třeba rámce atd.
- dvě funkcionality
- control plane- v něm mám vždy dva mechanismy, nějaký routovací protokol, k němu LDP;
- data plane - je v podstatě identický pro různé data planes - když máš např. paket s touto IP a s tímto labelem, vyměň ho za jiný label a pošli ho tímto interfacem ven (toto funguje kromě multicastu)
- většinou používám dva labely, ten venkovní určuje jak se dostat k cílovému PE, druhý label mi na cílovém PE řekne, co s tím paketem udělat (například může to být PE kde je více VPN se stejným IP rozsahem, nevěděl bych co s tím jinak)
- pozn. poslední label ve stacku má "end of stack" bit, který ukazuje že je to poslední label ve stacku a dáll už začíná payload
- traffic engineering - můžeme nastavit labelovou path, paket pošleme specifickou cestou
- i QoS
- pokud chci naučit router nějaký nový kousek, stačí přidat tu konkrétní aplikaci do control plane, do data plane vůbec nemusím sahat
Label Allocation and Filtering
- musím vždy zajistit, aby fungovalo LDP i routovací protokol (už v okamžiku konfigurace)
- můžu nastavit automaticky aby se spouštělo LDP na každém interface, kde je routovací protokol // # mpls ldp auto-config
- label pool
- můžu určit range labelů (min = 16; max 1048575)// # show mpls label range
- musím router reloadovat aby se aplikoval nový rozsah!// # mpls label range <min> <max>
// mpls static binding ipv4 <prefix> <mask> - v podstatě statická trasa
- nastavení aby box propagoval jen to co potřebuji, dá se svázat i s ACL aby to propagoval jen určitým sousedům // # mpls ldp advertise-labels for <net-acl>
- můžu alokovat jen pro určité prefixy
# mpls ldp label
# allocate global {prefix-list {list-name | list-number} | host-routes}
MPLS basic tuning
- když vypadne jeden link, není to takový problém
- problém nastává když link zpátky naběhne, protože routovací protokoly naběhnou dříve než LDP - pokud nefungují labely, router labely odstraňuje a tím pádem se všechny pakety zahodí (v MPLS síti)
- řešení je zapnout LDP session protection - alternativní cesta mezi routerama, pokud jeden link spadne, LDP session zůstane up a neighbour label bindings zůstanou aktivní; (defaultně 24h, lze nastavit víc)
- další řešení je LDP IGP Sync
- Cisco - počká s establishem IGP sessiony dokud LDP nenaběhne úplně
- RFC 5443 - dokud je primární link spadlý, backup trasa je advertisovaná jako max IGP metrika, dokud LDP není opět plně operational
QoS in MPLS
- v IP záhlaví je specifické pole pro QoS, nebo můžeme dělat QoS podle ACL, road mapy nebo přímo IP adresy
- v MPLS - pakety si musíme nějakým způsobem označit, jelikož se nemůžeme dívat do paketu
- v MPLS hlavičce jsou 3 bity (původně experimentální, nyní traffic class) - můžeme udělat 8 typů služeb
- můžeme řešit point to point SLA - mezi dvěma body
- Admission control
- Integrace s DiffServ (rozdělení do tříd)
- IP byla negarantovaná služba (není zaručené doručování paketů;)
- oproti tomu přístup RSVP (Resource Reservation Protocol) - úplná kontrola nad datovým tokem, zarezervuje prostředky pro každou session
- potřebujeme něco mezi tím:
- nesmí se rozpadnout IGP protokol
- něco pro management (SNMP, SYSLOG, ...)
- VPNky
- třídy pro kritický provoz
- ideální je tedy používat DiffServ (na hop to hop), k tomu navíc traffic engineering - posílat provoz specifickými linkami v závislosti na provozu
modely:
- point-to-cloud- řešíme QoS až na "last mile", na výstupu z MPLS sítě;
- point-to-point- řešíme konkrétní trasy přímo v MPLS síti
- DiffServ - defaultně se do MPLS DiffServ markingu (EXP) kopíruje QoS hodnota z IP paketu (DSCP)
- Uniform mode - zákazníkovi zůstane naše hodnota
- Pipe mode - "namarkujeme" vlastní IP precedence pouze na průchod naší sítí; zákazníkovi zůstane jeho hodnota
- Short pipe mode
- DiffServ Traffic-Engineering - tvořím tunely na základě tříd
VPNky
- L3 - forwarduji pakety na základě L3 informací; lepší optimalizace, ale složitější negotiation
- L2 - forwarduji na základě L2 informací; v podstatě zákazníkovi pouze poskytuji "trubku" //na PE seberu od zákazníka pakety/ATM buňky/...; pošlu je přes Pseudowire - mezi dvěma PE
VPWS (AToM) - virtual private wire service;
- řízení L2 provozu přes páteřní MPLS síť (Ethernet, VLAN, ATM, Frame relay, SDH/PDH)
- konfigurace
- PE routery musí mít /32 adresu
- MPLS musí být v core povolena
- MTU musí být dostatečně veliká, aby se do ní vešel overhead (>1530 B)
- LDP router ID- # mpls ldp router-id <interface>
# xconnect <peer-router-id> <vcid> encapsulation mpls// na starších mpls l2transport route <peer-router-id> <vcid>
# pseudowire class <pwclass-name>
# encapsulation mpls
# xconnect <peer-router-id> <vcid> pw-class <class-name>
- konfigurace svázaná s access circuitem se dá konfigurovat i tak, že oddělím MPLS část
# interface pseudowire <psaudowire_id>
# neighbour <remote_LDP_id>
# interface <interface_type> <id>
# service instance <instance_id> ethernet
service instance config -> encapsulation dot1q xxx
rewrite ingress tag pop yyy symmetric
# l2vpn xconnect context <context_id>
# member pseudowire <pseudowire_id>
# member <interface_type> <if_id> service-instance <instance_id>
- toto je univerzální přístup, můžeme spojovat cokoliv (??)
- backup Pseudowire - používá se pro redundantní spoj, pokud bych měl jeden pseudowire a spadl by aktivní prvek po cestě, přestalo by to celé fungovat
- můžu nakonfigurovat backup spoj
- troubleshooting - # show mpls l2transport vc 30 detail
Virtual Private LAN Services (VPLS)
- CE je k PE připojeno pomocí attachment circuitu
- na PE je nakonfigurována VFI (virtual forwarding instance) - v ní jsou zakončené jednotlivé access circuity a jednotlivé pseudowires
VPLS signaling and BGP autodiscovery
- l2vpn/vpls - Martini and Kompella
DCI (Data Center Interconnect)
- chci mít všechny prvky datacentra na jakoby L2 propoji
- nemůžu mít STP, protože má extrémně pomalou konvergenci
- pokud mám mezi prvky MPLS síť, můžu vytvořit jakoby L2 propoj po ní, ve chvíli kdy to chci mít redundantní musím dát na obě strany více než jeden aktivní prvek, tím mi vzniká problematika
- řešení:
- Dark Fiber/DWDM - Catalyst 6500/800 VSS; Nexus 7000 vPC; ...
- MPLS- EoMPLS; VPLS a A-VPLS (Catalyst 6500/6800)
- IP- cokoliv co přenáší přes GRE (Catalyst 6500/6800); A-VPLS over GRE (Catalyst 6500/6800)
- A-VPLS přináší zlepšení VPLS, jakoby agreguji boxy na každé straně tak, že se tváří jako logický jeden
- A-VPLS over GRE (A-VPLSoGRE) - jelikož je GRE multiprokolový, dá se do něj zabalit i MPLS
- EVPN - technologie kdy v podstatě routuji MAC adresy (podle pro L3 VPN, pomocí BGP šířím dostupnost nějakého L2 segmentu, případně MAC adres)
- můžu připojit koncové zařízení tak, že má dva porty aktivní a síť zařídí, že nedojde ke smyčce
- Autodiscovery - bridge doména se naučí kde se nějaká MAC adresa nachází a s ní pracuje - předá jí do BGP a ten jí propaguje (podobně jako u L3 VPN se propaguje prefix za CEčkem)
- Multicast/Broadcast - tam nastává ten problém, z jednoho paketu jich musím udělat víc
Traffic Engineering (TE)
- ohnutí destination based routingu (IP síť jde vždy za nejkratší metrikou, potřebuji to z nějakého důvodu udělat jinak = TE)
- "the fish" - provoz půjde vždy přes cestu s nejlepší metrikou, i když bude ta cesta přetížená
###########################################################################################################################################################################################################
############################################################################################ LABS ###################################################################################################
###########################################################################################################################################################################################################
Troubleshooting:
# show run // # show running-config | section <text>
# show running-config <interface>
# show ip interface brief
# show mpls ldp bindings
# show mpls ldp neighbor
# show mpls forwarding // # show mpls forwarding-table
# show bridge-domain <number>
# show xconnect all
# show bgp l2vpn vpls all summary
# show l2vpn rib detail
Configuration:
- allocate MPLS LDP labels ONLY for /32 prefixes
# configure terminal
# mpls ldp label
# allocate global host-routes
- Local Switching / Local Connect // jde o to, že vytvořím jakoby L2 propoj
# configure terminal
# bridge domain <X_number>// přepnutí do konkrétní bridge-domain konfigurace
# no mac learning// zakáže učení MAC adres
# interface <interface>// přepnutí do konfigurace konkrétního interface
# service instance <Y_number> ethernet
# bridge domain <X_number>// přiřadí bridge domain do interface
# interface <interface2>
# service instance <Z_number> ethernet
# bridge domain <X_number>
// přiřadili jsme dva interfacy do jedné bridge domainy - (??) nejsem si jistý, ale myslím že když máme na těchto dvou interfacech připojené dvě různé VLANy, můžu je tímto způsobem propojit
interfacy musí být nastavené nějak takto:
Na CE:
# show run interface gigabitEthernet 0/1.121
/ encapsulation dot1q 121
/ ip vrf forwarding 121
/ ip address <ip> <mask>
Na PE:
# show run interface gigabitEthernet <number>
/ no ip address
/ negotiation auto
/ no mop enabled
/ no sysid
/ service instance 121 ethernet
/ encapsulation dot1q
/ rewrite ingress tag pop 1 symmetric
- pro referenci check papírové materiály protože to než bych všechno přepsal tak mi reálně jebne
- pozn.:
- pro veškeré konfigurace používej jako referencei papírové materiály od ALEFu
- ta problematika je extrémně složitá, ale je to díky tomu že je tam hrozně moc protokolů a přístupů co jde použít; když se zaměříš postupně na jednotlivé věci, není to až tak složité
- don't lose your mind trying to figure it out, pokud se to budeš učit nebo to někdy potřebovat, rozkouskuj si to a kombinuj to s praktickými cvičeními!