On Thu, 17 Apr 2003, James Yonan wrote: > A better alternative (orginally suggested by you) is to avoid fragmenting in > the first place by bouncing back ICMP_DEST_UNREACH/ICMP_FRAG_NEEDED to the TUN > device. This won't work on TAP devices because the ethernet MTU is fixed at > 1500. > > Unfortunately (or fortunately depending on your perspective), my network > connections are not broken enough to benefit from the FRAGMENT_ENABLE stuff > just yet, so I can't really test it properly.
Well, the peer that was behind an overloaded 1 Mbps 2 km radio link has now moved and has become a V.34+ modem link (33k6 bps), with corresponding effects on the MTU. I wonder if running a local pppd pair with properly MTU can be used to figure if fragmentation works, but there's yet have to be someone who drops individual fragments (unless gremlin mode does it already) for real testing. OTOH, fragmenting links also have a natural impact on the packet loss: if you assume 10% packet loss on the transport layer (that transports the fragment), and you fragment a TAP packet of 1500+ bytes into 3 of approx 500 bytes (say, MTU=552), the effective packet loss for TCP or something is much higher: it takes losing a single fragment to retransmit, so the effective packet loss will come out as 27% (not taking burst loss into account). I also have another patch to fix prototype warnings: diff -u thread.h thread.h --- thread.h 17 Apr 2003 10:51:21 -0000 +++ thread.h 17 Apr 2003 11:05:38 -0000 @@ -118,17 +118,17 @@ #define MUTEX_UNLOCK(lock) static inline void -thread_init() +thread_init(void) { } static inline void -thread_cleanup() +thread_cleanup(void) { } static inline int -thread_number() +thread_number(void) { return 0; } @@ -139,7 +139,7 @@ } static inline void -work_thread_join () +work_thread_join (void) { } -- Matthias Andree