Portál AbcLinuxu, 24. května 2024 12:10

BGP – dynamické routování – 3 (pokročilá konfigurace)

20. 5. 2009 | Dušan Hokův
Články - BGP – dynamické routování – 3 (pokročilá konfigurace)  

Nyní nastal čas nahodit druhý peer a vylepšit konfiguraci routeru. Je také třeba provést další administrativu na RIPE.

Delegace reverzních DNS

Protože již běží první peer a vaše nové IP adresy jsou již dostupné ze světa, je třeba vydelegovat reverzní DNS zóny vašeho adresního rozsahu. Jakmile budete mít připraveny reverzní zóny v konfiguraci vašich nameserverů, je třeba zajistit přes RIPE vydelegování do světa. K tomuto účelu je vhodné použít web delegation checker.

Záznam v RIPE databázi pro reverzní zónu 232.112.62.in-addr.arpa (256 adres) může vypadat nějak takto:

domain:          232.112.62.in-addr.arpa
descr:           MY Network
admin-c:         IP5941-RIPE
tech-c:          IP5941-RIPE
zone-c:          IP5941-RIPE
mnt-by:          MY-CZ-MNT
changed:         mujmail@mojedomena.cz
source:          RIPE
nserver:         ns2.mojesit.net
nserver:         ns1.mojesit.net

Navázání dalšího peeru

Abyste mohli splnit svůj cíl nezávislosti na jednom poskytovateli, je třeba navázat další peer po samostatné lince a odděleném rozhraní k dalšímu poskytovateli. Od něj rovněž dostanete tranzitní síť (/30) a dohodnete se na peeringu. Je dobré si promyslet, jak budete chtít dva uplinky využívat, což samozřejmě závisí i na velikosti poskytované konektivity od obou poskytovatelů. Můžete například nakonfigurovat, že veškerý traffic poteče přes prvního providera, druhý bude sloužit jen jako záloha a v normálním stavu zde poteče jen vzájemný provoz mezi oběma autonomními systémy, případně i autonomní systémy, které mají kratší as-path přes tento autonomní systém nebo jsou přímo a jen za ním. Můžete (musíte) rovněž rozvažovat traffic rovnoměrně mezi oběma peery, abyste například na jedné straně nepřetěžovali jednu linku a druhou nenechali ladem. BGP protokol umožňuje řídit, kudy poteče traffic jak příchozí, tak odchozí. Pro tyto účely existuje několik bgp atributů a metod.

Pro nakonfigurování druhého peeru nejprve připravíme route-mapy a filtry přímo z konzole Quaggy, protože nám již jeden peer běží a nechceme způsobit žádný výpadek. Nakonec nakonfigurujeme druhý peer a aplikujeme na něj vytvořená pravidla.

my-bgp# configure terminal 
my-bgp(config)# route-map prov2-out permit 10
my-bgp(config-route-map)# match as-path  my-as
my-bgp(config-route-map)# set as-path prepend 57131 57131 57131
my-bgp(config-route-map)#      

Tím připravíme route mapu pro odchozí směr k druhému providerovi a nastavíme prepend, čímž uměle prodloužíme cestu vlastního AS přes tohoto providera. Výsledkem bude, že as-path přes prvního providera bude ve většině případů kratší a tím tedy příchozí traffic do vašeho AS půjde primárně přes prvního providera. Prepend tedy ovládá příchozí směr do vašeho AS.

K ovládání odchozího trafficu slouží například atribut local-preference.

route-map prov-in permit 10
 set metric 0
 set local-preference 90

route-map prov2-in permit 10
 set metric 0
 set local-preference 80

Vyšší hodnota tohoto bgp atributu znamená vyšší preferenci a tedy upřednostněný směr. Výchozí hodnota pro tento atribut je rovna 100.

Nyní je je potřeba nadefinovat novou peer-group pro druhého providera a přiřadit vytvořené route-mapy a filtry.

my-bgp# configure terminal 
my-bgp(config)# router bgp 57131
my-bgp(config-router)# neighbor PROVIDER2 peer-group
my-bgp(config-router)# neighbor PROVIDER2 description Provider2
my-bgp(config-router)# neighbor PROVIDER2 route-map prov2-in in
my-bgp(config-router)# neighbor PROVIDER2 route-map prov2-out out
my-bgp(config-router)# neighbor PROVIDER2 filter-list my-as out
my-bgp(config-router)# neighbor PROVIDER2 soft-reconfiguration inbound
my-bgp(config-router)# neighbor 77.124.15.2 remote-as 29113
my-bgp(config-router)# neighbor 77.124.15.2 peer-group PROVIDER2

Po změnách v route mapách je potřeba resetovat peer(y).

clear ip bgp 177.104.215.242 soft

To soft na konci je důležité; pokud by tam nebylo, jednalo by se o tvrdý reset BGP session a za každý tento reset dostává náš router penalty a pokud je to velmi často, router na druhé straně s vaším na nějakou dobu může přestat úplně komunikovat. Router dále dostává penalty i za flapování rout. Tomu, jak se má router zachovat, se říká BGP Dampening. Quagga zatím umí pouze bgp dampening <penalty>.

Další možností pro řízení příchozího trafficu je atribut MED (Multi-Exit Discriminator). MED je jeden z mála parametrů přenášejících se mezi ebgp peery a umožňujících řídit routovací politiku mezi sousedními AS (kromě "oblíbeného" prodlužování as-path; sousedních proto, že jde o netranzitivní atribut). Nastavuje se v route-map pomocí set metric. Menší vítězí; v případě, že není nastaveno, bere se metric = 0 (a je konfigurovatelné, zda je to v takovém případě nejlepší, či nejhorší metrika). Match pravidly v route-map určíte, pro co konkrétně (pokud není match, aplikuje se route-mapa na všechny prefixy; matchovat je možné různé parametry jako as-path, prefix). Route-map se aplikuje na peer, případně na peer-group (pro MED typicky na out).

route-map zzz permit 10
 match as-path neco
 set metric 200

BGP atributy

Využívají se i další atributy, například ve vztahu k 32bitovým číslům AS. Úplný výčet se nachází na iana.org.

Pořadí, váha atributů

Je-li více cest ven z vašeho AS, do routovací tabulky se umístí ta nejvhodnější. O výběru rozhodují následující atributy v uvedeném pořadí (rozhoduje se podle prvního atributu, podle kterého se dá jednoznačně rozhodnout, jinak se zkouší následující):

  1. vyšší hodnota atributu WEIGHT - parametr lokální pro router, kde je nakonfigurováno
  2. vyšší hodnota atributu LOCAL_PREFERENCE - parametr přenášený mezi peery v rámci téhož AS
  3. preference cesty generovaná routerem samotným (a pocházející z jeho AS) - získaná např. redistribucí z IGP nebo z network/aggregate deklarací
  4. menší délka AS_PATH (menší počet čísel AS v hodnotě AS_PATH)
  5. preferovanější hodnota atributu ORIGIN (nejpreferovanější IGP, následuje EGP a INCOMPLETE)
  6. nižší hodnota atributu MED
  7. cesty získané z EBGP preferovány před cestami z IBGP
  8. next_hop dostupný přes kratší cestu vnitřkem AS (např. nižší metrika v OSPF)
  9. preferována cesta, která se naučila dříve (starší)
  10. preferována cesta z routeru s nižším ROUTER_ID
  11. preferována cesta přijatá z peeru s nejnižší IP

Regulární výrazy pro as-path filtry

Občas potřebujeme vědět, kudy se můžeme dostat do určitého AS, nebo které routy jsou z daného AS. Abyste nemuseli procházet celý výpis show ip bgp, je vhodné použít regulární výrazy. Tyto regulární výrazy se navíc hodí při vytváření filtrů. Můžete použít všechny regulární výrazy dle POSIX, napíši zde alespoň základní:

Chcete-li tedy zobrazit např. routy pocházející z AS 7520, použijte:

show ip bgp regexp _7520$

Filtry

Při EBGP peeru je dobré mít u sousedů zakázanou propagaci privátních AS (64512-65535). Toho dosáhnete pomocí řádku:

neighbor POSKYTOVATEL remove-private-AS

Dalším dobrým nápadem je zákaz exportu/importu privátních prefixů, default routy a multicastů. Toho dosáhnete např. pomocí následující sady filtrů:

 ip prefix-list transit-in seq 5 deny 0.0.0.0/0
 ip prefix-list transit-in seq 10 deny 10.0.0.0/8 le 32
 ip prefix-list transit-in seq 15 deny 127.0.0.0/8 le 32
 ip prefix-list transit-in seq 20 deny 169.254.0.0/16 le 32
 ip prefix-list transit-in seq 25 deny 172.16.0.0/12 le 32
 ip prefix-list transit-in seq 30 deny 192.168.0.0/16 le 32
 ip prefix-list transit-in seq 35 deny 224.0.0.0/3 le 32
 ip prefix-list transit-in seq 99 permit 0.0.0.0/0 le 24

a nezapomeňte aplikovat na neighbora (případně na peer-group).

Nedávné problémy s příliš dlouhým as-path

Omezení délky AS path na 30 ASNs:

 ip as-path access-list maxas-path deny ( [0-9]+){30}$
 ip as-path access-list maxas-path permit .*

Aplikujeme na příchozí prefixy:

 neighbor POSKYTOVATEL filter-list maxas-path in

Příště

Komunity, IBGP, NIX a IPv6.

Seriál BGP - dynamické routování (dílů: 4)

První díl: BGP - dynamické routování - 1 (úvod, administrativa), poslední díl: BGP – dynamické routování – 4 (komunity, IBGP, NIX, IPv6).
Předchozí díl: BGP - dynamické routování - 2 (konfigurace BGP routeru)
Následující díl: BGP – dynamické routování – 4 (komunity, IBGP, NIX, IPv6)

Související články

Seriál: OSPF - dynamické routování
Seriál: Nagios + Centreon + MySQL
Traffic shaping (patchování a instalace)
Traffic shaping - 2 (IMQ a úvod do shapingu)
Jemný úvod do adresace v protokolu IP verze 4
Směrování v sítích IP
Seriál: Domácí síť
Seriál: Soukromá síť
Seriál: Stavíme bezdrátovou síť
Seriál: Linuxové DMZ
Distribuce OpenWrt prakticky

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

Diskuse k tomuto článku

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.