SCTP – Stream Control Transmission Protocol - os.inf.tu ... · PDF fileGliederung...

28
SCTP – Stream Control Transmission Protocol (im Vergleich zu TCP) Hauptseminarvortrag Robert Hentsch ([email protected]) 23.01.04

Transcript of SCTP – Stream Control Transmission Protocol - os.inf.tu ... · PDF fileGliederung...

SCTP – Stream Control Transmission Protocol

(im Vergleich zu TCP)

HauptseminarvortragRobert Hentsch ([email protected])

23.01.04

Gliederung

● Motivation / Allgemeines

● Multi-Homing

● SCTP-Paketformat

● Multi-Streaming

● Initialisation einer Verbindung

● Shutdown einer Verbindung

● Sicherheitsaspekte

Robert Hentsch ([email protected]) 02

Motivation

● Kleine Übertragungsfehler im Netzwerk --> bei Verwendung von TCP Verzögerungen für alle nachfolgenden Pakete

● Geringe Anzahl möglicher TCP-Sockets --> Bereitstellung hochverfügbarer Dienste mit vielen Verbindungen wird erschwert

● Anfälligkeit TCP's gegenüber DoS-Attacken

➔ bei der Übertragung von Telekommunikationsdaten über ein IP-Netzwerk wirkt sich das besonders nachteilig aus

➔ Anstoß zur Entwicklung einer Alternative zu TCP --> SCTP

Robert Hentsch ([email protected]) 03

SCTP als Transportprotokoll

IP

UDP TCP SCTP

Prozess 1 Prozess 2 Prozess 3 Applikationsebene

Transportebene

Verbindungsebene

Robert Hentsch ([email protected]) 04

SCTP...

... ist ein IP-Transportprotokoll und existiert parallel zu TCP und UDP.

... garantiert einen fehlerfreien und synchronen Transport von Datenpaketen über ein Netzwerk.

... stellt eine Association zwischen genau zwei Endstellen her, die bis zum Abschluss sämtlicher Datenübertragung Bestand hat.

... ist nicht byte-, sondern nachrichtenorientiert und unterstützt die Fragmentierung großer Nachrichten.

... ist übertragungsraten-adaptiv.

Robert Hentsch ([email protected]) 05

Multi-Homing

NetzwerkEndpoint A Endpoint Z

- Endstellen können jeweils unter verschiedenen Netzwerkadressen (IP's) erreichbar sein

- jede Endstelle wählt einen Pfad als primary path

- dient der besseren Verfügbarkeit

- noch keine Unterstützung für load sharing

*.*.*.001

*.*.*.002

Robert Hentsch ([email protected]) 06

Multi-Homing

NetzwerkEndpoint A Endpoint Z

*.*.*.001

*.*.*.002

/

- Übertragungsfehler --> Neuversand über alternativen Pfad --> Resistenz gegenüber Netzwerkausfällen

- vermehrte Fehler --> Änderung des primary path

- nicht benutzte Pfade werden mittels heartbeats auf Verfügbarkeit überprüft --> kein Zeitverlust durch IP-Routing

Robert Hentsch ([email protected]) 07

SCTP - Paketformat

8 16 24 32

Common Header

Chunk #1

Chunk #n

...

- Größe des Pakets <= MTU (Path MTU Recovery, mehrere Homes!)

- einige Chunks (zB zur Initialisierung oder Shutdown) benötigen seperate Pakete

Robert Hentsch ([email protected]) 08

SCTP Common Header & Chunk Field 8 16 24 32

Source Portnumber Destination Portnumber

Verification Tag

Checksum

Verification Tag --> Schutz vor blinden Angreifern

Checksumme wird über ganzes Paket gebildet:

- standard: Adler-32 (nicht genügend verteilt) - besser: CRC-32

--> Fehlerredundanz

8 16 24 32

Type Chunk Length

Chunk Data

Flags

Robert Hentsch ([email protected]) 09

Typen von Chunks 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)

ECNE und CWR werden nicht benutzt

Robert Hentsch ([email protected]) 10

Association vs. Stream

Association

- Verbindung zwischen zwei genau Endpunkten- innerhalb der A. existiert die 32bit-TSN (Transmission Sequence Number)- diese wird beim Aufbau der Verbindung initialisiert und pro gesendetem Chunk inkrementiert- verloren gegangene Chunks werden anhand TSN erkannt

Stream

- unidirektional- ein oder mehrere existieren unabhängig innerhalb einer Association- werden mit der Association angelegt und existieren bis zu deren Shutdown- 16bit-SSN (Stream Sequence Number) existiert analog zur TSN- diese dient zur Markierung der Position eines Chunks innerhalb des S.

Robert Hentsch ([email protected]) 11

Multi-Streaming

Endstelle

- mehrere unabhängige, unidirektionale Streams können über eine Association übertragen werden (zB Webpage: eigener Stream für jedes Datenobjekt)

- Verlust von Nachrichten in einem Stream beeinflusst andere Streams nicht --> Vorteil gegenüber TCP!

- fehlende Chunks werden dem Sender im SACK-Chunk mitgeteilt und wiederholt gesendet

Robert Hentsch ([email protected]) 12

Multi-Streaming

Prozess 1

Prozess 2

Prozess 3

45

234

1

7

8

neues Paket Warteschlangen für die Streams Userprozesse

Robert Hentsch ([email protected]) 13

Payload Data (DATA) 8 16 24 32

0 Chunk LengthFlags UBE

Transmission Sequence Number

Stream Identifier S Stream Seq. Number n

Payload Protocol Identifier

User Data (seq n of Stream S)

U unordered bit (Chunk gehört zu keinem Stream)B beginning fragment bit (erstes Bit einer fragmentierten Nachricht)E ending fragment bit (letztes Bit einer fragmentierten Nachricht)

Robert Hentsch ([email protected]) 14

Selective Acknowledgement (SACK)

8 16 24 32

Type = 3 Chunk LengthFlags

Cumulative TSN Ack

Nr of Gap Ack Blocks = N Nr of Duplicate TSNs = X

Advertised Receiver Window Credit

...

Gap Ack Block #1 Start Gap Ack Block #1 End

Duplicate TSN 1

...

Beispiel

empfangener Stream:TSN={10;11;12;_;14;15;_;17}

-->

Cumultative TSN Ack = 12

Nr of Gap Ack Blocks = 2Nr of Duplicate TSNs = 0

Block #1 Start = 2Block #1 End = 3Block #2 Start = 5Block #2 End = 5

SACK muss in gewissen Intervallen zur anderen Endstelle gesendet werden--> erneutes Senden unbestätigter Chunks

Robert Hentsch ([email protected]) 15

Association Initiation

● Four-way start-up handshake: ähnlich TCP-Erweiterung SYN COOKIE

● Antwort auf INIT: senden eines signierten Cookies

● TCB's (Transmission Control Block) werden erst angelegt, wenn gültiges COOKIE ECHO empfangen wurde

● Anzahl der benötigten Streams wird vereinbart

● IP-Adresslisten für Multi-Homing werden ausgetauscht

● Blind DoS-Attacken werden verhindert

Robert Hentsch ([email protected]) 16

Association Initiation

Endpoint A Endpoint Z

Closed

Cookie wait

Cookie echoed

Established

create TCBsend INIT 1.

2.generate Cookiesend INIT ACK

send COOKIE ECHO

3. 4.

create TCB send COOKIE ACK

5.

Robert Hentsch ([email protected]) 17

Initiation Acknowledgement (INIT ACK) 8 16 24 32

2 Chunk LengthFlags

Initiate Tag

Nr of outbound streams Nr of inbound streams

Advertised Receiver Window Credit

Initial TSN

Optional/Variable-Length Parameters

Variablen: State Cookie (Mandatory) IPv4 Address (Optional)IPv6 Address (Optional) Unrecognized Parameters (Optional)Reserved for ECN Capable (Optional) Host Name Address (Optional)

Robert Hentsch ([email protected]) 18

Termination of Association

- ABORT = ungraceful termination

- eine Endstelle sendet ein ABORT-Chunk mit gültigem Verification Tag --> sofortige Schließung der Verbindung --> kein Paketaustausch mehr

- SHUTDOWN = graceful termination

- vier Zwischenzustände (SHUTDOWN PENDING, SHUTDOWN SENT - SHUTDOWN RECEIVED, SHUTDOWN-ACK SENT)

- „half open“ wird nicht unterstützt

Robert Hentsch ([email protected]) 19

Shutdown of Association

Endpoint A

Endpoint Z

Closed

Established

send queued data

send queued data

send SHUTDOWN

send SHUTDOWN ACK

send SHUTDOWN COMPLETE

Robert Hentsch ([email protected]) 20

Sicherheitsaspekte

Schutz vor:

- Denial of Service Attacken (SYN-flood): --> Verwendung eines signierten Cookies TCBs werden erst nach erfolgreicher Initialisierung permanent angelegt

- „blinden“ Angreifern: --> Verwendung von Verification Tags in den übertragenen Paketen

aber:

- kein Schutz vor „Man in the middle“-Attacken

- keine weiteren eigenen Sicherheitsmaßnahmen --> Verwendung von TLS oder Sicherheit in der Verbindungsschicht mittels IPSec

Robert Hentsch ([email protected]) 21

SCTP Applikationen

● Übertragung von Telekommunikationssignalen über IP-basierte Netzwerke (ITU-T Signaling System No.7)

● SIP (Session Initiation Protocol) over SCTP (für Voice over IP)

● SCSI over SCTP (i-SCSI)

● HTTP over SCTP (siehe www.sctp.org)

Robert Hentsch ([email protected]) 22

SCTP-Links

www.sctp.de enthält Links zu allen relevanten Standards, Tools und eine Userland-Implementation

www.sctp.org Links zur Kernel-Implementation HTTP over SCTP (SCTP-enabled Apache + hacked Mozilla)

www.sourceforge.net/projects/lksctp Linux Kernel SCTP Projekt (ab Kernel 2.5.20)

www.faqs.org/rfcs/rfc2960.html RFC zu SCTP

Robert Hentsch ([email protected]) 23

Fragen?

Robert Hentsch ([email protected]) 25

Association InitializationFour-way start-up handshake: verhindert Blind DoS-Attacken TCB's werden erst angelegt, wenn gültiges COOKIE ECHO empfangen wurde

Endpoint A Endpoint Z

{app sets association with Z} (buil TCB) INIT [I-Tag=Tag_A & other info] (Start T1-init timer) (Enter COOKIE-WAIT state)

(Cancel T1-init timer) COOKIE ECHO [Cookie_Z] (Start T1-init timer) (Enter COOKIE-ECHOED state)

(Cancel T1-init timer, Enter ESTABLISHED state)

{app sends 1st user data; strm 0} ...

(compose temp TCB and Cookie_Z)INIT ACK [Veri Tag=Tag_A, I-Tag=Tag_Z, Cookie_Z, & other info](destroy temp TCB)

(build TCB enter ESTABLISHED state)COOKIE-ACK

Robert Hentsch ([email protected]) 25

Association Initialization

Closed

Cookie wait Cookie echoed

Established

rcv valid COOKIE ECHOcreate TCB / send COOKIE ACK

rcv INITgenerate Cookiesend INIT ACK

create TCBsend INIT

rcv INIT ACKsend COOKIE ECHO

rcv COOKIE ACK

Robert Hentsch ([email protected]) 26

Shutdown of Association

Established Closed

Shutdown pending

Shutdown sent

Shutdown received

Shutdown- ack sent

[SHUTDOWN]check outstanding DATA chunks

rcv SHUTDOWN / check outstanding DATA chunks

no more outstandingsend SHUTDOWN

no more outstandingsend SHUTDOWN ACK

rcv SHUTDOWN COMPLETEdelete TCB

rcv SHUTDOWN ACK send SHUTDOWN COMLETE delete TCB

rcv SHUTDOWN ACKsend SHUTDOWN COMPLETEdelete TCB

rcv SHUTDOWNsend SHUTDOWN ACK

Robert Hentsch ([email protected]) 27