Explicit Congestion Notification ( ECN , z angličtiny - „Explicit Congestion Notification“) je rozšířením protokolu IP popsaného v RFC 3168 . ECN umožňuje oběma stranám v síti vědět, kdy dojde k zahlcení na trase k danému hostiteli nebo síti, aniž by došlo k zahození paketů. Toto je volitelná funkce, která se používá pouze v případě, že oba komunikační koncové body indikují, že ji chtějí používat.
Hostitelé v sítích TCP/IP obvykle hlásí zahlcení zahazováním paketů. Pokud je relace ECN úspěšně navázána, směrovače s podporou ECN mohou signalizovat začátek přetížení nastavením bitů v hlavičce IP namísto zahazování paketů. Přijímač paketů informuje o zahlcení odesílatele, který by měl reagovat, jako by byl detekován zahozený paket.
ECN používá dva bity v oblasti DiffServ v hlavičce IP , pro IPv4 v TOS byte a v IPv6 v oktetu přenosové třídy paketu. Tyto dva bity lze použít k nastavení jedné z následujících hodnot:
Některá starší nebo testovací síťová zařízení zahazují pakety s nastavenými bity ECN namísto jejich ignorování [1] .
Použití ECN vyžaduje jeho podporu na transportní vrstvě.
Kromě dvou bitů ECN v hlavičce IP používá TCP dva příznaky hlavičky TCP k signalizaci přetížení odesílateli a snížení množství informací, které odesílá.
Použití ECN v TCP spojení je volitelné.
Rozšíření ECN je také definováno pro další protokoly transportní vrstvy, které provádějí řízení zahlcení sítě, zejména DCCP a SCTP . Obecné použití je podobné TCP, i když podrobnosti kódování se liší.
V zásadě můžete použít rozšíření ECN s protokoly, které leží na úrovních nad UDP . UDP však vyžaduje, aby se řízení zahlcení provádělo na aplikační úrovni a současné možnosti aplikací pro sítě jim neumožňují přístup k bitům ECN.
Použití ECN je efektivní pouze v kombinaci s aktivní politikou správy front (AQM) a užitečnost ECN závisí na správném použití AQM.
Empiricky bylo zjištěno, že ECN má špatný vliv na výkon silně přetížené sítě, pokud se používají algoritmy AQM, které nikdy nezahazují pakety [2] . Moderní implementace AQM se tomuto problému vyhýbají nahrazením označování paketů jejich zahozením v případě kritického přetížení.
Mnoho moderních implementací protokolu TCP/IP má podporu ECN, ale obvykle se dodávají s vypnutým ECN.
Windows Server 2008 a Windows Vista podporují rozšíření ECN, ale ve výchozím nastavení je zakázáno [3] . Podporu ECN lze povolit pomocí následujícího příkazu:
netsh interface tcp set global ecncapability=enabledMac OS X 10.5 ve výchozím nastavení podporuje ECN. Správa se provádí pomocí rozhraní sysctl [4] :
net.inet.tcp.ecn_negotiate_in net.inet.tcp.ecn_initiate_outLinuxové jádro již nějakou dobu podporuje rozšíření ECN, ale ve výchozím nastavení je zakázáno. Ve většině verzí jádra jej lze aktivovat prostřednictvím rozhraní Sysctl :
sysctl net.ipv4.tcp_ecn=1FreeBSD 8.0 podporuje rozšíření ECN. Lze jej aktivovat přes rozhraní Sysctl :
sysctl net.inet.tcp.ecn.enable=1Označení polí ECN směrovači závisí v určité formě na aktivním řazení do fronty . Směrovače musí být správně nakonfigurovány pro označení polí ECN.
Směrovače Cisco IOS provádějí označování ECN, pokud je nakonfigurováno WRED počínaje verzí 12.2(8)T.