This shows you the differences between two versions of the page.
pc:laboratoare:09_bgp [2022/05/04 15:27] vlad_andrei.badoiu [Exerciții] |
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 77: | Line 77: | ||
=== Internet eXchange Points (IXP) === | === Internet eXchange Points (IXP) === | ||
- | 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 există 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. | + | 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|}} | ||
Line 90: | Line 90: | ||
{{:pc:laboratoare:network-fig-106-c.png?300|}} | {{:pc:laboratoare:network-fig-106-c.png?300|}} | ||
- | În imaginea de mai sus, AS7 plătește AS4 pentru a îl folosi că 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 că AȘ de tranzit. Astfel, entitățile care dețin AS3 și AS4 pot alege să facă peering între ei și să plătească 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 262: | Line 262: | ||
<note> | <note> | ||
- | Routerele rulează deja OSPF și 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 interfață. IP-urile de pe interfețe sunt următoarele: | + | 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 275: | Line 275: | ||
**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.** 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** Configurați regulile de import pentru IXP | **1.1** Configurați regulile de import pentru IXP | ||
+ | |||
**1.2** Configurați regulile de export pentru IXP. | **1.2** Configurați regulile de export pentru IXP. | ||
<note> | <note> | ||
Puteti verifica ca totul merge bine folosind comanda `show ip bgp` si `show ip route`. Comenzile vor afisa rutele invatate prin BGP. | Puteti verifica ca totul merge bine folosind comanda `show ip bgp` si `show ip route`. Comenzile vor afisa rutele invatate prin BGP. | ||
- | <note> | + | </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. | 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. | ||
Line 287: | Line 289: | ||
ip address 180.21.0.2/24 | ip address 180.21.0.2/24 | ||
</code> | </code> | ||
- | </note> | ||
**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. | **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. | ||
Line 301: | Line 302: | ||
</note> | </note> | ||
- | **3.** Testați dacă aveți conexiune la AS-uriel colegilor folosind ping. Puteți verifică prefixele primite de la IXP folosind comandă `show ip bgp` | + | **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`. |
**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.** 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. | ||
- | **5.** **Bonus**. Filtrați după un prefix dat folosin ACL-uri.- Găsiți [[https://www.youtube.com/watch?v=hirKpSVpcxg|aici]] o prezentare rapdia a funcționalității de filtering. | + | **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. |
+ | |||
+ | |||
+ | <note> | ||
+ | O posibila solutie a laboratorului o gasiti [[https://ocw.cs.pub.ro/courses/_media/pc/laboratoare/solution.txt|aici]] | ||
+ | </note> | ||