Niedawno sprawdziłem książkę Richarda Stevensa „Programowanie sieciowe UNIX, tom 1” i odkryłem, że oprócz TCP i UDP: SCTP istnieje trzeci standard warstwy transportowej .
Podsumowanie: SCTP jest protokołem na poziomie transportu, opartym na komunikatach, takim jak UDP, ale niezawodny, jak TCP. Oto krótkie wprowadzenie z IBM DeveloperWorks .
Szczerze mówiąc, nigdy wcześniej nie słyszałem o SCTP. Nie pamiętam, aby czytać o tym w książkach o sieciach lub słyszeć o tym na zajęciach, które wziąłem. Czytanie innych pytań o przepełnieniu stosu, które wspominają o SCTP, sugeruje, że nie jestem sam z tym brakiem wiedzy.
Dlaczego SCTP jest tak nieznany? Dlaczego nie jest często używany?
networking
tcp
popularity
sctp
dmeister
źródło
źródło
Odpowiedzi:
Rzeczywiście, SCTP jest używany głównie w obszarze telekomunikacji. Tradycyjnie przełączniki telekomunikacyjne używają SS7 ( System Sygnalizacji nr 7 ) do łączenia różnych podmiotów w sieci telekomunikacyjnej. Na przykład - baza danych abonentów operatora telekomunikacyjnego (HLR), z przełącznikiem (MSC), abonent jest również podłączony (MSC).
Obszar telekomunikacyjny przechodzi do wyższych prędkości i bardziej osiągalnego środowiska. Jedną z tych zmian jest zastąpienie protokołu SS7 bardziej eleganckim, szybkim i elastycznym protokołem opartym na protokole IP.
Obszar telekomunikacyjny jest bardzo konserwatywny. Sieć SS7 jest tu używana od dziesięcioleci. Jest to bardzo niezawodna i zamknięta sieć. Oznacza to, że zwykły użytkownik nie ma do niego dostępu.
W przeciwieństwie do tego sieć IP jest otwarta i nie jest niezawodna, a telekomunikacja nie będzie na nią konwertowana, jeśli nie poradzi sobie przynajmniej z obciążeniem obsługiwanym przez SS7. Właśnie dlatego opracowano SCTP. Próbuje:
Najnowsze wersje Linuksa mają już obsługę SCTP.
źródło
Wdrażamy SCTP w kilku aplikacjach i napotkaliśmy poważny problem z obsługą SCTP w różnych routerach domowych. Po prostu nie obsługują SCTP poprawnie. Uważam, że jest to przede wszystkim problem z wydajnością (specyfikacja protokołu SCTP wymaga sum kontrolnych do ponownego obliczenia całych pakietów, a nie tylko nagłówków).
Podobnie jak wiele innych obiecujących protokołów, SCTP jest niestety martwy w wodzie, dopóki D-link i Netgear nie naprawią swoich uszkodzonych pól NAT.
źródło
SCTP wymaga więcej projektowania w aplikacji, aby jak najlepiej go wykorzystać. Jest więcej opcji niż TCP, API podobne do Sockets pojawiło się później i jest młode. Myślę jednak, że większość osób, które go rozumieją (i znają wady protokołu TCP), docenia to - jest to dobrze zaprojektowany protokół, który opiera się na naszej ~ 30-letniej wiedzy na temat TCP i UDP.
Jednym z aspektów wymagających przemyślenia jest kwestia strumieni. Strumienie zapewniają (zazwyczaj myślę, że można to wyłączyć) gwarancję zamówienia w nich (podobnie jak połączenie TCP), ale może istnieć wiele strumieni na połączenie SCTP. Jeśli dane Twojej aplikacji mogą być przesyłane wieloma strumieniami, unikniesz blokowania linii, w której odbiornik głoduje z powodu jednego zagubionego pakietu. Efektywnie różne rozmowy można prowadzić przez to samo połączenie, nie wpływając na siebie nawzajem.
Kolejnym przydatnym dodatkiem jest obsługa wielu baz danych - jedno połączenie może być realizowane przez wiele interfejsów na obu końcach i radzi sobie z awariami. Możesz to emulować w TCP, ale w warstwie aplikacji.
Prawidłowe bicie serca łącza, które jest pierwszą rzeczą, w której każda aplikacja korzystająca z TCP do implementacji połączeń nie-przejściowych jest dostępne za darmo.
Moje osobiste podsumowanie SCTP jest takie, że nie robi nic, czego nie można zrobić w inny sposób (w TCP lub UDP) przy znacznej obsłudze aplikacji. Zapewnia to możliwość samodzielnego wdrażania tego kodu (źle).
FYI, SCTP jest wymagane jako obsługiwane dla Diameter (patrz RADIUS następnej generacji). patrz RFC 3588
źródło
SCTP nie jest bardzo znany i nie jest często używany / wdrażany, ponieważ:
źródło
p1. SCTP zmapowany bezpośrednio przez IPv4 wymaga wsparcia w bramach NAT, które nigdy wcześniej nie były szeroko wdrażane, a bez niego typowa brama NAT pozwoli tylko jednemu prywatnemu hostowi na adres publiczny używać SCTP jednocześnie.
p2. SCTP odwzorowany na UDP / IPv4 pozwala na więcej prywatnych hostów na adres publiczny, ale mapowania UDP w bramach IPv4 / NAT są niezwykle trudne do ustalenia i utrzymania, ponieważ UDP jest transportem bezpołączeniowym bez żadnego jawnego stanu dla NAT do śledzenia .
p3. SCTP zmapowany bezpośrednio przez IPv6 wymaga ... no cóż ... IPv6. Czy próbowałeś wdrożyć IPv6? Jeśli tak, to czy próbowałeś kupić zaporę IPv6? Czy obsługuje SCTP? Co powiesz na moduł równoważenia obciążenia? Akcelerator SSL?
p4. Wreszcie, duża część Internetu jest dość ograniczona do tego, co może zmieścić się przez port TCP 80 i port 443, więc SCTP o dowolnym smaku ma tendencję do utraty. Dlatego widzisz wysiłki takie jak grupa robocza MPTCP w IETF.
źródło
iptables
obsługuje je dobrze . Nie jestem facetem od sieci, więc nie mogę powiedzieć nic więcej.Wielu z nas wkrótce będzie używać SCTP, ponieważ jest on wykorzystywany przez kanały danych WebRTC do tworzenia niezawodnej warstwy podobnej do TCP na UDP - SCTP przez DTLS przez UDP: https://tools.ietf.org/html/draft-ietf -rtcweb-data-channel-13 # sekcja-6
źródło
Czytając stronę Wikipedii SCTP , powiedziałbym, że głównym powodem jest to, że SCTP jest bardzo młodym protokołem (zaproponowanym w 2000 r.), Który obecnie nie jest obsługiwany przez główne systemy operacyjne (
Windows,OS X,Linux).Jeśli „bardzo młody” wydaje ci się nieodpowiedni, pomyśl o IPV6 : „w grudniu 2008 r., Pomimo oznaczenia jego 10-lecia protokołem Standard Track, IPv6 był dopiero w powijakach, jeśli chodzi o ogólne wdrożenie na całym świecie”.
źródło
SCTP jest szeroko stosowany w sieci 4G LTE, w której Średnica jest używana dla AAA.
źródło
Może nie jest dobrze znany, ale nie jest nieużywany. Całkiem niedawno na IETF opublikowano projekt dotyczący używania SCTP jako protokołu warstwy transportowej dla HTTP .
źródło
W odniesieniu do wszystkich komentarzy na temat przerwania komercyjnych routerów lub braku obsługi SCTP, problem polega na tym, że SCTP z NAT jest nadal w wersji roboczej z IETF. Dlatego nie ma specyfikacji RFC do ich wdrożenia.
https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09
źródło
Sctp rodzi się za późno i dla wielu sytuacji wystarczy TCP.
Ponadto, jak wiem, większość jego wykorzystania jest w obszarze telekomunikacji.
źródło