
«Abbiamo stabilito una connessione telefonica 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»…Tuttavia, una rivoluzione era cominciata…
L'inizio di Internet.
Ciao a tutti!
Mi chiamo Alessandro, sono un ingegnere di rete presso Linxdatacenter. In questo articolo parlerò dei punti di interscambio del traffico (Internet Exchange Point, IXP): di ciò che ha preceduto la loro comparsa, quali problemi risolvono e come sono strutturati. Inoltre, in questo articolo dimostrerò il funzionamento di un IXP usando la piattaforma EVE-NG e il router software BIRD, in modo che si possa comprendere come funziona „sotto il cofano“.
Un po' di storia
Se guardiamo , possiamo notare che la rapida crescita del numero di punti di interscambio del traffico è iniziata nel 1993. Questo è dovuto al fatto che la maggior parte del traffico degli operatori esistenti all'epoca passava attraverso la rete backbone degli Stati Uniti. Ad esempio, quando il traffico andava da un operatore in Francia a un operatore in Germania, partiva dalla Francia, raggiungeva prima gli Stati Uniti, e solo dopo passava dalla rete americana alla Germania. La rete backbone fungeva così da transito tra Francia e Germania. Anche il traffico all'interno di un singolo paese spesso non viaggiava direttamente, ma attraverso le reti di operatori americani.
Questa situazione influiva non solo sul costo della consegna del traffico di transito, ma anche sulla qualità dei canali e sui ritardi. Il numero di utenti di Internet cresceva, comparivano nuovi operatori, il volume del traffico aumentava, l'internet stava maturando. Gli operatori di tutto il mondo cominciarono a capire che era necessario un approccio più razionale all'organizzazione dell'interazione tra operatori. «Perché dovrei, come operatore A, pagare per il transito attraverso un altro paese per consegnare il traffico all'operatore B, che si trova nella stessa strada?». Questa era più o meno la domanda che si ponevano gli operatori all'epoca. Così, in diverse parti del mondo, nei punti di concentrazione degli operatori iniziarono a sorgere punti di interscambio del traffico:
- 1994 – LINX a Londra,
- 1995 – DE-CIX a Francoforte,
- 1995 – MSK-IX, a Mosca e così via.
Internet e i nostri giorni
Concettualmente, l'architettura di internet moderno consiste in numerosi sistemi autonomi (autonomous system, AS) e molteplici collegamenti tra di essi, sia fisici che logici, che determinano il percorso di traffico da un AS all'altro.
Gli AS sono solitamente rappresentati da operatori di telecomunicazioni, provider internet, CDN, data center e aziende del segmento enterprise. Gli AS organizzano collegamenti logici (peering) tra di loro, generalmente utilizzando il protocollo BGP.
Il modo in cui i sistemi autonomi organizzano questi collegamenti è determinato da diversi fattori:
- geografici,
- economici,
- politici,
- accordi e interessi comuni tra i proprietari degli AS,
- ecc.
Certo, in questo schema c'è una certa struttura e gerarchia. Gli operatori sono suddivisi in tier-1, tier-2 e tier-3, e se i clienti di un provider internet locale (tier-3) sono generalmente utenti normali, ad esempio, per gli operatori di livello tier-1 i clienti sono altri operatori. Gli operatori tier-3 aggregano il traffico dei propri abbonati, gli operatori tier-2, a loro volta, aggregano il traffico degli operatori tier-3, mentre i tier-1 gestiscono tutto il traffico internet.
Schematicamente, questo può essere rappresentato così:

Nell'immagine qui sopra, si può vedere che il traffico viene aggregato dal basso verso l'alto, cioè dagli utenti finali agli operatori tier-1. Esiste anche uno scambio orizzontale di traffico tra AS più o meno equivalenti tra loro.
Un elemento imprescindibile e allo stesso tempo un difetto di questo schema è una certa disordinata connessione tra i sistemi autonomi situati più vicino all'utente finale, all'interno di una zona geografica. Consideriamo l'immagine qui sotto:

Supponiamo che in una grande città ci siano 5 operatori di telecomunicazioni, il peering tra i quali, per motivi diversi, è organizzato come mostrato sopra.
Se l'utente Petya, collegato al provider internet Go, desidera accedere a un server collegato al provider ASM, il traffico tra di loro dovrà passare attraverso 5 sistemi autonomi. In questo modo, aumenta la latenza, poiché aumenta il numero di dispositivi di rete attraverso cui passerà il traffico, nonché il volume del traffico di transito tra gli AS tra Go e ASM.
Come ridurre il numero di AS di transito che il traffico deve attraversare? Correttamente: punto di scambio del traffico.
Oggi, la nascita di nuovi IXP è dovuta agli stessi bisogni di un tempo, come agli inizi degli anni '90 e 2000, solo su scala più piccola, in risposta al crescente numero di operatori di telecomunicazioni, utenti e traffico, nonché alla quantità crescente di contenuti generati dalle reti CDN e dai data center.
Che cos'è un punto di scambio del traffico?
Un punto di scambio del traffico è un luogo con un'infrastruttura di rete speciale, dove i partecipanti interessati allo scambio reciproco di traffico organizzano il peer-to-peer reciproco. I principali partecipanti ai punti di scambio del traffico sono: operatori di telecomunicazioni, fornitori di servizi Internet, fornitori di contenuti e data center. Nei punti di scambio del traffico, i partecipanti si connettono direttamente tra loro. Questo consente di risolvere i seguenti problemi:
- ridurre la latenza,
- ridurre il traffico di transito,
- ottimizzare la routizzazione tra AS.
Considerando che gli IXP sono presenti in molte grandi città del mondo, questo ha un effetto positivo sulla rete Internet nel suo complesso.
Se si affronta la situazione sopra descritta con Petya utilizzando un IXP, il risultato sarà circa questo:

Come è strutturato un punto di scambio del traffico?
Di norma, l'IXP è una AS separata con il proprio blocco di indirizzi IPv4/IPv6 pubblici.
La rete IXP è spesso un dominio L2 continuo. A volte è semplicemente un VLAN, all'interno del quale sono collocati tutti i clienti dell'IXP. Quando si tratta di IXP più grandi, geograficamente distribuiti, si possono utilizzare tecnologie come MPLS, VXLAN, ecc. per organizzare un dominio L2.
Elementi dell'IXP
- SKS. Qui non c'è nulla di strano: rack, croci ottiche, pannelli patch.
- Switch – la base dell'IXP. La porta dello switch è il punto di ingresso nella rete IXP. Inoltre, gli switch svolgono parte delle funzioni di sicurezza: filtrano il traffico spazzatura che non dovrebbe essere presente nella rete IXP. Di norma, gli switch sono selezionati in base ai requisiti funzionali: affidabilità, velocità di porta supportata, funzioni di sicurezza, supporto per sFlow, ecc.
- Route server (RS) è una parte integrante e necessaria di qualsiasi moderno punto di interscambio del traffico. Per principio di funzionamento, assomiglia molto a un route reflector in iBGP o a un designated router in OSPF e risolve gli stessi problemi. Con l'aumento del numero di partecipanti al punto di interscambio del traffico, aumenta il numero di sessioni BGP che ogni partecipante deve mantenere, il che ricorda la classica topologia full-mesh in iBGP. RS risolve il problema nel seguente modo: stabilisce una sessione BGP con ogni partecipante interessato all'IXP, e quell'ultimo diventa cliente di RS. Ricevendo un aggiornamento BGP da uno dei suoi clienti, RS invia questo aggiornamento a tutti gli altri suoi clienti, ovviamente, tranne a quello da cui ha ricevuto l'aggiornamento. In questo modo, RS elimina la necessità di stabilire un full-mesh tra tutti i partecipanti dell'IXP e risolve elegantemente il problema della scalabilità. È importante notare che il server di routing trasmette in modo trasparente le rotte da un AS all'altro, senza apportare modifiche agli attributi BGP trasmessi, ad esempio non aggiunge il numero del proprio AS nell'AS-path. Inoltre, su RS avviene una filtrazione di base delle rotte: ad esempio, RS non accetta reti martiane e prefissi dello stesso IXP.
Come soluzione, il route server utilizza spesso un router software open source – BIRD (bird internet routing daemon). È vantaggioso perché è gratuito, si implementa rapidamente sulla maggior parte delle distribuzioni Linux, ha un meccanismo di configurazione flessibile per le politiche di routing/filtraggio e non è esigente in termini di risorse di calcolo. Inoltre, come RS, può essere scelto anche un router hardware/virtuale di Cisco, Juniper, ecc.
- Sicurezza. Poiché la rete IXP è una concentrazione di un gran numero di AS, anche la politica di sicurezza, che tutti i partecipanti devono seguire, deve essere ben definita. Di solito, tutti gli stessi meccanismi che si applicano per stabilire una vicinanza BGP tra due singoli BGP peers al di fuori dell'IXP, vengono applicati anche qui, e vengono utilizzati anche alcuni strumenti di protezione aggiuntivi.
Ad esempio, una buona pratica è quella di consentire il traffico solo da un determinato indirizzo mac dei partecipanti IXP, concordato in anticipo. È vietato il traffico con campi ethertype diversi da 0x0800 (IPv4), 0x08dd (IPv6), 0x0806 (ARP); ciò è fatto per filtrare il traffico che non ha spazio durante il peer BGP. Possono essere applicati anche meccanismi come GTSM, RPKI, ecc.
Probabilmente, quanto sopra elencato rappresenta i principali componenti di qualsiasi IXP, indipendentemente dalle dimensioni. Certamente, negli IXP più grandi possono essere utilizzate tecnologie e soluzioni aggiuntive.
Talvolta, gli IXP offrono ai propri partecipanti servizi aggiuntivi:
- ospitando sui server DNS TLD di IXP,
- installando server NTP hardware, consentendo ai partecipanti di sincronizzare il tempo con precisione,
- fornendo protezione contro attacchi DDoS, ecc.
Il principio di funzionamento
Analizziamo il funzionamento di un punto di scambio di traffico, utilizzando come esempio un semplice IXP modellato con EVE-NG, e poi consideriamo la configurazione base di un router software BIRD. Per semplificare lo schema, tralasceremo elementi importanti come la ridondanza e la resilienza.
La topologia della rete è mostrata nella figura sottostante.

Supponiamo di amministrare un piccolo punto di scambio di traffico e di offrire le seguenti opzioni di peer:
- peer pubblico,
- peer privato,
- peer tramite route server.
Il numero del nostro AS è 555, possediamo un blocco di indirizzi IPv4 – 50.50.50.0/24, dal quale assegnamo indirizzi IP a coloro che desiderano collegarsi alla nostra rete.
50.50.50.254 è l’indirizzo IP configurato sull’interfaccia del route server; con questo IP, i clienti stabiliranno una sessione BGP in caso di peer tramite RS.
Inoltre, per il peer tramite RS, abbiamo sviluppato una semplice politica di routing basata sulla community BGP, che consente ai partecipanti dell'IXP di controllare a chi e quali percorsi inviare:
community BGP
Descrizione
LOCAL_AS:PEER_AS
Trasmetti prefissi solo a PEER_AS
LOCAL_AS:IXP_AS
Trasmetti prefissi a tutti i partecipanti dell'IXP
Tre clienti desiderano collegarsi al nostro IXP e scambiare traffico; supponiamo siano provider internet. Tutti loro intendono organizzare il peer tramite route server. Di seguito sono presentati lo schema con i parametri di connessione dei clienti:
Cliente
Numero AS del cliente
Prefissi annunciati dal cliente
indirizzo ip assegnato al cliente per collegarsi all'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
Configurazione base di BGP sul router del cliente:
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
È importante notare la configurazione no bgp enforce-first-as. Per impostazione predefinita, BGP richiede che nel as-path dell'aggiornamento BGP ricevuto sia presente il numero AS del peer BGP dal quale è stato ricevuto l'aggiornamento. Tuttavia, poiché il route server non modifica l'as-path, il suo numero sarà assente dall'as-path e l'aggiornamento verrà scartato. Questa configurazione viene applicata affinché il router inizi a ignorare questa regola.
Vediamo anche che il cliente ha impostato la community BGP 555:555 su questo prefisso, il che secondo la nostra politica significa che il cliente desidera annunciare questo prefisso a tutti gli altri partecipanti.
Per i router degli altri clienti, la configurazione sarà simile, ad eccezione dei loro parametri unici.
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;
}
Segue la descrizione di un filtro che non accetta prefissi martiani e i prefissi stessi dell'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;
}
Questa funzione implementa la politica di instradamento 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, applicando i filtri e le politiche appropriate.
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;
}
}
È importante notare che su un route server è buona norma collocare le rotte provenienti da diversi peer in RIB separate. BIRD consente di farlo. Nel nostro esempio, per semplificare, tutti gli aggiornamenti ricevuti da tutti i clienti vengono collocati in un'unica RIB comune.
Quindi, verifichiamo cosa abbiamo ottenuto.
Sul server route vediamo che con tutti e tre i clienti è stata stabilita una sessione BGP:

Vediamo che riceviamo prefissi da tutti i clienti:

Sul router as 100 vediamo che con una sola sessione BGP con il server route, riceviamo prefissi sia da as 200 che da as 300, mentre gli attributi BGP non sono cambiati, come se il peering tra i clienti avvenisse direttamente:

Pertanto vediamo che avere un server route semplifica notevolmente l'organizzazione del peering su IXP.
Spero che questa dimostrazione ti abbia aiutato a comprendere meglio come sono organizzati i punti di scambio del traffico e come funziona un server route su IXP.
Linxdatacenter IX
In Linxdatacenter abbiamo costruito la nostra IXP basata su un'infrastruttura autonoma costituita da 2 switch e 2 server route. Attualmente la nostra IXP è in fase di test e invitiamo tutti coloro che lo desiderano a collegarsi a Linxdatacenter IX e partecipare ai test. Collegandovi, vi verrà fornita una porta con una larghezza di banda di 1 Gbit/s, la possibilità di peering attraverso i nostri server route e l'accesso alla bacheca personale dell'IX portal, disponibile all'indirizzo .
Scrivete nei commenti o in messaggi privati per ottenere accesso al test.
Conclusione
I punti di scambio del traffico sono nati agli albori di Internet come strumento per risolvere la questione del passaggio non ottimale del traffico tra gli operatori di telecomunicazione. Ora, con l'emergere 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 porta beneficio sia per l'utente finale del servizio che per gli operatori di telecomunicazioni, gli operatori di contenuti, ecc. Per i partecipanti agli IXP, il vantaggio si traduce in una riduzione delle spese per l'organizzazione di peering esterni, nella diminuzione della quantità di traffico per cui si deve pagare agli operatori superiori, nell'ottimizzazione della rotta e nella possibilità di avere un collegamento diretto con gli operatori di contenuti.
Link utili
- Guarda la mappa dei punti di scambio del traffico:
- Guarda le statistiche dettagliate sul peering BGP, inclusa la presenza su IXP:
Fonte: habr.com
