Redundància BGP-OSPF-BGP
De Guifi.net - Wiki Català
Arrel d'uns missatges a la llista de RDES i unes proves que va fer el Miquel adjunto el text d'explicació de com combinar BGP amb OSPF. El missatge original ve d'un problema de redundància de rutes a la xarxa guifi.net de Matarò i Llavaneres que el Miquel va estar testejant en local per explicar com fer aquestes configuracions i que no generessin pollastres de rutes a guifi.net cada cop que s'afegeix algun tram de xarxa amb redundàncies o es crea un.
Primer de tot dir que tot lo que comentare esta basat en aquest esquema de proves: Fitxer:IBGP_confederat_v3.png
Segons el testos, només els trastos que han de fer frontera iBGP necessiten una configuració especial, la resta tal com ho treu l'unsolclic és suficient. Per tant em centraré en els trastos R2, R4 i R6 que son els fronteres.
Primer de tot cal tenir en compte què necessitem que faci aquest iBGP sobre OSPF per tenir clar com l'hem de configurar. Dins la nostra àrea OSPF necessitem rebre les rutes externes del nostre AS, si no, no podríem accedir-hi i per altre banda, necessitem exportar les adreces del nostre AS per a que la resta pugui arribar a nosaltres ( això era de calaix ja ho se xD però ho explico amb la intenció de que al final s'entengui el procés), per tant, tots els trastos han d'acabar tenint totes les rutes existents dinàmicament sigui quin sigui el protocol. Tenint en compte que els Sistemes Autonoms ( AS ) es comuniquen amb BGP, si tenim diversos punts de connexió amb altres AS dins el nostre AS gestionat amb OSPF necessitem comunicar els extrems fent un BGP interior ( iBGP ) per a que la troncal d'AS BGP no perdi els atributs que necessita (AS_PATH entre d'altres). iBGP te la particularitat de que esta pensat bàsicament per a treballar en una xarxa totalment mallada i això en entorns de la xarxa guifi.net es pràcticament impossible, es inviable que tot estigui connectat amb tots dins el nostre AS. Per tant, haurem de preparar la nostra xarxa OSPF per a "simular" un entorn mallat que el bgp entengui. Hi ha dues ( o tres) maneres de fer iBGP, una es fent servir el mateix AS a la instància BGP de cada router frontera i l'altre és confederant l'AS principal en altres interns i privats. Per a les proves he fet servir el segon mètode, diria que amb el primer, també funcionaria pero hauria de fer altres proves. Quan un trasto frontera està a mes de un salt de l'altre, aleshores cal utilitzar l'atribut "multihop" a la configuració del peer BGP fent servir l'adreçament public (10.x ) del trasto publicat dins la taula OSPF. Quan els frontera es connecten punt a punt, aleshores no cal el "multihop" i es fa servir l'adreçament d'enllaç (172.x) per el peering. La complexitat de fer iBGP sobre OSPF, es que quan hi ha mes de un salt a la xarxa OSPF, si no es filtren les rutes, es pot donar la circumstància que quedi activa una ruta amb distancia BGP ( 20 ) enlloc d'una OSPF ( 110) o a la inversa. Això pot provocar bucle en els camins, o simplement que si la ruta predominant entre els trastos frontera és la OSPF, aleshores es perdi l'atribut BGP AS_PATH. Per tant, el que es necessita bàsicament és que TOTS els trastos (inclòs els frontera) de l'àrea OSPF es comuniquin entre ells amb rutes provinents del OSPF i els fronteres es comuniquin per iBGP i no es facin nosa els uns als altres. Aqui és on entren a jugar els dos filtres que he fet i que afecten al OSPF. El primer el que fa és no acceptar d'altres trastos dins el OSPF rutes provinents d'altres AS, doncs s'espera que aquestes rutes arribin per iBGP. El segon el que fa és canviar les distàncies de les rutes pròpies del nostre AS a "19", d'aquesta manera s'aconsegueix una taula de rutes neta, on des dels fronteres arribarem a la resta de la xarxa OSPF per OSPF i a les rutes externes per BGP a tarvés dels fronteres. No se si ho he explicat gaire be, però funciona:
Exemple de la configuració del router frontera "R2" [1]
/system identity set name=R2 /interface bridge add name=LanLan /routing bgp instance set default as=10 confederation=200 confederation-peers=20,30 out-filter=ebgp-out redistribute-ospf=yes router-id=2.2.2.2 /routing ospf instance set [ find default=yes ] metric-bgp=20 redistribute-bgp=as-type-1 router-id=2.2.2.2 /ip address add address=2.2.2.2/32 interface=LanLan network=2.2.2.2 add address=172.0.0.2/30 interface=ether1 add address=172.1.0.1/30 interface=ether2 add address=172.5.0.2/30 interface=ether4 add address=172.8.0.2/30 interface=ether3 add address=172.12.0.2/30 interface=ether5 /ip firewall nat add action=src-nat chain=srcnat dst-address=!172.0.0.0/8 src-address=172.0.0.0/8 to-addresses=2.2.2.2 /routing bgp network add network=2.2.2.2/32 synchronize=no /routing bgp peer add in-filter=ebgp-in name=R1 out-filter=ebgp-out remote-address=172.0.0.1 remote-as=100 ttl=default update-source=172.0.0.2 add in-filter=ebgp-in multihop=yes name=R4 remote-address=4.4.4.4 remote-as=20 ttl=default update-source=2.2.2.2 add in-filter=ebgp-in name=R6 remote-address=172.5.0.1 remote-as=30 ttl=default update-source=172.5.0.2 add name=R7 remote-address=172.8.0.1 remote-as=500 ttl=default update-source=172.8.0.2 /routing filter add action=reject chain=ospf-in comment="1. megafiltre" ospf-type=external-type-1 prefix=0.0.0.0/0 prefix-length=8-32 add action=accept chain=ospf-in comment="2. megafiltre" ospf-type=intra-area prefix=0.0.0.0/0 prefix-length=8-32 set-distance=19 add action=discard chain=ebgp-in comment="3. Discard insert non 172.x routes" prefix=172.0.0.0/8 prefix-length=8-32 /routing ospf network add area=backbone network=172.1.0.0/30 add area=backbone network=2.2.2.2/32 add area=backbone network=172.0.0.0/30 add area=backbone network=172.5.0.0/30 add area=backbone network=172.8.0.0/30 add area=backbone network=172.12.0.0/30
En aquesta config hi ha com a especial, la instància BGP. Com AS propi no es posa el AS de l'area ospf si no que es posa un AS privat, en aquest cas "10", després a l'apartat de Confederació, és on es posa el nostre AS de debò i just després s'indica la resta dels AS privats que formen part d'aquesta confederació, en aquest cas com que hi ha 3 fronteres i he fet servir 10, 20 i 30 com AS privat en cada trasto i el aquest trasto es el 10, doncs només afegeixo el 20 i el 30. També d'especial hi han als peerings, el fet de que alguns son multihop i altres no, ja he explicat abans el perquè. I per últim i imprescindible, els filtres "megafiltres" :P. En aquest exemple hi ha 3 filtres, el tercer, res, li he posat a les proves per esborrar de la taula de rutes les adreces 172.x en les meves proves. els filtres que genera l'unsolclic son totalment compatibles amb aquests, això si, aquests s'han de colocar per a que siguin executats abans que la resta.
Bueno, a veure si per fi ho hem resolt, sort a les proves!!
resta de fitxers de configuració dels altres routers: [2]
SAX!!
Miquel Martos