Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

„Am stabilit o conexiune telefonică între noi și băieții de la SRI…”, a spus Kleinrock într-un interviu:
„Am tastat L și am întrebat la telefon, „Vezi L-ul?”
„Da, vedem L-ul”, a venit răspunsul.
„Am tastat O și am întrebat, „Vezi O-ul?”
„Da, vedem O-ul.”
„Apoi am tastat G, iar sistemul s-a blocat”…

Cu toate acestea, o revoluție a început…

Începutul internetului.


Salut tuturor!

Mă numesc Alexander, sunt inginer de rețea la Linxdatacenter. În acest articol, voi vorbi despre punctele de schimb de trafic (Internet Exchange Point, IXP): despre ceea ce a precedat apariția acestora, ce probleme rezolvă și cum sunt construite. De asemenea, în acest articol voi demonstra principiul de funcționare al IXP utilizând platforma EVE-NG și routerul software BIRD, pentru a înțelege cum funcționează „sub capotă”.

Puțin istorie

Dacă privești aici, poți observa că creșterea rapidă a numărului de puncte de schimb de trafic a început în 1993. Acest lucru se datorează faptului că majoritatea traficului operatorilor de telecomunicații existenți la acea vreme trecea prin rețeaua backbone a Statelor Unite. De exemplu, când traficul se îndrepta de la un operator din Franța la un operator din Germania, acesta din Franța ajungea întâi în SUA și doar apoi din SUA în Germania. Rețeaua backbone acționa aici ca un canal de tranzit între Franța și Germania. Chiar și traficul dintr-o singură țară trecea adesea nu direct, ci prin rețelele de bază ale operatorilor americani.

Această situație afecta nu doar costul livrării traficului de tranzit, ci și calitatea canalelor și latența. Numărul utilizatorilor internetului creștea, apăreau noi operatori, volumul de trafic creștea, internetul devenea tot mai matur. Operatorii din întreaga lume au început să realizeze că era nevoie de o abordare mai rațională în organizarea interacțiunii între operatori. „De ce ar trebui eu, operatorul A, să plătesc pentru tranzitul printr-o altă țară, pentru a livra traficul operatorului B, care se află pe strada vecină?”. Cam așa își puneau problema operatorii de telecomunicații la vremea respectivă. Astfel, în diferite colțuri ale lumii, în punctele de concentrare ale operatorilor, au început să apară punctele de schimb de trafic:

  • 1994 – LINX la Londra,
  • 1995 – DE-CIX la Frankfurt,
  • 1995 – MSK-IX, la Moscova etc.

Internetul și zilele noastre

Conceptual, arhitectura internetului modern reprezintă un număr mare de sisteme autonome (autonomous system, AS) și numeroase legături între acestea, atât fizice, cât și logice, care determină drumul de parcurs al traficului de la un AS la altul.

De obicei, AS sunt operatori de telecomunicații, furnizori de internet, CDN, centre de date, companii din segmentul enterprise. AS organizează legături logice (peering) între ele, de regulă, prin intermediul protocolului BGP.

Modul în care sistemele autonome organizează aceste legături este determinat de o serie de factori:

  • geografici,
  • economici,
  • politici,
  • înțelegeri și interese comune între proprietarii AS,
  • etc.

Desigur, în acest schemă există o anumită structură și ierarhie. Astfel, operatorii sunt împărțiți în tier-1, tier-2 și tier-3, și dacă clienții pentru un furnizor de internet local (tier-3) sunt, de regulă, utilizatori obișnuiți, pentru operatorii de nivel tier-1 clienții sunt alți operatori. Operatorii tier-3 agregă traficul abonaților lor, operatorii tier-2, la rândul lor, agregă traficul operatorilor tier-3, iar tier-1 gestionează tot traficul de internet.

Schema poate fi reprezentată astfel:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX
În această imagine se poate observa că traficul este agregat de jos în sus, adică de la utilizatori finali la operatorii tier-1. De asemenea, există un schimb orizontal de trafic între AS-uri de nivel relativ echivalent.

O parte esențială și, totodată, o slăbiciune a acestei scheme este o oarecare dezordine a legăturilor între sistemele autonome, situate mai aproape de utilizatorul final, în cadrul zonei geografice. Să analizăm imaginea de mai jos:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Să presupunem că într-un oraș mare există 5 operatori de telecomunicații, peering-ul între care, din diverse motive, este organizat, așa cum s-a arătat mai sus.

Dacă utilizatorul Petya, conectat la furnizorul de internet Go, va dori să acceseze un server conectat la furnizorul ASM, traficul dintre ei va fi obligat să treacă prin 5 sisteme autonome. Astfel, se crește latența, deoarece numărul dispozitivelor de rețea prin care va trece traficul crește, precum și volumul de trafic de tranzit asupra sistemelor autonome între Go și ASM.

Cum să reducem numărul de AS de tranzit pe care traficul trebuie să le parcurgă? Răspunsul este clar – prin intermediul unui punct de schimb de trafic.

În zilele noastre, apariția noilor IXP este dictată de aceleași nevoi ca în anii '90-2000, doar că la o scară mai mică, ca răspuns la numărul crescând de operatori de telecomunicații, utilizatori și trafic, precum și la cantitatea mare de conținut generat de rețelele CDN și centrele de date.

Ce este un punct de schimb de trafic?

Un punct de schimb de trafic este un loc cu o infrastructură de rețea specializată, unde participanții interesați de schimbul reciproc de trafic își organizează peering-ul. Principalele entități care participă la punctele de schimb de trafic includ operatorii de telecomunicații, furnizorii de internet, furnizorii de conținut și centrele de date. La punctele de schimb de trafic, participanții se conectează direct între ei. Acest lucru permite rezolvarea următoarelor probleme:

  • reducerea latenței,
  • reducerea traficului de tranzit,
  • optimizarea rutării între AS.

Ținând cont că IXP-urile se află în multe dintre marile orașe ale lumii, acest lucru are un impact pozitiv asupra întregii rețele de internet.

Dacă abordăm situația descrisă mai sus cu Petya prin intermediul IXP, va arăta cam așa:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Cum este organizat un punct de schimb de trafic?

De regulă, IXP-ul este un AS separat cu propriul bloc de adrese IP publice IPv4/IPv6.

Rețeaua IXP este cel mai adesea un domeniu L2 continuu. Uneori, aceasta este pur și simplu un VLAN în care se află toți clienții IXP. Atunci când este vorba despre IXP-uri mai mari, distribuite geografic, se pot folosi tehnologii precum MPLS, VXLAN etc. pentru a organiza domeniul L2.

Elementele IXP

  • SCS. Nu este nimic neobișnuit aici: rack-uri, cross-uri optice, panouri de patch-uri.
  • Comutatoare – baza IXP-ului. Portul comutatorului este punctul de intrare în rețeaua IXP. De asemenea, comutatoarele îndeplinesc o parte din funcțiile de securitate – filtrează traficul de tip spam, care nu ar trebui să fie prezent în rețeaua IXP. De regulă, comutatoarele sunt selectate în funcție de cerințele funcționale – fiabilitate, viteza porturilor suportate, funcțiile de securitate, suportul pentru sFlow etc.
  • Server de rutare (RS) – o parte esențială și necesară a oricărei puncte moderne de schimb de trafic. Funcționează conform principiului unui route reflector în iBGP sau al unui router desemnat în OSPF și rezolvă aceleași probleme. Pe măsură ce numărul participanților la punctul de schimb de trafic crește, numărul de sesiuni BGP pe care fiecare participant trebuie să le susțină crește, adică seamănă cu o topologie clasică full-mesh în iBGP. RS rezolvă problema astfel: stabilește o sesiune BGP cu fiecare participant interesat al IXP, devenind astfel client al RS. Acceptând un update BGP de la unul dintre clienții săi, RS distribuie acest update tuturor celorlalți clienți, cu excepția celui de la care a fost primit. Astfel, RS eliminate necesitatea de a stabili un full-mesh între toți participanții IXP și rezolvă elegant problema scalabilității. Trebuie menționat că serverul de rute transmite în mod transparent rutele de la un AS la altul, fără a modifica atribuții BGP transmise, de exemplu, fără a adăuga numărul său de AS în AS-path. De asemenea, RS efectuează o filtrare de bază a rutelor: de exemplu, RS nu acceptă rețele martiene și prefixele IXP-ului.

    Ca soluție, serverul de rute folosește adesea un router software cu cod sursă deschis – BIRD (demon de rutare internet BIRD). Este apreciat datorită faptului că este gratuit, se instalează rapid pe majoritatea distribuțiilor Linux, are un mecanism flexibil de configurare a politicilor de rutare/filtrare și nu necesită multe resurse de calcul. De asemenea, ca RS poate fi ales un router hardware/virtual de la Cisco, Juniper etc.

  • Securitate. Dat fiind că rețeaua IXP este o concentrare a unui număr mare de AS, politica de securitate pe care trebuie să o respecte toți participanții trebuie să fie bine definită. De obicei, toate aceleași mecanisme care se aplică la stabilirea unui vecin BGP între doi piramide BGP separate în afara IXP sunt aplicate și aici, precum și unele măsuri suplimentare de protecție.

    De exemplu, o practică bună este să se permită traficul doar de la o anumită adresă MAC a participantului IXP, care este convenită în prealabil. Interzicerea traficului cu câmpuri ethertype diferite de 0x0800 (IPv4), 0x08dd (IPv6), 0x0806 (ARP); acest lucru se face pentru a filtra traficul care nu are loc în timpul schimbului BGP. De asemenea, pot fi aplicate mecanisme precum GTSM, RPKI etc.

Probabil, cele menționate mai sus sunt componentele principale ale oricărui IXP, indiferent de scară. Sigur, pentru IXP-urile mari pot fi utilizate tehnologii și soluții suplimentare.
Este posibil ca IXP să ofere participanților săi servicii suplimentare:

  • oferă servere DNS TLD pe IXP
  • instalează servere NTP hardware, permițând participanților să sincronizeze exact timpul
  • oferă protecție împotriva atacurilor DDoS etc.

Principiul de funcționare

Vom analiza principiul de funcționare al unui punct de schimb de trafic pe exemplul celui mai simplu IXP, modelat cu ajutorul EVE-NG, iar apoi vom examina configurația de bază a routerului software BIRD. Pentru simplificarea schemei, vom omite lucruri importante, cum ar fi rezervarea și reziliența.

Topologia rețelei este prezentată în desenul de mai jos.

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Să presupunem că administrăm un mic punct de schimb de trafic și oferim următoarele opțiuni de peer-to-peer:

  • peer public,
  • peer privat,
  • peer prin server de rutare.

Numărul nostru AS este 555, deținem un bloc de adrese IPv4 – 50.50.50.0/24, din care atribuim adrese IP celor care doresc să se conecteze la rețeaua noastră.

50.50.50.254 – adresa IP configurată pe interfața serverului de rutare, cu această adresă clienții vor stabili sesiunea BGP în cazul peering-ului prin RS.

De asemenea, pentru peer-ul prin RS am dezvoltat o politică de rutare simplă bazată pe comunitatea BGP, care permite participanților IXP să regleze cui și ce rute să trimită:

Comunitate BGP
Descriere

LOCAL_AS:PEER_AS
Transmitere de prefixe doar către PEER_AS

LOCAL_AS:IXP_AS
Transmitere de prefixe tuturor participanților IXP

Trei clienți doresc să se conecteze și să schimbe trafic cu IXP-ul nostru; să presupunem că sunt furnizori de internet. Toți doresc să organizeze peering prin serverul de rutare. Iată schema cu parametrii de conectare ai clienților:

Clientului
Numărul AS al clientului
Prefixele anunțate de client
Adresa IP atribuită clientului pentru conectarea la IXP

ISP #1
AS 100
1.1.0.0/16
50.50.50.10/24

ISP #2
AS 200
2.2.0.0/16
50.50.50.20/24

ISP #3
AS 300
3.3.0.0/16
50.50.50.30/24

Configurarea de bază BGP pe routerul clientului:

router bgp 100
 no bgp enforce-first-as
 bgp log-neighbor-changes
 neighbor 50.50.50.254 remote-as 555
address-family ipv4
  network 1.1.0.0 mask 255.255.0.0
  neighbor 50.50.50.254 activate
  neighbor 50.50.50.254 send-community both
  neighbor 50.50.50.254 soft-reconfiguration inbound
  neighbor 50.50.50.254 route-map ixp-out out
 exit-address-family

ip prefix-list as100-prefixes seq 5 permit 1.1.0.0/16
route-map bgp-out permit 10
 match ip address prefix-list as100-prefixes
 set community 555:555

Este are importante de menționat configurarea no bgp enforce-first-as. În mod implicit, BGP cere ca în as-path-ul actualizării BGP acceptate să fie prezent numărul AS al peer-ului BGP de la care a fost primit acest update. Dar, deoarece serverul de rute nu modifică as-path-ul, numărul acestuia va lipsi din as-path și update-ul va fi respins. Această configurare este aplicată pentru ca routerul să înceapă să ignore această regulă.

De asemenea, observăm că clientul a setat comunitatea BGP 555:555 pentru acest prefix, ceea ce, conform politicii noastre, înseamnă că clientul dorește să anunțe acest prefix tuturor celorlalți participanți.

Pentru routerele celorlalți clienți, configurația va fi similară, cu excepția parametrilor lor unici.

Exemplu de configurație BIRD:

define ixp_as = 555;
define ixp_prefixes = [ 50.50.50.0/24+ ];

template bgp RS_CLIENT {
  local as ixp_as;
  rs client;
}

Aici este descris un filtru care nu acceptă prefixuri martians, precum și prefixurile proprii ale IXP:

function catch_martians_and_ixp()
prefix set martians;
prefix set ixp_prefixes;
{
  martians = [ 
  0.0.0.0/8+,
  10.0.0.0/8+,
  100.64.0.0/10+,
  127.0.0.0/8+,
  169.254.0.0/16+,
  172.16.0.0/12+,
  192.0.0.0/24+,
  192.0.2.0/24+,
  192.168.0.0/16+,
  198.18.0.0/15+,
  198.51.100.0/24+,
  203.0.113.0/24+,
  224.0.0.0/4+,
  240.0.0.0/4+ ];

  if net ~ martians || net ~ ixp_prefixes then return false;

  return true;
}

Această funcție implementează politica de rutare pe care am descris-o anterior.

function bgp_ixp_policy(int peer_as)
{
  if (ixp_as, ixp_as) ~ bgp_community then return true;
  if (ixp_as, peer_as) ~ bgp_community then return true;

  return false;
}

filter reject_martians_and_ixp
{
  if catch_martians_and_ixp() then reject;
  if ( net ~ [0.0.0.0/0{25,32} ] ) then {
    reject;
  }
  accept;


}

Configurăm peeringul, aplicăm filtrele și politicile corespunzătoare.

protocol as_100 from RS_CLIENT {
  neighbor 50.50.50.10 as 100;
  ipv4 {
    export where bgp_ixp_policy(100);
    import filter reject_martians_and_ixp;
  }
}

protocol as_200 from RS_CLIENT {
  neighbor 50.50.50.20 as 200;
  ipv4 {
    export where bgp_ixp_policy(200);
    import filter reject_martians_and_ixp;
  }
}

protocol as_300 from RS_CLIENT {
  neighbor 50.50.50.30 as 300;
  ipv4 {
    export where bgp_ixp_policy(300);
    import filter reject_martians_and_ixp;
  }
}

Este de menționat că pe serverul de rute este un bun obicei să grupăm rutele de la diferiți peers în RIB-uri diferite. BIRD permite acest lucru. În exemplul nostru, pentru simplitate, toate update-urile primite de la toți clienții sunt grupate într-o singură RIB comună.

Așadar, să verificăm ce am realizat.

Pe serverul route vedem că pentru toți cei trei clienți este stabilită o sesiune BGP:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Observăm că primim prefixe de la toți clienții:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Pe routerul AS 100 vedem că, având o singură sesiune BGP cu serverul de rute, primim prefixe atât de la AS 200, cât și de la AS 300, în timp ce atributele BGP nu s-au schimbat, ca și cum interconectarea între clienți s-ar realiza direct:

Punctul de schimb de trafic: de la începuturi la crearea propriului IX

Astfel, vedem că prezența serverului de rute simplifică semnificativ organizarea interconectării pe IXP.

Sper că această demonstrație v-a ajutat să înțelegeți mai bine cum funcționează punctele de schimb de trafic și cum operează serverul de rute pe IXP.

Linxdatacenter IX

La Linxdatacenter am construit propriul nostru IXP bazat pe o infrastructură rezistentă alcătuită din 2 switch-uri și 2 servere de rute. Acum IXP-ul nostru este în modul de testare, și invităm pe toți doritorii să se conecteze la Linxdatacenter IX și să participe la testare. La conectare, veți primi un port cu o capacitate de 1 Gbit/s, posibilitatea de interconectare prin serverele noastre de rute, precum și acces la portalul IX, disponibil la adresa ix.linxdatacenter.com.

Scrieți în comentarii sau mesaje directe pentru a obține acces la testare.

Ieșire

Punctele de schimb de trafic au apărut la începuturile internetului ca un instrument pentru rezolvarea problemei traficului suboptimal între operatorii de telecomunicații. Acum, cu apariția unor servicii globale noi și creșterea cantității de trafic CDN, punctele de schimb continuă să optimizeze funcționarea rețelei globale. Creșterea numărului de IXP la nivel mondial aduce beneficii atât pentru utilizatorul final al serviciului, cât și pentru operatorii de telecomunicații, operatorii de conținut etc. Pentru participanții IXP, beneficiul se exprimă prin reducerea costurilor de organizare a interconectărilor externe, reducerea cantității de trafic pentru care trebuie să plătească operatorii superiori, optimizarea rutării, posibilitatea de a avea o interconectare directă cu operatorii de conținut.

Linkuri utile

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster