Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

„Mes užmezgėme telefono ryšį tarp mūsų ir SRI vaikinų...“, – interviu sakė Kleinrockas...
„Mes įvedėme L ir telefonu paklausėme: „Ar matai L?
„Taip, mes matome L“, – pasigirdo atsakymas.
„Įvedėme O ir paklausėme: „Ar matai O“.
"Taip, mes matome O."
„Tada įvedėme G ir sistema sudužo“...

Tačiau revoliucija prasidėjo…

Interneto pradžia.


Sveiki visi!

Mano vardas Aleksandras, aš esu tinklo inžinierius „Linxdatacenter“. Šiandienos straipsnyje kalbėsime apie srauto mainų taškus (Internet Exchange Points, IXP): kas buvo prieš jų atsiradimą, kokias užduotis jie sprendžia ir kaip jie kuriami. Taip pat šiame straipsnyje parodysiu IXP veikimo principą naudojant EVE-NG platformą ir programinės įrangos maršrutizatorių BIRD, kad suprastumėte, kaip jis veikia „po gaubtu“.

Truputis istorijos

Jei pažiūrėsi čia, tada matosi, kad spartus srauto mainų taškų skaičiaus augimas prasidėjo 1993 m. Taip yra dėl to, kad didžioji dalis tuo metu egzistavusių telekomunikacijų operatorių srauto ėjo per JAV magistralinį tinklą. Taigi, pavyzdžiui, kai srautas iš operatoriaus Prancūzijoje pereidavo į operatorių Vokietijoje, iš Prancūzijos jis pirmiausia ėjo į JAV, o tik tada iš JAV į Vokietiją. Pagrindinis tinklas šiuo atveju veikė kaip tranzitas tarp Prancūzijos ir Vokietijos. Net srautas vienos šalies viduje dažnai vykdavo ne tiesiogiai, o per pagrindinius Amerikos operatorių tinklus.

Tokia padėtis paveikė ne tik tranzito srauto pristatymo išlaidas, bet ir kanalų kokybę bei vėlavimus. Daugėjo interneto vartotojų, atsirado naujų operatorių, išaugo srautai, brendo internetas. Operatoriai visame pasaulyje pradėjo suprasti, kad reikia racionalesnio požiūrio į operatorių tarpusavio sąveikos organizavimą. „Kodėl aš, operatorius A, turėčiau mokėti už tranzitą per kitą šalį, kad perduotų srautą operatoriui B, kuris yra kitoje gatvėje? Maždaug tokį klausimą tuo metu sau uždavė telekomunikacijų operatoriai. Taigi įvairiose pasaulio vietose operatorių koncentracijos taškuose pradėjo atsirasti srauto mainų taškai:

  • 1994 – LINX Londone,
  • 1995 m. – DE-CIX Frankfurte,
  • 1995 – MSK-IX, Maskvoje ir kt.

Internetas ir mūsų dienos

Konceptualiai šiuolaikinio interneto architektūra susideda iš daugybės autonominių sistemų (AS) ir daugybės fizinių ir loginių jungčių, kurios lemia srauto kelią iš vienos AS į kitą.

AS paprastai yra telekomunikacijų operatoriai, interneto tiekėjai, CDN, duomenų centrai ir įmonių segmento įmonės. AS organizuoja loginius ryšius (peering) tarpusavyje, dažniausiai naudodamos BGP protokolą.

Tai, kaip autonominės sistemos organizuoja šiuos ryšius, lemia keli veiksniai:

  • geografinis,
  • ekonominis,
  • politinis,
  • AS savininkų susitarimai ir bendri interesai,
  • ir tt

Žinoma, ši schema turi tam tikrą struktūrą ir hierarchiją. Taigi operatoriai skirstomi į 1, 2 ir 3 pakopą, o jei vietinio interneto tiekėjo (3 pakopos) klientai paprastai yra paprasti vartotojai, tada, pavyzdžiui, 1 pakopai. lygio operatoriai klientai yra kiti operatoriai. 3 pakopos operatoriai agreguoja savo abonentų srautus, 2 pakopos telekomunikacijų operatoriai savo ruožtu kaupia 3 pakopos operatorių srautus, o 1 pakopos – visą interneto srautą.

Schematiškai jį galima pavaizduoti taip:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo
Šiame paveikslėlyje matyti, kad srautas sumuojamas iš apačios į viršų, t.y. nuo galutinių vartotojų iki 1 pakopos operatorių. Taip pat vyksta horizontalus srauto mainai tarp AS, kurios yra maždaug lygiavertės viena kitai.

Neatsiejama šios schemos dalis ir kartu trūkumas yra tam tikra ryšių tarp autonominių sistemų, esančių arčiau galutinio vartotojo, geografinėje vietovėje, painiavos. Apsvarstykite toliau pateiktą paveikslėlį:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Tarkime, kad dideliame mieste yra 5 telekomunikacijų operatoriai, kurie dėl vienokių ar kitokių priežasčių yra organizuoti taip, kaip parodyta aukščiau.

Jei vartotojas Petya, prisijungęs prie Go IPT, nori pasiekti serverį, prijungtą prie ASM teikėjo, srautas tarp jų bus priverstas pereiti per 5 autonomines sistemas. Tai padidina vėlavimą, nes didėja tinklo įrenginių, per kuriuos vyks srautas, skaičius, taip pat tranzito srauto apimtis autonominėse sistemose tarp Go ir ASM.

Kaip sumažinti tranzitinių AS, per kurias eismas yra priverstas važiuoti, skaičių? Teisingai – eismo mainų punktas.

Šiandien naujų IXP atsiradimą skatina tie patys poreikiai kaip ir 90-2000-ųjų pradžioje, tik mažesniu mastu, reaguojant į didėjantį telekomunikacijų operatorių, vartotojų ir srauto skaičių, didėjantį CDN tinklų generuojamo turinio kiekį. ir duomenų centrai.

Kas yra mainų taškas?

Srauto mainų taškas – tai vieta su specialia tinklo infrastruktūra, kurioje dalyviai, besidomintys abipusiu srauto mainais, organizuoja tarpusavio peering. Pagrindiniai srauto mainų punktų dalyviai: telekomunikacijų operatoriai, interneto tiekėjai, turinio tiekėjai ir duomenų centrai. Eismo mainų punktuose dalyviai tiesiogiai susisiekia vienas su kitu. Tai leidžia išspręsti šias problemas:

  • sumažinti delsą,
  • sumažinti tranzito srautą,
  • optimizuoti maršrutą tarp AS.

Atsižvelgiant į tai, kad IXP yra daugelyje didelių pasaulio miestų, visa tai daro teigiamą poveikį visam internetui.

Jei aukščiau pateikta situacija su Petya bus išspręsta naudojant IXP, paaiškės maždaug taip:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Kaip veikia eismo mainų punktas?

Paprastai IXP yra atskira AS, turinti savo viešųjų IPv4/IPv6 adresų bloką.

IXP tinklą dažniausiai sudaro ištisinis L2 domenas. Kartais tai yra tiesiog VLAN, kuriame yra visi IXP klientai. Kalbant apie didesnius, geografiškai paskirstytus IXP, L2 domenui organizuoti gali būti naudojamos tokios technologijos kaip MPLS, VXLAN ir kt.

IXP elementai

  • SKS. Čia nėra nieko neįprasto: stovai, optinės kryžminės jungtys, pataisos plokštės.
  • Jungikliai – IXP pagrindas. Komutatoriaus prievadas yra įėjimo į IXP tinklą taškas. Komutatoriai taip pat atlieka dalį saugos funkcijų – filtruoja nepageidaujamą srautą, kurio IXP tinkle neturėtų būti. Paprastai jungikliai parenkami pagal funkcinius reikalavimus – patikimumą, palaikomus prievadų greičius, saugos funkcijas, sFlow palaikymą ir kt.
  • Maršruto serveris (RS) – neatsiejama ir būtina bet kurio šiuolaikinio eismo mainų punkto dalis. Veikimo principas yra labai panašus į maršruto reflektorių iBGP arba paskirtą maršrutizatorių OSPF ir išsprendžia tas pačias problemas. Didėjant srauto mainų taško dalyvių skaičiui, didėja BGP seansų, kuriuos turi palaikyti kiekvienas dalyvis, skaičius, t.y. tai primena klasikinę viso tinklo topologiją iBGP. RS problemą išsprendžia tokiu būdu: sukuria BGP seansą su kiekvienu suinteresuotu IXP dalyviu ir tas dalyvis tampa RS klientu. Gavusi BGP naujinimą iš vieno iš savo klientų, RS siunčia šį naujinimą visiems kitiems savo klientams, žinoma, išskyrus tą, iš kurio buvo gautas šis naujinimas. Taigi, RS pašalina poreikį sukurti pilną tinklelį tarp visų IXP narių ir elegantiškai išsprendžia mastelio problemą. Verta paminėti, kad maršruto serveris skaidriai perduoda maršrutus iš vienos AS į kitą, nekeisdamas BGP perduodamų atributų, pavyzdžiui, neprideda numerio savo AS prie AS kelio. Taip pat RS yra pagrindinis maršrutų filtravimas: pavyzdžiui, RS nepriima marsiečių tinklų ir paties IXP prefiksų.

    Atvirojo kodo programinės įrangos maršrutizatorius BIRD (bird internet routing daemon) dažnai naudojamas kaip maršruto serverio sprendimas. Geras dalykas yra tai, kad jis yra nemokamas, greitai įdiegiamas daugelyje „Linux“ paskirstymų, turi lankstų maršruto parinkimo / filtravimo strategijų nustatymo mechanizmą ir nereikalauja skaičiavimo išteklių. Be to, kaip RS galima pasirinkti aparatinę / virtualų maršrutizatorių iš Cisco, Juniper ir kt.

  • Saugumas. Kadangi IXP tinklas yra daugybės AS koncentracija, saugos politika, kurios turi laikytis visi dalyviai, turi būti gerai parašyta. Apskritai čia galioja visi tie patys mechanizmai, kurie naudojami BGP gretimumui nustatyti tarp dviejų atskirų BGP partnerių, nepriklausančių IXP, ir kai kurios papildomos saugos priemonės.

    Pavyzdžiui, gera praktika yra leisti srautą tik iš konkretaus IXP dalyvio mac adreso, dėl kurio susitariama iš anksto. Srauto uždraudimas naudojant eterinio tipo laukus, išskyrus 0x0800(IPv4), 0x08dd(IPv6), 0x0806(ARP); tai daroma siekiant išfiltruoti srautą, kuris nepriklauso BGP tarpusavio ryšiui. Taip pat gali būti naudojami tokie mechanizmai kaip GTSM, RPKI ir kt.

Galbūt aukščiau išvardyti dalykai yra pagrindiniai bet kurio IXP komponentai, nepaisant masto. Žinoma, didesniuose IXP gali būti įdiegtos papildomos technologijos ir sprendimai.
Pasitaiko, kad IXP savo dalyviams teikia ir papildomų paslaugų:

  • patalpintas IXP ATL DNS serveryje,
  • įdiegti aparatūros NTP serverius, leidžiančius dalyviams tiksliai sinchronizuoti laiką,
  • suteikti apsaugą nuo DDoS atakų ir kt.

Veikimo principas

Pažvelkime į srauto mainų taško veikimo principą naudodami paprasto IXP pavyzdį, sumodeliuotą naudojant EVE-NG, o tada apsvarstykite pagrindinę programinės įrangos BIRD maršrutizatoriaus sąranką. Norėdami supaprastinti diagramą, praleisime tokius svarbius dalykus kaip perteklius ir atsparumas gedimams.

Tinklo topologija parodyta paveikslėlyje žemiau.

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Tarkime, kad administruojame nedidelį mainų tašką ir pateikiame šias tarpusavio ryšio parinktis:

  • viešas žiūrėjimas,
  • privatus žiūrėjimas,
  • žiūrėjimas per maršruto serverį.

Mūsų AS numeris yra 555, mums priklauso IPv4 adresų blokas – 50.50.50.0/24, iš kurio išduodame IP adresus norintiems prisijungti prie mūsų tinklo.

50.50.50.254 – IP adresas sukonfigūruotas maršruto serverio sąsajoje, su šiuo IP klientai sukurs BGP seansą, kai bendraus per RS.

Be to, bendravimui per RS ​​sukūrėme paprastą maršruto parinkimo politiką, pagrįstą BGP bendruomene, kuri leidžia IXP dalyviams reguliuoti, kam ir kokiais maršrutais siųsti:

BGP bendruomenė
aprašymas

LOCAL_AS:PEER_AS
Siųsti priešdėlius tik į PEER_AS

LOCAL_AS:IXP_AS
Perkelkite prefiksus visiems IXP dalyviams

3 klientai nori prisijungti prie mūsų IXP ir keistis srautu; Tarkime, tai yra interneto tiekėjai. Jie visi nori organizuoti bendravimą per maršruto serverį. Žemiau yra diagrama su kliento ryšio parametrais:

Klientas
Kliento AS numeris
Kliento reklamuojami priešdėliai
IP adresas, išduotas klientui prisijungti prie IXP

IPT Nr. 1
AS 100
1.1.0.0/16
50.50.50.10/24

IPT Nr. 2
AS 200
2.2.0.0/16
50.50.50.20/24

IPT Nr. 3
AS 300
3.3.0.0/16
50.50.50.30/24

Pagrindinė BGP sąranka kliento maršrutizatoriuje:

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

Verta paminėti, kad čia nėra bgp enforce-first-as. Pagal numatytuosius nustatymus BGP reikalauja, kad gauto BGP naujinimo as-kelyje būtų lygiavertės programos, iš kurios buvo gautas naujinimas, as bgp numeris. Bet kadangi maršruto serveris neatlieka as-kelio pakeitimų, jo numerio as-kelyje nebus ir naujinimas bus atmestas. Šis nustatymas naudojamas, kad maršrutizatorius nepaisytų šios taisyklės.

Taip pat matome, kad klientas šiam prefiksui nustatė bgp bendruomenę 555:555, o tai pagal mūsų politiką reiškia, kad klientas nori reklamuoti šį prefiksą visiems kitiems dalyviams.

Kitų klientų maršrutizatorių nustatymai bus panašūs, išskyrus unikalius jų parametrus.

BIRD konfigūracijos pavyzdys:

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

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

Toliau aprašomas filtras, kuris nepriima marsiečių priešdėlių, taip pat paties IXP priešdėlių:

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;
}

Ši funkcija įgyvendina anksčiau aprašytą maršruto parinkimo politiką.

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;


}

Konfigūruojame tarpusavio ryšį, taikome tinkamus filtrus ir politiką.

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;
  }
}

Verta paminėti, kad maršruto serveryje yra gera praktika skirtingų partnerių maršrutus sudėti į skirtingus RIB. BIRD leidžia tai padaryti. Mūsų pavyzdyje, siekiant paprastumo, visi naujiniai, gauti iš visų klientų, yra įtraukiami į vieną bendrą RIB.

Taigi, patikrinkime, ką turime.

Maršruto serveryje matome, kad buvo sukurtas BGP seansas su visais trimis klientais:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Matome, kad prefiksus gauname iš visų klientų:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Maršrutizatoriuje as 100 matome, kad jei yra tik viena BGP sesija su maršruto serveriu, gauname prefiksus ir iš 200, ir kaip iš 300, o BGP atributai nepasikeitė, tarsi ryšys tarp klientų būtų vykdomas tiesiogiai:

Eismo mainų taškas: nuo ištakų iki savo IX sukūrimo

Taigi matome, kad maršruto serverio buvimas labai supaprastina tarpusavio ryšio organizavimą IXP.

Tikiuosi, kad ši demonstracija padėjo jums geriau suprasti, kaip veikia IXP ir kaip maršruto serveris veikia IXP.

Linxdatacenter IX

„Linxdatacenter“ sukūrėme savo IXP, pagrįstą gedimams atsparia 2 jungiklių ir 2 maršruto serverių infrastruktūra. Mūsų IXP dabar veikia bandomuoju režimu, todėl kviečiame visus prisijungti prie Linxdatacenter IX ir dalyvauti testavime. Prisijungę gausite 1 Gbit/s pralaidumo prievadą, galimybę naršyti per mūsų maršrutų serverius, taip pat prieigą prie asmeninės IX portalo paskyros, pasiekiamos el. ix.linxdatacenter.com.

Rašykite komentaruose arba asmenine žinute, kad gautumėte prieigą prie testavimo.

Produkcija

Srauto mainų taškai atsirado interneto aušroje kaip įrankis sprendžiant neoptimalaus srauto tarp telekomunikacijų operatorių problemą. Dabar, atsiradus naujoms globalioms paslaugoms ir išaugus CDN srautui, mainų taškai ir toliau optimizuoja pasaulinio tinklo veiklą. IXP skaičiaus didėjimas pasaulyje naudingas tiek galutiniam paslaugos vartotojui, tiek telekomunikacijų operatoriams, turinio operatoriams ir kt. IXP dalyviams nauda išreiškiama sumažinant išorinio tarpusavio ryšio organizavimo kaštus, sumažinant srauto kiekį, už kurį turi mokėti aukštesnio lygio operatoriai, optimizuojant maršrutų parinkimą ir galimybe turėti tiesioginę sąsają su turinio operatoriais.

Naudingos nuorodos

Šaltinis: www.habr.com

Добавить комментарий