Wielościeżkowy TCP — Multipath TCP
Pakiet protokołów internetowych |
---|
Warstwa aplikacji |
Warstwa transportowa |
Warstwa internetowa |
Warstwa łącza |
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.
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:
- jądro Linuksa (implementacja referencyjna) od naukowców z Université catholique de Louvain i innych współpracowników,
- FreeBSD (tylko IPv4) z Swinburne University of Technology ,
- F5 Sieci BIG-IP LTM,
- Citrix Netskaler,
- Apple iOS 7 , wydany 18 września 2013 roku, jest pierwszym komercyjnym wdrożeniem wielościeżkowego protokołu TCP na dużą skalę. Od iOS 7 każda aplikacja może korzystać z wielościeżkowego protokołu TCP.
- Apple Mac OS X 10.10 , wydany 16 października 2014 r.
- Alcatel-Lucent udostępnił kod źródłowy MPTCP proxy w wersji 0.9 26 października 2012 r.
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
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)
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