L'MSS (Maximum segment size) è un parametro TCP che indica la quantità massima di paylod (unità di misura byte) che un dispositivo di comunicazione può gestire senza frammentare il pacchetto.
Per una comunicazione ottimale, il numero di byte nel segmento dati e nell'intestazione deve essere inferiore al numero di byte nell'unità massima di trasmissione (MTU).
Di default sarà 40 byte in meno di MTU. Quindi se l'MTU di un PC ha di default 1500 byte, invierà un MSS di 1460 byte.
Se la rete di comunicazione ha un valore MTU inferiore, ma il PC client non ne è a conoscenza, invierà il suo valore MSS di 1460 byte al server. Il server penserà quindi che il client possa ricevere 1500 byte (1460 MSS layer4 +20 ip header +20 TCP header) e invierà un pacchetto con una dimensione di 1500 byte. Ora, se l'MTU è inferiore da qualche parte nel percorso, il pacchetto può essere frammentato. Se il bit DF (don't fragment) è impostato, il pacchetto può essere eliminato, il che può causare ritardi o lentezza nella rete.
IL TEST PING:
Per trovare il valore MSS/MTU ottimale della rete, eseguire il 'ping test' per trovare l'MTU, quindi ridurre quel valore di 40 e impostarlo come tcp-mss nella policy del firewall.
Windows:
ping -f -l 1472 <indirizzo IP del server>
MAC OS:
ping -D -s <dimensione> <ip_server>
Linux:
ping -M do -s <dimensione> <ip_server>
Per 1500 byte MTU, 1500-28 (20 byte = intestazione IP e 8 byte = intestazione ICMP) = 1472
Questi comandi non permetteranno di deframmentare il pacchetto, quindi modificare la dimensione fino a che il ping fallirà, questo determinerà la dimensione massima possibile.
Supponiamo che sia possibile effettuare un ping con una dimensione di 1400 ma non con una dimensione di 1401, ciò significa che il valore MTU è 1400+28=1428 byte. La soluzione è o correggere l'MTU nel dispositivo di rete o impostare il TCP MSS nella policy del firewall su 1428-40=1388 byte.
Su firewall Fortigate
config firewall policy
edit <policy id>
set tcp-mss-sender <mss value>
set tcp-mss-receiver <mss value>
tcp-mss-sender: valore del TCP MSS del mittente, modificherà il campo TCP MSS nel pacchetto TCP syn.
tcp-mss-receiver: valore del TCP MSS del ricevitore, modificherà il campo TCP MSS nel pacchetto TCP syn.
Traffico attraverso VPN IPsec:
C'è un header IPSec extra. Dipende dall'algoritmo di crittografia e autenticazione. AES-256 e SHA1 hanno un massimo di 73 byte, e un altro algoritmo potrebbe avere byte leggermente diversi.
Per un MTU da 1500 byte, l'MSS per un tunnel TCP su IPSec è 1500-20(intestazione IP)-20(intestazione TCP)-73(intestazione IPSec) = 1387.
Per i tunnel IPSec, l'MTU e il TCP MSS possono essere configurati per ogni interfaccia del tunnel e hanno la precedenza sulle impostazioni definite dai criteri.
config system interface
edit "IPSecTunnelName"
set mtu-override enable
set mtu <MTU Value>
set tcp-mss <MSS Value>
Nessun commento:
Posta un commento