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) 
  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 

  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. 
  [EMAIL PROTECTED] mailing list 
  To unsubscribe, send any mail to "[EMAIL PROTECTED]" 
[EMAIL PROTECTED] mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to