MTU Path Discovery Problem

Koroush Saraf koroush.saraf at
Thu Jun 19 14:33:14 PDT 2003

PMTUD Black Hole ProblemCode Problem?

Is this a code problem in ip_input.c, This code is from FreeBSD 4.8 that I just installed on my computers.
ip_forward ?  It looks to me like case EMSGSIZE can
never be reached.  Is this breaking mtu path discovery responses ? 

ip_forward(struct mbuf *m, int srcrt, struct sockaddr_in *next_hop)
        switch (error) {

        case 0:                         /* forwarded, but need redirect */
                /* type, code set above */

        case ENETUNREACH:               /* shouldn't happen, checked above */
        case EHOSTUNREACH:
        case ENETDOWN:
        case EHOSTDOWN:
                type = ICMP_UNREACH;
                code = ICMP_UNREACH_HOST;

        case EMSGSIZE:
                type = ICMP_UNREACH;
                code = ICMP_UNREACH_NEEDFRAG;
  ----- Original Message ----- 
  From: Saraf, Koroush (N-Norman SubSystems) 
  To: freebsd-questions at 
  Sent: Thursday, June 19, 2003 9:32 AM
  Subject: PMTUD Black Hole Problem

  Hi All, 

  I have the following network in the lap 

  WINXP <---mtu1500--->FREEBSD4.4<---mtu1280(gif tunnel--->FREEBSD4.4<---mtu1500--->WINXP 

  The BSD computers are setup as gateway routers.  As you might see from diagram above, the MTU of the link between the two BSD computers is 1280Bytes because of a tunnel.  When I try to transfer a file between the XP endpoints, the PMTUD goes off by sending a 1514B packet to the other end with the Don't fragment bit set.  However this packet never generates the ICMP unreachable message back to the XP box during Path MTU discovery.  So that's why I have concluded that the BSD router is the black hole.  

  Now I would like to know how to make my BSD router to participate in the MTU discovery.  Changing the MTU of the windows computers is not an option for me.  Also please note that the BSD computers only have one NIC interface, and the network is logically sperate but physically all connected to a switch, so playing with the MTU of the interface connecting the BSD computers is not an option either.

  I hope that this is a known problem and easy to fix and thanks for taking the time to respond. 
  freebsd-questions at mailing list 
  To unsubscribe, send any mail to "freebsd-questions-unsubscribe at" 

More information about the freebsd-questions mailing list