La notificación de congestión explícita ( ECN , del inglés - "Notificación de congestión explícita") es una extensión del protocolo IP descrito en RFC 3168 . ECN permite que ambos lados de la red sepan cuándo ocurre una congestión en la ruta a un host o red determinados sin descartar paquetes. Esta es una característica opcional que solo se usa cuando ambos extremos de la comunicación indican que quieren usarla.
Por lo general, los hosts de las redes TCP/IP notifican la congestión descartando paquetes. Si una sesión ECN se establece con éxito, los enrutadores habilitados para ECN pueden señalar el comienzo de la congestión configurando bits en el encabezado IP en lugar de descartar paquetes. El receptor de los paquetes informa al emisor de la congestión, que debería reaccionar como si se hubiera detectado un paquete descartado.
ECN usa dos bits en la región DiffServ en el encabezado IP , para IPv4 en el byte TOS y en IPv6 en el octeto de clase de transferencia del paquete. Estos dos bits se pueden utilizar para establecerse en uno de los siguientes valores:
Algunos equipos de red heredados o de prueba eliminarán paquetes con bits ECN establecidos en lugar de ignorarlos [1] .
El uso de ECN requiere su soporte en la capa de transporte.
Además de los dos bits ECN en el encabezado IP, TCP usa dos indicadores de encabezado TCP para señalar una congestión al remitente y reducir la cantidad de información que envía.
El uso de ECN en conexiones TCP es opcional.
La extensión ECN también se define para otros protocolos de la capa de transporte que controlan la congestión de la red, en particular DCCP y SCTP . El uso general es similar a TCP, aunque los detalles de codificación son diferentes.
En principio, puede usar la extensión ECN con protocolos que se encuentran en los niveles superiores a UDP . Sin embargo, UDP requiere que el control de congestión se realice a nivel de aplicación, y las capacidades de aplicación actuales para las redes no les permiten acceder a los bits ECN.
El uso de ECN solo es efectivo en combinación con una política de gestión activa de colas (AQM), y la utilidad de ECN depende del uso correcto de AQM.
Empíricamente, se ha encontrado que ECN tiene un efecto negativo en el rendimiento de una red muy congestionada si se utilizan algoritmos AQM que nunca descartan paquetes [2] . Las implementaciones modernas de AQM evitan este problema al reemplazar el marcado de paquetes con descartarlos en caso de congestión crítica.
Muchas implementaciones modernas del protocolo TCP/IP tienen compatibilidad con ECN, pero generalmente se envían con ECN deshabilitado.
Windows Server 2008 y Windows Vista admiten la extensión ECN, pero está deshabilitada de forma predeterminada [3] . La compatibilidad con ECN se puede habilitar con el siguiente comando:
netsh interface tcp set global ecncapability=enabledMac OS X 10.5 es compatible con ECN de forma predeterminada. La gestión se realiza mediante la interfaz sysctl [4] :
net.inet.tcp.ecn_negotiate_in net.inet.tcp.ecn_initiate_outEl kernel de Linux ha admitido la extensión ECN durante algún tiempo, pero está deshabilitada de forma predeterminada. En la mayoría de las versiones del kernel, se puede activar a través de la interfaz Sysctl :
sysctl net.ipv4.tcp_ecn=1FreeBSD 8.0 admite la extensión ECN. Se puede activar a través de la interfaz Sysctl :
sysctl net.inet.tcp.ecn.enable=1El marcado de los campos ECN por parte de los enrutadores depende de alguna forma de la cola activa . Los enrutadores deben estar configurados correctamente para marcar los campos ECN.
Los routers Cisco IOS realizan etiquetado ECN si WRED está configurado a partir de la versión 12.2(8)T.