Multilink PPP Download Speeds With Round-Robin Packets
Michael MacLeod
mikemacleod at gmail.com
Wed Jan 16 10:02:51 PST 2008
On Jan 16, 2008 5:04 AM, Nikos Vassiliadis <nvass at teledomenet.gr> wrote:
> On Wednesday 16 January 2008 09:44:05 Michael MacLeod wrote:
> > On Jan 16, 2008 2:17 AM, Julian Elischer <julian at elischer.org> wrote:
> > > 1/ when downloading, does the load on each incoming interface
> use "netstat -I xl0 -w 1", "netstat -I xl1 -w 1" and "netstat -I tun0 -w 1"
> or "systat -ifstat" for an interactive terminal display.
Here's some sample output from netstat -I <interface> -w 1:
input (xl0) output
packets errs bytes packets errs bytes colls
226 0 337862 157 0 12911 0
219 0 325854 156 0 13040 0
232 0 344078 156 0 12696 0
226 0 337862 157 0 13063 0
input (xl1) output
packets errs bytes packets errs bytes colls
224 0 334834 157 0 12931 0
223 0 336188 156 0 12992 0
225 0 336348 157 0 12971 0
input (tun0) output
packets errs bytes packets errs bytes colls
447 0 658506 320 0 19148 0
457 0 669064 311 0 18440 0
454 0 667474 314 0 18500 0
442 0 648204 329 0 20044 0
According to systat -ifstat I'm getting approx 320kb a sec down each
pipe, for a total throughput of approx 640kb. I was downloading
several copies of the linux kernel from kernel.org in parallel, and
maxing out the connection.
> > > 2/ do the IP stats show a lot of out-of order packets?
> > > (netstat -s -ptcp I think)
> > > in fact ip reassembly problems might be of interest.
> > > (netstat -s -pip (?))
> > > 3/are there many retransmissions?
> Though it seems that most of the traffic is forwarded and thus the
> FreeBSD host will not get much TCP. So, you wouldn't know much of
> the retransmissions happening. You could use 2-3 instances of
> "fetch ftp://somewhere/something" in parallel to fully utilize
> your DSL lines from your FreeBSD box.
# netstat -s -ptcp
< snip >
396978 packets received
67065 acks (for 184666044 bytes)
11483 duplicate acks
0 acks for unsent data
296659 packets (405850084 bytes) received in-sequence
9171 completely duplicate packets (64530 bytes)
0 old duplicate packets
2 packets with some dup. data (1017 bytes duped)
20958 out-of-order packets (29976306 bytes)
0 packets (0 bytes) of data after window
0 window probes
1111 window update packets
4 packets received after close
0 discarded for bad checksums
0 discarded for bad header offset fields
0 discarded because packet too short
< snip >
# netstat -s -pip
ip:
4622318 total packets received
0 bad header checksums
0 with size smaller than minimum
0 with data size < data length
0 with ip length > max ip packet size
0 with header length < data size
0 with data length < header length
0 with bad options
0 with incorrect version number
0 fragments received
0 fragments dropped (dup or out of space)
0 fragments dropped after timeout
0 packets reassembled ok
405541 packets for this host
0 packets for unknown/unsupported protocol
4198571 packets forwarded (0 packets fast forwarded)
4091 packets not forwardable
0 packets received for unknown multicast group
0 redirects sent
369718 packets sent from this host
0 packets sent with fabricated ip header
0 output packets dropped due to no bufs, etc.
0 output packets discarded due to no route
0 output datagrams fragmented
0 fragments created
0 datagrams that can't be fragmented
0 tunneling packets that can't find gif
0 datagrams with bad address in header
So there are lots of out of order packets, but that's to be expected
with round-robin multilink ppp. I ran these after downloading three
copies of the linux kernel in parallel, and there are no packets that
were reassembled.
> [snip]
> > > 5/ have you tried mpd? (in ports (multilink ppp daemon).)
> > > it may have different operating characteristics.. (it does it all
> > > in the kernel using netgraph). Sounds like you need to fix it
> > > at the other end but mpd might trigger different behaviour
> > > in the router.
> >
> > I looked into mpd first. I tried several of the ports (mpd, mpd4, and
> > mpd5) all without much success. There isn't much documentation for mpd
> > (at least compared to the standard userland ppp).
>
> No, mpd is adequately documented. /usr/local/share/doc/mpd*
>
> > Also, both of the
> > individuals who I know have successfully used multilink ppp and
> > TekSavvy are using userland ppp. I'd be happy to use mpd, except that
> > I'm *almost* there with userland ppp, and I'm guessing it's something
> > I've overlooked or misconfigered somewhere and once I find and correct
> > it, it'll work like a charm.
>
> If you are willing to try mpd, you can find a multilink PPPoE setup here:
> http://lists.freebsd.org/pipermail/freebsd-questions/2007-September/157110.html
>
> You can use the above example with mpd4.
I tried mpd first, and did manage to find the above config and tried
to use it. I was not successful unfortunately. When playing with mpd I
even downloaded a local copy of the documentation you mentioned so I
could easily browse it from work (I have a sweet job with plenty of
downtime). Given that the other two freebsd users doing mutlilink ppp
on the dslreports forums were using userland ppp, I decided to focus
on that.
If I can't get userland ppp working by this weekend, I'll try your mpd
config once more, and see if I can make it work. However, when I was
reading up on it, I seem to recall that mpd did not support either
packet splitting or round-robin (I forget which, and I forget where I
read it), and since my connection to TekSavvy uses both of these, it
might be a non-starter.
I'd really like to get userland ppp working however, since I know it's
possible for it to work optimally.
Thanks for your patience,
Mike
More information about the freebsd-net
mailing list