Passa al contenuto principale

3.1 TCP MSS Option (Opzione TCP MSS)

3.1 TCP MSS Option (Opzione TCP MSS)

Un host che esegue PMTU Discovery deve obbedire alla regola di non inviare datagrammi IP più grandi di 576 ottetti a meno che non abbia il permesso dal ricevitore. Per le connessioni TCP, questo significa che un host non deve inviare datagrammi più grandi di 40 ottetti più il Maximum Segment Size (dimensione massima del segmento, MSS) inviato dal suo peer.

Nota: Il TCP MSS è definito come la dimensione del datagramma IP pertinente meno 40 [9]. Il valore predefinito di 576 ottetti per la dimensione massima del datagramma IP produce un valore predefinito di 536 ottetti per il TCP MSS.

La sezione 4.2.2.6 di "Requirements for Internet Hosts -- Communication Layers" (Requisiti per gli host Internet -- Livelli di comunicazione) [1] dice:

Alcune implementazioni TCP inviano un'opzione MSS solo se l'host di destinazione è su una rete non connessa. Tuttavia, in generale il livello TCP potrebbe non avere le informazioni appropriate per prendere questa decisione, quindi è preferibile lasciare al livello IP il compito di determinare un MTU adatto per il percorso Internet.

In realtà, molte implementazioni TCP inviano sempre un'opzione MSS, ma impostano il valore a 536 se la destinazione non è locale. Questo comportamento era corretto quando Internet era pieno di host che non seguivano la regola che i datagrammi più grandi di 576 ottetti non dovrebbero essere inviati a destinazioni non locali. Ora che la maggior parte degli host segue questa regola, non è necessario limitare il valore nell'opzione TCP MSS a 536 per i peer non locali.

Inoltre, fare ciò impedisce a PMTU Discovery di scoprire PMTU maggiori di 576, quindi gli host NON DOVREBBERO più abbassare il valore che inviano nell'opzione MSS. L'opzione MSS dovrebbe essere 40 ottetti meno della dimensione del datagramma più grande che l'host è in grado di riassemblare (MMS_R, come definito in [1]); in molti casi, questo sarà il limite architetturale di 65495 (65535 - 40) ottetti. Un host PUÒ inviare un valore MSS derivato dall'MTU della sua rete connessa (l'MTU massimo sulle sue reti connesse, per un host multi-homed); questo non dovrebbe causare problemi per PMTU Discovery, e può dissuadere un peer difettoso dall'inviare datagrammi enormi.

Nota: Al momento, non vediamo alcun motivo per inviare un MSS maggiore dell'MTU massimo delle reti connesse, e raccomandiamo che gli host non utilizzino 65495. È abbastanza possibile che alcune implementazioni IP abbiano bug di bit di segno che sarebbero attivati dall'uso non necessario di un MSS così grande.