Well, it turned out to be far easier to generate fragments than it was
to debug them. I had the perfect TCP/IP stack that didn't try any fancy
tricks to probe the MTU size all along - my own!
An instance of DOSBox with routing properly setup to go through the
Linux box did the trick. I ran netcat on both sides, and soon was awash
in fragments.
Then came the part I hate about DOS programming - memory corruption and
crashes. I really hate it when I can't find the bug that causes the
problem; I'm really paranoid about that kind of thing because once a
little entropy creeps into the system, it's hard to remove. Eventually
I figured out my bugs and it's been happily reassembling packets under
all sorts of stressful conditions for the last few hours.
Mike