de Tore Anderson

Atunci când un ISP sau un sistem autonom (AS), cum ar fi Redpill Linpro, dobândește un bloc de adrese IP unice la nivel global (numit prefix), trebuie să îl facă publicitate către tabelul global de rutare a internetului. Această reclamă face ca toate celelalte AS-uri din lume să afle că noul prefix este în viață și, de asemenea, cum și unde să trimită orice pachete IP destinate acestuia. Conectivitatea este stabilită și toată lumea este fericită. Dreapta?

Doar că există o problemă. Numărul prefixelor din tabelul global de rutare a Internetului crește într-un ritm alarmant. În momentul scrierii, tabelul global de rutare a Internetului este format din aprox. 635.000 de prefixe IPv4 și 33.000 de prefixe IPv6. Acestea sunt promovate de cca. 55.000 de AS-uri diferite din întreaga lume.

reducerea
Dimensiunile globale ale tabelelor de rutare IPv4 și IPv6 în timp (sursă: Raport CIDR)

Desigur, creșterea poate fi explicată prin faptul că internetul crește, dar aceasta este doar jumătate din poveste. Este, de asemenea, o problemă economică; costă un AS aproape nimic pentru a face publicitate unui nou prefix (sau subset mai mic al unui prefix deja existent). Acest cost este suportat în schimb de toate celelalte AS-uri, care trebuie să poarte acest prefix în tabelele de rutare din routerele lor. Simplu spus: pe Internet, poluatorul o face nu a plati.

Majoritatea organizațiilor, inclusiv Redpill Linpro, s-au ocupat de această problemă aruncând bani asupra ei. Se duc la furnizori precum Cisco Systems sau Juniper Networks și își cumpără routerele. Acestea sunt concepute special pentru a putea realiza redirecționarea rutării de mare viteză a traficului de rețea, chiar dacă masa de rutare ar trebui să crească după un milion de rute. Fac niște cutii cu adevărat grozave, dar cu siguranță nu greșesc nu vino ieftin. Prin urmare, am dori să vedem dacă va exista o modalitate mai inteligentă și mai rentabilă de a face față acestei probleme în viitor.

Utilizarea unui comutator ca router

În anii de când am achiziționat actualele noastre router-uri Juniper MX, capacitățile de rutare IP ale comutatoarelor de centre de date pentru mărfuri s-au îmbunătățit mult, până la punctul în care pot fi utilizate pentru sarcini serioase de rutare IP. Majoritatea rulează un sistem avansat de operare în rețea (NOS), care acceptă toate protocoalele necesare, în special Protocolul Border Gateway (BGP) utilizat pentru schimbul de informații de rutare pe internet.

După cum este descris într-o postare anterioară, testăm un HPE Altoline 6920 în laboratorul nostru. Altoline 6920 este, la fel ca alte comutatoare bazate pe chipset-ul Broadcom Trident II, capabil să gestioneze până la 720 Gbps de transfer, împachetând porturi 48x10GbE + 6x40GbE într-un șasiu compact 1RU. Prețul său este, probabil, un procent dintr-o singură cifră din prețul unui router de internet tradițional, cu un randament comparabil.

Pentru a atinge aceste proprietăți impresionante de performanță și densitate, menținând în același timp un preț atractiv, trebuie să se facă anumite compromisuri. Una dintre ele este scalabilitatea tabelului de rutare; chipsetul Trident II pur și simplu nu poate fi programat cu mai mult de 131.072 rute. Acest lucru nu este suficient pentru a gestiona tabelul complet de rutare a Internetului de astăzi. Acest lucru este valabil și pentru majoritatea celorlalte chipset-uri de comutare a centrelor de date.

Prin urmare, am fi putut concluziona în acest moment că limitarea tabelului de rutare face imposibilă utilizarea unui comutator ieftin ca ruter de internet. Dar, în loc să renunțăm atât de ușor și să continuăm să aruncăm bani la problemă, am decis să petrecem ceva timp gândindu-ne puțin „în afara cutiei”.

Chiar avem nevoie de o masă completă de rutare a Internetului?

Primul lucru pe care l-am realizat a fost că, din punctul nostru de vedere, marea majoritate a rutelor de internet sunt redundante. De exemplu: chiar dacă rutele promovate de un ISP italian sunt distincte de rutele promovate de un ISP spaniol, este foarte probabil că am direcționa pachetele destinate amândurora exact în același mod. Căile către aceste destinații s-ar putea să nu devieze decât după ce pachetele au ajuns în Europa continentală, mult după ce au părăsit rețeaua noastră.

A doua realizare este că, chiar dacă rutele în cauză nu ar fi redundante, adică am folosi în mod normal diferiți furnizori de tranzit IP pentru a ajunge la ei, diferențierea dintre aceștia nu aduce cu adevărat niciun beneficiu real. Redpill Linpro are doi furnizori principali de tranzit IP. În majoritatea cazurilor, nu face nicio diferență care să se distingă care dintre ele este utilizat pentru a livra trafic destinat rețelelor din afara Scandinaviei.

A treia realizare este că majoritatea rutelor din tabelul global de rutare Internet vor rămâne complet neutilizate. Marea majoritate a traficului nostru nu părăsește niciodată Scandinavia. Cu toate acestea, o rută promovată de, să spunem, un ISP nord-coreean va ocupa la fel de mult spațiu în routerele noastre ca o rută promovată de unul dintre cei mai mari ISP din Scandinavia. Acesta este cazul dacă nu am trimis niciodată un singur pachet către acel ISP nord-coreean.

Concluzia este că nu avem nevoie de o masă completă de internet. În schimb, putem face o distincție între traseele „importante” și „neimportante”. O rută ar putea fi clasificată ca „importantă” pe baza unor criterii precum cantitatea de trafic pe care i-o trimitem, dacă aparține unei rețele din vecinătatea noastră geografică, dacă este promovată de un partener direct sau dacă găzduiește servicii care sunt de o importanță deosebită pentru clienții noștri.

Setul de rute „importante” se va încadra confortabil în chipset-ul unui comutator modern de centru de date, chiar dacă stabilim bara pentru clasificarea „importantă” foarte scăzută.

RIB și FIB

Pentru a clasifica efectiv un traseu ca „important” sau nu, trebuie mai întâi să aflăm existența acestuia. Asta înseamnă că va trebui în continuare să primim un tabel complet de rutare a Internetului de la furnizorii noștri de tranzit IP. Deci, asta înseamnă că proiectul nostru de switch-as-a-router este sortit eșecului? Nu, nu neapărat!

După cum se întâmplă, orice dispozitiv de rețea modern (atât routerele, cât și comutatoarele) conține de fapt (cel puțin) două tabele de rutare distincte.

Primul tabel se numește Forwarding Information Base sau FIB pe scurt. FIB este situat în interiorul chipset-ului de redirecționare a pachetelor în sine și este ceea ce este utilizat pentru a efectua rutare a fiecărui pachet individual care traversează comutatorul. FIB este tabelul de rutare despre care am vorbit până acum în această postare, deoarece aici se găsesc limitările de dimensiune.

Al doilea tabel se numește Baza de informații de rutare (RIB). Viețile RIB se află în interiorul NOS. Dimensiunea sa este într-adevăr limitată doar de cantitatea de memorie disponibilă pentru NOS. Altoline 6920 are 8 GiB de memorie, care este suficient pentru a conține zeci de milioane de rute - suficient de ușor pentru a păstra mai multe copii ale tabelului de rutare a internetului.

Relația dintre RIB și FIB este că informațiile primului sunt folosite pentru a programa cele din urmă. De exemplu, un router de internet conectat la doi furnizori de tranzit IP diferiți va primi două copii ale tabelului de rutare a Internetului (unul de la fiecare furnizor). Ambele copii sunt stocate în RIB (care în acel moment va conține peste 1,2 milioane de rute).

Pentru fiecare prefix unic găsit în RIB, NOS va decide care dintre cele două rute alternative este cea mai bună. Apoi se continuă programarea celui mai bun traseu în FIB. Cea mai bună rută va rămâne totuși în RIB, astfel încât dacă în prezent cea mai bună rută este schimbată sau retrasă de către furnizorul de tranzit IP care o face publicitate, NOS este în măsură să reprogrameze imediat FIB în consecință.

Planul final: rezervați FIB numai pentru rute importante

Ne propunem să inserăm un alt criteriu în fluxul de informații de la RIB la FIB. Pentru ca o rută RIB să se propage către FIB, aceasta trebuie să fie nu numai „cea mai bună”, ci trebuie să fie și pe o listă de rute „importante”. Dacă nu este, nu este programat în FIB. Cu toate acestea, RIB va conține în continuare fiecare traseu, deoarece setul exact de rute „importante” este dinamic și poate fi modificat.

Desigur, chiar dacă păstrăm rutele „neimportante” departe de FIB, acest lucru nu înseamnă că nu vom avea conectivitate la acele rețele. Pentru a ne asigura că avem conectivitate la întregul Internet, nu doar la părțile „importante”, intenționăm să instalăm o „rută de ultimă instanță” (cunoscută și sub numele de „rută implicită”) în FIB, care este direcționată către tranzitul nostru IP principal. furnizor.

Traseul de ultimă instanță nu este cu adevărat diferit de orice alt traseu „important”, cu excepția faptului că acoperă întregul spațiu de adrese IP. RIB va conține, de asemenea, o rută separată de ultimă instanță care indică furnizorul nostru secundar de tranzit IP, gata să fie promovat automat la FIB în cazul în care o defecțiune va reduce conexiunea de tranzit IP principală.

Obținerea unui pachet către o destinație „neimportantă” devine apoi treaba furnizorului de tranzit IP, indiferent unde se află în lume. În esență, acest lucru nu diferă de situația de astăzi - cu excepția faptului că realizăm acest lucru utilizând o singură intrare de rută în FIB în loc de sute de mii.

Dovada implementării conceptului cu Cumulus Linux NOS

Desigur, este necesar să ne asigurăm că planul va funcționa efectiv în practică, așa că am construit o dovadă a conceptului în laboratorul nostru. Am instalat Cumulus Linux pe comutatorul Altoline 6920 și l-am configurat pentru a stabili sesiuni IPv4 și IPv6 BGP pe două dintre routerele noastre de frontieră actuale.

Cele două routere de frontieră vor face publicitate întregului tabel de rutare Internet IPv4 și IPv6 către comutator. După cum ne așteptam, acest lucru nu a funcționat. ASIC pur și simplu nu poate face față cu atâtea rute, iar FIB se umple complet:

Următorul pas este de a determina care rute sunt „importante”. Deși numai imaginația limitează modul în care s-ar putea face această clasificare, pentru dovada conceptului am decis următoarea listă statică:

  • Traseul de ultimă instanță (traseul implicit)
  • Toate rutele care nu au fost primite de la un furnizor de tranzit IP (de exemplu, rutele primite de la colegi)
  • Toate rutele către clienții scandinavi ai furnizorului nostru principal de tranzit IP

Toate celelalte rute sunt clasificate ca „neimportante” și le vom ține departe de FIB. Acum putem continua să construim o hartă a rutei care să se potrivească cu aceste rute:

Ultima piesă a puzzle-ului este de a face ca demonul BGP să filtreze toate rutele BGP primite prin harta rutelor importante doar pentru rute înainte de a le instala pe FIB. Acest lucru se face folosind parametrul tabel-hartă, făcând ca configurația finală BGP să arate astfel:

Așa cum era de așteptat, acest lucru face ca consumul FIB să devină mult mai rezonabil și să se încadreze în capacitățile comutatorului Altoline 6920:

Succes! Am redus tabelul de rutare a Internetului la o dimensiune care să se potrivească confortabil în comutatorul FIB al unui centru de date pentru mărfuri, menținând în același timp conectivitate completă la întregul Internet global.

rezumat

Reducerea FIB ne va permite să ne construim rețeaua folosind comutatoare pentru centrele de date de marfă, mai degrabă decât routerele tradiționale de internet. Noua rețea va putea gestiona volume de trafic semnificativ mai mari la o fracțiune din cost, ceea ce ne face capabili să oferim lățime de bandă la prețuri competitive ca parte a ofertei noastre de servicii Managed Services.

Postări din această serie

Vrei să lucrezi cu Tore Anderson? Suntem mereu în căutarea persoanelor cu experiență în Linux și software open source. Spuneți-ne dacă sunteți interesat să vă alăturați echipei noastre!

Căutați mai mult conținut? Consultați blogul nostru tehnic sau citiți hârtia albă și ghidurile de utilizare.

Abonați-vă prin RSS

Link-uri

a lua legatura

  • [email protected]
  • redpilllinpro
  • redpilllinpro
  • Redpill-Linpro
  • redpill-linpro
  • RedpillLinproIT

"Sfaturi, trucuri și articole pentru pregătirea Crăciunului pentru administratori și alte persoane cu spirit tehnic. Cu dorințe de sărbători fericite!"