Re: [Patch] fix packet loss and massive ping spikes with PPP multi-link

From: Ben McKeegan
Date: Wed Jun 02 2010 - 10:56:00 EST


Ben McKeegan wrote:
Paul Mackerras wrote:

I needed to do something similar a while back and I took a very
different approach, which I think is more flexible. Rather than
implement a new round-robin scheduler I simply introduced a target
minimum fragment size into the fragment size calculation, as a per
bundle parameter that can be configured via a new ioctl. This
modifies the algorithm so that it tries to limit the number of
fragments such that each fragment is at least the minimum size. If
the minimum size is greater than the packet size it will not be
fragmented all but will instead just get sent down the next
available channel.

A pppd plugin generates the ioctl call allowing this to be tweaked
per connection. It is more flexible in that you can still have the
larger packets fragmented if you wish.

I like this a lot better than the other proposed patch. It adds less
code because it uses the fact that ppp_mp_explode() already has a
round-robin capability using the ppp->nxchan field, plus it provides a
way to control it per bundle via pppd.

If you fix up the indentation issues (2-space indent in some of the
added code -- if you're using emacs, set c-basic-offset to 8), I'll
ack it and hopefully DaveM will pick it up.

Okay, I'll fix it up when I'm back at work Tuesday and submit (today is a UK public holiday) and also dig out and fix up the userspace code to go with it.

Still working on this, updating the patch wasn't as trivial as I thought as it clashed with Gabriele Paoloni's ppp_mp_explode redesign. However, while looking at this code I believe I have found a bug which might have been contributing to the poor performance the OP was experiencing. For the case where channel speeds are unknown and there are more than 2 channels it would miscalculate the fragment sizes so they are not balanced on the channels.

Patch for the bug to follow immediately.

Regards,
Ben.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/