Explicit Congestion Notification (ECN) is an extension to the Internet Protocol The Internet Protocol is a protocol used for communicating data across a packet-switched internetwork using the Internet Protocol Suite, also referred to as TCP/IP and to the Transmission Control Protocol The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite (the other being Internet Protocol, or IP), so the entire suite is commonly referred to as TCP/IP. Whereas IP handles lower-level transmissions from computer to computer as a message makes its way and is defined in RFC 3168 (2001). ECN allows end-to-end notification of network congestion In data networking and queueing theory, network congestion occurs when a link or node is carrying so much data that its quality of service deteriorates. Typical effects include queueing delay, packet loss or the blocking of new connections. A consequence of these latter two is that incremental increases in offered load lead either only to small without dropping packets which results in better network efficiency and fewer packet retransmissions. ECN is an optional feature that is only used when both endpoints support it and are willing to use it. It also requires support from the underlying network.
Traditionally, TCP/IP networks signal congestion by dropping packets. When ECN is successfully negotiated, an ECN-aware router may set a mark in the IP header instead of dropping a packet in order to signal impeding congestion. The receiver of the packet echoes the congestion indication to the sender, which must react as though a packet was dropped.
ECN uses two bits next to[1] the Differentiated Services field in the IP header, in the IPv4 TOS octet or the IPv6 Traffic Class octet. These two bits initially encoded one of the values ECN-Capable Transport (ECT), Not-ECN-Capable Transport (Not-ECT) or Congestion Experienced (CE) [2] but were latter changed to encode four different codepoints (Non-ECT, ECT, ECT(1), CE) [3].
Some outdated or buggy network equipment drops packets with ECN bits set, rather than ignoring the bits.[4]
| The Internet Protocol Suite The Internet Protocol Suite is the set of communications protocols used for the Internet and other similar networks. It is named from two of the most important protocols in it: the Transmission Control Protocol (TCP) and the Internet Protocol (IP), which were the first two networking protocols defined in this standard. Today's IP networking |
| Application Layer Application Layer is a term used in categorizing protocols and methods in architectural models of computer networking. Both the OSI model and the Internet Protocol Suite define application layers |
| BGP The Border Gateway Protocol is the core routing protocol of the Internet. It maintains a table of IP networks or 'prefixes' which designate network reachability among autonomous systems (AS). It is described as a path vector protocol. BGP does not use traditional Interior Gateway Protocol (IGP) metrics, but makes routing decisions based on path, · DHCP The Dynamic Host Configuration Protocol is a computer networking protocol used by hosts (DHCP clients) to retrieve IP address assignments and other configuration information · DNS The Domain Name System is a hierarchical naming system for computers, services, or any resource connected to the Internet or a private network. It associates various information with domain names assigned to each of the participants. Most importantly, it translates domain names meaningful to humans into the numerical (binary) identifiers · FTP File Transfer Protocol is a standard network protocol used to copy a file from one host to another over a TCP/IP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server applications, which solves the problem of different end host · GTP GPRS Tunnelling Protocol is a group of IP-based communications protocols used to carry General Packet Radio Service (GPRS) within GSM and UMTS networks · HTTP The Hypertext Transfer Protocol is an Application Layer protocol for distributed, collaborative, hypermedia information systems · IMAP The Internet Message Access Protocol is one of the two most prevalent Internet standard protocols for e-mail retrieval, the other being the Post Office Protocol (POP). Virtually all modern e-mail clients and mail servers support both protocols as a means of transferring e-mail messages from a server · IRC Internet Relay Chat is a form of real-time Internet text messaging (chat) or synchronous conferencing. It is mainly designed for group communication in discussion forums, called channels, but also allows one-to-one communication via private message as well as chat and data transfers via Direct Client-to-Client · Megaco Megaco is an implementation of the Media Gateway Control Protocol architecture for controlling Media Gateways on Internet Protocol (IP) networks and the public switched telephone network (PSTN). The general base architecture and programming interface was originally described in RFC 2805 and the current specific Megaco definition is ITU-T · MGCP MGCP is an implementation of the Media Gateway Control Protocol architecture for controlling Media Gateways on Internet Protocol networks and the public switched telephone network (PSTN). The general base architecture and programming interface is described in RFC 2805 and the current specific MGCP definition is RFC 3435 (obsoleted RFC 2705). It is · NNTP The Network News Transfer Protocol is an Internet application protocol used for transporting Usenet news articles (netnews) between news servers and for reading and posting articles by end user client applications. Brian Kantor of the University of California, San Diego and Phil Lapsley of the University of California, Berkeley authored RFC 977, · NTP The Network Time Protocol is a protocol for synchronizing the clocks of computer systems over packet-switched, variable-latency data networks. NTP uses UDP on port 123 as its transport layer. It is designed particularly to resist the effects of variable latency by using a jitter buffer. NTP also refers to a reference software implementation that · POP In computing, the Post Office Protocol is an application-layer Internet standard protocol used by local e-mail clients to retrieve e-mail from a remote server over a TCP/IP connection. POP and IMAP (Internet Message Access Protocol) are the two most prevalent Internet standard protocols for e-mail retrieval. Virtually all modern e-mail clients and · RIP The Routing Information Protocol is a dynamic routing protocol used in local and wide area networks. As such it is classified as an interior gateway protocol (IGP). It uses the distance-vector routing algorithm. It was first defined in RFC 1058 (1988). The protocol has since been extended several times, resulting in RIP Version 2 (RFC 2453). Both · RPC Remote procedure call is an Inter-process communication technology that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. That is, the programmer would write essentially · RTP The Real-time Transport Protocol defines a standardized packet format for delivering audio and video over the Internet. It was developed by the Audio-Video Transport Working Group of the IETF and first published in 1996 as RFC 1889, and superseded by RFC 3550 in 2003 · RTSP The Real Time Streaming Protocol is a network control protocol designed for use in entertainment and communications systems to control streaming media servers. The protocol is used to establish and control media sessions between end points. Clients of media servers issue VCR-like commands, such as play and pause, to facilitate real-time control of · SDP The Session Description Protocol is a format for describing streaming media initialization parameters in an ASCII string. The IETF published the original specification as an IETF Proposed Standard in April 1998, and subsequently published a revised specification as an IETF Proposed Standard as RFC 4566 in July 2006 · SIP The Session Initiation Protocol is an IETF-defined signaling protocol, widely used for controlling multimedia communication sessions such as voice and video calls over Internet Protocol (IP). The protocol can be used for creating, modifying and terminating two-party (unicast) or multiparty (multicast) sessions consisting of one or several media · SMTP Simple Mail Transfer Protocol is an Internet standard for electronic mail (e-mail) transmission across Internet Protocol (IP) networks. SMTP was first defined in RFC 821 (STD 15) (1982), and last updated by RFC 5321 (2008) which includes the extended SMTP (ESMTP) additions, and is the protocol in widespread use today. SMTP is specified for · SNMP Simple Network Management Protocol is a UDP-based network protocol. It is used mostly in network management systems to monitor network-attached devices for conditions that warrant administrative attention. SNMP is a component of the Internet Protocol Suite as defined by the Internet Engineering Task Force (IETF). It consists of a set of standards · SOAP SOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks. It relies on eXtensible Markup Language as its message format, and usually relies on other Application Layer protocols (most notably Remote Procedure Call (RPC) and · SSH Secure Shell or SSH is a network protocol that allows data to be exchanged using a secure channel between two networked devices. Used primarily on GNU/Linux and Unix based systems to access shell accounts, SSH was designed as a replacement for Telnet and other insecure remote shells, which send information, notably passwords, in plaintext, · Telnet TELNET is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility via a virtual terminal connection. User data is interspersed in-band with TELNET control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP) · TLS/SSL Transport Layer Security and its predecessor, Secure Socket Layer (SSL), are cryptographic protocols that provide security for communications over networks such as the Internet. TLS and SSL encrypt the segments of network connections at the Transport Layer end-to-end · XMPP Extensible Messaging and Presence Protocol (formerly named Jabber) is an open, XML-based protocol originally aimed at near-real-time, extensible instant messaging (IM) and presence information (e.g., buddy lists), but now expanded into the broader realm of message-oriented middleware. It was developed by the Jabber open-source community in 1999 · (more) Categories: Network protocols | OSI protocols | Internet protocols |
| Transport Layer In computer networking, the Transport Layer is a group of methods and protocols within a layered architecture of network components within which it is responsible for encapsulating application data blocks into data units suitable for transfer to the network infrastructure for transmission to the destination host, or managing the reverse |
| TCP The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite (the other being Internet Protocol, or IP), so the entire suite is commonly referred to as TCP/IP. Whereas IP handles lower-level transmissions from computer to computer as a message makes its way · UDP The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol (IP) network without requiring prior communications to set up special transmission · DCCP The Datagram Congestion Control Protocol is a message-oriented Transport Layer protocol. DCCP implements reliable connection setup, teardown, ECN, congestion control, and feature negotiation. DCCP was published as RFC 4340, a proposed standard, by the IETF in March, 2006. RFC 4336 provides an introduction. Linux had an implementation of DCCP first · SCTP In computer networking, the Stream Control Transmission Protocol is a Transport Layer protocol, serving in a similar role as the popular protocols Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). It provides some of the same service features of both: it is message-oriented like UDP and ensures reliable, in-sequence transport · RSVP The Resource ReSerVation Protocol , described in RFC 2205, is a Transport layer protocol designed to reserve resources across a network for an integrated services Internet. "RSVP does not transport application data but is rather an Internet control protocol, like ICMP, IGMP, or routing protocols" - RFC 2205. RSVP provides receiver- · ECN · (more) Categories: Network protocols | OSI protocols | Internet protocols |
| Internet Layer The Internet Layer is a group of internetworking methods in the TCP/IP protocol suite which is the foundation of the Internet . It is the group of methods, protocols, and specifications which are used to transport datagrams (packets) from the originating host across network boundaries, if necessary, to the destination host specified by a network |
| IP The Internet Protocol is a protocol used for communicating data across a packet-switched internetwork using the Internet Protocol Suite, also referred to as TCP/IP (IPv4 Internet Protocol version 4 is the fourth revision in the development of the Internet Protocol (IP) and it is the first version of the protocol to be widely deployed. Together with IPv6, it is at the core of standards-based internetworking methods of the Internet. IPv4 is still by far the most widely deployed Internet Layer protocol. As of 2010[, IPv6 Internet Protocol version 6 is an Internet Protocol version which is designed to succeed IPv4, the first implementation which is still in dominant use currently[update]. It is an Internet Layer protocol for packet-switched internetworks. The main driving force for the redesign of Internet Protocol is the foreseeable IPv4 address exhaustion. IPv6) · ICMP The Internet Control Message Protocol is one of the core protocols of the Internet Protocol Suite. It is chiefly used by networked computers' operating systems to send error messages—indicating, for instance, that a requested service is not available or that a host or router could not be reached · ICMPv6 Internet Control Message Protocol Version 6 is the implementation of the Internet Control Message Protocol (ICMP) for Internet Protocol version 6 (IPv6). ICMPv6 is an integral part of IPv6 and performs error reporting, diagnostic functions (e.g., ping), neighbor discovery, and a framework for extensions to implement future Internet Protocol · IGMP The Internet Group Management Protocol is a communications protocol used to manage the membership of Internet Protocol multicast groups. IGMP is used by IP hosts and adjacent multicast routers to establish multicast group memberships · IPsec Internet Protocol Security is a protocol suite for securing Internet Protocol (IP) communications by authenticating and encrypting each IP packet of a data stream. IPsec also includes protocols for establishing mutual authentication between agents at the beginning of the session and negotiation of cryptographic keys to be used during the session · (more) Categories: Internet Protocol | Network layer protocols |
| Link Layer In computer networking, the Link Layer is the lowest layer in the Internet Protocol Suite, the networking architecture of the Internet . It is the group of methods or protocols that only operate on a host's link. The link is the physical and logical network components used to interconnect hosts or nodes in the network and a link protocol is a |
| ARP/InARP The Address Resolution Protocol is a computer networking protocol for determining a network host's link layer or hardware address when only its Internet Layer (IP) or Network Layer address is known. This function is critical in local area networking as well as for routing internetworking traffic across gateways (routers) based on IP addresses when · NDP · OSPF · Tunnels (L2TP) · PPP · Media Access Control (Ethernet, DSL, ISDN, FDDI) · (more) |
|
This box: |
Operation
ECN requires specific support at the internet and transport layers.
Operation of ECN with IP
ECN uses the two less significant (right-most) bits of the DiffServ field in the IP header to encode four different codepoints:
- 00: Non ECN-Capable Transport - Non-ECT
- 10: ECN Capable Transport - ECT
- 01: ECN Capable Transport - ECT(1)
- 11: Congestion Encountered - CE
When both endpoints support ECN they mark their packets with ECT or ECT(1). If the packet traverses an Active Queue Management (AQM) queue (e.g. a queue that uses Random Early Detection (RED)) that is experiencing congestion and the corresponding router supports ECN, it may change the codepoint to CE instead of dropping the packet. This act is referred to as "marking" and its purpose is to inform the receiving endpoint of impeding congestion. At the receiving endpoint this congestion indication is handled by the upper layer protocol (transport layer protocol) and needs to be echoed back to the transmitting node in order to reduce its transmission rate.
Because the CE indication can only be handled effectively by an upper layer protocol that supports it, ECN is only used in conjunction with upper layer protocols (e.g. TCP) that (a) support congestion control and (b) have a method for echoing the CE indication to the transmitting endpoint. This echoing is described as ECN support of the upper layer protocol.
Operation of ECN with TCP
TCP supports ECN using two flags in the TCP header. Those two bits are used to echo back the congestion indication (i.e. signal the sender to reduce the amount of information it sends) and to acknowledge that the congestion-indication echoing was received. These are the ECN-Echo (ECE) and Congestion Window Reduced (CWR) bits.
Use of ECN on a TCP connection is optional; for ECN to be used, it must be negotiated at connection establishment by including suitable options in the SYN and SYN-ACK segments.
When ECN has been negotiated on a TCP connection, the sender indicates that IP packets that carry TCP segments of that connection are carrying traffic from an ECN Capable Transport by marking them with an ECT codepoint. This allows intermediate routers that support ECN to mark those IP packets with the CE codepoint instead of dropping them in order to signal impending congestion.
Upon receiving an IP packet with the Congestion Experienced codepoint, the TCP receiver echoes back this congestion indication using the ECE flag in the TCP header. When an endpoint receives a TCP segment with the ECE bit it reduces its congestion window as for a packet drop. It then acknowledges the congestion indication by sending a segment with the CWR bit set.
A node keeps transmitting TCP segments with the ECE bit set until it receives a segment with the CWR bit set.
ECN and TCP control packets
Since TCP does not perform congestion control on control packets (pure ACKs, SYN, FIN segments), control packets are usually not marked as ECN-capable.
A recent proposal[5] suggests marking SYN-ACK packets as ECN-capable. This improvement, known as ECN+, has been shown to provide dramatic improvements to performance of short-lived TCP connections[6].
Operation of ECN with other transport protocols
ECN is also defined for other transport-layer protocols that perform congestion control, notably DCCP and SCTP. The general principle is similar to TCP, although the details of the on-the-wire encoding differ.
It should in principle be possible to use ECN with protocols layered above UDP. However, UDP requires that congestion control be performed by the application, and current networking APIs do not give access to the ECN bits.
Effects on performance
Since ECN is only effective in combination with an Active Queue Management (AQM) policy, the benefits of ECN depend on the precise AQM being used. A few observations, however, appear to hold across different AQMs.
As expected, ECN reduces the number of packets dropped by a TCP connection, which, by avoiding a retransmission, reduces latency and especially jitter. This effect is most drastic when the TCP connection has a single outstanding segment[7], when it is able to avoid an RTO timeout; this is often the case for interactive connections (such as remote logins) and transactional protocols (such as HTTP requests, the conversational phase of SMTP, or SQL requests).
Effects of ECN on bulk throughput are less clear[8] because modern TCP implementations are fairly good at resending dropped segments in a timely manner when the sender's window is large.
Use of ECN has been found to be detrimental to performance on highly congested networks when using AQM algorithms that never drop packets[9]. Modern AQM implementations avoid this pitfall by dropping rather than marking packets at very high load.
Implementations
Many modern implementations of the TCP/IP protocol suite have some support for ECN; however, they usually ship with ECN disabled.
ECN support in hosts
Windows Server 2008 and Windows Vista support ECN but it is disabled by default.[10] ECN support can be enabled with the following shell command: netsh interface tcp set global ecncapability=enabled
Mac OS X 10.5 implements ECN. It is controlled using the following sysctl interface:[11] net.inet.tcp.ecn_negotiate_in, net.inet.tcp.ecn_initiate_out.
The Linux kernel has supported ECN. Its default behaviour is to support ECN if the other side supports it (server-mode). Most Linux distributions disable ECN. In most kernel versions, it can be activated through the sysctl interface: sysctl net.ipv4.tcp_ecn=1
FreeBSD 8.0 implements ECN. It can be activated through the sysctl interface: sysctl net.inet.tcp.ecn.enable=1
ECN support in routers
Since ECN marking in routers is dependent on some form of active queue management, routers must be configured with a suitable queue discipline in order to perform ECN marking.
Cisco IOS routers perform ECN marking if configured with the WRED queuing discipline since version 12.2(8)T.
Linux routers perform ECN marking if configured with one of the RED or GRED queue disciplines with an explicit ecn parameter, or by using the sfb discipline.
Modern BSD implementations, such as FreeBSD, NetBSD and OpenBSD, have support for ECN marking in the ALTQ queueing implementation for a number of queuing disciplines, notably RED and Blue.
See also
References
- ^ Grossman, D. (April 2002) New Terminology and Clarifications for Diffserv, IETF. RFC 3260.
- ^ Ramakrishnan, K (January 1999) A Proposal to add Explicit Congestion Notification (ECN) to IP], IETF. RFC 2481
- ^ Ramakrishnan, K, Floyd, S, Black, D, (September 2001) The Addition of Explicit Congestion Notification (ECN) to IP], IETF. RFC 3168
- ^ Measuring Interactions Between Transport Protocols and Middleboxes. Alberto Medina, Mark Allman, and Sally Floyd. Internet Measurement Conference 2004, August 2004.
- ^ Adding Explicit Congestion Notification (ECN) Capability to TCP's SYN/ACK Packets. Sally Floyd. Work in Progress. 2008
- ^ Aleksandar Kuzmanovic. The power of explicit congestion notification. In Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications. 2005.
- ^ Jamal Hadi Salim and Uvaiz Ahmed. Performance Evaluation of Explicit Congestion Notification (ECN) in IP Networks. RFC 2884. July 2000
- ^ Marek Malowidzki, Simulation-based Study of ECN Performance in RED Networks, In Proc. SPECTS'03. 2003.
- ^ Aleksandar Kuzmanovic. The power of explicit congestion notification. In Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications. 2005
- ^ ""New Networking Features in Windows Server 2008 and Windows Vista". http://technet.microsoft.com/en-us/library/bb726965.aspx.
- ^ ""ECN (Explicit Congestion Notification) in TCP/IP"". http://www.icir.org/floyd/ecn.html#implementations.
External links
Categories: Network performance | Transport layer protocols