This shows you the differences between two versions of the page.
pc:laboratoare:09_bgp [2022/05/02 12:12] vlad_andrei.badoiu [Rutare interdomain] |
pc:laboratoare:09_bgp [2022/05/23 01:12] (current) vlad_andrei.badoiu [Exerciții] |
||
---|---|---|---|
Line 3: | Line 3: | ||
====Lectură laborator ==== | ====Lectură laborator ==== | ||
De citit înainte de laborator: | De citit înainte de laborator: | ||
- | * [[https://www.computer-networking.info/2nd/html/protocols/bgp.html#interdomain-routing|Interdomain routing]] | + | * [[https://www.computer-networking.info/2nd/html/protocols/bgp.html#Interdomain routing|Interdomain routing]] |
* [[https://www.computer-networking.info/2nd/html/protocols/bgp.html#the-border-gateway-protocol|BGP]] | * [[https://www.computer-networking.info/2nd/html/protocols/bgp.html#the-border-gateway-protocol|BGP]] | ||
Line 66: | Line 66: | ||
</hidden> | </hidden> | ||
==== Rutare interdomain ==== | ==== 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 [[https://www.roedu.net/|RoEduNet]] este un domeniu. [[https://bgpview.io/reports/countries#countries-heatmap|Aici]] găsiți o harta interactivă cu domeniile prezente în momentul de față in internet. | + | 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țin aceleași organizații (e.g. RDS, sau chiar al unei țări). Exemple mari de domenii sunt google, facebook, sprint. Chiar și [[https://www.roedu.net/|RoEduNet]] este un domeniu. [[https://bgpview.io/reports/countries#countries-heatmap|Aici]] găsiți o hartă 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. | + | Domenile pot fi împărțite în două clase, domenii de **tranzit** și **stub**. Un domeniu stub primește/trimite pachete în care sursa sau destinația sunt hosts din acest domeniu (e.g. RDS va primi/trimite pachete în care sursa sau destinația î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 altor 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. |
{{:pc:laboratoare:network-fig-089-c.png?300|}} | {{:pc:laboratoare:network-fig-089-c.png?300|}} | ||
Line 76: | Line 76: | ||
=== Internet eXchange Points (IXP) === | === 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 | + | |
+ | O soluție folosită astăzi pentru a permite unui număr mare de domenii să se interconecteze este Internet eXchange Points (IXP). În general, un IXP reprezintă mai multe routere dintr-un datacenter care fac parte din domenii diferite. Practic, pentru fiecare domeniu care vrea să participe la interconectare, va exista un router în acest datacenter care e legat la domeniul din care acesta face parte și la un switch din datacenter (vor fi în același LAN și vor putea trimite informații între ele) la care sunt legate și alte routere din domenii care vor să se interconecteze. Vedem în imaginea de mai jos un astfel de exemplu. IXP este popular în Europa. | ||
{{:pc:laboratoare:network-fig-103-c.png?400|}} | {{:pc:laboratoare:network-fig-103-c.png?400|}} | ||
=== Factorul economic === | === 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: | + | |
+ | În primele zile ale internetului, domenilor schimbau între ele toate rutele știute. Totuși, internetul din ziua de azi are la baza factorul economic. Între domenii există mai multe tipuri de relații economice: | ||
* customer->provider | * customer->provider | ||
Line 88: | Line 90: | ||
{{:pc:laboratoare:network-fig-106-c.png?300|}} | {{:pc:laboratoare:network-fig-106-c.png?300|}} | ||
- | 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. | + | În imaginea de mai sus, AS7 plătește AS4 pentru a îl folosi ca un AȘ de tranzit. Legăturile cu $ sunt de tip customer -> provider. În schimb legăturile mov sunt de tip shared-cost peering. De exemplu, AS3 și AS4 ambele plătesc AS1 pentru a îl folosi ca AS de tranzit. Astfel, entitățile care dețin AS3 și AS4 pot alege să facă peering între ele și să plătească doar un link cu AS1. |
- | ==== BGP protocol: ==== | + | ==== 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. | + | În ziua de astăzi este folosit un singur protocol pentru rutare interdomain, Border Gateway Protocol (BGP). BGP rulează peste TCP și este un protocol de tip path vector (vectorul distanțelor, similar cu RIP). Vom folosi termenul de Autonomous System (AS) pentru a ne referi la domeniile din internet. Fiecare AS este reprezentat de un ID (integer) unic. În cazul anunțurilor de rute, BGP anunță un prefix, cât și drumul până la acesta. Acest drum reprezintă o listă de AS-uri, astfel este evitată problema numărării 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. | + | BGP este un protocol care se bazează pe încredere. De exemplu, în 2004, tot traficul din lume a fost redirectat prin Turcia, deoarece aceștia au anunțat un prefix greșit. |
== Tipuri de mesaje == | == 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 | + | * OPEN: mesajul de OPEN este trimis imediat ce conexiunea TCP dintre două routere este realizată. Acest mesaj inițializează sesiunea BGP și facilitează negocierea mai multor opțiuni pentru protocol. |
- | * NOTIFICATION: Mesajul NOTIFICATION este folosit pentru a inchide sesiuni BGP. In general, acest mesaj este trimis atunci cand apar erori. | + | * NOTIFICATION: mesajul NOTIFICATION este folosit pentru a închide sesiuni BGP. În general, acest mesaj este trimis atunci când 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. | + | * UPDATE: mesajul este folosit pentru a anunța noi rute sau modificări la rutele existente. Spre deosebire de alți algoritmi de tip vector distance, BGP trimite doar update-uri cu schimbări, nu întreaga tabelă 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. | + | * KEEPALIVE: mesajul este trimis regulat și este folosit pentru a confirma că routerul peer este conectat. În cazul în care pentru o perioadă de 90 de secunde nu primim un mesaj de tip KEEPALIVE de la un peer, înseamnă că sesiunea este down și trebuie să anunțăm retragerea tuturor rutelor prin acest peer. |
- | Gasiti un exemplu de captura de mesaje bgp in urmatoarea [[https://www.cloudshark.org/captures/89f1795591f6|captura de pe Cloudshark]]. Studiati cu atentie aceste mesaje. | + | Găsiți un exemplu de captură de mesaje BGP în urmatoarea [[https://www.cloudshark.org/captures/89f1795591f6|captură de pe Cloudshark]]. Studiați cu atenție aceste mesaje. |
- | == Extensii BGB == | + | == Extensii BGP == |
- | In implementarea protocolului, pentur a fi mai usor de configurat avem doua mari extensii: | + | În implementarea protocolului, pentru a fi mai ușor de configurat, avem două mari extensii: |
- | * External Border Gateway Protocol (EBGP) - Extensie a protocolului BGP folosit pentru comunicarea in exteriorul unui AS. | + | * External Border Gateway Protocol (EBGP) - Extensie a protocolului BGP folosit pentru comunicarea în 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. | + | * Interior Border Gateway Protocol (IBGP) - Extensie a protocolului BGP folosit pentru comunicarea în interiorul unui AS. Practic, rutele care sunt aflate folosind EBGP vor fi sumarizate în AS folosind IBGP. |
==== Informatii utilizare infrastructura laborator - FFRouting ==== | ==== 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). [[https://frrouting.org/|FRRouting]] | Î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). [[https://frrouting.org/|FRRouting]] | ||
Line 247: | Line 249: | ||
- | ==== Exercitii ==== | + | ==== Exerciții ==== |
- | + | ||
- | 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: | + | |
<note> | <note> | ||
- | In cadrul laboratorului veti lucra la un mic internet. Celelalte grupe vor fi si ei participanti in acest internet cu propriul lor AS. | + | În cadrul laboratorului veți lucra la un mic internet. Celelalte grupe vor fi și ei participanți în acest internet cu propriul lor AS. |
</note> | </note> | ||
+ | |||
+ | 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: | ||
{{:pc:laboratoare:worldmap_topology_lab5.png?400|}} {{:pc:laboratoare:topology_lab9.png?300|}} | {{:pc:laboratoare:worldmap_topology_lab5.png?400|}} {{:pc:laboratoare:topology_lab9.png?300|}} | ||
- | 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. | + | Vom configura iBGP pe routerele BERL, PARI si BUCH, pe când pe LOND vom configura eBGP. IXP este **AS 21**. OSPF rulează deja pe toate ruterele. |
<note> | <note> | ||
- | 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: | + | Routerele rulează deja OSPF și sunt configurate cu IP-uri din blocul <group number>.0.0.0/8. Putem folosi `show interface brief` pentru a vedea IP-urile asignate pe o interfață. IP-urile de pe interfețe sunt următoarele: |
LOND: <group number>.0.1.1 si <group number>.0.2.2 | LOND: <group number>.0.1.1 si <group number>.0.2.2 | ||
Line 272: | Line 274: | ||
- | **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.** Configurați BGP peering cu IXP. În acest exercițiu vom configura eBGP pentru a participa la internet, practic vom face cunoscut IXP-ului rutele noastre. Această operație va fi realizată 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. | + | **1.1** Configurați regulile de import pentru IXP |
+ | |||
+ | **1.2** Configurați regulile de export pentru IXP. | ||
<note> | <note> | ||
- | 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. | + | Puteti verifica ca totul merge bine folosind comanda `show ip bgp` si `show ip route`. Comenzile vor afisa rutele invatate prin BGP. |
+ | </note> | ||
+ | |||
+ | Pentru peering la IXP vom folosi 180.21.0.<numar_as>/24. Mai jos aveți un exemplu de cum este configurat IP-ul pe interfață legată la IXP din LOND. | ||
<code> | <code> | ||
! For AS 2, we set the following IP on the link to the IXP. | ! For AS 2, we set the following IP on the link to the IXP. | ||
interface ixp_21 | interface ixp_21 | ||
ip address 180.21.0.2/24 | ip address 180.21.0.2/24 | ||
+ | </code> | ||
+ | |||
+ | **2.** Configurați iBGP în full mesh pentru a redistribui intern rutele aflate folosind BGP. Găsiți [[https://www.drumato.com/posts/simple-ibgp-rr-with-frr/|aici]] un mic exemplu. | ||
+ | |||
+ | <note> | ||
+ | Veți ajunge în situația în care puteți de pe routerul LOND să dați ping routerelor LOND din AS-urile colegilor; ping către alte routere din AS-uri străine, sau ping de pe un alt router din AS-ul vostru către un AS străin nu va merge. | ||
+ | Motivul este pentru că, deși routerele învață prin BGP cum să ajungă în alte AS-uri, nu știu cum să ajungă la următorul hop (interfața către IXP a routerului de la granița AS-ului respectiv). | ||
+ | Corectați configurația OSPF astfel încât routerul LOND să propage informații despre această rețea: | ||
+ | <code> | ||
+ | router ospf | ||
+ | redistribute connected | ||
</code> | </code> | ||
</note> | </note> | ||
- | **2.** Configurati iBGP in full mesh pentru a redistribui intern rutele aflate folosind BGP. Gasiti [[https://www.drumato.com/posts/simple-ibgp-rr-with-frr/|aici]] un mic exemplu. | + | **3.** Testați dacă aveți conexiune la AS-urile colegilor folosind ping. Puteți verifică prefixele primite de la IXP folosind comandă `show ip bgp`. |
- | **3.** Testati daca aveti conexiune la AS-uriel colegilor folosind ping. Puteti verifica prefixele primite de la IXP folosind comanda `show ip bgp` | + | **4.** Citiți articolul [[https://www.theverge.com/2021/10/4/22709260/what-is-bgp-border-gateway-protocol-explainer-internet-facebook-outage|What is BGP, and what role did it play in Facebook’s massive outage]] și explicația ce a cauzat întreruperea serviciilor Facebook pentru aproape o zi de acum 6 luni. |
- | **4.** Cititi articolul [[https://www.theverge.com/2021/10/4/22709260/what-is-bgp-border-gateway-protocol-explainer-internet-facebook-outage|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**. Filtrați după un prefix dat folosind ACL-uri. Găsiți [[https://www.youtube.com/watch?v=hirKpSVpcxg|aici]] o prezentare rapidă a funcționalității de filtering. |
- | **5.** **Bonus**. Filtrati dupa un prefix dat folosin ACL-uri.- Gasiti [[https://www.youtube.com/watch?v=hirKpSVpcxg|aici]] o prezentare rapdia a functionalitatii de filtering. | + | |
+ | <note> | ||
+ | O posibila solutie a laboratorului o gasiti [[https://ocw.cs.pub.ro/courses/_media/pc/laboratoare/solution.txt|aici]] | ||
+ | </note> | ||