6.1 TCP
6.1 TCP
Le seguenti sezioni descrivono in dettaglio la proposta per l'uso di ECN in TCP. La proposta è descritta sostanzialmente nella stessa forma in [Floyd94]. Assumiamo che il TCP di origine utilizzi gli algoritmi standard di controllo di congestione di Slow-start, Fast Retransmit e Fast Recovery [RFC2581].
La proposta specifica due nuovi flag nel campo Reserved (riservato) dell'intestazione TCP. Il meccanismo TCP per negoziare la capacità ECN utilizza il flag ECN-Echo (ECE) nell'intestazione TCP. Il bit 9 del campo Reserved nell'intestazione TCP è designato come flag ECN-Echo. La posizione del campo Reserved a 6 bit nell'intestazione TCP è mostrata nella Figura 4 di RFC 793 [RFC793] (copiata di seguito per completezza). Questa specifica del campo ECN lascia il campo Reserved come campo a 4 bit utilizzando i bit 4-7.
Per consentire al ricevitore TCP di determinare quando smettere di impostare il flag ECN-Echo, introduciamo un secondo nuovo flag nell'intestazione TCP, il flag CWR. Il flag CWR è assegnato al bit 8 del campo Reserved nell'intestazione TCP.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | U | A | P | R | S | F |
| Header Length | Reserved | R | C | S | S | Y | I |
| | | G | K | H | T | N | N |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Figura 3: Vecchia definizione dei byte 13 e 14 dell'intestazione TCP
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | C | E | U | A | P | R | S | F |
| Header Length | Reserved | W | C | R | C | S | S | Y | I |
| | | R | E | G | K | H | T | N | N |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Figura 4: Nuova definizione dei byte 13 e 14 dell'intestazione TCP
Quindi, ECN utilizza i flag ECT e CE nell'intestazione IP (come mostrato nella Figura 1) per la segnalazione tra i router e gli endpoint della connessione, e utilizza i flag ECN-Echo e CWR nell'intestazione TCP (come mostrato nella Figura 4) per la segnalazione endpoint TCP verso endpoint TCP. Per una connessione TCP, la tipica sequenza di eventi per una risposta di congestione basata su ECN è la seguente:
-
Il mittente imposta il codepoint ECT nei pacchetti trasmessi per indicare che le entità di trasporto di quei pacchetti supportano ECN.
-
Un router con capacità ECN rileva una congestione imminente e rileva che il codepoint ECT è impostato in un pacchetto che sta per scartare. Il router sceglie di impostare il codepoint CE nell'intestazione IP e inoltra il pacchetto, invece di scartare il pacchetto.
-
Il ricevitore riceve il pacchetto con il codepoint CE impostato e imposta il flag ECN-Echo nel successivo TCP ACK che invia al mittente.
-
Il mittente riceve il TCP ACK con ECN-Echo impostato e reagisce alla congestione come se un pacchetto fosse stato scartato.
-
Il mittente imposta il flag CWR nell'intestazione TCP del successivo pacchetto inviato al ricevitore per riconoscere di aver ricevuto il flag ECN-Echo e di avervi reagito.
La negoziazione dell'uso di ECN da parte delle entità di trasporto TCP e l'uso dei flag ECN-Echo e CWR sono descritti in maggior dettaglio nelle sezioni successive.