Liikluse vahetuspunkt: allikatest oma IX loomiseni

Liikluse vahetuspunkt: allikatest oma IX loomiseni

„Me seadsime telefonikontakti meie ja SRI poiste vahel
“ ĂŒtles Kleinrock ĂŒhes intervjuus:
„Me sisestasime L-i ja kĂŒsisime telefoni teel: „Kas nĂ€ete L-i?““
„Jah, me nĂ€eme L-i,“ tuli vastus.
„Sisestasime O ja kĂŒsisime: „Kas nĂ€ete O-d?““
„Jah, me nĂ€eme O-d.“
„Siis sisestasime G ja sĂŒsteem krahh...“

Kuid revolutsioon oli alanud


Interneti algus.


Tere kÔigile!

Minu nimi on Aleksander, olen vĂ”rginsener ettevĂ”ttes Linxdatacenter. TĂ€na rÀÀgime liikluse vahetuspunktidest (Internet Exchange Point, IXP): sellest, mis eelnes nende tekkimisele, milliseid ĂŒlesandeid nad tĂ€idavad ja kuidas need on ĂŒles ehitatud. Samuti demonstreerin selles artiklis IXP tööpĂ”himĂ”tet EVE-NG platvormi ja BIRD tarkvararuuteri kaudu, et oleks arusaam, kuidas see „kapoti all“ töötab.

Enne kui liigume edasi

Kui vaadata siia, siis vÔib mÀrgata, et liikluse vahetuspunktide kiire kasv algas 1993. aastal. See oli tingitud sellest, et enamus sel ajal olemas olnud sideteenuste liiklusest lÀbis USA selgroo. NÀiteks, kui liiklus suundus Prantsusmaalt Saksamaale, jÔudis see esmalt USA-sse ja alles sealt Saksamaale. Selgroo vÔrk toimis sellisel juhul transiidina Prantsusmaa ja Saksamaa vahel. Isegi riigi sees liikuv liiklus ei lÀinud sageli otse, vaid Ameerika operaatorite toetavate vÔrkude kaudu.

Selline olukord mĂ”jutas mitte ainult transiitliikluse kulu, vaid ka kanalite kvaliteeti ja viivitust. Interneti kasutajate arv suurenes, ilmus uusi operaatorite, liiklusmaht kasvas, internet arenes. Operaatorid ĂŒle kogu maailma hakkasid mĂ”istma, et on vajalik ratsionaalsem lĂ€henemine operatsioonidevahelise koostöö korraldamisele. „KĂŒsimus, miks peaks operaator A maksma transiidi eest teise riigi kaudu, et saata liiklust operaatorile B, kes asub naabruses?“ Sellise kĂŒsimuse esitasid endale sideteenuste operaatorid sel ajal. Nii hakkasid erinevates maailma nurkades operaatorite kontsentratsioonikohtadesse ilmuma liikluse vahetuspunktid:

  • 1994 – LINX Londonis,
  • 1995 – DE-CIX Frankfurtis,
  • 1995 – MSK-IX, Moskvas jne.

Internet ja meie pÀevad

Kontseptuaalselt esindab tĂ€napĂ€eva interneti arhitektuur paljusid iseseisvaid sĂŒsteeme (autonomous system, AS) ja mitmeid sidemeid nende vahel, nii fĂŒĂŒsilisi kui ka loogilisi, mis mÀÀravad liikluse teed ĂŒhelt AS-ilt teisele.

AS-i rolli tÀidavad tavaliselt sideoperaatorid, interneti pakkujad, CDN-id, andmekeskused ja ettevÔtted ettevÔtete segmentis. AS-id korraldavad omavahelisi loogilisi sidemeid (peering) peamiselt BGP protokolli abil.

Autonoomsete sĂŒsteemide sidemete korralduse mÀÀrab mitu tegurit:

  • geograafilised,
  • majanduslikud,
  • poliitilised,
  • lepingud ja ĂŒhised huvid AS-i omanike vahel,
  • jne.

Muidugi on selles skeemis teatud struktuur ja hierarhia. Nii jaotatakse operaatorid tier-1, tier-2 ja tier-3, ning kui kohaliku interneti pakkuja (tier-3) kliendid on tavaliselt tavalised kasutajad, siis nÀiteks tier-1 operaatorite kliendid on teised operaatorid. Tier-3 operaatorid koguvad oma klientide liiklust, tier-2 sideoperaatorid koguvad omakorda tier-3 operaatorite liiklust, ning tier-1 kogub kogu interneti liikluse.

Schemaatiliselt vÔib seda kujutada jÀrgmiselt:

Liikluse vahetuspunkt: allikatest oma IX loomiseni
Sellel pildil on nĂ€ha, et liiklus kogutakse alt ĂŒles, st lĂ”ppkasutajatelt tier-1 operaatoriteni. Samuti toimub horisontaalne liikluse vahetamine omavahel peaaegu vĂ”rdsete AS-ide vahel.

Selle skeemi lahutamatuks osaks ja samas puuduseks on teatud kaootilisus sidemete vahel iseseisvate sĂŒsteemide, mis asuvad lĂ”ppkasutajale lĂ€hemal, geograafilises piirkonnas. Vaatame allolevat pilti:

Liikluse vahetuspunkt: allikatest oma IX loomiseni

VÔtame aluseks, et suures linnas on 5 sideoperaatorit, kelle vahel on fikseeritud peering, erinevatel pÔhjustel, nagu allpool nÀidatud.

Kui kasutaja Petja, kes on ĂŒhendatud interneti pakkujaga Go, soovib pÀÀseda juurde serverile, mis on ĂŒhendatud pakkujaga ASM, peab nende vahelise liiklus lĂ€bima 5 iseseisvat sĂŒsteemi. SeelĂ€bi suureneb viivitus, kuna suureneb vĂ”rgu seadmete arv, mille kaudu liiklus lĂ€bib, samuti suureneb tranzitliikluse maht iseseisvate sĂŒsteemide vahel Go ja ASM vahel.

Kuidas vĂ€hendada tranzitsete AS-ide arvu, mille lĂ€bi liiklus peab lĂ€bi minema? Õige vastus on liikluse vahetuspunkt.

TĂ€napĂ€eval on uute IXP-de tekkimise pĂ”hjuseks samad vajadused nagu 90ndate alguses ja 2000ndatel, kuid nĂŒĂŒd vĂ€iksemas mahus, vastuseks kasvavale sideoperaatorite, kasutajate ja liikluse arvule, samuti jĂ€rjest suurenevale sisu hulgale, mida genereerivad CDN-vĂ”rgud ja andmekeskused.

Mis on liikluse vahetuspunkte?

Liikluse vahetuspunkt on koht, kus on spetsiaalne vĂ”rguinfrastruktuur, kus huvi liikluse vastastikuse vahetuse vastu olevad osalised organiseerivad vastastikku peeringu. Peamised osalised liikluse vahetuspunktides on sideoperaatorid, internetiteenuse pakkujad, sisu pakkujad ja andmekeskused. Liikluse vahetuspunktides ĂŒhendavad osalised end omavahel otse. See vĂ”imaldab lahendada jĂ€rgmised ĂŒlesanded:

  • vĂ€hendada viivitust,
  • kujundada ĂŒmber transitliiklust,
  • optimeerida marsruute AS-ide vahel.

Kuna IXP-d on paljude suurte linnade maailmas, on see kÔik positiivselt mÔjutanud ka interneti vÔrku tervikuna.

Kui ĂŒlaltoodud olukorda Pete osas lahendada IXP kaudu, siis see vĂ”ib vĂ€lja nĂ€ha umbes nii:

Liikluse vahetuspunkt: allikatest oma IX loomiseni

Kuidas liikluse vahetuspunkt töötab?

Tavaliselt on IXP eraldi AS koos oma avalike IPv4/IPv6 aadresside plokiga.

IXP vĂ”rk koosneb enamasti ĂŒhtsest L2 domeenist. MĂ”nikord on see lihtsalt VLAN, kuhu on koondatud kĂ”ik IXP kliendid. Suuremate, geograafia poolest jaotatud IXP-de puhul vĂ”ib L2 domeeni organiseerimiseks kasutada tehnoloogiaid nagu MPLS, VXLAN jne.

IXP elemendid

  • SKS. Siin pole midagi ebatavalist: riiulid, optilised ristlĂ”iked, patch-paneelid.
  • LĂŒlitid – IXP alus. LĂŒlitite port on sisenemispunkt IXP vĂ”rku. Samuti tĂ€idavad lĂŒlitid osaliselt turvafunktsioone – filtreerivad prĂŒgi liiklust, mida ei tohiks IXP vĂ”rgus olla. Tavaliselt valitakse lĂŒlitid vastavalt funktsionaalsetele nĂ”udmistele – töökindlus, toetatud portide kiirus, turvafunktsioonid, sFlow toetamine jne.
  • Marsruudi server (RS) – lahutamatu ja vajalik osa igast kaasaegsest liikluse vahetuspunktist. Töö pĂ”himĂ”ttelt sarnaneb see vĂ€ga iBGP route reflectorile vĂ”i OSPF designated routerile ning lahendab samad probleemid. Liikmete arvu suurenedes liikluse vahetuspunktis suureneb ka BGP sessioonide arv, mida tuleb igaĂŒhel hoida, st see meenutab klassikalist full-mesh topoloogiat iBGP-s. RS lahendab probleemi jĂ€rgmiselt: see loob BGP sessiooni iga huvitatud IXP osalejaga, kes muutub RS kliendiks. Saades BGP uuenduse ĂŒhelt oma kliendilt, edastab RS selle uuenduse kĂ”igile oma teistele klientidele, vĂ€lja arvatud sellele, kellelt uuendus saadi. Nii vabastab RS vajadusest luua full-mesh kĂ”igi IXP osalejate vahel ja lahendab elegantselt skaleerimise probleemi. Tuleb mĂ€rkida, et marsruutide server edastab marsruudid ĂŒhelt AS-ilt teisele lĂ€binĂ€gematult, muudatusi tegemata edastatavatest BGP attribuutidest, nĂ€iteks ei lisa oma AS numbrit AS-pathi. Samuti toimub RS-s pĂ”hifiltratsioon, nĂ€iteks RS ei aktsepteeri martians vĂ”rgustikke ja IXP enda prefikseid.

    Route serverina kasutatakse sageli avatud lĂ€htekoodiga tarkvara marsruutimistarkvara – BIRD (bird internet routing daemon). Selle eelised on, et see on tasuta, kiiruselt lihtne seadistada enamikul Linuxi distributsioonidel, tal on paindlik marsruudi/poliitikate seadistamise mehhanism ja see ei nĂ”ua palju arvutusressursse. RS-ks vĂ”ib valida ka Cisco, Juniperi jms riistvaralise/virtuaalse marsruuteri.

  • Turvalisus. Kuna IXP vĂ”rk keskendub suure hulga AS-ide koondamisele, peab kĂ”igil osalejatel olema hĂ€sti vĂ€ljendatud turvapoliitika. Reeglina kehtivad kĂ”ik samad mehhanismid, mida kasutatakse BGP naabruse loomisel kahe eraldi BGP-pira vahel vĂ€ljaspool IXP, ka siin, ning on rakendatud ka mitmeid tĂ€iendavaid kaitsevahendeid.

    NÀiteks on hea praktika suunata liiklust ainult teatud osaleja IXP MAC-aadressilt, mis on eelnevalt kokku lepitud. Liiklus, mille ethertype vÀljad erinevad 0x0800 (IPv4), 0x08dd (IPv6), 0x0806 (ARP), on keelatud; see tehakse selleks, et filtreerida liiklust, millel BGP peerimiseks kohta ei ole. Samuti vÔivad olla kasutusel sellised mehhanismid nagu GTSM, RPKI jne.

Ilmselt on eespool loetletud peamised koostisosad igas IXP-s, olenemata suurusest. Loomulikult vÔivad suurtel IXP-del olla tÀiendavad tehnoloogiad ja lahendused.
On juhtunud, et IXP pakub oma osalejatele ka tÀiendavaid teenuseid:

  • paigutatakse IXP-sse TLD DNS-serverid,
  • paigaldatakse riistvara NTP-serverid, mis vĂ”imaldavad osalejatel tĂ€pselt aega sĂŒnkroonida,
  • pakuvad DDoS-rĂŒnnakute kaitset jne.

Töö ĐżŃ€ĐžĐœŃ†ĐžĐż

Vaatame, kuidas liikluse vahetamise punkt töötab, kasutades lihtsustatud IXP nÀidet, simuleeritud EVE-NG abil, seejÀrel vaatame pÔhiseadet BIRD tarkvara marsruuteril. Skeemi lihtsustamiseks jÀtame vÀlja sellised olulised asjad nagu varundamine ja rikete taluvus.

VÔrgu topoloogia on kujutatud alloleval joonisel.

Liikluse vahetuspunkt: allikatest oma IX loomiseni

Oletame, et haldame vÀikest liikluse vahetamise punkti ja pakume jÀrgmisi pirimise variante:

  • avalik pirimine,
  • privaatne pirimine,
  • pirimine lĂ€bi marsruudiserveri.

Meie AS number on 555, meil on IPv4 aadresside plokk – 50.50.50.0/24, millest jagame IP-aadresse neile, kes soovivad meie vĂ”rguga liituda.

50.50.50.254 on IP-aadress, mis on seadistatud marsruudiserveri liidesesse; selle IP-ga loovad kliendid BGP seansi, kui nad pirivad lÀbi RS.

Samuti oleme RS kaudu pirimise jaoks vÀlja töötanud lihtsa marsruutimise poliitika, mis pÔhineb BGP community-l, mis vÔimaldab IXP liikmetel reguleerida, kellele ja milliseid marsruute edastada:

BGP community
Kirjeldus

LOCAL_AS:PEER_AS
Edastada eelistused ainult PEER_AS-ile

LOCAL_AS:IXP_AS
Edastada eelistused kÔigile IXP liikmetele

Meie IXP-sse soovivad ĂŒhenduda ja liiklust vahetada 3 klienti; oletame, et need on internetiteenuse pakkujad. KĂ”ik nad soovivad korraldada pirimist lĂ€bi marsruudiserveri. Allpool on kliendi ĂŒhendamise parameetrite skeem:

Kliendi
Kliendi AS number
Kliendi poolt kuulutatud eelistused
IP aadress, mis on kliendile antud ĂŒhenduse loomiseks IXP-ga

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

Baasseade BGP kliendi marsruuteris:

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

Siin on oluline mĂ€rkida, et on seadistus no bgp enforce-first-as. Vaikimisi nĂ”uab BGP, et vastuvĂ”etud BGP uuenduste as-path sisaldaks BGP sĂ”bra AS-i numbrit, kellelt uuendus saadud. Kuid kuna marsruutimisserver ei muuda as-path’i, siis ei sisaldu selle numbrit as-path’is ja uuendus lĂŒkatakse tagasi. See seadistus rakendatakse, et marsruuter ignoreeriks seda reeglit.

Samuti nÀeme, et klient on mÀÀranud BGP community 555:555 antud eelistusele, mis meie poliitika kohaselt tÀhendab, et klient soovib seda eelistust kuulutada kÔigile teistele osalistele.

Muude klientide marsruutijate seadistus on sarnane, vÀlja arvatud nende unikaalsed parameetrid.

BIRD konfiguratsiooni nÀidis:

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

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

Edasi on kirjeldatud filtrit, mis ei vÔta vastu martians eelistusi, samuti IXP enda eelistusi:

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

See funktsioon rakendab marsruutimispoliitikat, millest oleme varem rÀÀkinud.

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;


}

Seame pilti, rakendame vastavad filtrid ja poliitikad.

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

Oluline on mĂ€rkida, et marsruudiserveri puhul on heaks tooniks hoida erinevatelt sĂ”pradelt saadud marsruute erinevates RIB-ides. BIRD vĂ”imaldab seda teha. Meie nĂ€ites, lihtsuse huvides, kogutakse kĂ”ik kĂ”ikidest klientidest saadud uuendused ĂŒheks ĂŒhiseks RIB-iks.

Nii et kontrollime, mida oleme saavutanud.

Route serveril nÀeme, et kÔigi kolme kliendiga on loodud BGP-seanss:

Liikluse vahetuspunkt: allikatest oma IX loomiseni

NÀeme, et saame prefikseid kÔigilt klientidelt:

Liikluse vahetuspunkt: allikatest oma IX loomiseni

MarĆĄrutiseris as 100 nĂ€eme, et ĂŒhe BGP-seansi olemasolul marsruudiserveriga saame prefikseid nii as 200 kui ka as 300, samas BGP-atribuut ei ole muutunud, nagu oleks peerimine klientide vahel toimunud otse:

Liikluse vahetuspunkt: allikatest oma IX loomiseni

Seega nÀeme, et marsruudiserveri olemasolu lihtsustab oluliselt peerimise organiseerimist IXP-l.

Loodan, et see demonstratsioon aitas teil paremini mÔista, kuidas toimivad liiklusvahetuspunktid ja kuidas marsruudiserver IXP-l töötab.

Linxdatacenter IX

Linxdatacenteris oleme loonud oma IXP, mis pĂ”hineb kaksikvĂ”rgu ja kahe marsruudiserveri tĂ”rketaluvusel infrastruktuuril. Praegu on meie IXP katsetamisreĆŸiimis ja kutume kĂ”iki huvitatud osalema Linxdatacenter IX-s ja osalema testimisel. Ühenduse loomisel antakse teile port, mille lĂ€bilaskevĂ”ime on 1 Gbit/s, vĂ”imalus peerida meie marsruudiserveritega ning juurdepÀÀs IX-portaali isiklikule kabinetile, mis on saadaval aadressil ix.linxdatacenter.com.

Kirjutage kommentaaridesse vÔi isiklikele sÔnumitele, et saada ligipÀÀs testimisele.

KokkuvÔte

Liiklusvahetuspunktid tekkisid interneti algusaegadel, et lahendada probleeme, mis olid seotud ebaoptimaalse liikluse lĂ€bimisega sideoperaatorite vahel. TĂ€napĂ€eval, uute globaalsete teenuste ja CDN-liikluse suurenenud hulga ilmumisega, jĂ€tkavad liiklusvahetuspunktid globaalse vĂ”rgu töö optimeerimist. IXP-de arvu suurenemine maailmas toob kasu nii teenuse lĂ”ppkasutajale kui ka sideoperaatoritele ja sisuoperaatoritele jne. IXP osalejate eeliseid vĂ€ljendatakse kulude vĂ€henemises vĂ€liste peerimiste korraldamisel, alandatud liikluse hulgas, mille eest tuleb maksta kĂ”rgematele operaatoritele, marsruutimise optimeerimisel ja vĂ”imaluses otseĂŒhenduse loomisel sisuoperaatoritega.

Kasulikud lingid

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster