This is an old revision of the document!
De citit înainte de laborator:
Lectura video
Lectura optionala
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.
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
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:
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.
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.
Gasiti un exemplu de captura de mesaje bgp in urmatoarea captura de pe Cloudshark. Studiati cu atentie aceste mesaje.
In implementarea protocolului, pentur a fi mai usor de configurat avem doua mari extensii:
Î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
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.
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.
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
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
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
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:
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.
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.
! 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.