Hi, I've encountered a possible bug in routed code that's interfering with path mtu discovery mechanism. Routed deletes any cloned route as soon as it sees one (with exception of arp routes in the local ethernet), including protocol cloned routes served as holders for path mtu information. Could anyone confirm this is not an intended behavior?
This symptom of this bug is the breakdown of the pmtu discovery process. It is easily reproduced with a machine behind a PPPoE router (or any router limits MTU to below 1500) and running routed. With this seutp, send an email larger than 1500 to your friend at stanford or mit, you will find the email couldn't be delivered. Start tcpdump and watch your email and icmp traffic, you will see an icmp response ICMP_NEEDFRAG for the first 1500-byte tcp packet, but *NO* immediate retransmission with reduced packet size in response to the icmp message, the next retransmission will occur 10ms later when the retransmit timer expires and with the same 1500 byte packet. Following is my proposed fix. Basically treat the protocol cloned routes the same way as we treat arp routes (in fact also cloned), that is, ignore them. Index: table.c =================================================================== RCS file: /home/ncvs/src/sbin/routed/table.c,v retrieving revision 1.16 diff -u -r1.16 table.c --- table.c 18 Feb 2002 20:35:19 -0000 1.16 +++ table.c 16 Oct 2002 18:33:53 -0000 @@ -1111,9 +1111,9 @@ continue; /* ignore ARP table entries on systems with a merged route - * and ARP table. + * and ARP table, or any other cloned routes */ - if (rtm->rtm_flags & RTF_LLINFO) + if (rtm->rtm_flags & (RTF_LLINFO | RTF_WASCLONED)) continue; /* ignore multicast addresses @@ -1259,6 +1259,11 @@ if (m.r.rtm.rtm_flags & RTF_LLINFO) { trace_act("ignore ARP %s", str); + continue; + } + + if (m.r.rtm.rtm_flags & RTF_WASCLONED) { + trace_act("ignore clone %s", str); continue; } Thanks -lq To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-net" in the body of the message