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 chłopakami z SRI…”, Kleinrock… powiedział w wywiadzie:
„Wpisaliśmy literę L i zapytaliśmy przez telefon: „Widzisz literę L?”
„Tak, widzimy L” – brzmiała odpowiedź.
„Wpisaliśmy O i zapytaliśmy: „Czy widzisz O.”
„Tak, widzimy O.”
„Następnie wpisaliśmy G i system się zawiesił”…

A jednak rozpoczęła się rewolucja…

Początek Internetu.


Witam wszystkich!

Nazywam się Alexander i jestem inżynierem sieciowym w Linxdatacenter. W dzisiejszym artykule porozmawiamy o punktach wymiany ruchu (Internet Exchange Points, IXP): co poprzedziło ich pojawienie się, jakie zadania rozwiązują i jak są zbudowane. Również w tym artykule zademonstruję zasadę działania IXP z wykorzystaniem platformy EVE-NG i routera programowego BIRD, abyś wiedział, jak to działa „od kuchni”.

Trochę historii

Jeśli spojrzysz tutaj, widać, że szybki wzrost liczby punktów wymiany ruchu rozpoczął się w 1993 roku. Wynika to z faktu, że większość ruchu ówczesnych operatorów telekomunikacyjnych przechodziła przez amerykańską sieć szkieletową. I tak na przykład, gdy ruch szedł od operatora we Francji do operatora w Niemczech, najpierw płynął z Francji do USA, a dopiero potem z USA do Niemiec. Sieć szkieletowa pełniła w tym przypadku rolę tranzytu pomiędzy Francją a Niemcami. Nawet ruch w obrębie jednego kraju często odbywał się nie bezpośrednio, ale poprzez sieci szkieletowe amerykańskich operatorów.

Taki stan rzeczy wpłynął nie tylko na koszty realizacji ruchu tranzytowego, ale także na jakość kanałów i opóźnienia. Zwiększyła się liczba użytkowników Internetu, pojawili się nowi operatorzy, wzrósł wolumen ruchu, a Internet dojrzał. Operatorzy na całym świecie zaczęli zdawać sobie sprawę, że potrzebne jest bardziej racjonalne podejście do organizacji interakcji między operatorami. „Dlaczego ja, operator A, mam płacić za tranzyt przez inny kraj, aby zapewnić ruch operatorowi B, który znajduje się na sąsiedniej ulicy?” To mniej więcej pytanie zadawali sobie wówczas operatorzy telekomunikacyjni. Tym samym 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 itp.

Internet i nasze dni

Koncepcyjnie architektura współczesnego Internetu składa się z wielu systemów autonomicznych (AS) i wielu połączeń między nimi, zarówno fizycznych, jak i logicznych, które wyznaczają ścieżkę ruchu z jednego AS do drugiego.

AS to zazwyczaj operatorzy telekomunikacyjni, dostawcy Internetu, CDN, centra danych i firmy z segmentu przedsiębiorstw. AS organizują między sobą połączenia logiczne (peering), zwykle przy użyciu protokołu BGP.

Sposób, w jaki systemy autonomiczne organizują te połączenia, zależy od wielu czynników:

  • geograficzny,
  • gospodarczy,
  • polityczny,
  • porozumienia i wspólne interesy pomiędzy właścicielami AS,
  • itd.

Oczywiście ten schemat ma określoną strukturę i hierarchię. Tym samym operatorzy dzielą się na tier-1, tier-2 i tier-3 i jeśli klientami lokalnego dostawcy Internetu (tier-3) są z reguły zwykli użytkownicy, to np. operatorzy poziomu klientami są inni operatorzy. Operatorzy Tier-1 agregują ruch swoich abonentów, Tier-3 operatorzy telekomunikacyjni agregują z kolei ruch operatorów Tier-2, zaś Tier-3 – cały ruch internetowy.

Schematycznie można to przedstawić w następujący sposób:

Punkt wymiany ruchu: od początków do stworzenia własnego IX
Na tym zdjęciu widać, że ruch jest agregowany od dołu do góry, tj. od użytkowników końcowych po operatorów poziomu 1. Istnieje również pozioma wymiana ruchu pomiędzy systemami AS, które są w przybliżeniu sobie równoważne.

Integralną częścią, a jednocześnie wadą tego schematu, jest pewne pomieszanie połączeń pomiędzy systemami autonomicznymi, zlokalizowanymi bliżej użytkownika końcowego, w obrębie określonego obszaru geograficznego. Rozważ poniższy obrazek:

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

Załóżmy, że w dużym mieście jest 5 operatorów telekomunikacyjnych, pomiędzy którymi z tego czy innego powodu jest zorganizowanych jak pokazano powyżej.

Jeśli użytkownik Petya podłączony do dostawcy Go ISP będzie chciał uzyskać dostęp do serwera podłączonego do dostawcy ASM, wówczas ruch między nimi będzie zmuszony przejść przez 5 autonomicznych systemów. Zwiększa to opóźnienie, ponieważ wzrasta liczba urządzeń sieciowych, przez które będzie przebiegał ruch, a także wolumen ruchu tranzytowego w systemach autonomicznych pomiędzy Go a ASM.

Jak zmniejszyć liczbę tranzytowych AS, przez które zmuszony jest przechodzić ruch? Zgadza się – punkt wymiany ruchu.

Dziś pojawienie się nowych IXP napędzane jest tymi samymi potrzebami, co na początku lat 90-2000, tyle że na mniejszą skalę, w odpowiedzi na rosnącą liczbę operatorów telekomunikacyjnych, użytkowników i ruch, rosnącą ilość treści generowanych przez sieci CDN i centra danych.

Co to jest punkt wymiany?

Punkt wymiany ruchu to miejsce posiadające specjalną infrastrukturę sieciową, w którym uczestnicy zainteresowani wzajemną wymianą ruchu organizują wzajemne peeringi. Główni uczestnicy punktów wymiany ruchu: operatorzy telekomunikacyjni, dostawcy Internetu, dostawcy treści i centra danych. W punktach wymiany ruchu uczestnicy łączą się bezpośrednio ze sobą. Pozwala to rozwiązać następujące problemy:

  • zmniejszyć opóźnienia,
  • zmniejszyć natężenie ruchu tranzytowego,
  • zoptymalizuj routing pomiędzy AS.

Biorąc pod uwagę, że IXP są obecne w wielu dużych miastach na całym świecie, wszystko to ma korzystny wpływ na Internet jako całość.

Jeśli powyższa sytuacja z Petyą zostanie rozwiązana za pomocą IXP, okaże się mniej więcej tak:

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

Jak działa punkt wymiany ruchu?

Z reguły IXP jest oddzielnym systemem AS z własnym blokiem publicznych adresów IPv4/IPv6.

Sieć IXP składa się najczęściej z ciągłej domeny L2. Czasami jest to po prostu sieć VLAN obsługująca wszystkich klientów IXP. Jeśli chodzi o większe, rozproszone geograficznie IXP, do zorganizowania domeny L2 można zastosować technologie takie jak MPLS, VXLAN itp.

Elementy IXP

  • SKS. Nie ma tu nic niezwykłego: racki, krosownice optyczne, patch panele.
  • Przełączniki – podstawa IXP. Port przełącznika jest punktem wejścia do sieci IXP. Przełączniki realizują także część funkcji bezpieczeństwa – filtrują niechciany ruch, który nie powinien występować w sieci IXP. Z reguły przełączniki dobierane są na podstawie wymagań funkcjonalnych - niezawodności, obsługiwanych prędkości portów, funkcji bezpieczeństwa, obsługi sFlow itp.
  • Serwer tras (RS) – integralna i niezbędna część każdego nowoczesnego punktu wymiany ruchu. Zasada działania jest bardzo podobna do reflektora trasy w iBGP lub wyznaczonego routera w OSPF i rozwiązuje te same problemy. Wraz ze wzrostem liczby uczestników punktu wymiany ruchu wzrasta liczba sesji BGP, które każdy uczestnik musi obsłużyć, tj. przypomina to klasyczną topologię pełnej siatki w iBGP. RS rozwiązuje problem w następujący sposób: z każdym zainteresowanym uczestnikiem IXP nawiązuje sesję BGP, a uczestnik ten staje się klientem RS. Otrzymując aktualizację BGP od jednego ze swoich klientów, RS wysyła tę aktualizację do wszystkich pozostałych swoich klientów, oczywiście z wyjątkiem tego, od którego otrzymano tę aktualizację. W ten sposób RS eliminuje potrzebę tworzenia pełnej siatki pomiędzy wszystkimi członkami IXP i elegancko rozwiązuje problem skalowalności. Warto zauważyć, że serwer tras w przejrzysty sposób przesyła trasy z jednego AS do drugiego, nie dokonując zmian w atrybutach przesyłanych przez BGP, np. nie dodaje numeru ze swojego AS do ścieżki AS. Również na RS istnieje podstawowe filtrowanie tras: na przykład RS nie akceptuje sieci marsjańskich i prefiksów samego IXP.

    Jako rozwiązanie serwera tras często używany jest router programowy typu open source, BIRD (demon routingu internetowego ptaka). Dobrą rzeczą jest to, że jest bezpłatny, można go szybko wdrożyć w większości dystrybucji Linuksa, ma elastyczny mechanizm konfigurowania zasad routingu/filtrowania i nie wymaga zasobów obliczeniowych. Jako RS można także wybrać router sprzętowy/wirtualny firmy Cisco, Juniper itp.

  • Bezpieczeństwa. Ponieważ sieć IXP jest skupiskiem dużej liczby systemów AS, polityka bezpieczeństwa, której muszą przestrzegać wszyscy uczestnicy, musi być dobrze napisana. Ogólnie rzecz biorąc, obowiązują tutaj wszystkie te same mechanizmy, które obowiązują podczas ustanawiania przylegania BGP pomiędzy dwoma oddzielnymi peerami BGP poza IXP, plus kilka dodatkowych funkcji bezpieczeństwa.

    Na przykład dobrą praktyką jest zezwolenie na ruch tylko z określonego adresu MAC uczestnika IXP, który jest wcześniej negocjowany. Odmawianie ruchu z polami typu Ethernet innymi niż 0x0800(IPv4), 0x08dd(IPv6), 0x0806(ARP); ma to na celu odfiltrowanie ruchu, który nie należy do peeringu BGP. Można również zastosować mechanizmy takie jak GTSM, RPKI itp.

Być może powyższe są głównymi składnikami każdego IXP, niezależnie od skali. Oczywiście większe IXP mogą posiadać dodatkowe technologie i rozwiązania.
Zdarza się, że IXP zapewnia swoim uczestnikom także dodatkowe usługi:

  • umieszczone na serwerze DNS IXP TLD,
  • zainstalować sprzętowe serwery NTP, umożliwiające uczestnikom dokładną synchronizację czasu,
  • zapewniają ochronę przed atakami DDoS itp.

Zasada działania

Przyjrzyjmy się zasadzie działania punktu wymiany ruchu na przykładzie prostego IXP, modelowanego przy użyciu EVE-NG, a następnie rozważmy podstawową konfigurację routera programowego BIRD. Aby uprościć diagram, pominiemy tak ważne rzeczy, jak redundancja i tolerancja błędów.

Topologię sieci pokazano na poniższym rysunku.

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

Załóżmy, że administrujemy małym punktem wymiany i udostępniamy następujące opcje peeringu:

  • publiczne podglądanie,
  • prywatny peering,
  • peering poprzez serwer tras.

Nasz numer AS to 555, posiadamy blok adresów IPv4 – 50.50.50.0/24, z którego nadajemy adresy IP osobom chcącym połączyć się z naszą siecią.

50.50.50.254 – adres IP skonfigurowany w interfejsie serwera tras, przy użyciu tego adresu IP klienci ustanowią sesję BGP w przypadku peeringu przez RS.

Ponadto dla peeringu przez RS opracowaliśmy prostą politykę routingu opartą na społeczności BGP, która pozwala uczestnikom IXP regulować, do kogo i jakimi trasami wysyłać:

społeczność BGP
Opis

LOCAL_AS:PEER_AS
Wysyłaj prefiksy tylko do PEER_AS

LOCAL_AS:IXP_AS
Prześlij prefiksy wszystkim uczestnikom IXP

3 klientów chce połączyć się z naszym IXP i wymieniać ruch; Załóżmy, że są to dostawcy Internetu. Wszyscy chcą zorganizować komunikację równorzędną za pośrednictwem serwera tras. Poniżej schemat z parametrami połączenia klienta:

Klient
Numer AS klienta
Przedrostki reklamowane przez klienta
Adres IP wydany klientowi w celu połączenia się z IXP

Dostawca usług internetowych nr 1
AS 100
1.1.0.0/16
50.50.50.10/24

Dostawca usług internetowych nr 2
AS 200
2.2.0.0/16
50.50.50.20/24

Dostawca usług internetowych nr 3
AS 300
3.3.0.0/16
50.50.50.30/24

Podstawowa konfiguracja protokołu 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 bgpforce-first-as tutaj. Domyślnie protokół BGP wymaga, aby ścieżka as odebranej aktualizacji BGP zawierała numer as bgp partnera, od którego otrzymano aktualizację. Ponieważ jednak serwer tras nie wprowadza zmian w ścieżce as, jego numer nie będzie w ścieżce as, a aktualizacja zostanie odrzucona. To ustawienie powoduje, że router ma ignorować tę regułę.

Widzimy również, że klient ustawił na ten prefiks społeczność bgp 555:555, co zgodnie z naszą polityką oznacza, że ​​klient chce reklamować ten prefiks wszystkim innym uczestnikom.

W przypadku routerów innych klientów ustawienia będą podobne, z wyjątkiem ich unikalnych parametrów.

Przykładowa konfiguracja BIRDa:

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

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

Poniżej opisano filtr, który nie akceptuje przedrostków marsjan, a także przedrostków samego 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 implementuje 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;


}

Konfigurujemy peering, stosujemy 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 tras dobrą praktyką jest umieszczanie tras od różnych równorzędnych użytkowników w różnych RIB-ach. BIRD pozwala to zrobić. W naszym przykładzie dla uproszczenia wszystkie aktualizacje otrzymane od wszystkich klientów są dodawane do jednego wspólnego RIB-a.

Sprawdźmy więc, co mamy.

Na serwerze tras widzimy, że sesja BGP została ustanowiona ze wszystkimi trzema klientami:

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 jeśli z serwerem routingu jest tylko jedna sesja BGP, to otrzymujemy prefiksy zarówno z as 200, jak i z 300, natomiast atrybuty BGP nie uległy zmianie, tak jakby peering pomiędzy klientami odbywał się bezpośrednio:

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

Widzimy więc, że obecność serwera tras znacznie upraszcza organizację peeringu na IXP.

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

Centrum danych Linx IX

W Linxdatacenter zbudowaliśmy własny IXP w oparciu o odporną na awarie infrastrukturę składającą się z 2 przełączników i 2 serwerów tras. Nasz IXP działa teraz w trybie testowym i zapraszamy wszystkich do połączenia się z Linxdatacenter IX i wzięcia udziału w testach. Po podłączeniu otrzymasz port o przepustowości 1 Gbit/s, możliwość przeglądania naszych serwerów routingu, a także dostęp do Twojego osobistego konta portalu IX, dostępnego pod adresem ix.linxdatacenter.com.

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

Wniosek

Punkty wymiany ruchu powstały u zarania Internetu jako narzędzie rozwiązywania problemu nieoptymalnego przepływu ruchu pomiędzy operatorami telekomunikacyjnymi. Teraz, wraz z pojawieniem się nowych usług globalnych i wzrostem ruchu CDN, punkty wymiany w dalszym ciągu optymalizują działanie sieci globalnej. Na wzroście liczby IXP na świecie korzysta zarówno końcowy odbiorca usługi, jak i operatorzy telekomunikacyjni, operatorzy treści itp. Dla uczestników IXP korzyść wyraża się w obniżeniu kosztów organizacji zewnętrznego peeringu, zmniejszeniu ilości ruchu, za który muszą płacić operatorzy wyższego szczebla, optymalizacji routingu oraz możliwości posiadania bezpośredniego interfejsu z operatorami treści.

Przydatne linki

Źródło: www.habr.com

Dodaj komentarz