Przetwarzanie pakietów - Packet processing
W cyfrowych sieciach komunikacyjnych przetwarzanie pakietów odnosi się do szerokiej gamy algorytmów, które są stosowane do pakietu danych lub informacji, gdy przemieszczają się one przez różne elementy sieciowe sieci komunikacyjnej. Wraz ze wzrostem wydajności interfejsów sieciowych istnieje odpowiednia potrzeba szybszego przetwarzania pakietów.
Istnieją dwie szerokie klasy algorytmów przetwarzania pakietów, które są zgodne ze znormalizowanym podziałem sieci na płaszczyznę sterowania i płaszczyznę danych . Algorytmy są stosowane do:
- Informacje kontrolne zawarte w pakiecie, które są używane do bezpiecznego i wydajnego przesyłania pakietu z miejsca pochodzenia do celu
- lub
- Zawartość danych (często nazywana ładunkiem) pakietu, która jest używana do zapewnienia transformacji specyficznej dla zawartości lub do podjęcia akcji opartej na treści.
W obrębie każdej sieci włączone urządzenie (na przykład ruter , przełącznik , element sieci lub terminala, na przykład komputera lub smartphone) jest podsystem przetwarzania pakietów, które zarządza przejście przez wielowarstwowej sieci lub stos protokołów z dolnej, fizycznych i sieciowych warstwy wszystkich droga do warstwy aplikacji .
Historia
Historia przetwarzania pakietów to historia Internetu i przełączania pakietów . Kamienie milowe przetwarzania pakietów obejmują:
- 1962–1968: Wczesne badania nad przełączaniem pakietów
- 1969: 1. połączenie dwóch węzłów ARPANETU ; 15 witryn połączonych pod koniec 1971 roku z pocztą elektroniczną jako nową aplikacją
- 1973: Połączenia głosowe z komutacją pakietów przez ARPANET z protokołem Network Voice Protocol . Określono protokół przesyłania plików (FTP)
- 1974: Określono protokół kontroli transmisji (TCP)
- 1979: VoIP - NVP działający na wczesnych wersjach IP
- 1981: Standaryzacja IP i TCP
- 1982: Standaryzacja TCP / IP
- 1991: World Wide Web (WWW) wydany przez CERN , autorstwa Tima Berners-Lee
- 1998: pierwsza publikacja IPv6
Odniesienia historyczne i harmonogram można znaleźć w sekcji Zasoby zewnętrzne poniżej.
Modele komunikacji
Aby sieci odniosły sukces, niezbędny jest ujednolicający standard, który określa architekturę systemów sieciowych. Podstawowym wymogiem dla takiego standardu jest zapewnienie struktury, która umożliwi producentom sprzętu i oprogramowania na całym świecie opracowywanie technologii sieciowych, które będą ze sobą współpracować, oraz wykorzystanie ich łącznych możliwości inwestycyjnych, aby posunąć naprzód stan sieci.
W latach siedemdziesiątych dwie organizacje, Międzynarodowa Organizacja Normalizacyjna (ISO) oraz Międzynarodowy Komitet Konsultacyjny ds. Telegrafów i Telefonów (CCITT, obecnie nazywany Międzynarodowym Związkiem Telekomunikacyjnym (ITU-T)), zainicjowały projekty mające na celu opracowanie międzynarodowych standardów sieciowych. W 1983 r. Wysiłki te zostały połączone, aw 1984 r. Norma, zwana Podstawowym modelem odniesienia dla wzajemnych połączeń systemów otwartych , została opublikowana przez ISO i jako norma X.200 przez ITU-T.
Model OSI to 7-warstwowy model opisujący sposób działania sieciowego systemu operacyjnego. Model warstwowy ma wiele zalet, w tym możliwość zmiany jednej warstwy bez wpływu na inne oraz jako model do zrozumienia, jak działa sieciowy system operacyjny. Dopóki zachowane jest wzajemne połączenie między warstwami, dostawcy mogą usprawnić wdrażanie pojedynczej warstwy bez wpływu na inne warstwy.
Równolegle z rozwojem modelu OSI, sieć badawcza była wdrażana przez Agencję Zaawansowanych Projektów Badawczych Obrony Stanów Zjednoczonych ( DARPA ). Protokół sieciowy opracowany do obsługi sieci, zwany ARPAnet , został nazwany TCP lub programem kontroli transmisji. W miarę postępu prac badawczo-rozwojowych i wzrostu rozmiaru sieci ustalono, że używany projekt sieciowy stawał się nieporęczny i nie był dokładnie zgodny z warstwowym podejściem modelu OSI. Doprowadziło to do rozdzielenia oryginalnego TCP i stworzenia architektury TCP / IP - TCP to teraz nazwa Transmission Control Protocol, a IP to Internet Protocol.
Nadejście przetwarzania pakietów
Sieci pakietowe powstały we wczesnych latach sześćdziesiątych XX wieku w wyniku potrzeby zwiększenia niezawodności sieci komunikacyjnych. Można to postrzegać jako implementację modelu warstwowego przy użyciu struktury pakietu.
Wczesne sieci komercyjne składały się z dedykowanych obwodów analogowych używanych do komunikacji głosowej. Koncepcja przełączania pakietów została wprowadzona w celu stworzenia sieci komunikacyjnej, która będzie nadal działać pomimo awarii sprzętu w całej sieci. Przy tej zmianie paradygmatu sieci są postrzegane jako zbiory systemów, które przesyłają dane w małych pakietach, które przemieszczają się z miejsca pochodzenia do celu dowolną liczbą tras. Wstępne funkcje przetwarzania pakietów wspierały kierowanie pakietów przez sieć, wykrywanie i korekcję błędów transmisji oraz inne funkcje zarządzania siecią .
Przełączanie pakietów z jego wspierającymi funkcjami przetwarzania pakietów ma kilka praktycznych zalet w porównaniu z tradycyjnymi sieciami z komutacją obwodów:
- Całkowicie cyfrowe środowisko obsługujące wiele typów danych (takich jak głos, dane i wideo) nie tylko wzbogaciło życie użytkowników, ale znacznie zwiększyło wydajność dostawców sieci, którzy wcześniej musieli wdrażać różne sieci do obsługi różnych typów danych.
- Większe wykorzystanie przepustowości z wieloma „układami logicznymi” korzystającymi z tych samych łączy fizycznych
- Trwałość komunikacji dzięki wielu ścieżkom w sieci z dowolnego źródła do dowolnego miejsca docelowego
- Usługi informacyjne o wartości dodanej można wprowadzić za pomocą funkcji przetwarzania pakietów, aby zapewnić niezbędne przetwarzanie
Struktura pakietu
Pakiet sieciowy jest podstawowym budulcem dla sieci komutacji pakietów. Gdy element taki jak plik, wiadomość e-mail, strumień głosu lub wideo jest przesyłany przez sieć, jest on dzielony na fragmenty zwane pakietami, które można wydajniej przenosić w sieci niż jeden duży blok danych. Wiele standardów obejmuje strukturę pakietów, ale zazwyczaj pakiety składają się z trzech elementów:
- Nagłówek - zawiera informacje o pakiecie, w tym pochodzenie, miejsce docelowe, długość i numer pakietu.
- Ładunek (lub treść ) - zawiera dane wchodzące w skład pakietu
- Trailer - wskazuje koniec pakietu i często zawiera informacje o wykrywaniu błędów i korekcie
W sieci z komutacją pakietów host wysyłający pakuje oryginalny element, a każdy pakiet jest kierowany przez sieć do miejsca przeznaczenia. Niektóre sieci wykorzystywały pakiety o stałej długości, zwykle 1024 bity, podczas gdy inne używają pakietów o zmiennej długości i zawierają długość pakietu w nagłówku.
Poszczególne pakiety mogą kierować się różnymi trasami do miejsca docelowego i docierać do celu poza kolejnością. Komputer docelowy weryfikuje poprawność danych w każdym pakiecie (wykorzystując informacje w przyczepie), ponownie składa oryginalny element przy użyciu informacji o numerze pakietu w nagłówku i przedstawia element aplikacji odbierającej lub użytkownikowi.
Ten podstawowy przykład obejmuje trzy najbardziej podstawowe funkcje przetwarzania pakietów, pakietowanie, routing i asemblację. Funkcje przetwarzania pakietów obejmują zakres od prostych do bardzo złożonych. Na przykład funkcja routingu jest w rzeczywistości procesem wieloetapowym obejmującym różne algorytmy optymalizacji i przeszukiwania tabel. Podstawowa funkcja routingu w Internecie wygląda mniej więcej tak:
- 1. Sprawdź, czy miejsce docelowe jest adresem „należącym do” tego komputera. Jeśli tak, przetwórz pakiet. Jeśli nie:
- za. Sprawdź, czy przekazywanie IP jest ustawione na „Tak”. Jeśli nie, pakiet jest niszczony. Jeśli tak, to
- ja. Sprawdź, czy sieć podłączona do tego komputera jest właścicielem adresu docelowego. Jeśli tak, przekieruj pakiet do odpowiedniej sieci. Jeśli nie, to
- 1. Sprawdź, czy istnieje trasa do sieci docelowej. Jeśli tak, przekieruj pakiet do następnej bramy przeskoku. Jeśli nie, zniszcz pakiet.
- ja. Sprawdź, czy sieć podłączona do tego komputera jest właścicielem adresu docelowego. Jeśli tak, przekieruj pakiet do odpowiedniej sieci. Jeśli nie, to
- za. Sprawdź, czy przekazywanie IP jest ustawione na „Tak”. Jeśli nie, pakiet jest niszczony. Jeśli tak, to
Bardziej zaawansowane funkcje routingu obejmują równoważenie obciążenia sieciowego i algorytmy najszybszych tras. Te przykłady ilustrują zakres możliwych algorytmów przetwarzania pakietów i sposób, w jaki mogą one wprowadzać znaczne opóźnienia w transmisji elementu. Projektanci sprzętu sieciowego często używają kombinacji akceleratorów sprzętowych i programowych, aby zminimalizować opóźnienia w sieci.
Architektura sprzętu sieciowego
Sprzęt oparty na protokole IP można podzielić na trzy podstawowe elementy: płaszczyznę danych, płaszczyznę sterowania i płaszczyznę zarządzania.
Płaszczyzna danych
Płaszczyzna danych jest podsystemem węzła sieciowego, który odbiera i przesyła pakiety z interfejsem, przetwarza je zgodnie z wymaganiami odpowiednich protokołów i zapewnia, krople, albo przekazuje je, odpowiednio.
Sterowanie samolotem
Płaszczyzna sterowania przechowuje informacje, które mogą być wykorzystane do zmiany danych wykorzystywanych przez płaszczyznę danych. Utrzymanie tych informacji wymaga obsługi złożonych protokołów sygnalizacyjnych. Wdrożenie tych protokołów w płaszczyźnie danych doprowadziłoby do słabej wydajności przesyłania. Typowym sposobem zarządzania tymi protokołami jest pozwolenie płaszczyźnie danych na wykrycie przychodzących pakietów sygnalizacyjnych i lokalne przesłanie ich do płaszczyzny sterowania. Protokoły sygnalizacyjne płaszczyzny sterowania mogą aktualizować informacje o płaszczyźnie danych i wprowadzać wychodzące pakiety sygnalizacyjne do płaszczyzny danych. Ta architektura działa, ponieważ ruch sygnalizacyjny jest bardzo małą częścią ruchu globalnego.
Płaszczyzna zarządzania
Płaszczyzna zarządzania zapewnia interfejs administracyjny do całego systemu. Zawiera procesy wspierające administrację operacyjną, zarządzanie lub czynności konfiguracyjne / aprowizacyjne, takie jak:
- Usługi wspomagające zbieranie i agregowanie statystyk,
- Wsparcie dla implementacji protokołów zarządzania,
- Interfejs wiersza poleceń, graficzne interfejsy konfiguracji użytkownika za pośrednictwem stron internetowych lub tradycyjne zarządzanie za pomocą protokołu SNMP ( Simple Network Management Protocol ).
Można również uwzględnić bardziej wyrafinowane rozwiązania oparte na XML ( eXtensible Markup Language ).
Przykłady
Lista aplikacji przetwarzających pakiety jest zwykle podzielona na dwie kategorie. Poniżej znajduje się kilka przykładów wybranych w celu zilustrowania różnorodności używanej obecnie.
Aplikacje sterujące
- Forwarding , podstawowa obsługa routera
- Szyfrowanie / deszyfrowanie , ochrona informacji w ładunku za pomocą algorytmów kryptograficznych
- Quality of Service (QOS) - różne traktowanie pakietów, na przykład świadczenie usług priorytetowych lub wyspecjalizowanych w zależności od klasy pakietu
Aplikacje danych
- Transkodowanie , transformacja określonego kodowania wideo do określonego kodowania używanego przez miejsce docelowe
- Transrating & Transizing, przekształcanie rozmiaru i gęstości obrazu odpowiednio do urządzenia docelowego
- Rozpoznawanie obrazu lub głosu , wykrycie określonego wzorca (obrazu lub głosu), który jest dopasowany do tych w bazie danych, a po wystąpieniu dopasowania podejmowane są pewne działania
- Zaawansowane aplikacje obejmują obszary takie jak bezpieczeństwo ( monitorowanie połączeń i zapobieganie wyciekom danych ), reklamy ukierunkowane , usługi warstwowe , egzekwowanie praw autorskich i statystyki użytkowania sieci. Te i wiele innych aplikacji uwzględniających zawartość opiera się na zdolności do rozpoznawania określonej inteligencji zawartej w ładunkach pakietów przy użyciu technologii Deep Packet Inspection (DPI).
Architektury przetwarzania pakietów
Przełączanie pakietów wprowadza również pewne kompromisy architektoniczne. Wykonywanie funkcji przetwarzania pakietów w transmisji informacji wprowadza opóźnienia, które mogą być szkodliwe dla wykonywanej aplikacji. Na przykład w aplikacjach głosowych i wideo niezbędna konwersja z analogowego na cyfrowy iz powrotem w miejscu docelowym wraz z opóźnieniami wprowadzanymi przez sieć może powodować zauważalne przerwy, które są uciążliwe dla użytkowników. Opóźnienie jest miarą opóźnienia czasowego występującego w złożonym systemie.
Opracowano wiele architektonicznych podejść do przetwarzania pakietów, aby spełnić wymagania dotyczące wydajności i funkcjonalności określonej sieci oraz rozwiązać problem opóźnienia.
Architektura jednowątkowa (standardowy system operacyjny)
Standard sieci stos korzysta z usług świadczonych przez system operacyjny (OS) działa na jednym procesorze ( pojedynczy gwintowany ). Chociaż architektury jednowątkowe są najłatwiejsze do wdrożenia, podlegają narzutom związanym z wydajnością funkcji systemu operacyjnego, takimi jak wywłaszczanie, zarządzanie wątkami, liczniki czasu i blokowanie. Te narzuty przetwarzania systemu operacyjnego są nakładane na każdy pakiet przechodzący przez system, powodując karę za przepustowość.
Architektura wielowątkowa (wieloprocesorowy system operacyjny)
Ulepszenia wydajności można wprowadzić w stosie sieciowym systemu operacyjnego, dostosowując oprogramowanie do przetwarzania stosu protokołów do obsługi wielu procesorów ( wielowątkowych ), za pomocą platform symetrycznego przetwarzania wieloprocesorowego (SMP) lub wielordzeniowej architektury procesorów . Wzrost wydajności występuje w przypadku niewielkiej liczby procesorów, ale nie daje się skalować liniowo w stosunku do większej liczby procesorów (lub rdzeni), a procesor z, na przykład, ośmioma rdzeniami może nie przetwarzać pakietów znacznie szybciej niż jeden z dwoma rdzeniami.
Architektura szybkiej ścieżki (obejście systemu operacyjnego)
W implementacji szybkiej ścieżki płaszczyzna danych jest podzielona na dwie warstwy. Niższa warstwa, zwykle nazywana szybką ścieżką, przetwarza większość przychodzących pakietów poza środowisko systemu operacyjnego i bez ponoszenia jakichkolwiek kosztów ogólnych systemu operacyjnego, które obniżają ogólną wydajność. Tylko te pakiety, które wymagają złożonego przetwarzania, są przekazywane do stosu sieciowego systemu operacyjnego (górnej warstwy płaszczyzny danych), który wykonuje niezbędne funkcje zarządzania, sygnalizacji i sterowania. Gdy wymagane są złożone algorytmy, takie jak routing lub zabezpieczenia, stos sieciowy systemu operacyjnego przekazuje pakiet do dedykowanych komponentów oprogramowania w płaszczyźnie sterowania.
Procesor wielordzeniowy może zapewnić dodatkową poprawę wydajności w implementacji szybkiej ścieżki. Aby zmaksymalizować ogólną przepustowość systemu, do obsługi szybkiej ścieżki można przeznaczyć wiele rdzeni, podczas gdy tylko jeden rdzeń jest wymagany do uruchomienia systemu operacyjnego, stosu sieciowego systemu operacyjnego i płaszczyzny kontroli aplikacji.
Jedynym ograniczeniem podczas konfigurowania platformy jest to, że ponieważ rdzenie działające w trybie szybkiej ścieżki działają poza systemem operacyjnym, muszą być przeznaczone wyłącznie dla szybkiej ścieżki i nie mogą być współużytkowane z innym oprogramowaniem. System można również dynamicznie rekonfigurować, gdy zmieniają się wzorce ruchu. Podział płaszczyzny danych na dwie warstwy również zwiększa złożoność, ponieważ obie warstwy muszą mieć te same informacje, aby zapewnić spójność systemu.
Technologie przetwarzania pakietów
W celu stworzenia wyspecjalizowanych platform przetwarzania pakietów opracowano i wdrożono różne technologie. Wszystkie te technologie, obejmujące cały sprzęt i oprogramowanie, zostały zaprojektowane w celu maksymalizacji szybkości i przepustowości przy jednoczesnym zminimalizowaniu opóźnień.
Procesory sieciowe
Procesor sieciowy jednostka (NPU) jest podobny pod wieloma względami do procesorów ogólnego przeznaczenia (GPP) , że władza większości komputerów, ale z jego wewnętrznej architektury i funkcji dostosowanych do operacji sieciowych-centric. NPU zwykle mają funkcje specyficzne dla sieci, takie jak wyszukiwanie adresów, dopasowywanie wzorców i zarządzanie kolejkami wbudowane w ich mikrokod . Operacje przetwarzania pakietów wyższego poziomu, takie jak zabezpieczenia lub wykrywanie włamań, są często wbudowane w architektury NPU. Przykłady procesorów sieciowych obejmują:
- Intel - rodzina IXP2xxx
- Netronome - rodziny NFP-6xxx / 4xxx / 32xx
- PMC Sierra - rodzina Winpath
- EZChip - rodzina NP-x
Procesory wielordzeniowe
Procesor wielożyłowego jest jeden pakiet półprzewodnikowej, która ma 2 lub więcej rdzeni, z których każdy reprezentuje pojedynczej jednostki przetwarzania, zdolne do wykonywania kodu równolegle. Procesory ogólnego przeznaczenia, takie jak Intel Xeon, obsługują teraz do 8 rdzeni. Niektóre procesory wielordzeniowe integrują dedykowane funkcje przetwarzania pakietów w celu zapewnienia pełnego SoC (System on Chip). Są na ogół zintegrować Ethernet interfejsów kryptograficznych silników , pasujące do wzorca silniki, sprzętowe kolejki QoS i czasami bardziej zaawansowanych funkcji przy użyciu mikro rdzeni. Wszystkie te funkcje sprzętowe są w stanie odciążyć przetwarzanie pakietów oprogramowania. Najnowsze przykłady tych wyspecjalizowanych pakietów wielordzeniowych, takich jak Cavium OCTEON II, mogą obsługiwać od 2 do 32 rdzeni.
- Tilera - Rodzina procesorów TILE -Gx
- Sieci Cavium - rodziny procesorów wielordzeniowych OCTEON i OCTEON II
- Freescale - platformy przetwarzania QorIQ
- NetLogic Microsystems - rodziny procesorów XLP, XLR i XLS
Akceleratory sprzętowe
Aby zapewnić jasno definiowalne i powtarzalne działania, utworzenie dedykowanego akceleratora wbudowanego bezpośrednio w półprzewodnikowe rozwiązanie sprzętowe przyspieszy operacje w porównaniu z oprogramowaniem działającym na procesorze ogólnego przeznaczenia. Początkowe implementacje wykorzystywały układy FPGA (macierz bramek programowalnych przez użytkownika) lub ASIC (układ scalony specyficzny dla aplikacji), ale teraz określone funkcje, takie jak szyfrowanie i kompresja, są wbudowane zarówno w GPP, jak i NPU jako wewnętrzne akceleratory sprzętowe. Aktualne przykłady procesorów wielordzeniowych z akceleratorami sprzętowymi specyficznymi dla sieci obejmują Cavium CN63xx z akceleracją zapewniającą bezpieczeństwo, dopasowywanie wzorców TCP / IP, QOS i HFA oraz rodzinę procesorów Netlogic Microsystems XFS z silnikami przyspieszającymi pracę sieci i bezpieczeństwa.
Głęboka inspekcja pakietów
Możliwość podejmowania decyzji na podstawie zawartości poszczególnych pakietów umożliwia korzystanie z szerokiej gamy nowych aplikacji, takich jak ładowanie reguł i funkcje reguł ( PCRF ) oraz jakość usług. Systemy przetwarzania pakietów oddzielają określone typy ruchu za pomocą technologii Deep Packet Inspection (DPI). Technologie DPI wykorzystują algorytmy dopasowywania wzorców do zajrzenia do ładunku danych w celu zidentyfikowania zawartości każdego pakietu przepływającego przez urządzenie sieciowe. Pomyślne dopasowania wzorców są zgłaszane do aplikacji kontrolującej w celu podjęcia odpowiednich dalszych działań.
Oprogramowanie do przetwarzania pakietów
Oprogramowanie systemu operacyjnego będzie zawierało określone standardowe stosy sieciowe, które będą działać zarówno w środowiskach jedno-, jak i wielordzeniowych. Aby móc zaimplementować architektury obejścia systemu operacyjnego (szybkiej ścieżki), konieczne jest użycie specjalistycznego oprogramowania do przetwarzania pakietów, takiego jak 6WINDGate 6WIND . Ten typ oprogramowania zapewnia zestaw protokołów sieciowych, które można rozprowadzać na wielu serwerach blade, procesorach lub rdzeniach i odpowiednio skalować.
Bibliografia
Linki zewnętrzne
- Żywa historia. „ Historia Internetu ”
- Howe, Walt. (2010) „ Krótka historia internetu ”
- Społeczeństwo internetowe. „ Historie Internetu ”
- Żywa historia. „ Historia przełączania pakietów ”
- Roberts, Dr. Lawrence G. (listopad 1978). „ Ewolucja przełączania pakietów ”
- Marshall, Dave. „ Historia Internetu - Oś czasu. ”
- Rami Rosen „ Akceleracja sieci z DPDK ”, artykuł w lwn.net, lipiec 2017.
- Rami Rosen „ Userspace Networking with DPDK ”, artykuł w Linux Journal, kwiecień 2018.