Technical Tip: Identifying MSS issues while accessing a website with IPS debug
| Description | This article describes how to identify the MSS (Maximum Segmentation Size) issue while accessing a problematic website. |
| Scope | FortiGate. |
| Solution | For a non-working website initially, forward logs and web filter logs can be verified.
In case the traffic is not blocked by the Firewall web filter, a quick way to identify the MSS(Maximum Segmentation Size) issue is to run an IPS debug.
IPS debug should be run with correct filters; otherwise, it could increase the CPU utilization.
Filters below can be used to identify the MSS (Maximum Segmentation Size) issues:
diagnose ips filter set 'src IP-ADDR' diagnose ips debug enable tcp diagnose debug enable
Here is an example for a source filter: 10.162.13.127.
diagnose ips filter set 'src 10.162.13.127' diagnose ips debug enable tcp diagnose debug enable
krypton-kvm19 # [2189@-1]ips_create_tcp_session: SYN packet from client
Stop the debug process with the following commands:
diagnose ips debug disable all diagnose debug disable diagnose debug reset
In the above debug, the remote end supports a maximum value of 1400. In case this value is too low, consider reducing the MSS value on the firewall policy level.
Note: If a repetitive number of Client-RST is seen in forward logs, this can indicate an MSS(Maximum Segmentation Size) issue with the website.
Always use a Wireshark packet capture to cross-verify the same in syn and syn+ack packets.
To change the TCP MSS value in a firewall policy, the following commands can be used:
config firewall policy edit <policy id> set tcp-mss-sender <mss value> set tcp-mss-receiver <mss value> next end TCP MSS between client and server is not negotiated, and may use different values. This happens because the traffic between client and server may be asymmetric, allowing a larger MSS along a given path. For MSS to be successfully calculated, it relies on PMTUD (Path MTU Discovery), which is dependent on ICMP messages. If ICMP messages are blocked along the path, the PMTUD mechanism will not work properly, and it may be necessary to manually define MSS values as shown above.
Related article: Technical Tip: Setting TCP MSS value |
