* Re: [LARTC] ROUTING, POSTROUTING, & Traffic Control
2003-02-17 17:51 [LARTC] ROUTING, POSTROUTING, & Traffic Control Jeff Cordova
@ 2003-02-17 18:10 ` Martin A. Brown
2003-02-17 19:00 ` Jeff Cordova
2003-02-18 14:28 ` Martin A. Brown
2 siblings, 0 replies; 4+ messages in thread
From: Martin A. Brown @ 2003-02-17 18:10 UTC (permalink / raw)
To: lartc
Jeff,
[I rearranged your question a bit.]
: Can I do this? If possible, can someone please give explicit details.
Yes. In order to help you more, we'd need to know IP addresses, and also
a bit more about why you think you need to add more NICs. Depending on
what your answer is to that question, we can make a recommendation on
whether you should simply use tc/fwmark with your existing hardware
configuration to perform your traffic control or whether you really need
to have more physical devices.
: I have 2 machines (A & B) behind a Linux Firewall (FW).
: I have 2 ethernet cards on the FW - eth0 talks to the internet, eth1 talks
: to machines A & B.
: Machine A has lots of inbound & outbound traffic while machine B doesn't.
: It seems reasonable that I could add 2 new ethernet cards (eth2 & eth3) to
: the FW and by configuring iptables and/or routing tables force traffic on A
: to be handled by eth0/eth1 and traffic for B to be handled by eth2/eth3.
If you are looking at reserving a certain amount of bandwidth for machine
B while still allowing machine A the lion's share of the bandwidth, you
are looking at a simple HTB setup on your eth0.
I'd recommend reading up on HTB, queuing and so forth on the following
sites for documentation:
http://lartc.org/howto/ # -- broad docs on linux traffic control
http://www.docum.org/ # -- more hands on docs (and intro)
HTB software:
http://luxik.cdi.cz/~devik/qos/htb/
In short, you can use "tc filter" to select based on fwmark, source
address, destination address, and a number of other criteria. This will
allow you to place traffic from machine A or machine B into a particular
class, thus reserving bandwidth for each one.
Is that what you were looking for?
Good luck,
-Martin
--
Martin A. Brown --- SecurePipe, Inc. --- mabrown@securepipe.com
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [LARTC] ROUTING, POSTROUTING, & Traffic Control
2003-02-17 17:51 [LARTC] ROUTING, POSTROUTING, & Traffic Control Jeff Cordova
2003-02-17 18:10 ` Martin A. Brown
@ 2003-02-17 19:00 ` Jeff Cordova
2003-02-18 14:28 ` Martin A. Brown
2 siblings, 0 replies; 4+ messages in thread
From: Jeff Cordova @ 2003-02-17 19:00 UTC (permalink / raw)
To: lartc
Martin,
Thanks for the pointers.
I may have been too quick to suggest a "solution" before describing the
problem I'm having. More specifically: machine A is an outbound emailer and
machine B runs a website. When A is sending at high volume it can take up to
30 seconds to get an HTTP response from machine B. I naively assumed the
solution was to install more NIC cards and build separate "channels" for A &
B.
Here's my current setup:
64.41.183.130 (eth0)
64.41.183.131 (eth2)
FW
192.168.1.8 (eth1)
|
/ \
/ \
/ \
A B
192.168.1.26 192.168.1.17
As for iptables, I currently include these two statements:
-A PREROUTING -i eth0 -d 64.41.183.130 -p tcp -m tcp --dport 80 -j
DNAT --to-destination 192.168.1.17:80
-A PREROUTING -i eth2 -d 64.41.183.131 -p tcp -m tcp --dport 25 -j
DNAT --to-destination 192.168.1.26:25
which presumably routes web traffic coming in on eth0 to the web server
(machine B) and which routes smtp traffic coming in on eth1 to the email
server (machine A). ASSUMING this is correct, I'd like to be able to turn
this around and map outbound traffic from A through 64.130.183.130 and
outbound traffic from B through 64.130.183.131. Another naive assumption I
have made is that eth1 could become a chokepoint and I could add eth3 with
IP 192.168.1.9. So, that when everything was done, I would have these 2
channels:
A <-> 192.168.1.8 <-> 64.131.183.131 (handles all inbound/outbound smtp
traffic)
AND
B <-> 192.168.1.9 <-> 64.131.183.130 (handles all inbound/outbound http
traffic)
I hope that provides enough details for you.
Thankyou,
Jeff
-----Original Message-----
From: Martin A. Brown [mailto:mabrown-lartc@securepipe.com]
Sent: Monday, February 17, 2003 10:11 AM
To: Jeff Cordova
Cc: lartc@mailman.ds9a.nl
Subject: Re: [LARTC] ROUTING, POSTROUTING, & Traffic Control
Jeff,
[I rearranged your question a bit.]
: Can I do this? If possible, can someone please give explicit details.
Yes. In order to help you more, we'd need to know IP addresses, and also
a bit more about why you think you need to add more NICs. Depending on
what your answer is to that question, we can make a recommendation on
whether you should simply use tc/fwmark with your existing hardware
configuration to perform your traffic control or whether you really need
to have more physical devices.
: I have 2 machines (A & B) behind a Linux Firewall (FW).
: I have 2 ethernet cards on the FW - eth0 talks to the internet, eth1
talks
: to machines A & B.
: Machine A has lots of inbound & outbound traffic while machine B doesn't.
: It seems reasonable that I could add 2 new ethernet cards (eth2 & eth3)
to
: the FW and by configuring iptables and/or routing tables force traffic on
A
: to be handled by eth0/eth1 and traffic for B to be handled by eth2/eth3.
If you are looking at reserving a certain amount of bandwidth for machine
B while still allowing machine A the lion's share of the bandwidth, you
are looking at a simple HTB setup on your eth0.
I'd recommend reading up on HTB, queuing and so forth on the following
sites for documentation:
http://lartc.org/howto/ # -- broad docs on linux traffic control
http://www.docum.org/ # -- more hands on docs (and intro)
HTB software:
http://luxik.cdi.cz/~devik/qos/htb/
In short, you can use "tc filter" to select based on fwmark, source
address, destination address, and a number of other criteria. This will
allow you to place traffic from machine A or machine B into a particular
class, thus reserving bandwidth for each one.
Is that what you were looking for?
Good luck,
-Martin
--
Martin A. Brown --- SecurePipe, Inc. --- mabrown@securepipe.com
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 4+ messages in thread* RE: [LARTC] ROUTING, POSTROUTING, & Traffic Control
2003-02-17 17:51 [LARTC] ROUTING, POSTROUTING, & Traffic Control Jeff Cordova
2003-02-17 18:10 ` Martin A. Brown
2003-02-17 19:00 ` Jeff Cordova
@ 2003-02-18 14:28 ` Martin A. Brown
2 siblings, 0 replies; 4+ messages in thread
From: Martin A. Brown @ 2003-02-18 14:28 UTC (permalink / raw)
To: lartc
Jeff,
: I may have been too quick to suggest a "solution" before describing the
: problem I'm having. More specifically: machine A is an outbound emailer
: and machine B runs a website. When A is sending at high volume it can
: take up to 30 seconds to get an HTTP response from machine B. I naively
: assumed the solution was to install more NIC cards and build separate
: "channels" for A & B.
Chances are that the network interface card is not the bottleneck on your
bandwidth. Chances are that it is something like a DSL line, or a T1, or
maybe capped bandwidth on an upstream router. Whether you have one NIC or
two facing the outside world, the problem revolves around both machines
gluttonously gorging themselves on your bandwidth. Your router can divide
access to bandwidth between machines A and B in a controllable manner.
<snipped diagram>
: As for iptables, I currently include these two statements:
:
: -A PREROUTING -i eth0 -d 64.41.183.130 -p tcp -m tcp --dport 80 -j
: DNAT --to-destination 192.168.1.17:80
: -A PREROUTING -i eth2 -d 64.41.183.131 -p tcp -m tcp --dport 25 -j
: DNAT --to-destination 192.168.1.26:25
Right--a little bit of DNAT never hurt anybody....
: which presumably routes web traffic coming in on eth0 to the web server
: (machine B) and which routes smtp traffic coming in on eth1 to the email
: server (machine A). ASSUMING this is correct, I'd like to be able to turn
: this around and map outbound traffic from A through 64.130.183.130 and
: outbound traffic from B through 64.130.183.131.
How's this:
-A POSTROUTING -i eth1 -s 192.1.68.1.17 -j SNAT --to-source 64.41.183.130
-A POSTROUTING -i eth1 -s 192.1.68.1.26 -j SNAT --to-source 64.41.183.131
: Another naive assumption I have made is that eth1 could become a
: chokepoint and I could add eth3 with IP 192.168.1.9. So, that when
: everything was done, I would have these 2 channels:
<snipped diagram>
Jeff, I don't think this is the correct solution for your problem. I
think what will be better for you is to understand how to apply HTB (or
traffic control, more generally) to your problem.
Here's an off-the-cuff suggestion, patterned closely after this common
need (two or more bandwidth-hungry hosts competing over the available
bandwidth):
- add an HTB class with rate equal to your total outbound bandwidth,
minus a bit so that you become the bottleneck (10%?, Stef?)
- add two nested HTB classes with an SFQ qdisc (per Martin Devera's
suggestion on the HTB site)
- set the rate on each class to a fraction of your total bandwidth,
and set the ceil (ceiling) on each class to the rate of the
parent class
- classify traffic from machine A into one class; classify traffic
from machine B into the other class
Good luck,
-Martin
--
Martin A. Brown --- SecurePipe, Inc. --- mabrown@securepipe.com
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply [flat|nested] 4+ messages in thread