From: Stephen Hemminger <[EMAIL PROTECTED]> Date: Tue, 15 Nov 2005 16:29:40 -0800
> 161.30.105.72.ftp-data > 192.168.128.101.32792: . ack 1 win 64000 > 192.168.128.101.32792 > 161.30.105.72.ftp-data: . 1:1381(1380) ack 1 win 5840 > 192.168.128.101.32792 > 161.30.105.72.ftp-data: . 1381:2761(1380) ack 1 win > 5840 > 161.30.14.93 > 192.168.128.101: icmp 36: 161.30.105.72 unreachable - need to > frag (mtu 1400) > 161.30.14.93 > 192.168.128.101: icmp 36: 161.30.105.72 unreachable - need to > frag (mtu 1400) > 192.168.128.101.32792 > 161.30.105.72.ftp-data: . 1:1381(1380) ack 1 win 5840 1400 - 20 byte TCP header is 1380 but we're supposed to subtract out the IP etc. headers as well (which is tp->af_specific->net_header_len). Would be helpful to see some diagnostics from tcp_sync_mss() when this event is triggered, something like: diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 029c70d..06f1e56 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -646,6 +646,13 @@ unsigned int tcp_sync_mss(struct sock *s if (tp->max_window && mss_now > (tp->max_window>>1)) mss_now = max((tp->max_window>>1), 68U - tp->tcp_header_len); +#if 1 + if (tp->pmtu_cookie != pmtu && net_ratelimit()) { + printk("TCP: Adjusting PMTU [%d --> %d] mss_cache [%d --> %d]\n", + tp->pmtu_cookie, pmtu, + tp->mss_cache, mss_now); + } +#endif /* And store cached results */ tp->pmtu_cookie = pmtu; tp->mss_cache = mss_now; Alternatively, we're ignoring the PMTU message for one reason or another. Perhaps the quoted TCP packet in the ICMP pmtu message has an incorrect sequence number or is truncated for some reason. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html