Punkt wymiany ruchu: od początków do stworzenia własnego IX

Punkt wymiany ruchu: od początków do stworzenia własnego IX

„Ustanowiliśmy połączenie telefoniczne między nami a facetami z SRI…”, powiedział Kleinrock w wywiadzie:
„Wpisaliśmy L i zapytaliśmy przez telefon: „Czy widzicie L?”
„Tak, widzimy L,” brzmiała odpowiedź.
„Wpisaliśmy O i zapytaliśmy: „Czy widzicie O?”
„Tak, widzimy O.”
„Wtedy wpisaliśmy G, a system się zawiesił”...

Jednak rewolucja się rozpoczęła...

Początek internetu.


Cześć wszystkim!

Nazywam się Aleksander, jestem inżynierem sieciowym w firmie Linxdatacenter. W dzisiejszym artykule omówię punkty wymiany ruchu (Internet Exchange Point, IXP): to, co je poprzedzało, jakie zadania rozwiązują i jak są zbudowane. W artykule zaprezentuję także zasady działania IXP przy użyciu platformy EVE-NG i programowego routera BIRD, aby lepiej zrozumieć, jak to działa „pod maską”.

Historia

Jeśli spojrzeć tutaj, można zauważyć, że gwałtowny wzrost liczby punktów wymiany ruchu rozpoczął się w 1993 roku. Jest to związane z tym, że większość ruchu istniejących wówczas operatorów łączności przechodziła przez sieć backbone w USA. Na przykład, gdy ruch szedł od operatora we Francji do operatora w Niemczech, najpierw trafiał do USA, a potem z USA do Niemiec. W tym przypadku sieć backbone pełniła rolę tranzytu między Francją a Niemcami. Nawet ruch w obrębie jednego kraju często nie przebiegał bezpośrednio, ale przez sieci szkieletowe amerykańskich operatorów.

Taka sytuacja wpływała nie tylko na koszty dostawy ruchu tranzytowego, ale również na jakość kanałów i opóźnienia. Liczba użytkowników internetu rosła, pojawiały się nowi operatorzy, a wolumen ruchu wzrastał, internet dojrzewał. Operatorzy na całym świecie zaczęli rozumieć, że potrzebne jest bardziej racjonalne podejście do organizacji współpracy międzyoperatorowej. „Dlaczego mam, jako operator A, płacić za tranzyt przez inny kraj, aby dostarczyć ruch operatorowi B, który znajduje się na sąsiedniej ulicy?”. Przykładnie takie pytania zadawali sobie operatorzy łączności w tamtym czasie. Tak więc, w różnych częściach świata w punktach koncentracji operatorów zaczęły pojawiać się punkty wymiany ruchu:

  • 1994 – LINX w Londynie,
  • 1995 – DE-CIX we Frankfurcie,
  • 1995 – MSK-IX w Moskwie itd.

Internet i nasze czasy

Z koncepcyjnego punktu widzenia, architektura współczesnego internetu składa się z wielu autonomicznych systemów (autonomous system, AS) oraz licznych powiązań między nimi, zarówno fizycznych, jak i logicznych, które określają drogę przechodzi tą przez ruch od jednego AS do drugiego.

AS zazwyczaj reprezentują operatorzy telekomunikacyjni, dostawcy internetu, sieci CDN, centra danych, firmy z segmentu przedsiębiorstw. AS organizują związki logiczne (peering) między sobą, na ogół przy pomocy protokołu BGP.

To, jak autonomiczne systemy organizują te powiązania, zależy od wielu czynników:

  • geograficznych,
  • ekonomicznych,
  • politycznych,
  • układów i wspólnych interesów między właścicielami AS,
  • itd.

Oczywiście, w tej schemacie istnieje pewna struktura i hierarchia. Operatorzy dzielą się na tier-1, tier-2 i tier-3, a jeśli klientami londyńskiego dostawcy internetu (tier-3) są zazwyczaj zwykli użytkownicy, to dla operatorów tier-1, klientami są inni operatorzy. Operatorzy tier-3 agregują ruch swoich abonentów, operatorzy tier-2, z kolei, agregują ruch operatorów tier-3, a tier-1 - cały ruch internetowy.

Schematycznie można to przedstawić tak:

Punkt wymiany ruchu: od początków do stworzenia własnego IX
Na powyższym obrazku widać, że ruch agreguje się od dołu do góry, tzn. od użytkowników końcowych do operatorów tier-1. Ma też miejsce pozioma wymiana ruchu między mniej więcej równorzędnymi AS.

Niezaprzeczalną częścią oraz jednocześnie niedogodnością tej schemy jest pewna chaotyczność powiązań między autonomicznymi systemami, które znajdują się bliżej użytkowników końcowych, w obrębie strefy geograficznej. Rozważmy poniższy obrazek:

Punkt wymiany ruchu: od początków do stworzenia własnego IX

Załóżmy, że w dużym mieście działa 5 operatorów telekomunikacyjnych, a peering między nimi jest zorganizowany, z różnych powodów, jak pokazano powyżej.

Jeśli użytkownik Petya, podłączony do dostawcy internetu Go, zechce uzyskać dostęp do serwera połączonego z dostawcą ASM, to ruch między nimi będzie musiał przejść przez 5 autonomicznych systemów. W związku z tym zwiększa się opóźnienie, ponieważ wzrasta liczba urządzeń sieciowych, przez które przechodzi ruch, a także objętość ruchu tranzytowego w autonomicznych systemach między Go i ASM.

Jak zmniejszyć liczbę tranzytowych AS, przez które musi przechodzić ruch? Dokładnie – punkt wymiany ruchu.

W dzisiejszych czasach pojawienie się nowych IXP jest spowodowane tymi samymi potrzebami, co na początku lat 90-2000, tylko w mniejszej skali, w odpowiedzi na rosnącą liczbę operatorów komunikacyjnych, użytkowników i ruchu, a także rosnącą ilość treści generowanej przez sieci CDN i centra danych.

Co to jest punkt wymiany ruchu?

Punkt wymiany ruchu to miejsce z specjalną infrastrukturą sieciową, w którym zainteresowani wzajemnym wymianą ruchu uczestnicy organizują mutualny peering. Głównymi uczestnikami punktów wymiany ruchu są: operatorzy komunikacyjni, dostawcy usług internetowych, dostawcy treści i centra danych. W punktach wymiany ruchu uczestnicy łączą się bezpośrednio. Pozwala to rozwiązać następujące zadania:

  • zmniejszenie opóźnienia,
  • ograniczenie ilości ruchu tranzytowego,
  • optymalizację routingu między AS.

Biorąc pod uwagę, że IXP są obecne w wielu dużych miastach na całym świecie, przynosi to korzyści także dla sieci Internet w ogóle.

Jeśli opisaną powyżej sytuację z Petą rozwiązać przy użyciu IXP, to będzie to wyglądać mniej więcej tak:

Punkt wymiany ruchu: od początków do stworzenia własnego IX

Jak jest zorganizowany punkt wymiany ruchu?

Zwykle IXP to oddzielna AS z własnym blokiem publicznych adresów IPv4/IPv6.

Sieć IXP najczęściej stanowi ciągły domenowy L2. Czasami jest to po prostu VLAN, w którym znajdują się wszyscy klienci IXP. Kiedy mówimy o większych, geograficznie rozproszonych IXP, do organizacji domeny L2 mogą być wykorzystywane takie technologie, jak MPLS, VXLAN itd.

Elementy IXP

  • SKS. Nie ma tu nic nadzwyczajnego: stojaki, optyczne przełącznice, panele krosowe.
  • Przełączniki – podstawa IXP. Port przełącznika to punkt wejścia do sieci IXP. Przełączniki pełnią także część funkcji bezpieczeństwa – filtrują śmieciowy ruch, który nie powinien znajdować się w sieci IXP. Zazwyczaj przełączniki są dobierane na podstawie wymagań funkcjonalnych – niezawodność, obsługiwana prędkość portów, funkcje bezpieczeństwa, wsparcie dla sFlow itd.
  • Serwer routingu (RS) – nieodłączna i niezbędna część każdej nowoczesnej wymiany ruchu. Zasadniczo działa bardzo podobnie do route reflectora w iBGP lub designated routera w OSPF i rozwiązuje te same problemy. W miarę wzrostu liczby uczestników wymiany ruchu, zwiększa się liczba sesji BGP, które każdy z uczestników musi utrzymywać, co przypomina klasyczną topologię full-mesh w iBGP. RS rozwiązuje problem w następujący sposób: ustanawia sesję BGP z każdym zainteresowanym uczestnikiem IXP, który staje się klientem RS. Odbierając aktualizację BGP od jednego ze swoich klientów, RS przesyła tę aktualizację wszystkim pozostałym swoim klientom, oczywiście z wyjątkiem tego, od którego ta aktualizacja została otrzymana. W ten sposób, RS eliminuje potrzebę ustanawiania full-mesh między wszystkimi uczestnikami IXP i w elegancki sposób rozwiązuje problem skalowalności. Warto zauważyć, że serwer tras promiennie przekazuje trasy z jednej AS do drugiej, nie wprowadzając zmian w przekazywanych atrybutach BGP, np. nie dodaje swojego numeru AS do AS-path. Na RS zachodzi również podstawowa filtracja tras: na przykład, RS nie akceptuje sieci martian oraz prefiksów samego IXP.

    Jako rozwiązanie serwera tras często używany jest programowy router z otwartym źródłem – BIRD (bird internet routing daemon). Jest dobry, ponieważ jest bezpłatny, szybko się wdraża na większości dystrybucji linuksowych, ma elastyczny mechanizm konfigurowania polityk trasowania/filtracji, a także nie jest wymagający pod względem zasobów obliczeniowych. Można również wybrać jako RS sprzętowy/wirtualny router Cisco, Juniper itd.

  • Bezpieczeństwo. Ponieważ sieć IXP jest koncentracją dużej liczby AS, polityka bezpieczeństwa, której muszą przestrzegać wszyscy uczestnicy, powinna być dobrze opracowana. Zazwyczaj te same mechanizmy, które stosuje się przy ustanawianiu sąsiedztwa BGP między dwoma pojedynczymi BGP peerami poza IXP, stosuje się także tutaj, a także wykorzystuje się kilka dodatkowych środków ochrony.

    Na przykład, dobrą praktyką jest przepuszczanie ruchu tylko z określonego adresu MAC uczestnika IXP, który jest omawiany z wyprzedzeniem. Zatrzymanie ruchu z polami ethertype różniącymi się od 0x0800 (IPv4), 0x08dd (IPv6), 0x0806 (ARP); ma to na celu przefiltrowanie ruchu, który nie ma miejsca w przypadku peeringu BGP. Mogą być również stosowane takie mechanizmy jak GTSM, RPKI itp.

Z pewnością, wymienione powyżej są głównymi składnikami każdego IXP, niezależnie od jego skali. Oczywiście większe IXP mogą stosować dodatkowe technologie i rozwiązania.
Czasami IXP oferuje swoim uczestnikom dodatkowe usługi:

  • umieszczają na IXP serwery DNS TLD,
  • instalują sprzętowe serwery NTP, dając uczestnikom możliwość dokładnej synchronizacji czasu,
  • oferują ochronę przed atakami DDoS itp.

Zasada działania

Zbadajmy zasadę działania punktu wymiany ruchu na przykładzie najprostszej IXP, modelowanej z użyciem EVE-NG, a następnie omówimy podstawową konfigurację programowego routera BIRD. Dla uproszczenia schematu pominimy tak ważne aspekty, jak redundancja i odporność na awarie.

Topologia sieci przedstawiona jest na poniższym rysunku.

Punkt wymiany ruchu: od początków do stworzenia własnego IX

Załóżmy, że zarządzamy małym punktem wymiany ruchu i oferujemy następujące opcje peeringu:

  • publiczny peering,
  • prywatny peering,
  • peering przez serwer routingu.

Numer naszej AS to 555, posiadamy blok adresów IPv4 – 50.50.50.0/24, z którego przydzielamy adresy IP dla chętnych do podłączenia się do naszej sieci.

50.50.50.254 – adres IP skonfigurowany na interfejsie serwera routingu, za pomocą tego adresu klienci będą nawiązywać sesję BGP w przypadku peeringu przez RS.

Również dla peeringu przez RS opracowaliśmy najprostsze polityki routingu oparte na BGP community, które pozwalają uczestnikom IXP regulować, do kogo i jakie trasy wysyłać:

BGP community
Opis

LOCAL_AS:PEER_AS
Przesłać prefiksy tylko do PEER_AS

LOCAL_AS:IXP_AS
Przesłać prefiksy do wszystkich uczestników IXP

Do naszego IXP chcą podłączyć się i wymienić ruch 3 klienci; załóżmy, że są to dostawcy internetowi. Wszyscy oni chcą zorganizować peering przez serwer routingu. Poniżej przedstawiona jest schemat z parametrami podłączenia klientów:

Klient
Numer AS klienta
Ogłaszane przez klienta prefiksy
adres IP przydzielony klientowi do podłączenia się do 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

Podstawowa konfiguracja BGP na routerze klienta:

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

Warto zwrócić uwagę na ustawienie no bgp enforce-first-as. Domyślnie BGP wymaga, aby w ścieżce AS przychodzącej aktualizacji BGP był obecny numer AS peera BGP, od którego ta aktualizacja została otrzymana. Ponieważ jednak serwer routingu nie wprowadza zmian w ścieżce AS, jego numer nie będzie obecny w ścieżce AS, co spowoduje odrzucenie aktualizacji. To ustawienie jest stosowane, aby router zaczął ignorować tę regułę.

Zauważamy także, że klient ustawił społeczność BGP 555:555 dla tego prefiksu, co według naszej polityki oznacza, że klient chce ogłosić ten prefiks wszystkim innym uczestnikom.

Dla routerów pozostałych klientów ustawienie będzie podobne z wyjątkiem ich unikalnych parametrów.

Przykład konfiguracji BIRD:

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

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

Następnie opisany jest filtr, który nie akceptuje prefiksów martians, a także prefiksów samej 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;
}

Ta funkcja wdraża politykę routingu, którą opisaliśmy wcześniej.

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;


}

Ustawiamy peerowanie, stosując odpowiednie filtry i polityki.

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

Warto zauważyć, że na serwerze routingu dobrze jest grupować trasy od różnych peerów w różne RIB. BIRD umożliwia to. W naszym przykładzie dla uproszczenia wszystkie aktualizacje odebrane od wszystkich klientów są grupowane w jedną wspólną RIB.

Zatem sprawdźmy, co udało nam się osiągnąć.

Na serwerze route widzimy, że z wszystkimi trzema klientami ustanowiona jest sesja BGP:

Punkt wymiany ruchu: od początków do stworzenia własnego IX

Widzimy, że otrzymujemy prefiksy od wszystkich klientów:

Punkt wymiany ruchu: od początków do stworzenia własnego IX

Na routerze as 100 widzimy, że przy jednej sesji BGP z serwerem tras, otrzymujemy prefiksy zarówno z as 200, jak i z as 300, a atrybuty BGP nie zmieniły się, jakby peering między klientami odbywał się bezpośrednio:

Punkt wymiany ruchu: od początków do stworzenia własnego IX

W ten sposób widzimy, że obecność serwera tras znacząco upraszcza organizację peeringu na IXP.

Mam nadzieję, że ta demonstracja pomogła Ci lepiej zrozumieć, jak działają punkty wymiany ruchu i jak działa serwer tras na IXP.

Linxdatacenter IX

W Linxdatacenter stworzyliśmy własny IXP na bazie odpornej infrastruktury składającej się z 2 switchy i 2 serwerów route. Obecnie nasz IXP działa w trybie testowym, zapraszamy wszystkich chętnych do podłączenia się do Linxdatacenter IX i udziału w testach. Przy podłączeniu otrzymasz port o przepustowości 1 Gbit/s, możliwość peeringu przez nasze serwery route oraz dostęp do panelu IX, dostępnego pod adresem ix.linxdatacenter.com.

Napisz w komentarzach lub wiadomościach prywatnych, aby uzyskać dostęp do testów.

Wnioski

Punkty wymiany ruchu powstały na początku internetu jako narzędzie rozwiązywania problemu nieoptymalnego przechodzenia ruchu między operatorami telekomunikacyjnymi. Obecnie, wraz z pojawieniem się nowych globalnych usług i rosnącą ilością ruchu CDN, punkty wymiany wciąż optymalizują działanie globalnej sieci. Wzrost liczby IXP na świecie przynosi korzyści zarówno końcowemu użytkownikowi usługi, jak i operatorom telekomunikacyjnym, operatorom treści itd. Dla uczestników IXP korzyści wyrażają się w obniżeniu kosztów organizacji zewnętrznych peeringów, zmniejszeniu ilości ruchu, za który trzeba płacić wyższym operatorom, optymalizacji routingu oraz możliwości posiadania bezpośredniego połączenia z operatorami treści.

Przydatne linki

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster