DCCP (Datagram Congestion Control Protocol)

Similar documents
UNIT IV -- TRANSPORT LAYER

Datagram Congestion Control Protocol (DCCP)

QUIZ: Longest Matching Prefix

Transport Layer. Application / Transport Interface. Transport Layer Services. Transport Layer Connections

CS UDP: User Datagram Protocol, Other Transports, Sockets. congestion worse);

User Datagram Protocol

Chapter 6. What happens at the Transport Layer? Services provided Transport protocols UDP TCP Flow control Congestion control

CS 5520/ECE 5590NA: Network Architecture I Spring Lecture 13: UDP and TCP

Lecture 20 Overview. Last Lecture. This Lecture. Next Lecture. Transport Control Protocol (1) Transport Control Protocol (2) Source: chapters 23, 24

CMPE 80N: Introduction to Networking and the Internet

MIDTERM EXAMINATION #2 OPERATING SYSTEM CONCEPTS U N I V E R S I T Y O F W I N D S O R S C H O O L O F C O M P U T E R S C I E N C E

The Transmission Control Protocol (TCP)

EECS 122, Lecture 19. Reliable Delivery. An Example. Improving over Stop & Wait. Picture of Go-back-n/Sliding Window. Send Window Maintenance

Transport Layer. Gursharan Singh Tatla. Upendra Sharma. 1

Transport Layer (TCP/UDP)

Lecture 13: Transportation layer

Transmission Control Protocol. ITS 413 Internet Technologies and Applications

TCP over wireless links

Applied Networks & Security

Transport Layer TCP / UDP

Transport Layer Marcos Vieira

Transport Layer Review

NT1210 Introduction to Networking. Unit 10

Kent State University

Chapter 24. Transport-Layer Protocols

19: Networking. Networking Hardware. Mark Handley

Congestion Control. Lecture 12: TCP Friendliness, DCCP, NATs, and STUN. Chiu Jain Phase Plots. Fair A=B. Responding to Loss. Flow B rate (bps) t 1 t 3

OSI Transport Layer. Network Fundamentals Chapter 4. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

CSCI-131 Networking: the End-to-End Layer. Rodrigo Fonseca March 12 th, 2013

Lecture 10: TCP Friendliness, DCCP, NATs, and STUN

Lecture 12: TCP Friendliness, DCCP, NATs, and STUN

Transport layer. UDP: User Datagram Protocol [RFC 768] Review principles: Instantiation in the Internet UDP TCP

Transport layer. Review principles: Instantiation in the Internet UDP TCP. Reliable data transfer Flow control Congestion control

THE TRANSPORT LAYER UNIT IV

Placement of Function in a Best Effort World. Course Logistics Update

CSCI-GA Operating Systems. Networking. Hubertus Franke

bitcoin allnet exam review: transport layer TCP basics congestion control project 2 Computer Networks ICS 651

UDP and TCP. Introduction. So far we have studied some data link layer protocols such as PPP which are responsible for getting data

Different Layers Lecture 21

CHAPTER 3 PERFORMANCE ANALYSIS OF TRANSPORT PROTOCOLS TCP, UDP, SCTP AND DCCP VARIANTS

Application. Transport. Network. Link. Physical

Transport Layer. The transport layer is responsible for the delivery of a message from one process to another. RSManiaol

User Datagram Protocol (UDP):

Different Layers Lecture 20

EEC-682/782 Computer Networks I

Mobile Transport Layer Lesson 02 TCP Data Stream and Data Delivery

CS519: Computer Networks. Lecture 5, Part 1: Mar 3, 2004 Transport: UDP/TCP demux and flow control / sequencing

Transport Over IP. CSCI 690 Michael Hutt New York Institute of Technology

6.1 Internet Transport Layer Architecture 6.2 UDP (User Datagram Protocol) 6.3 TCP (Transmission Control Protocol) 6. Transport Layer 6-1

II. Principles of Computer Communications Network and Transport Layer

Communication Networks

EEC-484/584 Computer Networks. Lecture 16. Wenbing Zhao

Light & NOS. Dan Li Tsinghua University

ECE697AA Lecture 3. Today s lecture

Islamic University of Gaza Faculty of Engineering Department of Computer Engineering ECOM 4021: Networks Discussion. Chapter 5 - Part 2

CS457 Transport Protocols. CS 457 Fall 2014

Structured Streams: A New Transport Abstraction

EE 122: IP Forwarding and Transport Protocols

Congestion Control. Daniel Zappala. CS 460 Computer Networking Brigham Young University

Selective Retransmission of MPEG Video Streams over IP Networks

CS 4390 Computer Networks. Transport Services and Protocols

05 Transmission Control Protocol (TCP)

Chapter 23 Process-to-Process Delivery: UDP, TCP, and SCTP 23.1

Transport Protocols and TCP

ITS323: Introduction to Data Communications

Preview Test: HW3. Test Information Description Due:Nov. 3

TCP. Networked Systems (H) Lecture 13

Correcting mistakes. TCP: Overview RFCs: 793, 1122, 1323, 2018, TCP seq. # s and ACKs. GBN in action. TCP segment structure

Computer Networks and Data Systems

NWEN 243. Networked Applications. Layer 4 TCP and UDP

Impact of transmission errors on TCP performance. Outline. Random Errors

Managing Caching Performance and Differentiated Services

Network Programming. Introduction to Sockets. Dr. Thaier Hayajneh. Process Layer. Network Layer. Berkeley API

CSE 461 The Transport Layer

Uncompressed HD Video Streaming with Congestion Control

ETSF10 Internet Protocols Transport Layer Protocols

CSEP 561 Connections. David Wetherall

Announcements. IP Forwarding & Transport Protocols. Goals of Today s Lecture. Are 32-bit Addresses Enough? Summary of IP Addressing.

INF5071 Performance in Distributed Systems. October 01, 2010

Internet Layers. Physical Layer. Application. Application. Transport. Transport. Network. Network. Network. Network. Link. Link. Link.

CSE 461 Module 10. Introduction to the Transport Layer

6. The Transport Layer and protocols

Lecture 5. Transport Layer. Transport Layer 1-1

TSIN02 - Internetworking

Advanced Communication Networks

Stream Control Transmission Protocol (SCTP)

20: Networking (2) TCP Socket Buffers. Mark Handley. TCP Acks. TCP Data. Application. Application. Kernel. Kernel. Socket buffer.

RSC Part III: Transport Layer 3. TCP

4.0.1 CHAPTER INTRODUCTION

ELEC / COMP 177 Fall Some slides from Kurose and Ross, Computer Networking, 5 th Edition

ADAPTIVE MULTIMEDIA APPLICATIONS TO IMPROVE USER- PERCEIVED QOS IN MULTIHOP WIRELESS AD-HOC NETWORKS

Network-Adaptive Video Coding and Transmission

CN1047 INTRODUCTION TO COMPUTER NETWORKING CHAPTER 6 OSI MODEL TRANSPORT LAYER

TRANSMISSION CONTROL PROTOCOL. ETI 2506 TELECOMMUNICATION SYSTEMS Monday, 7 November 2016

Development of reliable protocol Sliding window protocols. C = channel capacity in bps I = interrupt/service time + propagation delay

Guide To TCP/IP, Second Edition UDP Header Source Port Number (16 bits) IP HEADER Protocol Field = 17 Destination Port Number (16 bit) 15 16

Last Time. Internet in a Day Day 2 of 1. Today: TCP and Apps

PLEASE READ CAREFULLY BEFORE YOU START

Page 1. Review: Internet Protocol Stack. Transport Layer Services EEC173B/ECS152C. Review: TCP. Transport Layer: Connectionless Service

OSI Transport Layer. objectives

Transcription:

DCCP (Datagram Congestion Control Protocol) Keith Briggs Keith.Briggs@bt.com research.btexact.com/teralab/keithbriggs.html CRG meeting 2003 Nov 21 (should have been 17) 15:00 typeset 2003 November 21 10:04 in pdflatex on a linux system DCCP 1 of 25

In the wireless environment In fixed networks, packet losses are usually due to network congestion Changes in data rate often enough to improve QoS In wireless networks many other factors: access to radio link, interference, fading etc Difficult to offer guarantees - continuously changing conditions DCCP 2 of 25

Proposal Adapt applications using: Codec, codec specific parameters (eg quality factor for MJPEG), frame sizes, frame rates etc Work with Agora System's ISABEL Light real-time video conferencing application Develop application with Agora Systems and implement into the QoS testbed Interface application with DCCP DCCP 3 of 25

ISABEL Light Developed by Agora Systems under the BRAIN & MIND EU projects Records lost packets using RTP numbering - decides whether to upgrade/downgrade codec Adaptation steps manually configured - audio & video codec, video size, frame rate and quality DCCP 4 of 25

Demonstration ISABEL Light application running between two laptops with web cameras over peer-peer WLAN link Adaptation steps configured to suit properties of link Traffic generated on link to force adaptation DCCP 5 of 25

What is DCCP? Datagram Congestion Control Protocol (DCCP) provides features including unreliable flow of datagrams with acknowledgements, reliable handshake for connection setup and teardown, together with other features It is intended for applications that require the flow-based semantics of TCP, but which do not want TCP's in-order delivery and reliability semantics DCCP 6 of 25

Interface with DCCP Translation link being written to run ISABEL Light application over DCCP instead of UDP Using kernel-based implementation of DCCP Unlikely to be large improvement gains since ISABEL Light application will not be aware of new DCCP layer and therefore cannot take advantage if it DCCP 7 of 25

DCCP features An unreliable flow of datagrams, with acknowledgements Reliable handshake for connection setup and teardown Reliable negotiation of features A choice of TCP-friendly congestion control mechanisms, including TCP-like congestion control (CCID 2) and TCP-Friendly Rate Control (CCID 3). CCID 2 uses a version of TCP's congestion control mechanisms, and is appropriate for flows that want to quickly take advantage of available bandwidth, and can cope with quickly changing send rates; CCID 3 is appropriate for flows that require a steadier send rate Options that tell the sender, with high reliability, which packets reached the receiver, and whether those packets were ECN marked, corrupted, or dropped in the receive buffer DCCP 8 of 25

Differences from TCP DCCP is a packet stream protocol, not a byte stream protocol. The application is responsible for framing Unreliability: DCCP will never retransmit a datagram. Options are retransmitted as required to make feature negotiation and ack information reliable Packet sequence numbers. Sequence numbers refer to packets, not bytes. Every packet sent by a DCCP endpoint gets a new sequence number Choice of congestion control. One such feature is the congestion control mechanism to use for the connection. In fact, the two endpoints can use different congestion control mechanisms for their data packets: In an A<->B connection, data packets sent from A->B can use CCID 2, and data packets sent from B->A can use CCID 3. Different acknowledgement formats. The CCID for a connection determines how much ack information needs to be transmit- DCCP 9 of 25

ted. In CCID 2 (TCP-like), this is about one ack per 2 packets, and each ack must declare exactly which packets were received (Ack Vector option); in CCID 3 (TFRC), it's about one ack per RTT, and acks must declare at minimum just the lengths of recent loss intervals Distinguishing different kinds of loss. A Data Dropped option lets one endpoint declare that a packet was dropped because of corruption, because of receive buffer overflow, and so on. This facilitates research into more appropriate rate-control responses for these non-network-congestion losses (although currently all losses will cause a congestion response) Integrated support for mobility DCCP 10 of 25

Our testbed DCCP 11 of 25

DCCP implementations McManus: kernel-space - requires patching the linux kernel Evlogimenis et al.: user space uses an underlying UDP socket single-threaded ask/choose cycle for option request (CCID) reliable acks a problem pro: easy to debug con: API differs from socket standard DCCP 12 of 25

DCCP performance testing We send traffic over several hops and measure RTT We generate congestion traffic on intermediate links Results below are for 4 hops, with Poisson traffic at λ 4kb packets per second DCCP 13 of 25

DCCP performance results 10 ICMP RTT with congestion 10 kernel DCCP RTT with congestion 10 Berkeley DCP RTT with congestion 8 8 8 RTT/ms 6 4 RTT/ms 6 4 RTT/ms 6 4 2 2 2 0 0 100 200 300 400 500 Poisson rate 0 0 100 200 300 400 500 Poisson rate 0 0 100 200 300 400 500 Poisson rate DCCP 14 of 25

References DCCP specs: http://www.icir.org/kohler/dccp/ Pedro Ruiz, Emilio Garcia: Improving user-perceived QoS in Mobile and wireless IP networking using real-time adaptive multimedia applications, 2002 http://www.agorasystems.com D. Sisalem.: End-to-end quality of service control using adaptive applications, 1997 Schulzrinne et al.: RTP: A transport protocol for real-time applications, RFC 1889, 1996 DCCP 15 of 25

Source Authors: Timothy Sohn, Eiman Zolfaghari, Alkis Evlogimenos, Khian Hao Lim, Kevin Lai http://www.cs.berkeley.edu/~laik/projects/dccp/ last updated: 2002 May 24 Version 0.0.1 Files required: dcp.tar.gz, libkl-1.3.8.tar.gz blas and lapack for performance monitoring Support documents: http://www.icir.org/kohler/dcp/ NB: build libkl first DCCP 16 of 25

Design totally in user space - differs from McManus' implementation http://www.ducksong.com:81/dccp/ which requires linux kernel patches pro: easy to debug con: API differs from socket standard uses an underlying UDP socket single-threaded ask/choose cycle for option request (CCID) reliable acks a problem DCCP 17 of 25

1. DCP init Initializes the library. API - uses callbacks 2. DCP main loop Enters the DCP library main loop. 3. DCP socket Creates a new socket. 4. DCP bind Binds a socket to a port. 5. DCP listen Sets up the socket for incoming connections. 6. DCP connect handle Sets up the success and error connect handlers for the specified socket. 7. DCP connect Completes the connection of the specified socket. 8. DCP close handle Sets up the success and error close handlers for the specified socket. 9. DCP close Closes the socket. DCCP 18 of 25

10. DCP accept handle Sets up the success and error accept handlers for the specified socket. 11. DCP accept Creates a socket from an incoming request off the listening socket 12. DCP recv handle Sets up the success and error receive handlers for the specified socket. 13. DCP recv Reads a packet s worth of data off the packet buffer. 14. DCP send handle Sets up success and error send handlers for the socket. 15. DCP send Sends a packet of data. 16. DCP setsockopt handle Sets up success and error setsockopt handlers for the socket. It also specifies the changed option. 17. DCP getsockopt Retrieves information about an option from the specified socket. DCCP 19 of 25

Instant Calls DCP init, DCP main loop, DCP socket, DCP bind and DCP listen are instantaneous calls that do not require the use of callbacks. DCP init and DCP main loop functions are unrelated to any in the conventional socket interface. Given the user-level implementation, there is a need to initialize the underlying UDP socket and it is done through the DCP init function. To suit the event-based engine, the application has to tie callbacks to events and finally enter a loop where all events take place. In our implementation, this loop happens as a last function call to DCP main loop. DCCP 20 of 25

Connect and Close DCP connect and DCP close are slightly different from the rest. Their corresponding handle calls serve only to tie the application layer callbacks to the DCP-sockets. The DCP connect call initiates the sending of the request packet and upon ending the proper starting sequence, would invoke the callback. The callback can then proceed to call the send and receive functions. The DCP close call does essentially the same thing for the closing sequence. DCCP 21 of 25

Accept, Recv and Send These three calls are similar in semantics. Their handlers also tie application level callbacks to the sockets but at the same time creates a holding back effect. This is best explained with an example. How the application could send a packet is by first calling DCP send handle which ties the sending callback to the socket. This is exactly the point where the Congestion Control ID's control the flow of the packets. The Congestion Control ID in charge of sending only invokes the application's sending callback when sending is allowed. The application's sending callback would then call DCP send which actually sends out the packet. DCP recv handle and DCP accept handle work similarly. They serve to register the desire of the application to receive or accept through the socket. When a packet arrives or when there is a new connection to accept, the application's callback would then be invoked. These would then call the corresponding calls of DCP recv or DCP accept. DCCP 22 of 25

getsockopt and setsockopt DCP setsockopt handle is different from the rest of the calls. First, it does not have a corresponding DCP getsockopt call. Requested options and callbacks are passed in the call to facilitate feature negotiation. The success or error callbacks serve to inform the application of the success or failure of the feature negotiation. The failure callback could be invoked upon receiving a CHOOSE and the application could then observe the CHOOSE values given and decide on a different feature value to negotiate. DCP getsockopt then serves for the application to check the present feature values on the socket. Its semantics are very similar to that of the conventional socket interface. DCCP 23 of 25

Issues Sequence numbers 24 bits 25GB 32 bits possible User-space overheads buffer copying lack of timer resolution the big question: should we write an interface so that we can easily use any application with this DCCP or the kernel version? DCCP 24 of 25

dcp simple server0.c Example server code DCCP 25 of 25