Datagram Congestion Control Protocol (DCCP)
description
Transcript of Datagram Congestion Control Protocol (DCCP)
![Page 1: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/1.jpg)
Datagram Congestion Control Protocol (DCCP)
CISC 856 - TCP/IP and Upper Layer Protocols
Presented byKe Li ([email protected])
2007/12/4
Thanks to Prof Amer, Kireeti Valicherla, and Xiaofeng Han
![Page 2: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/2.jpg)
2
Overview
Motivation
Connections
Unreliable datagram transfer
Modular congestion control
Miscellaneous issues
![Page 3: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/3.jpg)
3Adapted from Figure 2-11 TCP/IP Protocol Suite, Behrouz A. Forouzan
DCCP: Which Layer?
SCTPDCCP
![Page 4: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/4.jpg)
4
Streaming Media
Source: http://streaming.wisconsin.edu/Accessible_Tutorials/Tutorial1/p1-3.htm•What streaming media needs?
•Timeliness of data
•What streaming media doesn’t need?
•Retransmissions of lost/expired packets •Annoying “rebuffering…” – HOL blocking
![Page 5: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/5.jpg)
5
D12
D13
A12
A12
D14 - D16
Retransmit D13Data is not useful now
Server Client
Streaming Media Over TCP
D: data TCP-PDUA: ack TCP-PDU
![Page 6: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/6.jpg)
6
Streaming Media Over UDP
No congestion control in UDP
flows
Harmful to Internet health
Server Client
![Page 7: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/7.jpg)
7
Streaming Media with SCTP
Multi-streams over a single association Uses TCP-like congestion control Retransmission Partial Reliability: require at least 1 RTT
IP network
IP A2
IP B2 IP B1
IP B3IP A1
![Page 8: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/8.jpg)
Other target applications
Internet Telephony Constant-packet-rate sources Change data rate by adjusting packet size Extremely sensitive to delay Demands a slower congestion response
Interactive games Can quickly make use of available
bandwidth Prefers TCP-like sawtooth congestion
response
8
![Page 9: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/9.jpg)
9
Solution: DCCP
provides unreliable flow of datagrams provides congestion control using
Acknowledgment Sequence number Connection oriented
does not provide Full reliability: no-loss & no-error & in-order & no-duplicate flow control streaming
DCCP = UDP + congestion controlor
= TCP – bytestream semantics – full reliability
![Page 10: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/10.jpg)
DCCP connections
Full-duplex bi-directional connection Two logical half connections A-to-B half connection:
Application data sent from A to B Corresponding acks from B to A
In practice overlapped: DataAck Each half connection can have independent
features negotiated during connection initiation, e.g., different congestion control mechanism
10
Data
Ack
DCCP A DCCP B
![Page 11: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/11.jpg)
11
DCCP Response
DCCP Request
DCCP Ack
Client Server
DCCP Connection Initiation
CLOSED
LISTENREQUEST
PARTOPEN
RESPOND
CLOSED
OPEN
![Page 12: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/12.jpg)
12
DCCP Data Transfer Phase
DCCP Data
DCCP Ack
DCCP DataAck
DCCP Data
OPEN
OPEN
DCCP A DCCP B
PARTOPEN
…
Client Server
![Page 13: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/13.jpg)
13
DCCP Connection Termination
DCCP Close
DCCP Reset
Client Server
DCCP CloseReq
Wait 2 MSL
DCCP Close
DCCP Reset
Client Server
Wait 2 MSL
TIMEWAIT
CLOSED
TIMEWAIT
CLOSED
CLOSED
CLOSED
CLOSEREQ
CLOSING
CLOSING
OPENOPEN
OPEN
OPEN
![Page 14: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/14.jpg)
14
DCCP Data Transfer Example 1. without loss
Seq # on DCCP-PDU, not byte Each PDU carries a Seq # Seq # increases per PDU
detect loss – congestion control network duplicate – ignored
Pure acks also consume Seq # possible to detect ack loss
No cum ack – ack # is the Greatest Seq # Received (GSR) normally
Data(seq #1)
Data(seq # 2)
Ack(seq # 11, ack # 2)
Ack(seq # 10, ack #1)
DCCP A DCCP B
![Page 15: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/15.jpg)
15
Maybe loss: no data retransmissions Separate options indicate PDU loss
or ECN info: Ack Vector (SACK-like) Ack of Ack: clear receiver’s state A PDU is ackable – its header has
been successfully processed (e.g., valid header checksum and seq #)
Acked PDUs may be dropped -- no guarantee of data delivery Due to receiver buffer overflow
or corruption -- endpoint loss Data dropped option
Data(seq #1)
Data(seq # 2)
Ack(seq # 11, ack # 3)
Ack(seq # 10, ack #1)
DCCP Data Transfer Example 2. non-large burst of loss
Data(seq # 3)
Data(seq # 4)
Ack(seq # 12, ack # 4)
DCCP A DCCP B
![Page 16: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/16.jpg)
Sequence Validity Check Both endpoints keep expected seq#/ack# -- in sync
To detect seq# attacks, significant reordering, or one endpoint crash Out of sync after large burst of loss No cum ack, use separate DCCP-Sync/SyncAck PDU to recover
Sequence number variables Maintained at each endpoint for each connection GSR – Greatest Seq# Received GSS – Greatest Seq# Sent
Sequence validity windows Window width W: Seq Win feature Expected seq# [SWL, SWH], SWH=GSR+3W/4 Expected ack# [AWL, AWH], AWH=GSS Seq#/ack# out of range – seq invalid PDU, ignore and send Sync PDU
16GSR
W/4 3W/4 W
GSS
![Page 17: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/17.jpg)
17
DCCP Data Transfer Example 3. large burst of loss
Data(seq #20)
Data(seq #31)
Sync.ack# = out-of-sync seq# recvd
DCCP A DCCP B
Data(seq #21)
Data(seq #30)
…
[13, 20]
GSR – Greatest Sequence number Received GSS – Greatest Sequence number Sent Window Size = 8
Exp ack#
GSS=20
Exp seq#
[14, 21] GSS=21
[23, 30] GSS=30
[24, 31] GSS=31
[25, 32] GSS=32
If Sync is ackable,
SyncAck.ack# = Sync.seq#
If valid ack#: update GSR, back to sync
![Page 18: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/18.jpg)
18
DCCP Data Transfer Example 4. slight reordering
Data (seq #20)
Data (seq #23)
DCCP A DCCP B
Data (seq #21)
Data (seq #22)
[13, 20]
GSR – Greatest Sequence number Received GSS – Greatest Sequence number Sent Window Size = 8
Exp ack#
GSS=20
Exp seq#
[14, 21] GSS=21
[15, 22] GSS=22
[16, 23] GSS=23
Data may be delivered
out-of-order
![Page 19: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/19.jpg)
19
DCCP Data Transfer Example 5. medium reordering
DCCP A DCCP B
Data (seq #18)
Data (seq #22)
GSR – Greatest Sequence number Received GSS – Greatest Sequence number Sent Window Size = 8
Exp ack# Exp seq#
[15, 22] GSS=22
…
[16, 23] GSS=23
If Sync is ackable,
SyncAck.ack# = Sync.seq#
If valid ack#: update GSR, back to sync
![Page 20: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/20.jpg)
20
DCCP Data Transfer Example 6. significant reordering (or blind attack)
Data (seq #23)
DCCP A DCCP B
Data (seq #10)
Data (seq #22)
GSR – Greatest Sequence number Received GSS – Greatest Sequence number Sent Window Size = 8
Exp ack# Exp seq#
[15, 22] GSS=22
[16, 23] GSS=23
…
![Page 21: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/21.jpg)
21
DCCP PDU Types
DCCP-Request
DCCP-Response
DCCP-Ack
DCCP-Data
DCCP-DataAck
DCCP-CloseReq
DCCP-Close
DCCP-Reset
DCCP-Sync, DCCP-SyncAck
Connection Initialization
Data Transfer
Connection Termination
Resynchronization
![Page 22: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/22.jpg)
22
DCCP PDU Formats
Generic Header
Additional Fields (depending on type)
Options (optional )
Application Data Area
• Generic header: 16 bytes (using 48bits seq#) or 12 bytes (using short 24 bits seq#)
• Additional fields: fixed length field, e.g. ack# (48b, 24b)
• Options: variable length field up to1008 bytes, e.g. Init Cookie, Ack Vector, Change, Confirm, Slow Receiver, Data Dropped
![Page 23: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/23.jpg)
23
DCCP Generic Header
Source Port Destination Port
Data Offset CCVal CsCov (4bit)
Checksum
Res Type (4bit)
1 Reserved Sequence Number (high bits)
Sequence Number (low bits)
0 8 16 24
X =1
![Page 24: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/24.jpg)
24
DCCP Generic Header: short
Source Port Destination Port
Data Offset CCVal CsCov Checksum
Res Type 0 Sequence Number
0 8 16 24
X =0
![Page 25: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/25.jpg)
25
Acknowledgement Sub-Header
Reserved Acknowledgement Number (high bits)
Acknowledgement Number (low bits)
Reserved Acknowledgement Number(low bits)
X =1
X =0
0 8 16 24
![Page 26: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/26.jpg)
26
DCCP Checksum
Header Checksum Coverage (CsCov): 4 bits CsCov = 0: covers the DCCP header (generic, additional), DCCP
options, network-layer pseudoheader, and all application data in the packet (possibly some padding)
CsCov = 1-15: covers the DCCP header, DCCP options, network-layer pseudoheader, and the initial (CsCov-1)*4 bytes of the packet's application data.
Applications that can tolerate corruption can request header checksum only covers part or no app data at all Corrupted data could be delivered, impact on congestion
control Improve delivery rate and perceived performance
Data checksum option provides strong CRC checksum for all application data
CsCov Checksum
0 4 31
![Page 27: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/27.jpg)
27
Modular Congestion Control
Each congestion control mechanism supported by DCCP is assigned a 1-byte congestion control identifier, or CCID: a number from 0 to 255.
CCID 0 and CCID 1 are reserved
TCP-like congestion control – CCID 2
TCP friendly rate control (TFRC) – CCID 3
CCID 4-255 are reserved
CCID is a feature to be negotiated and agreed on both endpoints
![Page 28: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/28.jpg)
28
CCID 2: TCP-like Congestion Control
Congestion control like TCP [RFC4341] Ack contains Seq# of all received packets within some window Congestion event: packet loss, or ECN -> Halve congestion
window Abrupt rate changes Reverse-path (Ack) congestion control:
Ack Ratio R, integer, [2, cwnd/2] For each congestion window of data where at least one of the
corresponding acks was lost or ECN-marked, R is doubled; For each cwnd/(R2-R) consecutive congestion window of data
whose acks were not lost or ECN-marked, R is decreased by 1; The above formula comes from wanting to increase the number of
acks per congestion window, namely cwnd/R, by 1 for every congestion-free window that passes.
![Page 29: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/29.jpg)
29
CCID 2: TCP-like Congestion Control [RFC4341]
Applications using this:
Respond quickly to changes in available bandwidth
Must tolerate abrupt rate changes -- sawtooth
Online interactive games prefer this kind of congestion control
cwnd
Loss
(initial) ssthresh
![Page 30: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/30.jpg)
30
Receiver-based feedback mechanism Equation-based congestion control Minimizes abrupt changes in sending rate Maintains longer-term fairness with TCP
Streaming Media prefer steadier and less bursty traffic as provided by TFRC
CCID 3: TCP Friendly Rate Control [RFC 4342]
![Page 31: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/31.jpg)
31
CCID 3: TCP Friendly Rate Control
The receiver measures the loss event rate and feeds this information back to the sender
The sender uses these feedback messages to measure the round-trip time (RTT)
The loss event rate and RTT are then fed into TFRC's throughput equation, giving the acceptable transmit rate
The sender then adjusts its transmit rate to match the calculated rate
![Page 32: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/32.jpg)
32
Congestion related options
Slow receiver option Receiver sends this option to its sender to
indicate it is having trouble keeping up with the sender’s data
Sender shouldn't increase sending rate for about 1 RTT time
Data dropped option indicates that a packet was dropped due to
corruption, receiver buffer overflow, application requirement, or other non congestion reasons.
![Page 33: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/33.jpg)
33
Feature Negotiation Options
DCCP features on what value two endpoints agree Examples
Congestion control identifier (CCID) ECN capable / incapable Ack Ratio Allow Short Seq#
DCCP features are identified by a feature number and an endpoint Notation “F/X” is used
Use Change and Confirm options to negotiate
![Page 34: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/34.jpg)
34
F/X Notation
A B
Feature location for all F/A
Feature location for all F/B
Feature Remote for all F/B
Feature Remote for all F/A
Change L (Local)
Change R (Remote)
Confirm L (Local)
Confirm R (Remote)
![Page 35: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/35.jpg)
35
Feature Negotiation General-purpose reliable negotiating
Almost always during the connection initiation handshake, but it can begin at any time
Each happens in a single option exchange
Multiple values, preference order
Type Length Feature # Value(s)
![Page 36: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/36.jpg)
36
Feature Negotiation Example 1
Change R (CCID, 2)
Confirm L (CCID, 2)
Change L (CCID, 3 4)
Confirm R (CCID, 4, 4 2)
CCID/Server agreed as 2
CCID/Server agreed as 4
Client Server
![Page 37: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/37.jpg)
37
Feature Negotiation Example 2
Change L(CCID, 3 2)
CCID/Client agreed as 3
Change L(CCID, 3 2)
Change L(CCID, 3 2)
Change L(CCID, 3 2)
Confirm R(CCID, 3, 3 2)
Client Server
![Page 38: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/38.jpg)
38
DCCP: Miscellaneous issues
Maximum Packet Size (MPS) Maintained for each DCCP session Minimum of congestion control MPS (CCMPS) and path MTU Generally, DCCP should NOT fragment data – reduce
robustness Applications can usually get better error tolerance by producing
packets smaller than the PMTU
Security Concerns Prevents SYN-flooding-like DDoS attacks – init cookie Prevents Sequence Number Attack
Large Sequence Number Sequence and Acknowledgement Number Windows
![Page 39: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/39.jpg)
39
DCCP: Summary
Transport layer protocol
Unreliable datagrams
Modular congestion control
Negotiable features
![Page 40: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/40.jpg)
Implementation
Linux Kernel Version 2.6.14 Preliminary FreeBSD implementation tcpdump 3.9.4 and later includes DCCP
support
40
![Page 41: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/41.jpg)
41
References
Designing DCCP: Congestion Control Without Reliability, by Eddie Kohler, Mark Handley, and Sally Floyd. Proc. ACM SIGCOMM 2006, September 2006.
RFC 4340 - Datagram Congestion Control Protocol (DCCP), Eddie Kohler, Mark Handley, and Sally Floyd, March 2006
DCCP Overview, Eddie Kohler and Sally Floyd, July 2003 DCCP link from one of the authors
http://www.read.cs.ucla.edu/dccp/
![Page 42: Datagram Congestion Control Protocol (DCCP)](https://reader034.fdocuments.in/reader034/viewer/2022050723/56815969550346895dc6a8e1/html5/thumbnails/42.jpg)
42
Questions and Comments ? Thank you!
Have a nice holiday!