Re: [LARTC] Per-connection routing for multiple uplinks/providers ??

2002-04-16 Thread Patrick McHardy

Bob Gustafson wrote:
On Mon, 15 Apr 2002, Bob Gustafson wrote:


What I would like to do is cleanly move packets out to the Internet over
two (maybe 3) separate interfaces, utilizing all of the bandwidth, and
avoiding snags.

[snip, lots of nice interesting wishes]


Does such a beast exist? Is it possible to build with current
ip/tc/netfilter technology?  I am running a near stock RH 7.2 at the
moment. Each ISP line is going through a separate (proprietary/black-box)
firewall/router and then into the RH7.2 box.

QoS and routing are basically independent of each other. Orthogonal,
mathematicians would say. Furthermore, there *is* in fact a patch floating
around somewhere on the internet that flushes the route cache after every
packet... that might help. I've never used it, as I don't trust it to keep
TCP connections intact, but still, it might prove useful.

The patch is called equalize, i've adapted it to 2.4.18 and fixed some 
locking issued some time ago, it's available at 
ftp://sliepen.warande.net/pub/eql/ . I haven't found the time to 
experience a lot with it, but i didn't notice any broken tcp connections.

Bye,
Patrick

___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers??

2002-04-16 Thread Patrick McHardy

Mihai RUSU wrote:

 I wont recommend the round robin packet load balancing as that would do
 more problems with TCP connections, asymetric routing , RTT values.

I guess if you'd use multiple connections to the same ISP (and same 
access point) that would solve the problems of different RTT values.
Otherwise i can confirm there are problems, i had a lot more (needless) 
retransmits using a dsl + two isdn links which was probably due to very 
different RTT on both links.

 Cisco recommends the per destination load balancing solution. I think if

It's not always practical. For example in my case one of the links is 
asymetric (256k upstresm/1mbit downstream), the other isn't. So 
distributing traffic with a normal multipath route would result in some
connections (maybe downloads) beeing on the link with slow downstream.

Bye,
Patrick

___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers??

2002-04-16 Thread Mihai RUSU

On Tue, 16 Apr 2002, Patrick McHardy wrote:

 Mihai RUSU wrote:

  I wont recommend the round robin packet load balancing as that would do
  more problems with TCP connections, asymetric routing , RTT values.

 I guess if you'd use multiple connections to the same ISP (and same
 access point) that would solve the problems of different RTT values.
 Otherwise i can confirm there are problems, i had a lot more (needless)
 retransmits using a dsl + two isdn links which was probably due to very
 different RTT on both links.


Yep, also you mentioned about that patch, which would do if having the
same provider as yuo said. In theory the lower layer u do the load
balancing the more equal it is (think about per destination, per packet,
multilink ppp, ATM ...)

  Cisco recommends the per destination load balancing solution. I think if

 It's not always practical. For example in my case one of the links is
 asymetric (256k upstresm/1mbit downstream), the other isn't. So
 distributing traffic with a normal multipath route would result in some
 connections (maybe downloads) beeing on the link with slow downstream.


I guess (as always) that there is a price to be paid. If this situations
with traffic being routed on the slow link happens too often some static
routes would help :)


Mihai RUSU

Disclaimer: Any views or opinions presented within this e-mail are solely
those of the author and do not necessarily represent those of any company,
unless otherwise specifically stated.


___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers

2002-04-16 Thread Bob Gustafson

  I have been digging through the Lartc documentation as well as Netfilter,
  etc. and haven't found much on per-connection routing for multiple
  uplinks/providers.
 
  What I would like to do is cleanly move packets out to the Internet over
  two (maybe 3) separate interfaces, utilizing all of the bandwidth, and
  avoiding snags.

What you (and everyone else) would really like is to make your two or
three links act like one link with bandwidth equal to the sum of the
parts.  As long as those different links have different ip addresses
(which will surely be the case if they connect to different providers)
this cannot be done.

But, But, - this is really just software. We are not trying to cram wine
bottles down the internet pipe (although many would really like to do
that!).

I contend that since we are trying to send information down the pipe(s) -
ephemeral information - with no mass, only governed by Shannon's law (and
perhaps some other laws, but not physical laws), we can creep up on the
goal(s) I originally set out.

I am not saying that it will be easy, only that it is possible.  (Look at
the QoS success of ATM for example)

I really appreciate all of the good ideas and hints which have arrived in
response to my original plea for help.

My first steps are to construct a test lashup - something that will probe
the pipes - determine available bandwidth in both directions on each pipe,
and then tweek the connections, add queues, add QoS specs, marks, etc. to
attempt to tell the cluge what I really want to do. A lab bench engineering
setup.

Specifying what I want to do is a significant part of the problem.
Measuring how well the cluge meets the specs is also a significant part of
the solution.

It won't be done in an instant, it will require more tools, but I think it
can be done.  More kibitzing by folks on the lartc is very welcome.

I need some time now to absorb all of the kind comments and suggestions
which have been received so far.


  Another approach to the problem would be to do a round-robin on a
  per-connection basis. Each new connection would go out of the 'next'
  interface.
Again, the problem is that when you have to choose you don't know what
the bandwidth of the connection will be.  You'd do a little better
to measure the bandwidth being used currently on each link and assign
the next connection to the link with the most unused bandwidth.  But
of course, this is still only a poor approximation of what you want.


Yeah, this is a good idea.  Maybe this idea will be the 'best' possible.

If we knew exactly how much bandwidth would be available/required for a
connection (ATM again), then there wouldn't be any need to predict the
future.

With IP connections, the bandwidth available now isn't really a reliable
predictor of the bandwidth available a few milliseconds into the future
(unfortunately), so there is a bit of statistical uncertainty to meeting
goals or specifications.

From the requestee point of view, I know how much bandwidth I need to
listen to the BBC newscast, or to a company conference call. I can also
request email and ftp sessions to work in the 'background' at a lower
bandwidth allocation (cost?), but if I am talking to someone interactively,
it would be nice if my packets were transferred at a regular rate without
jitter or delay. IP doesn't do this, and one can argue that it cannot. But,
the whole thing is run by software and software can change.

Thanks again for all of the helpful comments.

BobG
___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers

2002-04-16 Thread Don Cohen


Bob Gustafson writes:
  But, But, - this is really just software. We are not trying to cram wine
  bottles down the internet pipe (although many would really like to do
  that!).

The limitations I point out are inherent in tcp/ip.  I think I sent a
proposal to this list describing a modification to tcp that would
allow one connection to use many ip addresses (for each endpoint).
That would allow substantial improvement, since you would be able to
switch addresses in mid stream (in a live connection).  It would not
solve all of the problems.  In particular, you would not be able to
efficiently use both/all addresses at once because tcp has been
adapted to work well in the case where packets arrive in order.  That
could also perhaps be overcome with changes to tcp.  Note, however,
that these changes would only help you in cases where both machines
are using the modified versions.

  From the requestee point of view, I know how much bandwidth I need to
  listen to the BBC newscast, or to a company conference call. I can also
  request email and ftp sessions to work in the 'background' at a lower
  bandwidth allocation (cost?), but if I am talking to someone interactively,
  it would be nice if my packets were transferred at a regular rate without
  jitter or delay. IP doesn't do this, and one can argue that it cannot. But,
  the whole thing is run by software and software can change.

All of the things above can already be done on a single link.
What cannot be done is make two links work like one with the 
sum of the bandwidth.
___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers

2002-04-16 Thread Bob Gustafson

Don Cohen writes:
Bob Gustafson writes:
  But, But, - this is really just software. We are not trying to cram wine
  bottles down the internet pipe (although many would really like to do
  that!).

The limitations I point out are inherent in tcp/ip.

Yes, there are limitations in tcp/ip..


  From the requestee point of view, I know how much bandwidth I need to
  listen to the BBC newscast, or to a company conference call. I can also
  request email and ftp sessions to work in the 'background' at a lower
  bandwidth allocation (cost?), but if I am talking to someone interactively,
  it would be nice if my packets were transferred at a regular rate without
  jitter or delay. IP doesn't do this, and one can argue that it cannot. But,
  the whole thing is run by software and software can change.

All of the things above can already be done on a single link.

With IP, to get decent QoS, you need a bit of excess bandwidth on the
connection. With contention for the pipe at any point in the path from
sender to receiver, the connection reverts to a 'best efforts' un-policed
connection.

Hmm, maybe I'm wandering into the Pub wearing a weird hat. After all, this
is the Lartc mail list.

What cannot be done is make two links work like one with the
sum of the bandwidth.

I can see your point. I didn't say that it was going to be easy.

==
I just 'measured' my DSL bandwidth at 632 kbits/sec and my Cable bandwidth
at 897 kbits/sec  (using bandwidthplace.com)
==

BobG
___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



[LARTC] Per-connection routing for multiple uplinks/providers ??

2002-04-15 Thread Bob Gustafson

Hi - I'm a new subscriber to this list.

I have been digging through the Lartc documentation as well as Netfilter,
etc. and haven't found much on per-connection routing for multiple
uplinks/providers.

What I would like to do is cleanly move packets out to the Internet over
two (maybe 3) separate interfaces, utilizing all of the bandwidth, and
avoiding snags.

I could use a round-robin scheduler, which would put consecutive packets on
different interfaces. I think this will run into problems when the reply
packets come back. Maybe not ??

I read through Arthur Leeuwen's documentation
(http://lartc.org/HOWTO//cvs/2.4routing/html/x247.html )
on a scheme for dividing the outgoing packets on a per-route basis. Packets
going to the same destination will go through the same interface. This gets
around the round-robin problem, but I think this is not 'fair' in the sense
that one interface might accumulate more routes than the other, and there
does not seem to be a mechanism (other than periodically flushing the route
tables) for evening out the flows.  It is pretty simple though and I will
use this as a first chop solution.

Another approach to the problem would be to do a round-robin on a
per-connection basis. Each new connection would go out of the 'next'
interface.

I don't know exactly how to do this though. Perhaps marking the 'NEW' state
packet and routing on the mark (even marks go to the left interface, odd
marks to the right,... mod N for more than 2 interfaces).

Of course, it would be nice to allocate connections on an available
bandwidth basis.  Also do some QoS for ftp vs interactive (am looking at
the wondershaper..)

Also would be nice to periodically grab statistics so that I could
determine whether I need to get rid of an ISP (for non-competitive price/bw
stats). The stats could also be used to 'close the loop' around the routing
to ensure that the best bandwidth is being achieved.

Also would be nice to energize a dial-up connection if the other 2 die for
some reason.

Does such a beast exist? Is it possible to build with current
ip/tc/netfilter technology?  I am running a near stock RH 7.2 at the
moment. Each ISP line is going through a separate (proprietary/black-box)
firewall/router and then into the RH7.2 box.

Thanks for your time.

BobG
___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



Re: [LARTC] Per-connection routing for multiple uplinks/providers??

2002-04-15 Thread Arthur van Leeuwen

On Mon, 15 Apr 2002, Bob Gustafson wrote:

 What I would like to do is cleanly move packets out to the Internet over
 two (maybe 3) separate interfaces, utilizing all of the bandwidth, and
 avoiding snags.

[snip, lots of nice interesting wishes]

 Does such a beast exist? Is it possible to build with current
 ip/tc/netfilter technology?  I am running a near stock RH 7.2 at the
 moment. Each ISP line is going through a separate (proprietary/black-box)
 firewall/router and then into the RH7.2 box.

QoS and routing are basically independent of each other. Orthogonal,
mathematicians would say. Furthermore, there *is* in fact a patch floating
around somewhere on the internet that flushes the route cache after every
packet... that might help. I've never used it, as I don't trust it to keep
TCP connections intact, but still, it might prove useful.

You'll have to do some digging on your own though...

Doei, Arthur. (Oh, and it is Arthur van Leeuwen. The surname is
   'van Leeuwen'. Kinda like in 'Ludwig van Beethoven')

-- 
  /\/ |  [EMAIL PROTECTED]  | Work like you don't need the money
 /__\  /  | A friend is someone with whom | Love like you have never been hurt
/\/__ | you can dare to be yourself   | Dance like there's nobody watching

___
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/