Host-INT i telemetria pakietów sieciowych

Inband Network Telemetry i Host-INT mogą dostarczyć cennych informacji na temat wydajności sieci – w tym informacji o opóźnieniach i zagubionych pakietach.

Podczas intensywnego skalowania centrów danych zależy nam na uzyskaniu lepszego wglądu w to, co dzieje się w naszej sieci i co ma kluczowy wpływ na jej wydajność. Wraz ze wzrostem liczby przełączników i serwerów wyzwanie to staje się coraz trudniejsze, a przepływ danych ewoluuje do 100 Gb/s i więcej. Na tym etapie kluczowe znaczenie ma wiedza o tym, w którym miejscu sieć jest przeciążona i jak wpływa na przepływ danych oraz umowy dotyczące poziomu usług (SLA).

Inband Network Telemetry (INT) to otwarta specyfikacja utworzona przez społeczność open source P4 [1]. Celem INT jest umożliwienie zbierania pakietów i generowania raportów na ich temat podczas ich przepływu przez sieć. Firma Intel udostępniła tę możliwość społeczności open source za pomocą zaimplementowanej w Linuksie usługi Host Inband Network Telemetry (Host-INT). Struktura Host-INT może zbierać bardzo cenne dane dotyczące warunków sieciowych – takich jak opóźnienia i odrzucanie pakietów – które w inny sposób byłyby bardzo trudne do uzyskania. Host-INT jest idealny dla tych twórców aplikacji, którzy muszą wiedzieć, w jaki sposób sieć wypływa na działanie ich aplikacji. Z kolei dostawca usług sieci rozległej (WAN) może użyć Host-INT, aby zapewnić przestrzeganie umów dotyczących poziomu usług.

Host-INT opiera się na Switch-INT, kolejnej implementacji P4, która przeprowadza pomiary pakietów sieciowych. Zarówno Host-INT, jak i Switch-INT są zaprojektowane pod kątem działania wyłącznie w warstwie danych urządzenia sieciowego (np. w szybkiej ścieżce sprzętowej ASIC przełącznika lub karty sieciowej Ethernet). Switch-INT działa obecnie na programowalnych infrastrukturach przełączników, takich jak Intel Tofino Intelligent Fabric Processors [2]. Działając w płaszczyźnie danych, Switch-INT może zapewnić rozległą telemetrię sieci bez wpływu na wydajność.

Jak działa Host-INT

Host-INT działa na serwerze linuksowym, nie na przełącznikach, dzięki czemu potrafi analizować przepływy pakietów spoza sieci. Węzeł źródłowy INT, znajdujący się na wejściu do sieci, wstawia do pakietu instrukcje i informacje telemetryczne. Ujście INT, zlokalizowane na wyjściu z sieci, usuwa nagłówek INT i metadane z pakietu oraz wysyła je do kolektora telemetrii.

Konfiguracja Host-INT składa się z hosta źródłowego, na którym pakiety są modyfikowane w taki sposób, by zawierały informacje telemetryczne, oraz hosta docelowego, na którym zbierane są metadane i przesyłane do programu analitycznego (Rysunek 1). W ten sposób Host-INT potrafi zgromadzić trudne do uzyskania dane o wydajności. Na przykład zespół DevOps może użyć Host-INT do zbadania wpływu sieci na wydajność ich aplikacji i uzyskania znacznie bardziej szczegółowych informacji niż te dostępne przy użyciu konwencjonalnych narzędzi, takich jak ping itraceroute.

Ponadto organizacje, które są zależne od dużych sieci WAN, mogą wykorzystać dane o opóźnieniach i odrzucaniu pakietów, które pochodzą z Host-INT, aby zapewnić wymagany poziomy usług i w razie potrzeby odpowiednio wcześnie skontaktować ze swoim dostawcą usług, by zminimalizować czas naprawy.

Host-INT zbiera metadane

Specyfikacja Host-INT opisuje kilka opcji dotyczących gromadzenia dodatkowych metadanych pochodzących z nagłówków pakietów w celu pomiaru opóźnienia, głębokości kolejek, przez które przechodzi pakiet, oraz poziomów wykorzystania łącza.

Po zainstalowaniu i włączeniu Host-INT na serwerach z Linuksem (więcej informacji na temat obsługiwanych dystrybucji można znaleźć na witrynie projektu na GitHubie [3]) nagłówki INT są dodawane do pakietów IPv4 TCP i UDP, które są następnie odczytywane przez inne hosty w sieci obsługujące INT. Jeśli np. skonfigurujemy Host-INT na hoście A, aby dodawać nagłówki INT do wszystkich pakietów wysyłanych z hosta A do hosta B, eBPF załadowany w jądrze Linuksa na hoście A zmodyfikuje wszystkie pakiety TCP i UDP przeznaczone dla hosta B.

Nagłówek INT zawiera następujące informacje:

8 Czas przetworzenia pakietu.

8 Numer sekwencyjny, który zaczyna się od 1 dla pierwszego pakietu każdego przepływu i zwiększa się dla każdego kolejnego pakietu przepływu.

„Przepływ” w kontekście Host-INT to wszystkie pakiety z tą samą 5-krotką (tj. tą samą kombinacją wartości poniższych pięciu pól nagłówka pakietu):

8 Adres źródłowy i docelowy IPv4

8 Protokół IPv4

8 Port źródłowy i docelowy TCP/UDP

Format enkapsulacji pakietów używany w obecnej wersji Host-INT polega na dodaniu nagłówków INT po nagłówku TCP lub UDP danego pakietu. Aby host odbierający B mógł odróżnić pakiety, które mają nagłówki INT od tych, które ich nie mają, host A modyfikuje również wartość punktów kodowych pola zróżnicowanych usług (DSCP) w polu Type of Service (typ usługi) IPv4 na wartość konfigurowalną. W praktyce dobrze jest skonsultować się z administratorem sieci, aby znaleźć taką wartość DSCP, która nie jest używana do innych celów w danej sieci.

Kiedy pakiety docierają do hosta B, przetwarza je inny program eBPF działający w jądrze hosta B. Jeśli pakiet ma nagłówek INT (określony przez wartość DSCP), program eBPF usuwa go i wysyła pakiet do kodu sieciowego jądra Linuksa, skąd następnie przechodzi do aplikacji docelowej.

Przed usunięciem nagłówka INT program eBPF hosta B oblicza jednokierunkowe opóźnienie pakietu, obliczone jako czas odebrania pakietu przez host B, minus znacznik czasu, który host A wysłał w nagłówku INT. Należy zauważyć, że każda niedokładność synchronizacji zegarów na hoście A i hoście B wprowadza błąd do tego jednokierunkowego pomiaru opóźnienia. Zaleca się więc synchronizację zegarów urządzeń w sieci za pomocą protokołu Network Time Protocol (NTP) lub Precision Time Protocol (PTP).

Rysunek 1: Host-INT w akcji: Host źródłowy dodaje do pakietu nagłówek INT. Host docelowy wyodrębnia nagłówek i zgłasza metadane telemetryczne do programu analitycznego.

Program eBPF hosta B sprawdza przepływ pakietu (określony przez tę samą 5-krotkę pól nagłówka pakietu, która jest używana w hoście źródłowym A) w mapie eBPF. Niezależnie, dla pakietów, które host B odbiera z nagłówkami INT, przechowuje następujące dane:

8 Ostatni czas odebrania pakietu.

8 Jednokierunkowe opóźnienie poprzedniego pakietu odebranego przez hosta B dla danego przepływu.

8 Niewielką strukturę danych, która w połączeniu z numerem sekwencji w nagłówku INT określa liczbę utraconych pakietów w sieci dla danego przepływu.

Host B wygeneruje pakiet raportu INT w przypadku dowolnego z poniższych zdarzeń:

8 Pierwszy pakiet nowego przepływu zostanie odebrany z nagłówkiem INT.

8 Upłynął czas na wygenerowanie raportu o utraconych pakietach. Każdy przepływ jest sprawdzany pod kątem wykrycia utraty pakietów od ostatniego okresu. Jeśli niedawno wykryto utratę nowych pakietów, generowany jest pakiet raportu o utracie INT. Raport zawiera liczbę utraconych pakietów, które zostały wykryte, oraz nagłówek pakietu.

8 Jeśli jednokierunkowe opóźnienie bieżącego pakietu znacznie różni się od opóźnienia poprzedniego pakietu dla tego przepływu, generowany jest pakiet raportu o opóźnieniu INT.

W ten sposób, patrząc na strumień pakietów raportów INT, Host-INT może monitorować m.in.:

8 Znaczne zmiany opóźnienia przepływu

8 Okresowe aktualizacje liczby utraconych pakietów.

Obie te rzeczy są raportowane na podstawie przepływu.

Host-INT generuje pakiety raportów INT, które są wysyłane z odbiorników pakietów INT z powrotem do hosta wysyłającego, gdzie dane wyodrębnione z raportu są zapisywane do pliku tekstowego. Dodanie innych komponentów rozszerza funkcjonalność Host-INT. Host-INT obsługuje rozszerzenia wysyłające pakiety raportów INT do hosta, który jest nadawcą pakietu zawierającego nagłówek – a nawet na wstępnie skonfigurowany adres IP.

Typowym powodem używania wstępnie skonfigurowanego adresu IP jest wysyłanie raportów INT z wielu hostów do systemu analizy telemetrycznej, który może zbierać, zestawiać, analizować i wyświetlać dane telemetryczne, dzięki czemu operatorzy mogą podejmować odpowiednie decyzje dotyczące sieci. Przykładem systemu analitycznego, który może przetwarzać raporty INT, jest zaprojektowane przez Intela oprogramowanie Deep Insight Analytics [4].

Aktualne ograniczenia

Chociaż raporty Host-INT mogą pomóc administratorom sieci dowiedzieć się o przepływach charakteryzujących się dużymi opóźnieniami lub wieloma porzucanymi pakietami, obecnie Host-INT nie potrafi jeszcze zidentyfikować głównej przyczyny tego zachowania w sieci – może to jednak zrobić Switch-INT. Jeśli wdrożymy w sieci przełączniki obsługujące INT, możemy je skonfigurować w taki sposób, by generowały raporty INT dotyczące zdarzeń, takich jak gubienie pakietów lub pojawienie się kolejek pakietów powodujących duże opóźnienia. Odpowiednio konfigurując przełączniki, możemy też szybko sprawdzić, w którym miejscu w sieci występują te problemy.

Podsumowanie

Host-INT umożliwia obsługę telemetrii pakietów na hostach z systemem Linux, zapewniając skuteczny sposób monitorowania stanu sieci w centrach danych oraz na bieżąco informując o problemach, takich jak przeciążenia, zgubione pakiety i opóźnienia. Host-INT można połączyć ze Switch-INT, uzyskując w ten sposób wszechstronne narzędzie do zarządzania stanem sieci. Samo oprogramowanie oraz dodatkową dokumentację znajdziemy na witrynie projektu na GitHubie [3].

Autorzy

Andrew Fingerhut jest głównym inżynierem w Intel Corporation pracującym nad programowalnymi przełącznikami i kartami sieciowymi; ma prawie 30-letnie doświadczenie w sieciach komputerowych. Aktywnie uczestniczy również w rozwoju języka programowania P4 w ramach grup roboczych P4.org.

Deepa Seshadri jest menedżerem produktu Intel Deep Insight Network Analytics w Intel Corporation. Jej obszar specjalizacji obejmuje tworzenie nowych technologii związanych z oprogramowaniem, począwszy od koncepcji, po wersje produkcyjne.

Źródła:

[1] Otwarty język programowania P4: https://p4.org/

[2] Intel Tofino: https://www.intel.com/content/www/us/en/products/network-io/programmable-ethernet-switch.html

[3] Host-INT na GitHubie: https://github.com/intel/host-int

[4] Oprogramowanie DIA: https://www.intel.com/content/www/us/en/products/network-io/programmable-ethernet-switch/network-analytics/deep-insight.html

Tagi:

Podziel się postem :)

Najnowsze:

Bezpieczeństwo

Poradnik: Zabezpiecz swój dom – masz w nim masę urządzeń podatnych na ataki cyberprzestępców

Polacy mają w swoich gospodarstwach domowych coraz więcej urządzeń elektronicznych podłączonych do internetu. Choć wciąż mówimy o kilkunastu lub kilkudziesięciu sprzętach – a nie kilkuset, jak to przewidywano w pewnych badaniach – niekwestionowanie zauważalny jest wzrost ich liczby. Z tego względu należy podjąć wszelkie kroki, by zabezpieczyć swoją domową sieć.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *