Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

"Abbiamo stabilito un collegamento telefonico tra noi e i ragazzi della SRI...", ha detto Kleinrock... in un'intervista:
“Abbiamo digitato la L e abbiamo chiesto al telefono: “Vedi la L?”
"Sì, vediamo la L", è stata la risposta.
"Abbiamo digitato la O e abbiamo chiesto:" Vedi la O? ""
"Sì, vediamo la O."
"Poi abbiamo digitato la G e il sistema si è bloccato"...

Eppure una rivoluzione era iniziata…

L'inizio di Internet.


Ciao a tutti!

Mi chiamo Alexander, sono un ingegnere di rete presso Linxdatacenter. Nell'articolo di oggi parleremo dei punti di scambio del traffico (Internet Exchange Points, IXP): cosa ha preceduto la loro comparsa, quali compiti risolvono e come sono costruiti. Anche in questo articolo dimostrerò il principio di funzionamento di IXP utilizzando la piattaforma EVE-NG e il router software BIRD, in modo che tu possa capire come funziona "sotto il cofano".

Un po 'di storia

Se guardi qui, allora puoi vedere che la rapida crescita del numero di punti di scambio del traffico è iniziata nel 1993. Ciò è dovuto al fatto che la maggior parte del traffico degli operatori di telecomunicazioni allora esistenti passava attraverso la rete dorsale statunitense. Quindi, ad esempio, quando il traffico è passato da un operatore in Francia a un operatore in Germania, è passato prima dalla Francia agli Stati Uniti e solo successivamente dagli Stati Uniti alla Germania. La rete dorsale in questo caso fungeva da transito tra Francia e Germania. Anche il traffico all'interno di un paese spesso non passava direttamente, ma attraverso le reti dorsali degli operatori americani.

Questo stato di cose ha influito non solo sul costo della fornitura del traffico di transito, ma anche sulla qualità dei canali e sui ritardi. Il numero degli utenti di Internet è aumentato, sono comparsi nuovi operatori, il volume del traffico è aumentato e Internet è maturato. Gli operatori di tutto il mondo hanno iniziato a rendersi conto che era necessario un approccio più razionale all'organizzazione dell'interazione tra operatori. "Perché io, l'operatore A, dovrei pagare il transito attraverso un altro paese per consegnare il traffico all'operatore B, che si trova nella strada successiva?" Questa è più o meno la domanda che si ponevano allora gli operatori di telecomunicazioni. Pertanto, i punti di scambio del traffico iniziarono ad apparire in diverse parti del mondo nei punti di concentrazione degli operatori:

  • 1994 – LINX a Londra,
  • 1995 – DE-CIX a Francoforte,
  • 1995 – MSK-IX, a Mosca, ecc.

Internet e i nostri giorni

Concettualmente, l'architettura della moderna Internet è costituita da molti sistemi autonomi (AS) e da molte connessioni tra loro, sia fisiche che logiche, che determinano il percorso del traffico da un AS all'altro.

Gli AS sono solitamente operatori di telecomunicazioni, provider Internet, CDN, data center e società del segmento aziendale. Gli AS organizzano connessioni logiche (peering) tra loro, solitamente utilizzando il protocollo BGP.

Il modo in cui i sistemi autonomi organizzano queste connessioni è determinato da una serie di fattori:

  • geografico,
  • economico,
  • politico,
  • accordi e interessi comuni tra i proprietari di AS,
  • eccetera

Naturalmente, questo schema ha una certa struttura e gerarchia. Pertanto, gli operatori sono divisi in livello 1, livello 2 e livello 3 e se i client per un provider Internet locale (livello 3) sono, di regola, utenti ordinari, quindi, ad esempio, per livello 1 operatori di livello i clienti sono altri operatori. Gli operatori di livello 3 aggregano il traffico dei loro abbonati, gli operatori di telecomunicazioni di livello 2, a loro volta, aggregano il traffico degli operatori di livello 3 e quelli di livello 1 – tutto il traffico Internet.

Schematicamente può essere rappresentato così:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX
Questa immagine mostra che il traffico è aggregato dal basso verso l'alto, vale a dire dagli utenti finali agli operatori di primo livello. Esiste anche uno scambio orizzontale di traffico tra AS approssimativamente equivalenti tra loro.

Parte integrante e allo stesso tempo uno svantaggio di questo schema è una certa confusione di connessioni tra sistemi autonomi situati più vicini all'utente finale, all'interno di un'area geografica. Considera l'immagine qui sotto:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Supponiamo che in una grande città siano presenti 5 operatori di telecomunicazioni, il peering tra i quali, per un motivo o per l'altro, è organizzato come mostrato sopra.

Se l'utente Petya, connesso all'ISP Go, desidera accedere a un server connesso al provider ASM, il traffico tra loro sarà costretto a passare attraverso 5 sistemi autonomi. Ciò aumenta il ritardo perché aumenta il numero degli apparati di rete attraverso i quali passerà il traffico, così come il volume del traffico in transito su sistemi autonomi tra Go e ASM.

Come ridurre il numero di AS di transito attraverso i quali il traffico è costretto a transitare? Esatto: punto di scambio del traffico.

Oggi, l’emergere di nuovi IXP è guidato dalle stesse esigenze dei primi anni ’90-2000, solo su scala minore, in risposta al crescente numero di operatori di telecomunicazioni, utenti e traffico, alla crescente quantità di contenuti generati dalle reti CDN e data center.

Cos'è un punto di scambio?

Un punto di scambio di traffico è un luogo con una speciale infrastruttura di rete in cui i partecipanti interessati allo scambio reciproco di traffico organizzano il peering reciproco. I principali partecipanti ai punti di scambio del traffico: operatori di telecomunicazioni, fornitori di Internet, fornitori di contenuti e data center. Nei punti di scambio del traffico, i partecipanti si collegano direttamente tra loro. Ciò consente di risolvere i seguenti problemi:

  • ridurre la latenza,
  • ridurre la quantità di traffico di transito,
  • ottimizzare il routing tra AS.

Considerando che gli IXP sono presenti in molte grandi città del mondo, tutto ciò ha un effetto benefico su Internet nel suo insieme.

Se la situazione di cui sopra con Petya viene risolta utilizzando IXP, risulterà qualcosa del genere:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Come funziona un punto di scambio di traffico?

Di norma un IXP è un AS separato con il proprio blocco di indirizzi IPv4/IPv6 pubblici.

La rete IXP consiste molto spesso in un dominio L2 continuo. A volte si tratta semplicemente di una VLAN che ospita tutti i client IXP. Quando si tratta di IXP più grandi e distribuiti geograficamente, è possibile utilizzare tecnologie come MPLS, VXLAN, ecc. per organizzare un dominio L2.

Elementi IXP

  • SKS. Qui non c'è nulla di insolito: rack, cross-connect ottici, patch panel.
  • Interruttori – la base dell’IXP. La porta dello switch è il punto di ingresso nella rete IXP. Gli switch svolgono anche parte delle funzioni di sicurezza: filtrano il traffico spazzatura che non dovrebbe essere presente sulla rete IXP. Di norma, gli switch vengono selezionati in base ai requisiti funzionali: affidabilità, velocità delle porte supportate, funzionalità di sicurezza, supporto sFlow, ecc.
  • Server di percorso (RS) – parte integrante e necessaria di ogni moderno punto di scambio del traffico. Il principio di funzionamento è molto simile al route reflector in iBGP o al router designato in OSPF e risolve gli stessi problemi. All'aumentare del numero di partecipanti in un punto di scambio del traffico, aumenta il numero di sessioni BGP che ciascun partecipante deve supportare, ad es. questo ricorda la classica topologia full-mesh in iBGP. RS risolve il problema nel modo seguente: stabilisce una sessione BGP con ciascun partecipante IXP interessato e quel partecipante diventa un client RS. Ricevendo un aggiornamento BGP da uno dei suoi client, RS invia questo aggiornamento a tutti gli altri client, ovviamente, ad eccezione di quello da cui è stato ricevuto questo aggiornamento. Pertanto, RS elimina la necessità di stabilire una rete full-mesh tra tutti i membri IXP e risolve elegantemente il problema della scalabilità. Vale la pena notare che il route server trasmette in modo trasparente i percorsi da un AS all'altro senza apportare modifiche agli attributi trasmessi da BGP, ad esempio, non aggiunge il numero nel suo AS al percorso AS. Anche su RS esiste un filtraggio di base dei percorsi: ad esempio, RS non accetta le reti marziane e i prefissi dell'IXP stesso.

    Un router software open source, BIRD (bird internet routing daemon), viene spesso utilizzato come soluzione server di instradamento. L'aspetto positivo è che è gratuito, si distribuisce rapidamente sulla maggior parte delle distribuzioni Linux, ha un meccanismo flessibile per impostare politiche di routing/filtro e non richiede risorse di elaborazione. Inoltre, come RS è possibile selezionare un router hardware/virtuale di Cisco, Juniper, ecc.

  • Sicurezza. Poiché una rete IXP è una concentrazione di un gran numero di AS, la politica di sicurezza che tutti i partecipanti devono seguire deve essere ben scritta. In generale, qui si applicano tutti gli stessi meccanismi che si applicano quando si stabilisce un'adiacenza BGP tra due peer BGP separati al di fuori di un IXP, oltre ad alcune funzionalità di sicurezza aggiuntive.

    Ad esempio, è buona pratica consentire il traffico solo da uno specifico indirizzo mac del partecipante IXP, che viene negoziato in anticipo. Negare il traffico con campi ethertype diversi da 0x0800(IPv4), 0x08dd(IPv6), 0x0806(ARP); questo viene fatto per filtrare il traffico che non appartiene al peering BGP. Possono essere utilizzati anche meccanismi come GTSM, RPKI, ecc.

Forse quanto sopra sono i componenti principali di qualsiasi IXP, indipendentemente dalla scala. Naturalmente, gli IXP più grandi potrebbero disporre di tecnologie e soluzioni aggiuntive.
Succede che IXP fornisce ai suoi partecipanti anche servizi aggiuntivi:

  • posizionato sul server DNS IXP TLD,
  • installare server NTP hardware, consentendo ai partecipanti di sincronizzare accuratamente l'ora,
  • fornire protezione contro attacchi DDoS, ecc.

Come funziona

Diamo un'occhiata al principio di funzionamento di un punto di scambio del traffico utilizzando l'esempio di un semplice IXP, modellato utilizzando EVE-NG, e quindi consideriamo la configurazione di base di un router software BIRD. Per semplificare il diagramma, ometteremo aspetti importanti come la ridondanza e la tolleranza agli errori.

La topologia della rete è mostrata nella figura seguente.

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Supponiamo di amministrare un piccolo punto di scambio e di fornire le seguenti opzioni di peering:

  • peering pubblico,
  • peering privato,
  • peering tramite route server.

Il nostro numero AS è 555, possediamo un blocco di indirizzi IPv4 – 50.50.50.0/24, da cui emettiamo indirizzi IP per coloro che vogliono connettersi alla nostra rete.

50.50.50.254 – Indirizzo IP configurato sull'interfaccia del server di routing, con questo i client IP stabiliranno una sessione BGP in caso di peering tramite RS.

Inoltre, per il peering tramite RS, abbiamo sviluppato una semplice policy di routing basata sulla comunità BGP, che consente ai partecipanti IXP di regolare a chi e quali percorsi inviare:

Comunità BGP
descrizione

LOCALE_AS:PEER_AS
Invia prefissi solo a PEER_AS

LOCALE_AS:IXP_AS
Trasferisci i prefissi a tutti i partecipanti IXP

3 clienti vogliono connettersi al nostro IXP e scambiare traffico; Diciamo che questi sono provider Internet. Vogliono tutti organizzare il peering attraverso un route server. Di seguito è riportato un diagramma con i parametri di connessione del client:

Cliente
Numero AS del cliente
Prefissi pubblicizzati dal cliente
Indirizzo IP rilasciato al client per connettersi all'IXP

ISP n. 1
AS 100
1.1.0.0/16
50.50.50.10/24

ISP n. 2
AS 200
2.2.0.0/16
50.50.50.20/24

ISP n. 3
AS 300
3.3.0.0/16
50.50.50.30/24

Configurazione BGP di base sul router client:

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

Vale la pena notare l'impostazione no bgp apply-first-as qui. Per impostazione predefinita, BGP richiede che il percorso as di un aggiornamento BGP ricevuto contenga il numero as bgp del peer da cui è stato ricevuto l'aggiornamento. Ma poiché il server di instradamento non apporta modifiche all'as-path, il suo numero non sarà presente nell'as-path e l'aggiornamento verrà scartato. Questa impostazione viene utilizzata per fare in modo che il router ignori questa regola.

Vediamo anche che il cliente ha impostato la comunità bgp 555:555 su questo prefisso, il che secondo la nostra politica significa che il cliente desidera pubblicizzare questo prefisso a tutti gli altri partecipanti.

Per i router di altri client, le impostazioni saranno simili, ad eccezione dei parametri univoci.

Esempio di configurazione BIRD:

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

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

Di seguito viene descritto un filtro che non accetta i prefissi marziani, così come i prefissi dell'IXP stesso:

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

Questa funzione implementa la politica di routing che abbiamo descritto in precedenza.

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;


}

Configuriamo il peering, applichiamo filtri e policy adeguate.

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

Vale la pena notare che su un route server è buona pratica inserire rotte da peer diversi in RIB diverse. BIRD ti consente di farlo. Nel nostro esempio, per semplicità, tutti gli aggiornamenti ricevuti da tutti i client vengono aggiunti in un RIB comune.

Quindi, controlliamo cosa abbiamo ottenuto.

Sul route server vediamo che è stata stabilita una sessione BGP con tutti e tre i client:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Vediamo che riceviamo prefissi da tutti i client:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Sul router as 100 vediamo che se c'è una sola sessione BGP con il route server, riceviamo prefissi sia da 200 che da 300, mentre gli attributi BGP non sono cambiati, come se il peering tra client fosse effettuato direttamente:

Punto di scambio di traffico: dalle origini alla creazione del proprio IX

Vediamo quindi che la presenza di un route server semplifica notevolmente l'organizzazione del peering sull'IXP.

Spero che questa dimostrazione ti abbia aiutato a capire meglio come funzionano gli IXP e come funziona il server di instradamento su un IXP.

Linxdatacenter IX

Al Linxdatacenter, abbiamo costruito il nostro IXP basato su un'infrastruttura tollerante ai guasti di 2 switch e 2 route server. Il nostro IXP è ora in esecuzione in modalità test e invitiamo tutti a connettersi a Linxdatacenter IX e prendere parte ai test. Una volta connesso, ti verrà fornita una porta con una larghezza di banda di 1 Gbit/s, la possibilità di peer attraverso i nostri route server, nonché l'accesso al tuo account personale del portale IX, disponibile su ix.linxdatacenter.com.

Scrivi nei commenti o nei messaggi privati ​​per avere accesso ai test.

conclusione

I punti di scambio del traffico sono nati agli albori di Internet come strumento per risolvere il problema del flusso di traffico non ottimale tra gli operatori di telecomunicazioni. Ora, con l'avvento di nuovi servizi globali e l'aumento della quantità di traffico CDN, i punti di scambio continuano a ottimizzare il funzionamento della rete globale. L’aumento del numero di IXP nel mondo avvantaggia sia l’utente finale del servizio che gli operatori di telecomunicazioni, operatori di contenuti, ecc. Per i partecipanti all'IXP, il vantaggio si esprime nella riduzione dei costi di organizzazione del peering esterno, nella riduzione della quantità di traffico per cui gli operatori di livello superiore devono pagare, nell'ottimizzazione del routing e nella capacità di avere un'interfaccia diretta con gli operatori di contenuti.

Link utili

Fonte: habr.com

Aggiungi un commento