This is an old revision of the document!


Laboratorul 09 - BGP

Lectură laborator

Rutare interdomain

Internetul din ziua de azi este compus din peste 45,000 de rețele diferite numite domenii (domains). Un domeniu este reprezentat de un set de rutere ce aparțîn aceleași organizații (e.g. RDS, sau chiar al unei țări). Exemple mari de domenii sunt google, facebook, sprint. Chiar și RoEduNet este un domeniu. Aici găsiți o harta interactivă cu domeniile prezente în momentul de față in internet.

Domenile pot fi împărțite în două clase, domenii de tranzit și stub. Un domeniu stub primește/trimite pachete în care sursă sau destinația sunt hosts din acest domeniu. (e.g. RDS va primit/trimite pachete în care sursă sau destinată în header-ul IP este un IP pe care RDS îl deține). În schimb, un domeniu de tranzit este un domeniu care oferă servicii de rutare alto domenii, mai exact într-un domeniu de tranzit sunt pachete a căror sursă și destinație nu aparțin domeniului. Astăzi, peste 85% dintre domenii sunt de tip stub. În imaginea de mai jos, domenile T1,T2 și T3 sunt de tranzit, iar S1,S2,S3,S4 sunt stub.

De exemplu, un domeniu local precum RoEduNet este un domeniu stub, pe cand un domeniu precum google este de tranzit.

Internet eXchange Points (IXP)

O solutie folosita astazi pentru a permite unui numar mare de domenii sa se interconecteze este Internet eXchange Points (IXP). In general, un IXP reprezinta mai multe routere dintr-un datacenter care fac parte din domenii diferite. Practic, pentru fiecare domeniu care vrea sa participe la interconectare ,va exista un router in acest datacenter care e legat la domeniul din care acesta face parte si la un switch din datacenter (vor fi in acelasi LAN si vor putea trimite informatii intre ele) la care sunt legate si alte routere din domenii care vor sa se interconecteze. Vedem in imaginea de mai jos un astfel de exemplu. IXP este popular in Europa

Factorul economic

In primele zile ale internetului, domenilor schimbau intre ele toate rutele stiute. Totusi, internetul din ziua de azi are la baza factorul economic. Intre domenii exista mai multe tipuri de relatii economice:

  • customer→provider
  • shared-cost peering

In imaginea de mai sus, AS7 plateste AS4 pentru a il folosi ca un AS de tranzit. Legaturile cu $ sunt de tip customer → provider. In schimb legaturile mov sunt de tip shared-cost peering. De exemplu, AS3 si AS4 ambele platesc AS1 pentru a il folosi ca AS de tranzit. Astfel, entitatile care detin AS3 si AS4 pot alege sa faca peering intre ei si sa plateasca doar un link cu AS1.

BGP protocol:

In ziua de astazi este folosit un singur protocol pentru rutare interdomain, Border Gateway Protocol (BGP). BGP ruleaza peste TCP si este un protocol de tip path vector (vectorul distantelor, similar cu RIP). Vom folosi termenul de Autonomous System (AS) pentru a referi la domeniile din internet. Fiecare AS este reprezentat de un ID (integer) unic. In cazul anunturilor de rute, BGP anunta un prefix cat si drumul pana la acesta. Acest drum reprezinta o lista de AS-uri, astfel este evitata problema numararii la infinit.

BGP este un protocol care se bazeaza pe incredere. De exemplu, in 2004 tot traficul din lume a fost redirectat prin Turcia deoarece acestia au anuntat un prefx gresit.

Tipuri de mesaje
  • OPEN: Mesajul de OPEN este trimis imediat ce conexiunea TCP dintr-o doua routere este realizata. Acest mesaj initializeaza sesiunea BGP si faciliteaza negocierea mai multor optiuni pentru protocol
  • NOTIFICATION: Mesajul NOTIFICATION este folosit pentru a inchide sesiuni BGP. In general, acest mesaj este trimis atunci cand apar erori.
  • UPDATE: mesajul este folosit pentru a anunta noi rute sau modificari la rutele existente. Spre deosebire de alti algoritmi de tip vector distance, BGP trimite doar update-uri cu schimbari, nu intreaga tabela de rutare la fiecare update.
  • KEEPALIVE: mesajul este trimis regulat si este folosit pentru a confirma ca routerul peer este conectat. In cazul in care pentru o perioada de 90 de secunde nu primim un mesaj de tip KEEPALIVE de la un peer, inseamna ca sesiunea este down si trebuie sa anuntam retragerea tuturor rutelor prin acest peer.

Gasiti un exemplu de captura de mesaje bgp in urmatoarea captura de pe Cloudshark. Studiati cu atentie aceste mesaje.

Extensii BGB

In implementarea protocolului, pentur a fi mai usor de configurat avem doua mari extensii:

  • External Border Gateway Protocol (EBGP) - Extensie a protocolului BGP folosit pentru comunicarea in exteriorul unui AS.
  • Interior Border Gateway Protocol (IBGP) - Extensie a protocolului BGP folosit pentru comunicarea in interiorul unui AS. Practic rutele care sunt aflate folosind EBGP vor fi sumarizate in AS folosind IBGP.

Informatii utilizare infrastructura laborator - FFRouting

În cadrul acestui laborator veți lucra folosind suita FRRouting. FRRouting combină mai multe daemonuri de rutare într-o interfață similară cu a Cisco iOS (sistem de operare de pe routere CISCO). FRRouting

Fiecare echipa va administra propria rețea virtuală. La începutul laboratorului veți primi un număr de grupa și parolă de ssh pentru acces la rețeaua voastră. Pool-ul de adrese asociat rețelei va fi sub formă <număr grupa>.0.0.0/8

Pentru a va conecta la rețea puteți folosi comanda:

ssh -J <user_moodle>@fep.grid.pub.ro -p 200<numar grupa> root@10.9.4.102

fep.grid.pub.ro este server-ul la care ne putem conecta pentru a accesa infrastructură facultății. (e.g. cluster, conectare la calculatoare din rețeaua facultății, etc.) fep.grid.pub.ro rulează Linux, și fiecare student are un user făcut, cel de pe moodle. Comanda ssh de mai sus, se conecteaza prin SSH la fep.grid.pub.ro, dupa care mai face o conexiune SSH catre server-ul 10.9.4.102 care ruleaza infrastructura laboratorului.

De exemplu, studentul John Smith din grupa 5 se va conecta folosind:

ssh -J john.smith@fep.grid.pub.ro -p2005 root@10.9.4.102

O dată conectați va veți află pe container-ul “ssh”, de aici puteți apela scriptul ./goto.sh pentru a va conecta la routere și hosti De ex pentru a va conecta la routerul LOND veți apela:

./goto.sh LOND container

O dată conectați la unul din routerele rețelei, veți fi prezentați cu un shell bash. Aici puteți rula comenzi standard Linux. Pentru a accesa linia de comanda a routerului intoduceti comanda:

vtysh

pentru a accesa modul principal al vtysh. De aici puteți rula comenzi cum ar fi ping și traceroute. De asemenea puteți vizualiza configurația curentă, precum și varii informații de sistem. Însă din acest mod nu puteți configura routerul.

Pentru a configura routerul din modul principal trebuie introdusă comanda configure terminal. Din acest moment, orice linie de comandă introdusă va fi aplicată în configurația routerului. Pentru a ieși din modul de configurare, puteți inroduce comandă exit sau puteți tasta CTRL-D.

Configurarea BGP

Pentru a configura BGP pe un router, din terminalul de configurare a routerului vom rula urmatoarea comanda:

router bgp <ASN>

ASN reprezinta identificatorul AS-ului nostru. Astazi fiecare grupa va lucra cu un AS.

Avem comenzi precum `show ip bgp` care afiseaza informatii despre procesul de rutare BGP.

EBGP

Vom studia acuma cum putem configura EBGP pe routerele IOS Cisco. De exemplu, daca am vrea sa configuram pe AS1, am rula urmatoarele comenzi.

Din modul configure rulați:

router bgp <AS-number>
 ! in general trebuie sa setam si id-ul ruterului pentru pachetele BGP ce vor fi trimise
 ! putem folosi IP-ul cu care suntem conectat la IXP
 ! aflați adresa ip rulând "do show int br"
 bgp router-id <IP-către-IXP>
 ! nu folosim politici de export, exportam toate rutele
 no bgp ebgp-requires-policy
 ! nu folosim politici de import, importam toate rutele
 no bgp network import-check
 
 ! Specificam vecinul, in cazul de fata vecinul cu id-ul remote_as are IP-ul 180.21.0.21
 ! si face parte din AS-ul 21
 neighbor 180.21.0.21 remote-as 21
 
 ! urmatoarele configuratii vor fi pentru IPV4
 address-family ipv4 unicast
  ! activam BGP cu vecinul
  neighbor 180.21.0.21 activate
  ! Pastreaza log-uri cu mesajele primite. In cazul in care pica router-ul isi da
  ! reboot, pastreaza un log pentru a evita restartarea intregului proces de rutare
  neighbor 180.21.0.21 soft-reconfiguration inbound
 
  ! Redistribuim urmatoarele rute catre vecin
  network <AS-number>.0.1.0/24
  network <AS-number>.0.2.0/24
  network <AS-number>.0.3.0/24
  network <AS-number>.0.4.0/24
 
 exit-address-family
exit
IBGP
router bgp <group number>
 ! nu folosim politici de export, exportam toate rutele
 no bgp ebgp-requires-policy
 ! nu folosim politici de import, importam toate rutele
 no bgp network import-check

 ! avem nevoie de peer groups pentru ca BGP face reject la peers daca folosesc un alt 
 ! IP decat a fost configurat. Cum un router are doua IP-uri (2 link-uri), vrem sa
 ! adaugam ambele IP-uri ca router-ul sa apara ca un singur peer chiar daca are mai
 ! multe IP-uri
 neighbor LOND peer-group
 neighbor <AS-number>.0.1.1 peer-group LOND
 neighbor <AS-number>.0.2.2 peer-group LOND

 neighbor BUCH peer-group
 neighbor <AS-number>.0.3.2 peer-group BUCH
 neighbor <AS-number>.0.4.1 peer-group BUCH

 neighbor BERL peer-group
 neighbor <AS-number>.0.4.2 peer-group BERL
 neighbor <AS-number>.0.2.1 peer-group BERL

 neighbor PARI peer-group
 neighbor <AS-number>.0.3.1 peer-group PARI
 neighbor <AS-number>.0.1.2 peer-group PARI


 ! configuram vecinul cu AS-ul nostru in full mesh (toate routerele)
 neighbor LOND remote-as <AS-number>
 neighbor BUCH remote-as <AS-number>
 neighbor BERL remote-as <AS-number>
 neighbor PARI remote-as <AS-number>

exit
Route-map & ACL
access-list ixp permit any 

route-map IXP_EXPORT permit 10
  set community 21:1
exit

route-map IXP_IMPORT permit 10
  match ip address any
exit

Exercitii

Pentru acest laborator veți lucra în echipe de câte 2-3 persoane. În cadrul laboratorului vom simula că suntem administratorii unui datacenter al firmei Aperture DC cu locații în Paris, Londra, Berlin și București, având următoarea topologie:

In cadrul laboratorului veti lucra la un mic internet. Celelalte grupe vor fi si ei participanti in acest internet cu propriul lor AS.

Vom configura iBGP pe routerele Berlin, Paris is Buch, pe cand pe LOND vom configura eBGP. IXP este AS 21. OSPF ruleaza deja pe toate ruterele.

Routerele ruleaza deja OSPF si sunt configurate cu IP-uri din blocul <group number>.0.0.0/8. Putem folosi `show ip interface brief` pentru a vedea IP-urile asignate pe o interfata. IP-urile de pe interfete sunt urmatoarele:

LOND: <group number>.0.1.1 si <group number>.0.2.2

BUCH: <group number>.0.3.2 si <group number>.0.4.1

BERL: <group number>.0.4.2 si <group number>.0.2.1

PARI: <group number>.0.3.1 si <group number>.0.1.2

1. Configurati BGP peering cu IXP. In acest exercitiu vom configura eBGP pentru a participa la internet, practic vom face cunoscut IXP-ului rutele noastre. Aceasta operatie va fi realizata pe router-ul conectat la IXP, mai exact LOND. 1.1 Configurati regulile de import pentru IXP 1.2 Configurati regulile de export pentru IXP.

Pentru peering la IXP vom folosi 180.21.0.<numar_as>/24. Mai jos aveti un exemplu de cum este configurat IP-ul pe interfata legata la IXP din LOND.

! For AS 2, we set the following IP on the link to the IXP.
interface ixp_21
 ip address 180.21.0.2/24

2. Configurati iBGP in full mesh pentru a redistribui intern rutele aflate folosind BGP. Gasiti aici un mic exemplu.

3. Testati daca aveti conexiune la AS-uriel colegilor folosind ping. Puteti verifica prefixele primite de la IXP folosind comanda `show ip bgp`

4. Cititi articolul What is BGP, and what role did it play in Facebook’s massive outage si explicatia ce a cauzat intreruperea serviciilor Facebook pentru aproape o zi de acum 6 luni.

5. Bonus. Filtrati dupa un prefix dat folosin ACL-uri.- Gasiti aici o prezentare rapdia a functionalitatii de filtering.

pc/laboratoare/09_bgp.1651482745.txt.gz · Last modified: 2022/05/02 12:12 by vlad_andrei.badoiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0