Wielościeżkowy TCP — Multipath TCP

Multipath TCP ( MPTCP ) to nieustający wysiłek grupy roboczej IETF ( Internet Engineering Task Force ) Multipath TCP, który ma na celu umożliwienie połączeniu TCP ( Transmission Control Protocol ) korzystania z wielu ścieżek w celu maksymalizacji wykorzystania zasobów i zwiększenia redundancji.

W styczniu 2013 r. IETF opublikował specyfikację Multipath jako standard eksperymentalny w RFC 6824. Została ona zastąpiona w marcu 2020 r. przez specyfikację Multipath TCP v1 w RFC 8684 .

Korzyści

Redundancja oferowana przez Multipath TCP umożliwia odwrotne multipleksowanie zasobów, a tym samym zwiększa przepustowość TCP do sumy wszystkich dostępnych kanałów na poziomie łącza zamiast używania jednego, jak wymaga tego standardowy TCP. Wielościeżkowy protokół TCP jest wstecznie zgodny ze standardowym protokołem TCP.

Wielościeżkowy TCP jest szczególnie przydatny w kontekście sieci bezprzewodowych; korzystanie zarówno z sieci Wi-Fi, jak i sieci komórkowej jest typowym przypadkiem użycia . Oprócz zwiększenia przepustowości wynikającego z multipleksowania odwrotnego, łącza mogą być dodawane lub usuwane, gdy użytkownik wchodzi lub wychodzi poza zasięg bez zakłócania połączenia TCP od końca do końca.

Problem przekazywania łącza jest więc rozwiązywany przez abstrakcję w warstwie transportowej , bez żadnych specjalnych mechanizmów w warstwie sieci lub łącza . Funkcjonalność przekazywania może być następnie zaimplementowana w punktach końcowych bez konieczności stosowania specjalnej funkcjonalności w podsieciach - zgodnie z zasadą end-to-end Internetu .

Wielościeżkowy protokół TCP zapewnia również korzyści w zakresie wydajności w środowiskach centrów danych . W przeciwieństwie do łączenia kanałów Ethernet przy użyciu agregacji łączy 802.3ad , Multipath TCP może równoważyć pojedyncze połączenie TCP na wielu interfejsach i osiągnąć bardzo wysoką przepustowość.

Wielościeżkowy TCP powoduje szereg nowych problemów. Z punktu widzenia bezpieczeństwa sieci routing wielościeżkowy powoduje fragmentację danych między ścieżkami, co powoduje, że zapory i skanery złośliwego oprogramowania stają się nieefektywne, gdy widzą ruch tylko jednej ścieżki. Ponadto odszyfrowywanie SSL stanie się nieefektywne ze względu na protokoły szyfrowania typu end-to-end.

Interfejs użytkownika

Aby ułatwić jego wdrożenie, Multipath TCP przedstawia ten sam interfejs gniazda co TCP. Oznacza to, że każda standardowa aplikacja TCP może być używana powyżej wielościeżkowego protokołu TCP, podczas gdy w rzeczywistości rozkłada dane na kilka podprzepływów.

Wielościeżkowy TCP w stosie protokołów

Niektóre aplikacje mogą skorzystać z ulepszonego interfejsu API do kontrolowania podstawowego stosu wielościeżkowego protokołu TCP. Zaproponowano dwa różne interfejsy API w celu udostępnienia aplikacjom niektórych funkcji stosu wielościeżkowego TCP: interfejs API, który rozszerza Netlink w systemie Linux oraz ulepszony interfejs API gniazd.

Realizacja

W lipcu 2013 roku grupa robocza MPTCP zgłosiła pięć niezależnych implementacji Multipath TCP, w tym implementację referencyjną w jądrze Linux.

Obecnie dostępne wdrożenia to:

W lipcu 2014 r. Oracle poinformowało, że opracowywana jest implementacja na Solarisie . W czerwcu 2015 roku prace trwają.

Podczas spotkania MPTCP WG na IETF 93, SungHoon Seo ogłosił, że KT wdrożyło od połowy czerwca komercyjną usługę, która pozwala użytkownikom smartfonów osiągnąć 1 Gbit/s przy użyciu usługi proxy MPTCP. Tessares używa implementacji jądra Linux do wdrażania hybrydowych sieci dostępowych

Trwają wysiłki, aby wypchnąć nową implementację Multipath TCP w głównym jądrze Linuksa,

Przypadków użycia

Wielościeżkowy protokół TCP został zaprojektowany tak, aby był wstecznie kompatybilny ze zwykłym protokołem TCP. W związku z tym może obsługiwać dowolną aplikację. Jednak niektóre konkretne wdrożenia wykorzystują możliwość jednoczesnego korzystania z różnych ścieżek.

Apple używa Multipath TCP do obsługi aplikacji Siri na iPhonie . Siri wysyła próbki głosu przez sesję HTTPS do serwerów Apple. Serwery te odpowiadają informacjami żądanymi przez użytkowników. Według inżynierów Apple , główne zalety Multipath TCP z tą aplikacją to:

  • Informacje zwrotne (czas do pierwszego słowa) 20% szybciej w 95. percentylu
  • 5x redukcja awarii sieci

Inne wdrożenia używają wielościeżkowego protokołu TCP do agregowania przepustowości różnych sieci. Na przykład kilka rodzajów smartfonów, zwłaszcza w Korei, używa Multipath TCP do łączenia WiFi i 4G za pośrednictwem serwerów proxy SOCKS. Innym przykładem są hybrydowe sieci dostępowe wdrażane przez operatorów sieci chcących łączyć sieci xDSL i LTE. W tym wdrożeniu wielościeżkowy protokół TCP służy do efektywnego równoważenia ruchu w sieci xDSL i sieci LTE.

W standaryzacji konwergentnych stacjonarnych i mobilnych sieci komunikacyjnych 3GPP i BBF współpracują ze sobą, aby zapewnić funkcję ATSSS (Access Traffic Selection, Switching, Splitting) do obsługi sesji wielościeżkowych, np. poprzez zastosowanie wielościeżkowego protokołu TCP zarówno w urządzeniu użytkownika (UE), jak i w bramie rezydentnej (RG) i po stronie sieci.

Opcje wielościeżkowego TCP

Wielościeżkowy TCP używa opcji, które są szczegółowo opisane w RFC 6824. Wszystkie opcje wielościeżkowego protokołu TCP są zakodowane jako opcje TCP z rodzajem opcji 30, zarezerwowanym przez IANA.

Opcja Multipath TCP ma rodzaj (30), długość (zmienna), a pozostała część treści zaczyna się od 4-bitowego pola podtypu, dla którego IANA utworzyła i będzie utrzymywać podrejestr zatytułowany „Podtypy opcji MPTCP” w ramach Rejestr „Parametry protokołu kontroli transmisji (TCP)”. Te pola podtypów są zdefiniowane w następujący sposób:

Wartość Symbol Nazwa
0x0 MP_CAPABLE Możliwość wielościeżkowa
0x1 MP_JOIN Dołącz do połączenia
0x2 DSS Sygnał sekwencji danych (potwierdzenie danych ACK i mapowanie sekwencji danych)
0x3 ADD_ADDR Dodaj adres
0x4 USUŃ_ADDR Usuń adres
0x5 MP_PRIO Zmień priorytet przepływu podrzędnego
0x6 MP_FAIL Awaria
0x7 MP_FASTCLOSE Szybkie zamykanie
0xf (PRYWATNY) Do użytku prywatnego w kontrolowanych stanowiskach testowych

Wartości od 0x8 do 0xe są obecnie nieprzypisane.

Działanie protokołu

Uproszczony opis

Różnica między TCP a MPTCP

Podstawową ideą wielościeżkowego TCP jest zdefiniowanie sposobu budowania połączenia między dwoma hostami, a nie między dwoma interfejsami (jak robi to standardowy TCP).

Na przykład Alicja ma smartfona z interfejsami 3G i WiFi (z adresami IP 10.11.12.13 i 10.11.12.14), a Bob ma komputer z interfejsem Ethernet (z adresem IP 20.21.22.23).

W standardowym TCP połączenie powinno być nawiązane pomiędzy dwoma adresami IP. Każde połączenie TCP jest identyfikowane przez cztery krotki (adresy źródłowe i docelowe oraz porty). Biorąc pod uwagę to ograniczenie, aplikacja może utworzyć tylko jedno połączenie TCP za pośrednictwem jednego łącza. Wielościeżkowy TCP pozwala na jednoczesne korzystanie z kilku ścieżek. W tym celu Multipath TCP tworzy jedno połączenie TCP, zwane podprzepływem, na każdej ścieżce, która musi być użyta.

Celem różnych operacji protokołu (zdefiniowanych w RFC 6824) są:

  • do obsługi, kiedy i jak dodawać/usuwać ścieżki (na przykład w przypadku utraty połączenia z jakiejś kontroli przeciążenia)
  • być kompatybilnym ze starszym sprzętem TCP (takim jak niektóre zapory, które mogą automatycznie odrzucać połączenia TCP, jeśli numer sekwencyjny nie jest kolejny)
  • zdefiniować uczciwą strategię kontroli przeciążenia między różnymi łączami i różnymi hostami (zwłaszcza z tymi, które nie obsługują MPTCP)
Przykład pełnej sesji MPTCP

Multipath TCP dodaje nowe mechanizmy do transmisji TCP:

  • System podprzepływów, używany do zbierania wielu standardowych połączeń TCP (ścieżek z jednego hosta do drugiego). Podprzepływy są identyfikowane podczas trójetapowego uzgadniania protokołu TCP. Po uzgadnianiu aplikacja może dodać lub usunąć niektóre przepływy podrzędne (podtypy 0x3 i 0x4).
  • Opcja MPTCP DSS zawiera numer sekwencji danych i numer potwierdzenia. Pozwalają one na odbieranie danych z wielu podprzepływów w oryginalnej kolejności, bez żadnych uszkodzeń (podtyp wiadomości 0x2)
  • Zmodyfikowany protokół retransmisji obsługuje kontrolę przeciążenia i niezawodność.

Szczegółowa specyfikacja

Szczegółowa specyfikacja protokołu znajduje się w RFC 8684. Kilka artykułów ankietowych stanowi wprowadzenie do protokołu.

Kontrola zatorów

Dla wielościeżkowego TCP zdefiniowano kilka mechanizmów kontroli przeciążenia. Ich główna różnica w porównaniu z klasycznymi schematami kontroli przeciążenia TCP polega na tym, że muszą reagować na przeciążenie na różnych ścieżkach, nie będąc niesprawiedliwymi wobec źródeł TCP o pojedynczej ścieżce, które mogłyby konkurować z nimi na jednej ze ścieżek. Cztery schematy kontroli przeciążenia wielościeżkowego protokołu TCP są obecnie obsługiwane przez implementację wielościeżkowego protokołu TCP w jądrze systemu Linux.

  • Połączony algorytm zwiększania zdefiniowany w RFC 6356
  • Oportunistycznie powiązany algorytm wzrostu
  • Algorytm kontroli przeciążenia oparty na opóźnieniu wVegas
  • Algorytm zrównoważonego połączonego wzrostu

Alternatywy

Protokół transmisji sterowania strumieniem

Stream Control Transmission Protocol (SCTP) jest niezawodnym, uporządkowanym protokołem transportu strumienia datagramów , pierwotnie przeznaczonym do sygnalizacji telekomunikacyjnej. Obsługuje współbieżne korzystanie z wielu łączy dostępu i umożliwia aplikacji wpływanie na wybór interfejsu dostępu na podstawie strumienia datagramów. Obsługuje również mobilność poprzez renegocjację dostępu. Dlatego SCTP jest również rozwiązaniem warstwy transportowej. Oferuje ziarnistość przepływu typu 3 ze współbieżnością, ale z większą kontrolą planowania przepływu niż wielościeżkowy TCP. W pełni obsługuje również mobilność w sposób podobny do wielościeżkowego TCP.

IMS SIP

W ramach architektury IP Multimedia Subsystem (IMS), protokół inicjowania sesji (SIP) może obsługiwać jednoczesne użycie wielu kontaktowych adresów IP do rejestracji jednego lub większej liczby agentów użytkownika IMS. Pozwala to na tworzenie wielu ścieżek sygnalizacyjnych IMS. Na tych ścieżkach sygnalizacyjnych komunikaty sygnalizacyjne przenoszą komunikaty protokołu opisu sesji (SDP) w celu negocjowania strumieni mediów. SDP umożliwia (ponowne) negocjowanie strumieni jednej sesji medialnej na wielu ścieżkach. To z kolei umożliwia transport wielościeżkowy w warstwie aplikacji. Z tego punktu widzenia IMS może zatem oferować obsługę wielościeżkową w warstwie aplikacji z granulacją przepływu i dostępem współbieżnym. W ramach IETF dyskutowano o wielościeżkowym rozszerzeniu protokołu transportu w czasie rzeczywistym (RTP). Multipath RTP może oferować granulację przepływu z równoczesnym dostępem i mobilnością (za pośrednictwem IMS, sygnalizacji SDP lub protokołu kontrolnego RTP). Niedawno oprócz propozycję przedłużenia również DCCP (Datagram Zatory Control Protocol) przez funkcję wielodrożności omówiono w IETF w TSVWG (Grupa Robocza Transportu Area) nazwany jako MP-DCCP .

Wielościeżkowy QUIC

IETF opracowuje obecnie QUIC protokół, który integruje funkcje, które są tradycyjnie występujące w TCP , TLS i HTTP protokołów. Dzięki elastyczności i rozszerzalności QUIC można go rozszerzyć, aby obsługiwać wiele ścieżek i adresować te same przypadki użycia, co Multipath TCP. Zaproponowano, wdrożono i oceniono pierwszy projekt dla Multipath QUIC.

Inne protokoły i eksperymenty

W warstwie sesji projekt Mobile Access Router eksperymentował w 2003 r. z agregacją wielu dostępów bezprzewodowych z heterogenicznymi technologiami, transparentnie równoważąc ruch między nimi w odpowiedzi na postrzeganą wydajność każdego z nich.

Schematy dostępu równoległego używane do przyspieszania transferów poprzez wykorzystanie żądań zakresu HTTP do inicjowania połączeń z wieloma serwerami zreplikowanej zawartości nie są równoważne z wielościeżkowym TCP, ponieważ obejmują warstwę aplikacji i są ograniczone do zawartości o znanym rozmiarze.

RFC

  • RFC  6181 — Analiza zagrożeń dla rozszerzeń TCP dla operacji wielościeżkowych z wieloma adresami
  • RFC  6182 — Wytyczne architektoniczne dotyczące wielościeżkowego rozwoju TCP
  • RFC  6356 — sprzężona kontrola przeciążenia dla wielościeżkowych protokołów transportowych
  • RFC  6824 — rozszerzenia TCP do pracy wielościeżkowej z wieloma adresami (v0; zastąpione przez RFC 8684)
  • RFC  6897 — Uwagi dotyczące interfejsu aplikacji wielościeżkowego protokołu TCP (MPTCP)
  • RFC  7430 — analiza pozostałych zagrożeń i możliwych poprawek dla wielościeżkowego protokołu TCP (MPTCP)
  • RFC  8041 — przypadki użycia i doświadczenie operacyjne z wielościeżkowym protokołem TCP
  • RFC  8684 — rozszerzenia TCP do obsługi wielościeżkowej z wieloma adresami (v1)
  • RFC  8803 — protokół konwersji 0-RTT TCP

Zobacz też

Bibliografia

Zewnętrzne linki