STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

31
STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

description

STREAM CONTROL TRANSMISSION PROTOCOL (SCTP). SCTP service model. connection oriented reliable data transfer - no loss - no duplicates - data integrity ordered / unordered delivery TCP provides only ordered service. If the application desires unordered service, - PowerPoint PPT Presentation

Transcript of STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Page 1: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Page 2: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

SCTP service model• connection oriented

• reliable data transfer - no loss - no duplicates - data integrity

• ordered / unordered delivery

TCP provides only ordered service.If the application desires unordered service,

it has the option of using UDP => unreliable

SCTP separates data reliability from ordered delivery SCTP can provide unordered service with reliability SCTP can provide ordered service with reliability

Page 3: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

• SCTP preserves message boundaries TCP is byte-oriented. Applications must add their own record marking to delineate messages.

• concept of chunks

• security against SYN flooding attack

• multi-homing

• multi-streaming

• message fragmentation and bundling

• congestion control

Page 4: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Comparison between SCTP, TCP and UDP

Feature SCTP

TCP

UDP

State required at endpoints Yes Yes No

Reliable Data Transfer Yes Yes No

Multi-homed Host Support Yes No No

Multi-Stream Support Yes No No

Security against SYN attacks Yes No No

Unordered Data Delivery Yes No Yes

Failure detection (Heartbeat) Yes No No

Page 5: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

SCTP PDU format

1 common header + chunks (control or data)

Page 6: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Motivation

• Many applications need reliable message

delivery – they do so by delineating a TCP

stream

• TCP provides both strict-ordering and

reliability – many applications may not

need both

Page 7: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Motivation (contd)

• HTTP is one such application– While transferring multiple embedded files we

only want• Reliable file transfer for each file• Partial ordering for the packets of each file but not

total ordering amongst all the packets

– TCP provides more than this (but overhead?)– SCTP may help (how? – later)

Page 8: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

HTTP Server ArchitectureMultiple File Transfer (Embedded files) - TCP

Client

Server

Childprocess

Request file 0

Fork childSend file 0

Request file 1..N

Send file 1,2,…N

Page 9: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

HTTP Server ArchitectureMultiple Files Transfer (Embedded Files) - SCTP

Client

Server

Childprocess

Request file 0

Fork childSend file 0 – stream 0

Request files 1..N

Send file 1 – stream 1

Send file N – stream N

Page 10: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Reason

3 2 1 3 2 1

File 2File 31

TCPReceive buffer in kernel

Server Client

TCPSend buffer in kernel

23123

Page 11: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Reason

3 2 1 3 2 1

File 2File 3

1

SCTPReceive buffer in kernel

Server Client

SCTPReceive buffer in kernel

2

3

1

2

3

Page 12: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

Multi-homing

Page 13: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

single-homed SCTP endpoint

A1

Host A

IP=128.33.6.12

endpoint=[128.33.6.12 : 100]

B2

multi-homed SCTP endpoint

B3B1

Host B

IP1=160.15.82.20IP2=161.10.8.221IP3=10.1.61.11

endpoint=[160.15.82.20, 161.10.8.221, 10.1.61.11 : 200]

B2 B3B1

Host B

association={ [128.33.6.12 : 100] : [160.15.82.20, 161.10.8.221, 10.1.61.11 : 200] }

SCTP association

application

SCTP100

application

SCTP200

A1

Host A

IP=128.33.6.12

application

SCTP100

SCTP200

applicationIP1=160.15.82.20IP2=161.10.8.221IP3=10.1.61.11

multi-homing

Page 14: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

• 4 possible TCP connections:•(A1,B1) or (A1,B2) or (A2,B1) or (A2,B2)

• 1 SCTP association:•({A1,A2},{B1,B2}) •Primary destinations for A & B (e.g., A1 & B1)

NetworkHost A Host BB1

B2

A1

A2

X

• What happens if a primary fails? TCP connection is broken whereas SCTP association can continue to transmit to an alternate destination address

Page 15: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

primary alternates

DATA

• Host A monitors reachability of the primary destination address of Host B

failure detection

Host A starts the retransmission timer

• If timer expires increment error_count

If error_count > threshold state = inactive

• If Host A receives SACK before timer expires error_count = 0 & state = active

SACK

A1

Host Aapplication

SCTP100

B2 B3B1

Host Bapplication

SCTP200

• error_count is a variable associated with each destination address of a host. It is set to zero initially.

Page 16: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

• Host A monitors reachability of alternate destination addresses of Host B

• HEARTBEAT is sent periodically to each alternate address• When a HEARTBEAT is sent

increment error_count If error_count > threshold

state = inactive

• If Host A receives a HEARTBEAT-ACK error_count = 0 & state = active

• When the primary destination address is detected unreachable => SCTP sender chooses 1 of the REACHABLE, alternate destination addresses as primary

primary alternates

HEARTBEAT HEARTBEAT-ACK

A1

Host Aapplication

SCTP100

B2 B3B1

Host Bapplication

SCTP200

Page 17: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

association setup

mandatory -• type• chunk flags• chunk length• initiation tag• a_rwnd• outbound streams• maximum inbound streams• initial TSN

optional - • addresses(IPv4,IPv6, hostname)• supported address types• ECN capable• cookie preservative

INIT (V=0) (I=TagA)

Host AV: verification tagI: initiation tag

closed

closed

cookiewait

How many way handshake ?

Host B

Page 18: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

SCTP INIT PDU

Page 19: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

association setup

mandatory –All fields present in mandatory INIT +• state cookie

optional -• addresses(IPv4,IPv6, hostname)• ECN Capable• error reporting for unrecognized parameters

INIT (V=0) (I=TagA)

INIT-ACK

(V=TagA) (I=TagB)

V: verification tag I: initiation tag

closed

closedcookiewait

Host A Host B

Page 20: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

association setup

• type• chunk flags• chunk length• state cookie

DATA chunk can be sent along with COOKIE-ECHO

INIT (V=0) (I=TagA)INIT-ACK

(V=TagA) (I=TagB)

COOKIE-ECHO

(V=TagB)

V: verification tag I: initiation tag

closed

closed

cookiewait

cookieechoed

Host BHost A

Page 21: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

SYN

victim Flooded!!

buffer holding half-open (pending)connections

why COOKIE ???

SYN

SYN

SYN

SYN

SYN

• There is no ACK in response to the SYN-ACK, hence connection remains half-open• Other genuine clients cannot open connections to the victim• The victim is unable to provide service

TCP SYN flooding attack

attackers

128.3.4.5

192.10.2.8

221.3.5.10 SYN

SYN

190.13.4.1

228.3.14.5

130.2.4.15

Page 22: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

how does COOKIE help ?

PrepareCOOKIE

Send INIT_ACKwith COOKIE

Host BreceivesINIT • Receiver of INIT does not make the

Transmission Control Block (TCB) [i.e no pending connection information kept]• Remains in CLOSED state• In case of attack, COOKIE-ECHO won’t arrive but receiver is unaffected

Page 23: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

COOKIE expired ? Send ERRORchunk

Discard SCTP PDU

validyes

Sender can requestlonger cookie lifenext time through theCookie - preservativeparameter in theINIT chunk

how does COOKIE help ?

PrepareCOOKIE

Send INIT_ACKwith COOKIE

Extract & ValidateCOOKIE

Host B receivesCOOKIE-ECHO

invalidDiscard SCTP PDU

Unpack COOKIE andbuild association TCB

no

Host BreceivesINIT

Page 24: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

association setup

• type• chunk flags• chunk length

DATA chunk can be sent along with COOKIE-ACK

INIT (V=0) (I=TagA)INIT-ACK

(V=TagA) (I=TagB)COOKIE-ECHO

(V=TagB)

COOKIE-ACK

(V=TagA)

V: verification tag I: initiation tag

closed

closed

cookiewait

established

cookieechoed

established 4 – way handshake !

Host A Host B

Page 25: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

association shutdown

upper layerinvokes SHUTDOWN

shutdown_pending

DATA

DATA

SACK

SHUTDOWN

shutdown_sent

established established

Host A Host B

Page 26: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

SHUTDOWN

DATASHUTDOWN+ SACK

SHUTDOWN_ACK

SHUTDOWN_COMPLETE

shutdown_sentshutdown_received

delete TCBshutdown_ack_sent

delete TCBclosedclosed

stop accepting data

Page 27: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

when should a SACK be sent ?

DATA (TSN 1)

SACK 1 + DATAEndpoint sends DATA to its peer, always bundlea SACK chunk to ack any new DATA chunks

DATA (TSN 2)

SACK 2

If no DATA to be sent to the peer, then SACK is DELAYED Delay – 200 to 500 ms

200 ms

Host A Host B

DATA (TSN 2)

SACK 2 Duplicate data chunks => immediately send SACK without any delay

Page 28: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

when should a SACK be sent ?

DATA (TSN 3)

SACK 4

Must send a SACK for every other SCTP PDU received without any delay

Host A Host B

DATA (TSN 4)

XDATA (TSN 5)

DATA (TSN 6)

SACK 4

One or more TSNs missing => immediately send SACK with Gap Ack blocks without any delay

200 ms

Page 29: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

summary• SCTP PDU = 1 common header + 1 or more chunks ( control or data)

• Association setup = 4 way handshake (INIT, INIT-ACK, COOKIE-ECHO, COOKIE_ACK)

• COOKIE mechanism to prevent SYN flooding attack

• Graceful shutdown(SHUTDOWN, SHUTDOWN-ACK, SHUTDOWN-COMPLETE) no half-close as in TCP

• Separates reliability from ordered delivery

• Preserves message boundaries

• SACK chunks to ack cumulative TSN + gap ack blocks + duplicate TSNs

• Achieves link / path redundancy by supporting multi-homed hosts along with reachability check

Page 30: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

References

• Randall R. Stewart, Qiaobing Xie. Stream Control Transmission Protocol (SCTP) A Reference Guide

• Stewart et. al. Stream Contol Transmission Protocol RFC-2960, October 2000. URL: http://www.ietf.org/rfc/rfc2960.txt

• SCTP for Beginners URL:http://tdrwww.exp-math.uni essen.de/inhalt/forschung/sctp_fb/index.html

• SCTP overview http://www.sctp.org/sctpoverview.html

• SCTP tutorial http://www.iec.org/online/tutorials/sctp/

• SCTP applicability statement http://www.ietf.org/rfc/rfc3257.txt

Page 31: STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)

References

Slides collected from various sources including Keyur Shah, Sourabh Ladha, P. Amer, P. Conrad, Sam Baskinger