1 Stream Control Transmission ProtocolProtokół SCTP Stream Control Transmission Protocol
2 Stream Control Transmission ProtocolNowy protokół: RFC 2960 – 2000 UDP: RFC 768 – 1980 TCP: RFC 793 – 1981 Opracowany m.in. przez: Motorola Cisco Siemens Ericsson
3 Potrzeba Protokół UDP wykorzystywany w nietypowych zastosowaniachObecnie TCP obsługuje zdecydowaną większość aplikacji Dla coraz większej liczby aplikacji TCP okazuje się niewystarczające np.: wymagana jest niezawodność bez gwarancji kolejności, TCP nie oferuje przesyłania komunikatów, TCP nie wspiera hostów z wieloma interfejsami sieciowymi tzw. multihomed, protokół TCP jest podatny na ataki typu DoS. Jedną z takich aplikacji, która przyczyniła się bezpośrednio do powstania standardu SCTP jest sygnalizacja PSTN w sieciach IP. Silnie związane z VoIP.
4 Charakterystyka Protokół połączeniowyNiezawodny transport danych z selektywnymi potwierdzeniami Przesyłanie komunikatów / także bez kontroli kolejności odbioru Wbudowane mechanizmy kontroli i zapobiegania przeciążeniom Wykrywanie MTU ścieżki i fragmentacja Wsparcie dla hostów z wieloma interfejsami Wsparcie dla komunikacji wielu strumieni w jednym połączeniu i inne inne to: Message bundling Security cookie against connection flood attack (SYN flood) Built-in heartbeat (reachability check) Extensibility
5 SCTP a TCP Podstawowe różnice w stosunku do TCP- TCP nie jest multihoming - TCP nie dopuszcza wielu strumieni w jednym połączeniu (association) - TCP zakłada, że strumień to sekwencja bajtów, natomiast w SCTP strumień to sekwencja wiadomości (krótkich lub długich).
6 Asocjacja SCTP operuje na poszerzonym pojęciu asocjacji TCP i UDP SCTP(protokół, adres lokalny, proces lokalny, adres obcy, proces obcy) SCTP (protokół, adresy lokalne, port lokalny, adresy obce, port obcy)
7 Gniazdo Gniazdo może mieć postać:(SCTP, [ , ], 80) lub np.: (SCTP, [ ], 80)
8 Pakiet Pakiet składa się ze: wspólnego nagłówkajednej lub więcej części opatrzonych własnym nagłówkiem (enkapsulacja) wspólny nagłówek nagłówek części nagłówek części nagłówek części
9 znacznik weryfikacyjnyWspólny nagłówek numer portu źródła (16) numer portu przeznaczenia znacznik weryfikacyjny (32) suma kontrolna CRC-32c Znacznik weryfikacyjny pozwala rozróżnić pakiety z dwóch różnych połączeń
10 Nagłówek części Typy określone w standardzie obejmują m.in.:(8) flagi długość (16) dane Typy określone w standardzie obejmują m.in.: DATA [0x00], INIT [0x01], INIT-ACK [0x02], SHUTDOWN [0x07], SHUTDOWN-ACK [0x08], SHUTDOWN-COMPLETE [0x08] Podział na części ułatwia rozszerzanie protokołu
11 Typ Value Chunk Type ----- ---------- 0 - Payload Data (DATA)1 - Initiation (INIT) 2 - Initiation Acknowledgement (INIT ACK) 3 - Selective Acknowledgement (SACK) 4 - Heartbeat Request (HEARTBEAT) 5 - Heartbeat Acknowledgement (HEARTBEAT ACK) 6 - Abort (ABORT) 7 - Shutdown (SHUTDOWN) 8 - Shutdown Acknowledgement (SHUTDOWN ACK) 9 - Operation Error (ERROR) 10 - State Cookie (COOKIE ECHO) 11 - Cookie Acknowledgement (COOKIE ACK) 12 - Reserved for Explicit Congestion Notification Echo (ECNE) 13 - Reserved for Congestion Window Reduced (CWR) 14 - Shutdown Complete (SHUTDOWN COMPLETE) 15 to 62 - reserved by IETF 63 - IETF-defined Chunk Extensions 64 to reserved by IETF 127 - IETF-defined Chunk Extensions 128 to reserved by IETF 191 - IETF-defined Chunk Extensions 192 to reserved by IETF 255 - IETF-defined Chunk Extensions
12 identyfikator strumieniaDATA [0x00] Ta część zawsze znajduje się na końcu pakietu typ = 0x00 flagi = BE długość TSN identyfikator danych identyfikator strumienia SSN dane TSN – Transmission Sequence Number SSN – Stream Sequence Number
13 Flagi B E Description 1 First piece of a fragmented user messageFirst piece of a fragmented user message Middle piece of a fragmented user message Last piece of a fragmented user message Unfragmented Message
14 INIT [0x01] typ = 0x01 flagi = 0 długośćpoczątkowy znacznik weryfikacyjny okno odbiorcy początkowy TSN liczba strumieni wyjściowych max. liczba strumieni wejściowych parametry opcjonalne (adresy IP asocjacji)
15 Rozszerzenia protokołuPodział na pakietu na wspólny nagłówek i jedną lub więcej części ułatwia rozszerzanie protokołu Co z obsługą nowych rozszerzeń? Obsługa zależy od pierwszych dwóch bitów typu 00xx xxxx – jeśli typ jest nieznany to porzuć pakiet „po cichu” i przerwij dalszą analizę 01xx xxxx – jeśli typ jest nieznany to porzuć pakiet, zgłoś błąd do nadawcy i przerwij dalszą analizę pakietu 10xx xxxx – jeśli typ jest nieznany to porzuć pakiet „po cichu”, ale analizuj kolejne części 11xx xxxx – jeśli typ jest nieznany to porzuć pakiet, zgłoś błąd do nadawcy, ale analizuj kolejne części
16 Przykład nawiązania połączeniahost A host B INIT INIT-ACK COOKIE-ECHO [+ DANE] COOKIE-ACK [+ DANE]
17 SACK . . . . . . typ = 0x03 flagi długość kumulacyjne TSN ACKokno odbiorcy liczba opuszczonych bloków N liczba zdublowanych bloków M Początek opuszczonego bloku #1 Koniec opuszczonego bloku #1 . . . TSN zdublowanego bloku #1 . . .
18 SACK - przykład 12 4660 2 3 5 TSN = 17 brak TSN = 15 TSN = 14 brak3 5 brak TSN = 15 TSN = 14 brak TSN = 12 Kumulacyjne ACK TSN = 11 TSN = 10
19 Zamknięcie połączeniahost A host B SHUTDOWN SHUTDOWN-ACK SHUTDOWN-COMPLETE