Lost fragment when send to ip that need arp resolve
ming fu
fming at borderware.com
Thu Nov 10 08:44:49 PST 2005
Hi,
When sending large udp packet (larger then mtu) to an ip that need arp
resolve, the first frag will be lost.
The ip_output() sends out the fragments in a loop. The first frag cause
an arp request and the mbuf will be hold in "struct llinfo_arp" for send
after arp can be resolved. However, the ip_output continue to send all
the fragment, and the "struct llinfo_arp" can only hold one mbuf. The
later frag will overwrite the point to ealier mbuf. Once arp is
resolved, only the last mbuf will be sent, and all the rest will be lost.
Anyone know if there is attemp to make the "struct llinfo_arp" to hold
more than one mbuf, or there is a way to return an error to the
application so it will do a re-send.
Regards,
Ming
More information about the freebsd-net
mailing list