Route Refresh a Outbound Route Filtering Petr Hamalčík Abstrakt: Tento projekt se zabývá mechanismy Route Refresh a Outbound Route Filtering (ORF), které jsou používány v protokolu BGP při filtrování cest podle směrovacích politik. Součástí projektu je ukázková konfigurace ORF na směrovačích Cisco a popis zpráv zasílaných mezi nimi. Klíčová slova: Route Refresh, Outbound Route Filtering, ORF, Cooperative route filtering 1 Route Refresh...1 2 Outbound Route Filtering...1 3 Konfigurace ORF...2 3.1 Konfigurace RA:...2 3.2 Konfigurace RB:...3 3.3 Ověření konfigurace...3 4 Popis komunikace směrovačů...5 4.1 Bez ORF...5 4.2 S aktivovaným ORF...5 5 Závěr...8 6 Použité zdroje...8 1 Route Refresh Pokud dojde ke změně vstupní politiky na směrovači s BGP, je nutné získat kompletní směřovací tabulku od souseda a vyfiltrovat nevyhovující cesty podle nové politiky. Lze to provést například restartem spojení se sousedem dojde k přerušení a opětovnému sestavení spojení. Toto je příliš extrémní řešení a většinou se mu chceme vyhnout. Dále můžeme použít Soft Reconfiguration směrovač si uloží kompletní obdrženou směřovací tabulku a případě změny politiky ji přefiltruje. Nevýhodou je velká paměťová náročnost, protože tabulka může mít velké množství záznamů. Alternativním řešením je znovu si vyžádat směřovací tabulku od souseda pomocí zprávy Route Refresh. K tomu je potřeba aby oba směrovače tuto funkci podporovaly. Pokud oba sousedé Route Refresh podporují, oznámí si to při navázání BGP spojení v Open zprávě, není třeba žádná konfigurace. 2 Outbound Route Filtering Outbound Route Filtering (ORF) je mechanismus umožnující sousedním směrovačů spolupracovat při filtrování podle směrovacích politik. Máme směrovače RA a RB. RA nabízí RB velké množství cest, např. celou BGP tabulku která má dnes okolo 400 000 záznamů. RB však potřebuje jen několik málo cest a zbytek odfiltruje. V tomto případě je vhodné použít ORF. Pomocí ORF může směrovač RB zaslat sousedovi RA svůj vstupní filtr. RB vloží svůj vstupní filtr jako takzvaný ORF filtr do zprávy Route Refresh a pošle sousedovi. RA si pak zařadí tento filtr do svého výstupního a na všechny Update zprávy, které bude posílat směrovači RB použije svůj původní výstupní filtr a obdržený ORF filtr. Směrovač RA takto provede všechno filtrování na výstupu a RB dostane jen ty cesty, které opravdu chce. Tímto způsobem se výrazně zmenší celková velikost Update zpráv posílaných mezi směrovači. listopad 2011 1/8
Aby tento mechanismus fungoval musí mít RA povoleno přijímání ORF filtrů a RB zasílání ORF filtrů. Protože se ORF zasílá v Route Refresh zprávě, musí oba směrovače podporovat jak ORF tak Route Refresh. 3 Konfigurace ORF Konfiguraci ORF jsem prováděl na směrovačích Cisco 2801 s IOS ve verzi 15.1(3)T1. Testovací topologie se skládá ze směrovače RA ke kterému jsou přímo připojeny 4 sítě a jeho souseda RB, na kterém se nastaví příchozí filtr. Tento filtr se poté pošle pomocí ORF na RA. Ilustrace 1: Ukázková topologie 3.1 Konfigurace RA: Na směrovači RA nastavíme 4 sítě reprezentované rozhranním loopback a budeme je propagovat do BGP. Potom zapneme přijímání ORF filtrů od souseda (zvýrazněno). ORF může pracovat v módech send pouze zasílání filtru, receive pouze přijímání filtru, both zasílání i přijímání. RA(config)#interface loopback 0 RA(config-if)#ip address 10.0.1.1 255.255.255.0 RA(config)#interface loopback 1 RA(config-if)#ip address 10.0.2.1 255.255.255.0 RA(config)#interface loopback 2 RA(config-if)#ip address 20.0.1.1 255.255.255.0 RA(config)#interface loopback 3 RA(config-if)#ip address 30.0.1.1 255.255.255.0 RA(config)#interface serial 0/1/0 RA(config-if)#ip address 100.0.0.1 255.255.255.0 RA(config)#router bgp 100 listopad 2011 2/8
RA(config-router)#address-family ipv4 unicast RA(config-router-af)#neighbor 100.0.0.2 remote-as 200 RA(config-router-af)#network 10.0.1.0 mask 255.255.255.0 RA(config-router-af)#network 10.0.2.0 mask 255.255.255.0 RA(config-router-af)#network 20.0.1.0 mask 255.255.255.0 RA(config-router-af)#network 30.0.1.0 mask 255.255.255.0 RA(config-router-af)#neighbor 100.0.0.2 capability orf prefix-list receive RA(config-router-af)#exit RA(config-router)#exit 3.2 Konfigurace RB: Na směrovači RB nastavíme vstupní filtr, který bude přijímat jen prefixy 10.0.1.0 a 10.0.2.0 a zapneme zasílání ORF (zvýrazněno). RB(config)#interface serial 0/1/0 RB(config-if)#ip address 100.0.0.2 255.255.255.0 RB(config-if)#no sh RB(config-if)#exit RB(config)#ip prefix-list AS100 seq 5 permit 10.0.1.0/24 RB(config)#ip prefix-list AS100 seq 10 permit 10.0.2.0/24 RB(config)#router bgp 200 RB(config-router)#address-family ipv4 unicast RB(config-router-af)#neighbor 100.0.0.1 remote-as 100 RB(config-router-af)#neighbor 100.0.0.1 prefix-list AS100 in RB(config-router-af)#neighbor 100.0.0.1 capability orf prefix-list send RB(config-router-af)#exit RB(config-router)#exit Restartovat BGP spojení se sousedem 100.0.0.1 (hard reset) můžeme tímto příkazem: RB#clear ip bgp 100.0.0.1 Vyvolání Route Refresh (soft reset) provedeme takto: RB#clear ip bgp 100.0.0.1 in 3.3 Ověření konfigurace Na RB zapneme ladící výpis update zpráv: RB#debug ip bgp updates Pokud se směrovačům podařilo vyjednat předání ORF filtru, pošle RA jako odpověď na Route Refresh pouze povolené prefixy: RB#clear ip bgp 100 in *Nov 22 10:37:54.907: BGP(0): 100.0.0.1 rcvd UPDATE w/ attr: nexthop 100.0.0.1, origin i, metric 0, merged path *Nov 22 10:37:54.911: BGP(0): 100.0.0.1 rcvd 10.0.2.0/24...duplicate ignored *Nov 22 10:37:54.911: BGP(0): 100.0.0.1 rcvd 10.0.1.0/24...duplicate ignored Pokud ovšem ORF z nějakého důvodu nefunguje, pošle celou směrovací tabulku: RB#clear ip bgp 100 in *Nov 22 10:35:11.115: BGP(0): 100.0.0.1 rcvd UPDATE w/ attr: nexthop 100.0.0.1, origin i, metric 0, merged path *Nov 22 10:35:11.115: BGP(0): 100.0.0.1 rcvd 30.0.1.0/24 -- DENIED due to: distribute/prefix-list; listopad 2011 3/8
*Nov 22 10:35:11.115: BGP(0): 100.0.0.1 rcvd 20.0.1.0/24 -- DENIED due to: distribute/prefix-list; *Nov 22 10:35:11.115: BGP(0): 100.0.0.1 rcvd 10.0.2.0/24...duplicate ignored *Nov 22 10:35:11.115: BGP(0): 100.0.0.1 rcvd 10.0.1.0/24...duplicate ignored Fungování ORF můžeme ověřit také ve výpisu spojení se sousedem. Na straně příjemce filtru (RA): RA#sh ip bgp nei 100.0.0.2 begin AF-dependant capabilities AF-dependant capabilities: Outbound Route Filter (ORF) type (128) Prefix-list: Send-mode: received Receive-mode: advertised Outbound Route Filter (ORF): received (2 entries) Sent Rcvd Prefix activity: ---- ---- Prefixes Current: 2 0 Prefixes Total: 2 0 Implicit Withdraw: 0 0 Explicit Withdraw: 0 0 Used as bestpath: n/a 0 Used as multipath: n/a 0 Outbound Inbound Local Policy Denied Prefixes: -------- ------- ORF prefix-list: 2 n/a Total: 2 0 Number of NLRIs in the update sent: max 4, min 1 Na straně odesílatele filtru (RB): RB#sh ip bgp nei 100.0.0.1 begin AF-dependant capabilities AF-dependant capabilities: Outbound Route Filter (ORF) type (128) Prefix-list: Send-mode: advertised Receive-mode: received Outbound Route Filter (ORF): sent; Incoming update prefix filter list is AS100 Slow-peer detection is disabled Slow-peer split-update-group dynamic is disabled Sent Rcvd Prefix activity: ---- ---- Prefixes Current: 0 2 (Consumes 104 bytes) Prefixes Total: 0 2 Implicit Withdraw: 0 0 Explicit Withdraw: 0 0 Used as bestpath: n/a 2 Used as multipath: n/a 0 Outbound Inbound Local Policy Denied Prefixes: -------- ------- Bestpath from this peer: 2 n/a Total: 0 0 Number of NLRIs in the update sent: max 2, min 0 Last detected as dynamic slow peer: never Dynamic slow peer recovered: never listopad 2011 4/8
4 Popis komunikace směrovačů Tato část popisuje zprávy přicházející a odcházející ze sériového rozhranní směrovače RB, které byly zachyceny programem Wireshark. Nejdříve se podíváme jak vypadala komunikace bez nastaveného ORF, potom se zapnutým ORF. 4.1 Bez ORF Route Refresh zpráva obsahuje pouze identifikátor adresní rodiny AFI a následný identifikátor adresní rodiny SAFI: Frame 981 (77 bytes on wire, 77 bytes captured) Internet Protocol, Src: 100.0.0.2 (100.0.0.2), Dst: 100.0.0.1 (100.0.0.1) Transmission Control Protocol, Src Port: 23256 (23256), Dst Port: bgp (179), Seq: 671, Ack: 691, Len: 23 ROUTE-REFRESH Message Length: 23 bytes Type: ROUTE-REFRESH Message (5) Address family identifier: IPv4 (1) Reserved: 1 byte Subsequent address family identifier: Unicast (1) UPDATE zpráva odpovídajicí na Route Refresh obsahuje celou směrovací tabulku od RA, kterou si následně musí RB přefiltrovat: Frame 985 (120 bytes on wire, 120 bytes captured) Internet Protocol, Src: 100.0.0.1 (100.0.0.1), Dst: 100.0.0.2 (100.0.0.2) Transmission Control Protocol, Src Port: bgp (179), Dst Port: 23256 (23256), Seq: 691, Ack: 694, Len: 66 UPDATE Message Length: 66 bytes Type: UPDATE Message (2) Unfeasible routes length: 0 bytes Total path attribute length: 27 bytes Path attributes ORIGIN: IGP (4 bytes) AS_PATH: 100 (9 bytes) NEXT_HOP: 100.0.0.1 (7 bytes) MULTI_EXIT_DISC: 0 (7 bytes) Network layer reachability information: 16 bytes 30.0.1.0/24 20.0.1.0/24 10.0.2.0/24 10.0.1.0/24 4.2 S aktivovaným ORF Směrovače vyjednají zásílání ORF podle schopností (capabilities) souseda v Open zprávě. Ve výpisu je ORF označeno jako Cooperative route filtering capability listopad 2011 5/8
Frame 1085 (118 bytes on wire, 118 bytes captured) Internet Protocol, Src: 100.0.0.1 (100.0.0.1), Dst: 100.0.0.2 (100.0.0.2) Transmission Control Protocol, Src Port: 36749 (36749), Dst Port: bgp (179), Seq: 1, Ack: 1, Len: 64 OPEN Message Length: 64 bytes Type: OPEN Message (1) Version: 4 My AS: 100 Hold time: 180 BGP identifier: 30.0.1.1 Optional parameters length: 35 bytes Optional parameters Capabilities Advertisement (8 bytes) Parameter length: 6 bytes Multiprotocol extensions capability (6 bytes) Capabilities Advertisement (4 bytes) Parameter length: 2 bytes Route refresh capability (2 bytes) Capabilities Advertisement (4 bytes) Parameter length: 2 bytes Route refresh capability (2 bytes) Capabilities Advertisement (11 bytes) Parameter length: 9 bytes Cooperative route filtering capability (9 bytes) Capability code: Cooperative route filtering capability (130) Capability length: 7 bytes Capability value Address family identifier: IPv4 (1) Reserved: 1 byte Subsequent address family identifier: Unicast (1) Number of ORFs: 1 ORF Type: Cisco PrefixList ORF-Type (128) Send/Receive: Receive (1) Capabilities Advertisement (8 bytes) Parameter length: 6 bytes Support for 4-octet AS number capability (6 bytes) Route Refresh zpráva je rozšířena o ORF filtr, který obsahuje vstupní filtr ze směrovače RB. ORF se skládá z: ORF flag určuje kdy aplikovat filtr, Immediate ihned, Defer odložit do přijetí další RR zprávy ORF type typ filtru (zde Cisco PrefixList) ORF len celková délka ORF záznamů následuje 1 až n ORF záznamů, které obsahují: ACTION jakou akci provést se záznamem, buď Add, Remove nebo Remove-All MATCH buď Permit nebo Deny, Permit povolí zasílání cest shodujících se s ORF záznamem, Deny zakáže zasílání těchto cest. Dále následuje proměnná část podle typu filtru (zde obsahuje prefix podle kterého se bude filtrovat) Jedna Route Refresh zpráva může nést více ORF filtrů se stejnou dvojicí AFI/SAFI. listopad 2011 6/8
Frame 1346 (103 bytes on wire, 103 bytes captured) Internet Protocol, Src: 100.0.0.2 (100.0.0.2), Dst: 100.0.0.1 (100.0.0.1) Transmission Control Protocol, Src Port: 12803 (12803), Dst Port: bgp (179), Seq: 131, Ack: 107, Len: 49 ROUTE-REFRESH Message Length: 49 bytes Type: ROUTE-REFRESH Message (5) Address family identifier: IPv4 (1) Reserved: 1 byte Subsequent address family identifier: Unicast (1) ORF information (26 bytes) ORF flag: Immediate ORF type: Cisco PrefixList ORF-Type ORF len: 22 bytes ORFEntry-PrefixList (12 bytes) ACTION: Add MATCH: Permit Entry Sequence No: 5 PrefixMask length lower bound: 0 PrefixMask length upper bound: 0 10.0.1.0/24 ORFEntry-PrefixList (12 bytes) ACTION: Add MATCH: Permit Entry Sequence No: 10 PrefixMask length lower bound: 0 PrefixMask length upper bound: 0 10.0.2.0/24 Směrovač RA si zařadí ORF filtr do svého výstupního a sousedovi RB pošle už přefiltrovanou tabulku s pouze dvěmi povolenými prefixy: Frame 1347 (112 bytes on wire, 112 bytes captured) Internet Protocol, Src: 100.0.0.1 (100.0.0.1), Dst: 100.0.0.2 (100.0.0.2) Transmission Control Protocol, Src Port: bgp (179), Dst Port: 12803 (12803), Seq: 107, Ack: 180, Len: 58 UPDATE Message Length: 58 bytes Type: UPDATE Message (2) Unfeasible routes length: 0 bytes Total path attribute length: 27 bytes Path attributes ORIGIN: IGP (4 bytes) AS_PATH: 100 (9 bytes) NEXT_HOP: 100.0.0.1 (7 bytes) MULTI_EXIT_DISC: 0 (7 bytes) Network layer reachability information: 8 bytes 10.0.2.0/24 10.0.1.0/24 listopad 2011 7/8
5 Závěr Nakonfiguroval jsem ORF filtr a ověřil jeho funkčnost. Konfigurace se skládá z nastavení ORF na straně odesílatele a na straně příjemce. Samotný ORF filtr je přenášen ve zprávě Route Refresh. Příjemce začlení ORF do svého výstupního filtru a použije jej na všechny odchozí update zprávy směrované odesílateli filtru. 6 Použité zdroje [1] BRIAN, Brian. Understanding BGP Outbound Route Filtering (BGP ORF) [online]. 05. 05. 2008 [cit. 2011-11-29]. Dostupné z WWW: <http://blog.ine.com/2008/05/05/understanding-bgp-outbound-routefiltering-bgp-orf/>. [2] CISCO, Inc. BGP Prefix-Based Outbound Route Filtering [online]. 17. 11. 2007 [cit. 2011-11-29]. Dostupné z WWW: <http://www.cisco.com/en/us/docs/ios/12_2t/12_2t11/feature/guide/ft11borf.html>. [3] CHEN, Enke; REKHTER, Yakov. RFC 5291 - Outbound Route Filtering Capability for BGP-4 [online]. srpen 2008 [cit. 2011-11-29]. Dostupné z WWW: <http://tools.ietf.org/html/rfc5291>. [4] CHEN, Enke. RFC 2918 - Route Refresh Capability for BGP-4 [online]. září 2000 [cit. 2011-11-29]. Dostupné z WWW: <http://tools.ietf.org/html/rfc2918> listopad 2011 8/8