ECN significa algoritmo de notificación de congestión explícita. No es un algoritmo de control de congestión como reinicio lento y AIMD. Este algoritmo solo tiene la responsabilidad de informar al remitente sobre la acumulación de congestión en los enrutadores. Por lo tanto, ECN es una notificación de congestión o un algoritmo de señalización de congestión. Informa al remitente sobre la congestión para que pueda tomar las medidas respectivas para evitarla.
ECN es un mecanismo de señalización de congestión definido en RFC 3168. Surgió en 1999 y se finalizó en 2001. Utiliza dos bits en el encabezado TCP y dos bits en el encabezado IP. Marca los paquetes, donde marcar = voltear un poco en los encabezados.
=> Supongamos que X está enviando un sobre a una persona Z que está a dos casas de él.
=> X le pasa el sobre a la persona intermediaria Y.
=> Y verá si se está congestionando o no.
=> Si Y se está congestionando, marcará el sobre con una cruz con un bolígrafo
en una esquina del sobre y se lo pasará a la siguiente persona.
=> Cuando Z recibe el sobre, observa la marca de cruz en la
esquina del sobre y entiende que una de las personas intermediarias se está congestionando,
=> Z enviará un ACK al remitente X con la misma
marca en el sobre ACK. Al ver la marca X sabrá acerca de la congestión.
ECN se puede utilizar con algoritmos AQM. Hemos visto algoritmos AQM, descartar proactivamente los paquetes cuando el enlace se congestiona. Pero qué tal si en lugar de ‘soltar’ los paquetes, se pueden ‘marcar’, esto sería maravilloso. Dado que ECN no descarta los paquetes, esto evita las retransmisiones. Es por eso que los algoritmos ECN son muy populares hoy en día. Debido a que el propósito es solo informar al remitente conocido que el enrutador se está congestionando, entonces, ¿por qué descartar el paquete cuando podemos decirle al remitente que está usando ECN? Además, la eliminación de paquetes no le informará al remitente sobre la congestión de inmediato. Es muy importante para los paquetes sensibles al tiempo porque su tráfico es muy bajo.
Para utilizar el mecanismo ECN; El remitente, el receptor y el enrutador ‘todos’ deben ser compatibles con la funcionalidad ECN. Actualmente, ECN está implementado en todos los sistemas operativos, como móviles, servidores, portátiles e incluso en dispositivos intermediarios como routers. Pero está deshabilitado por defecto. La razón no es que haya algún problema con ECN, sino que ECN se implementa junto con los algoritmos AQM. AQM no es tan popular debido a la configuración de parámetros.
Recomendado por RFC 3168: ECN no debe aplicarse a los paquetes de control TCP. Los autores han recomendado encarecidamente que no se aplique ECN a los paquetes de control. Ejemplos de paquetes de control son: SYN, SYN/ACK, ACK, FIN, RST, PSH, URG. Por lo tanto, solo los paquetes de datos no se marcarán con ECN.
Bits ECN en el encabezado TCP:
Los 2 bits se han tomado de la sección reservada. Ahora se dejan reservados 4 bits y el ECN ocupa 2 bits. Estos dos bits son CWR y ECE. Tenga en cuenta el orden en que aparecen. No podemos cambiar el orden de estos dos bits de bandera. CWR está a la izquierda y ECE está a la derecha.
- CWR: indicador de ventana de congestión reducida
- CEPE: eco de la CEPE
Dado que estos son 2 bits. Hay 4 combinaciones posibles. Las combinaciones se denominan puntos de código aquí.
Puntos de código ECN en el encabezado TCP
S. No. | CWR | CEPE | punto de código | Enviado desde | A |
---|---|---|---|---|---|
1. | 0 | 0 | Configuración no ECN | ningún | ningún |
2. | 0 | 1 | Eco ECN | Receptor | Remitente |
3. | 1 | 0 | Ventana de congestión reducida | Remitente | Receptor |
4. | 1 | 1 | Configuración ECN | Remitente | Receptor |
- [0 0] es un punto de código de configuración que no es ECN. Esto se puede enviar de cualquier a cualquier. Cuando este punto de código se comparte desde X->Y, X le dice a Y que no es compatible con ECN.
- [0 1] es el punto de código ECN Echo. Esto se envía del receptor al remitente. Primero, cuando el remitente le dice al receptor que admite ECN, el receptor le informará al remitente sobre sí mismo, ya sea que admita ECN o no. Si el receptor es compatible con ECN, responderá con este punto de código. Este punto de código también se usa cuando el receptor informa al remitente sobre la congestión. Entonces, este punto de código tiene dos usos.
- [1 0] es el punto de código CWR. Esto se envía del remitente al receptor. Este punto de código se usa como un reconocimiento que se envía del remitente al receptor. El remitente le dice al receptor que ha reducido el tamaño de su ventana de congestión cuando se entera de la congestión.
- [1 1] es el punto de código de configuración de ECN. Esto se envía del remitente al receptor. Este punto de código es enviado por el remitente al receptor indicando que el remitente es compatible con ECN.
Negociación ECN:
- Paso 1: el remitente envía el paquete SYN al receptor con el punto de código de configuración ECN. La configuración de ECN significa CWR=1 y ECE=1. El remitente le dice al receptor que es compatible con ECN. Esta información siempre se transmite en un paquete SYN mientras se establece la conexión TCP a través de protocolos de enlace de 3 vías. Ahora el receptor tiene que responder al remitente su estado sobre ECN.
- Paso 2: si el receptor es compatible con ECN, devolverá el eco al remitente utilizando el punto de código ECN-Echo. CWR=0 y ECE=1, informa al remitente que sí, el receptor también está habilitado para ECN. Supongamos que si el receptor no es compatible con ECN, responderá CWR=0 y ECE=0. Esto es lo que indica el cuarto punto de código. Esta es una configuración que no es ECN, lo que significa que la entidad no está habilitada para ECN. Este punto de código puede ser compartido por el remitente con el receptor y viceversa.
- Paso 3: Ahora, el remitente y el receptor intercambian la información ECN. El remitente puede solicitar datos del receptor ahora como de costumbre.
Pero, ¿qué pasa si el remitente y el receptor son compatibles con ECN y tiene que marcar el paquete en lugar de descartarlo? El enrutador no puede leer el encabezado TCP, solo puede leer el encabezado IP del paquete. Entonces, se usan 2 bits en el encabezado IP para informar al enrutador sobre ECN.
Bits ECN en el encabezado IP:
El enrutador es el que va a ejecutar AQM y el enrutador es el que va a marcar los paquetes. Por lo tanto, el enrutador debe saber que el remitente y el receptor están habilitados para ECN. Debido a este propósito de que los enrutadores no puedan acceder al encabezado TCP, se agregaron 2 bits nuevos en el encabezado IP. Vea la primera fila, el tercer campo en el encabezado IP. Había 8 bits reservados para servicios diferenciados. 2 bits de ellos se han utilizado para puntos de código ECN.
El primer bit se llama ECT: ECN Capable Transport y el segundo bit se llama CE: Congestion Experienced. Nuevamente, habrá cuatro puntos de código, pero estos serán diferentes de los puntos de código ECN utilizados para el uso del remitente y el receptor.
Puntos de código ECN en el encabezado IP:
S. No. | TEC | CE | punto de código | Enviado desde | A |
---|---|---|---|---|---|
1. | 0 | 0 | sin TEC | ningún | ningún |
2. | 0 | 1 | ECT(1): transporte compatible con ECN | remitente | receptor |
3. | 1 | 0 | ECT(0): transporte compatible con ECN | remitente | receptor |
4. | 1 | 1 | CE: Congestión experimentada | enrutador | receptor |
- [0 0] significa sin ECT. Eso significa que el paquete no es compatible con ECN, por lo que no tiene sentido marcar este paquete. Si hay congestión, este paquete debe descartarse en lugar de marcarlo.
- [0 1] son puntos de código ECT(0) significa que el paquete es compatible con ECT.
- [1 0] es el punto de código ECT(1), también significa que el paquete está habilitado para ECT. Si un paquete es ECT (0) o (1), el enrutador no descartará este paquete, sino que lo marcará.
- [1 1] es el punto de código CE. Cuando el enrutador está congestionado y el paquete está habilitado para ECT, el enrutador marcará este paquete como CE. El enrutador cambiará el bit 0 del punto de código ECT y lo convertirá en CE. No descarta el paquete, simplemente lo marca y lo transfiere al receptor.
Publicación traducida automáticamente
Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA