Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Explicit Congestion Notification
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===ECN support in TCP by hosts=== ====Microsoft Windows==== Windows versions since Windows Server 2008 and Windows Vista support ECN for TCP.<ref name=win>{{cite web | url = https://technet.microsoft.com/en-us/library/bb726965.aspx | title = New Networking Features in Windows Server 2008 and Windows Vista | url-status = live | archive-url = https://web.archive.org/web/20100115195304/http://technet.microsoft.com/en-us/library/bb726965.aspx | archive-date = 2010-01-15 }}</ref> Since Windows Server 2012, it is enabled by default in Windows Server versions, because [[#DCTCP|Data Center Transmission Control Protocol]] (DCTCP) is used.<ref>{{cite web | url = https://technet.microsoft.com/en-us/library/hh997028.aspx | title = Data Center Transmission Control Protocol (DCTCP) (Windows Server 2012) | url-status = live | archive-url = https://web.archive.org/web/20170826132305/https://technet.microsoft.com/en-us/library/hh997028.aspx | archive-date = 2017-08-26 }}</ref> In previous Windows versions and non-server versions it is disabled by default. ECN support can be enabled using a shell command such as {{code|netsh interface tcp set global ecncapability{{=}}enabled}}. ====BSD==== On [[FreeBSD]], ECN for TCP can be configured using the {{Mono|net.inet.tcp.ecn.enable}} [[sysctl]]. By default, it is enabled only for incoming connections that request it. It can also be enabled for all connections or disabled entirely.<ref>{{cite web |title=tcp(4) - Internet Transmission Control Protocol |url=https://www.freebsd.org/cgi/man.cgi?query=tcp |website=FreeBSD Kernel Interfaces Manual |access-date=3 April 2020}}</ref> [[NetBSD]] 4.0 implements ECN support for TCP; it can be activated through the [[sysctl]] interface by setting 1 as value for the {{code|sysctl net.inet.tcp.ecn.enable}} parameter.<ref>{{cite web|url=http://netbsd.org/releases/formal-4/NetBSD-4.0.html|title=Announcing NetBSD 4.0|date=2007-12-19|access-date=2014-10-13|url-status=live|archive-url=https://web.archive.org/web/20141031073922/http://netbsd.org/releases/formal-4/NetBSD-4.0.html|archive-date=2014-10-31}}</ref> Likewise, the sysctl {{Mono|net.inet.tcp.ecn}} can be used in [[OpenBSD]].<ref>{{cite book|url=https://books.google.com/books?id=PN6Xy9zWAbsC&pg=PA347 |title=Absolute OpenBSD: UNIX for the Practical Paranoid |author=Michael Lucas |year=2013 |publisher=No Starch Press |isbn=9781593274764 |access-date=2014-03-22}}</ref> ====Linux==== Since version 2.4.20 of the [[Linux kernel]], released in November 2002,<ref>{{cite web |url = https://datatag.web.cern.ch/datatag/papers/tr-datatag-2004-1.pdf |title = A Map of the Networking Code in Linux Kernel 2.4.20, Technical Report DataTAG-2004-1, FP5/IST DataTAG Project |date = March 2004 |access-date = 1 September 2015 |website = datatag.web.cern.ch |url-status = live |archive-url = https://web.archive.org/web/20151027124019/http://datatag.web.cern.ch/datatag/papers/tr-datatag-2004-1.pdf |archive-date = 27 October 2015 }}</ref> Linux supports three working modes of the ECN for TCP, as configured through the [[sysctl]] interface by setting parameter {{Mono|/proc/sys/net/ipv4/tcp_ecn}} to one of the following values:<ref name="linux">{{cite web |url = https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt |title = Documentation/networking/ip-sysctl.txt: /proc/sys/net/ipv4/* Variables |access-date = 2016-02-15 |publisher = [[kernel.org]] |url-status = live |archive-url = https://web.archive.org/web/20160305080444/https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt |archive-date = 2016-03-05 }}</ref> * {{Mono|0}}{{snd}} disable ECN and neither initiate nor accept it * {{Mono|1}}{{snd}} enable ECN when requested by incoming connections, and also request ECN on outgoing connection attempts * {{Mono|2}}{{snd}} (default) enable ECN when requested by incoming connections, but do not request ECN on outgoing connections Beginning with version 4.1 of the Linux kernel, released in June 2015, the {{Mono|tcp_ecn_fallback}} mechanism{{Ref RFC|3168|rsection=6.1.1.1}} is enabled by default<ref>{{cite web |url = http://man7.org/linux/man-pages/man7/tcp.7.html |title = Linux man pages |date = 2015-12-05 |access-date = 2016-02-15 |website = man7.org |url-status = live |archive-url = https://web.archive.org/web/20160216231741/http://man7.org/linux/man-pages/man7/tcp.7.html |archive-date = 2016-02-16 }}</ref> when ECN is enabled (the value of 1). The fallback mechanism attempts ECN connectivity in the initial setup of outgoing connections, with a graceful fallback for transmissions without ECN capability, mitigating issues with ECN-intolerant hosts or firewalls. ====Mac OS X==== [[Mac OS X]] 10.5 and 10.6 implement ECN support for TCP. It is controlled using the Boolean [[sysctl]] variables {{Mono|net.inet.tcp.ecn_negotiate_in}} and {{Mono|net.inet.tcp.ecn_initiate_out}}.<ref name="mac">{{cite web | url = http://www.icir.org/floyd/ecn.html#implementations | title = ECN (Explicit Congestion Notification) in TCP/IP | url-status = live | archive-url = https://web.archive.org/web/20120619200913/http://www.icir.org/floyd/ecn.html#implementations | archive-date = 2012-06-19 }}</ref> The first variable enables ECN on incoming connections that already have ECN flags set; the second one tries to initiate outgoing connections with ECN enabled. Both variables default to {{Mono|0}},{{Failed verification|date=February 2025}} but can be set to {{Mono|1}} to enable the respective behavior. In June 2015, [[Apple Inc.]] announced that [[OS X 10.11]] would have ECN turned on by default,<ref name="apple-wwdc-719" /> but the OS shipped without that default behavior. In macOS Sierra, ECN is enabled for half of TCP sessions.<ref>{{cite web|url=https://arstechnica.com/gadgets/2016/09/macos-10-12-sierra-the-ars-technica-review/6/|title=macOS 10.12 Sierra: The Ars Technica review|website=Ars Technica|date=20 September 2016|access-date=25 April 2018|url-status=live|archive-url=https://web.archive.org/web/20180426012040/https://arstechnica.com/gadgets/2016/09/macos-10-12-sierra-the-ars-technica-review/6/|archive-date=26 April 2018}}</ref> ====iOS==== In June 2015, [[Apple Inc.]] announced that [[iOS 9]], its next version of iOS, would support ECN and have it turned on by default.<ref name="apple-wwdc-719" /> TCP ECN negotiation is enabled on 5% of randomly selected connections over Wi-Fi / Ethernet in iOS 9 and 50% of randomly selected connections over Wi-Fi / Ethernet and a few cellular carriers in [[iOS 10]]<ref>{{cite web|url=https://developer.apple.com/videos/play/wwdc2016/714/|title=Networking for the Modern Internet - WWDC 2016 - Videos - Apple Developer|first=Apple|last=Inc.|website=Apple Developer|access-date=18 April 2018|url-status=live|archive-url=https://web.archive.org/web/20180418161153/https://developer.apple.com/videos/play/wwdc2016/714/|archive-date=18 April 2018}}</ref><ref>{{cite web |url=https://www.ietf.org/proceedings/98/slides/slides-98-maprg-tcp-ecn-experience-with-enabling-ecn-on-the-internet-padma-bhooma-00.pdf |title=TCP ECN — Experience with enabling ECN on the Internet |first=Padma|last=Bhooma |date=March 2017 |access-date=2017-05-03 |url-status=live |archive-url=https://web.archive.org/web/20180509153808/https://www.ietf.org/proceedings/98/slides/slides-98-maprg-tcp-ecn-experience-with-enabling-ecn-on-the-internet-padma-bhooma-00.pdf |archive-date=2018-05-09 }}</ref> and 100% for [[iOS 11]]<ref>{{cite web|url=https://developer.apple.com/videos/play/wwdc2017/707/|title=Advances in Networking, Part 1 - WWDC 2017 - Videos - Apple Developer|first=Apple|last=Inc.|website=Apple Developer|access-date=18 April 2018|url-status=live|archive-url=https://web.archive.org/web/20180131043815/https://developer.apple.com/videos/play/wwdc2017/707/|archive-date=31 January 2018}}</ref> ====Solaris==== The [[Solaris (operating system)|Solaris]] kernel supports three states of ECN for TCP:<ref>{{cite web |title=ipadm(8) |url=https://docs.oracle.com/cd/E88353_01/html/E72487/ipadm-8.html |website=Oracle Solaris 11.4 Information Library |publisher=Oracle |access-date=6 May 2021}}</ref> * {{Mono|never}}{{snd}} no ECN * {{Mono|active}}{{snd}} use ECN * {{Mono|passive}}{{snd}} only advertise ECN support when asked for. As of Solaris 11.4, the default behavior is {{Mono|active}}. ECN usage can be modified via {{Mono|ipadm set-prop -p ecn{{=}}active tcp}}.<ref>{{cite web |title=Administering TCP/IP Networks, IPMP, and IP Tunnels in Oracle® Solaris 11.4, Using the TCP ECN Feature |url=https://docs.oracle.com/cd/E37838_01/html/E60991/gqyxf.html |website=Oracle Solaris 11.4 Information Library |publisher=Oracle |access-date=6 May 2021}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)