All of lore.kernel.org
 help / color / mirror / Atom feed
* [LARTC] packet shaping bridge
@ 2005-05-05 16:26 Jason Bath
  2005-05-05 21:58 ` Jason Bath
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Jason Bath @ 2005-05-05 16:26 UTC (permalink / raw)
  To: lartc

Hi all,

I'm new to using iproute2 for traffic shaping but not new to Linux. 
Essentially I have a WAN between two cities that I stream audio over for 
rebroadcast.  Since it's all done live stability and prioritization is 
critical in staying on air for our radio broadcasts.

My WAN is  1.5Mbit PVC within my provider's infrastructure so I have an 
unencrypted direct line via DSL to my remote site.  My streaming devices 
use between 300 and 600kilobits/sec. with plenty of room for the 
workstations/servers at the remote site.  Unfortunately as we all know, 
typical applications like web, mail, windows file sharing, etc are 
bursty and pigs for the bandwidth.  This results in audio that's choppy 
and drops off for seconds to minutes.  I know there's enough bandwidth 
to go around but I need limits set.

I've created a bridge called edmbr on a Mandrake 10.1 server with 2 
nics.  The bridge works just great thanks to Don's script from 
burnpc.com.  The problem I've run into is in testing my filtering. 
After fixing the bugs in my first script I went to tweaking its settings.

I'm using htb as it seems simpler for me to use at the moment. For some 
unknown reason to me all traffic is being sent to my default classid 
1:11.  In the script below my test workstation is the 10.2.1.251 address 
but all of my traffic goes to 1:11. I'm using  "tc -s -d class show dev 
eth0" to monitor the traffic.

Any ideas?  Should I move to CBQ?

I'm currently tweaking but this is what I have for now:
-----------------------
#!/bin/sh

DEV=eth0
#setup the root

#tc qdisc add dev $DEV root handle 1: htb default 11
tc class add dev $DEV parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
#Tokyo class
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 100kbps
#Everything else
tc class add dev $DEV parent 1:1 classid 1:11 htb rate 50kbps ceil 100kbps

#filter for streaming
tc filter add dev $DEV parent 1:1 protocol ip prio 0 u32 match ip src 
10.2.1.7 match ip dport 2001 0xffff flowid 1:10
tc filter add dev $DEV protocol ip parent 1:1 prio 0 u32 match ip src 
10.2.1.5 match ip dport 2001 0xffff flowid 1:10

#filter for my workstation
tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
10.2.1.251 flowid 1:10

#all other traffic sent to the other queue
tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
0.0.0.0/0 flowid 1:11


tc qdisc add dev $DEV parent 1:10 handle 10: pfifo limit 2
tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 2
-------------------




-- 

Jason Bath
Network Administrator
CKUA Radio Network
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [LARTC] packet shaping bridge
  2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
@ 2005-05-05 21:58 ` Jason Bath
  2005-05-05 22:20 ` Andreas Klauer
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Jason Bath @ 2005-05-05 21:58 UTC (permalink / raw)
  To: lartc

Just a follow-up at this point.  No matter what I do to tweak all 
traffic goes to the default queue even though I have tc filters in 
place.  Any suggestions?

Jason Bath
Network Administrator
CKUA Radio Network
780.428.2017


Jason Bath wrote:
> Hi all,
> 
> I'm new to using iproute2 for traffic shaping but not new to Linux. 
> Essentially I have a WAN between two cities that I stream audio over for 
> rebroadcast.  Since it's all done live stability and prioritization is 
> critical in staying on air for our radio broadcasts.
> 
> My WAN is  1.5Mbit PVC within my provider's infrastructure so I have an 
> unencrypted direct line via DSL to my remote site.  My streaming devices 
> use between 300 and 600kilobits/sec. with plenty of room for the 
> workstations/servers at the remote site.  Unfortunately as we all know, 
> typical applications like web, mail, windows file sharing, etc are 
> bursty and pigs for the bandwidth.  This results in audio that's choppy 
> and drops off for seconds to minutes.  I know there's enough bandwidth 
> to go around but I need limits set.
> 
> I've created a bridge called edmbr on a Mandrake 10.1 server with 2 
> nics.  The bridge works just great thanks to Don's script from 
> burnpc.com.  The problem I've run into is in testing my filtering. After 
> fixing the bugs in my first script I went to tweaking its settings.
> 
> I'm using htb as it seems simpler for me to use at the moment. For some 
> unknown reason to me all traffic is being sent to my default classid 
> 1:11.  In the script below my test workstation is the 10.2.1.251 address 
> but all of my traffic goes to 1:11. I'm using  "tc -s -d class show dev 
> eth0" to monitor the traffic.
> 
> Any ideas?  Should I move to CBQ?
> 
> I'm currently tweaking but this is what I have for now:
> -----------------------
> #!/bin/sh
> 
> DEV=eth0
> #setup the root
> 
> #tc qdisc add dev $DEV root handle 1: htb default 11
> tc class add dev $DEV parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
> #Tokyo class
> tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 100kbps
> #Everything else
> tc class add dev $DEV parent 1:1 classid 1:11 htb rate 50kbps ceil 100kbps
> 
> #filter for streaming
> tc filter add dev $DEV parent 1:1 protocol ip prio 0 u32 match ip src 
> 10.2.1.7 match ip dport 2001 0xffff flowid 1:10
> tc filter add dev $DEV protocol ip parent 1:1 prio 0 u32 match ip src 
> 10.2.1.5 match ip dport 2001 0xffff flowid 1:10
> 
> #filter for my workstation
> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
> 10.2.1.251 flowid 1:10
> 
> #all other traffic sent to the other queue
> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
> 0.0.0.0/0 flowid 1:11
> 
> 
> tc qdisc add dev $DEV parent 1:10 handle 10: pfifo limit 2
> tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 2
> -------------------
> 
> 
> 
> 
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [LARTC] packet shaping bridge
  2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
  2005-05-05 21:58 ` Jason Bath
@ 2005-05-05 22:20 ` Andreas Klauer
  2005-05-05 22:51 ` Andy Furniss
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Andreas Klauer @ 2005-05-05 22:20 UTC (permalink / raw)
  To: lartc

On Thursday 05 May 2005 18:26, Jason Bath wrote:
> tc filter add dev $DEV parent 1:1 protocol ip prio 0 u32 match ip src
> 10.2.1.7 match ip dport 2001 0xffff flowid 1:10

You have to attach the filters to the QDisc (parent 1:).

HTH
Andreas
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [LARTC] packet shaping bridge
  2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
  2005-05-05 21:58 ` Jason Bath
  2005-05-05 22:20 ` Andreas Klauer
@ 2005-05-05 22:51 ` Andy Furniss
  2005-05-06 17:49 ` Jason Bath
  2005-05-09 22:26 ` Andy Furniss
  4 siblings, 0 replies; 6+ messages in thread
From: Andy Furniss @ 2005-05-05 22:51 UTC (permalink / raw)
  To: lartc

Jason Bath wrote:

> I'm currently tweaking but this is what I have for now:
> -----------------------
> #!/bin/sh
> 
> DEV=eth0
> #setup the root
> 
> #tc qdisc add dev $DEV root handle 1: htb default 11

Remember arp traffic will go to default unless you filter elsewhere.

> tc class add dev $DEV parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
> #Tokyo class
> tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 100kbps

I would use rate 90 ceil 100 prio 0

> #Everything else
> tc class add dev $DEV parent 1:1 classid 1:11 htb rate 50kbps ceil 100kbps

rate 10 ceil 100 prio 1 quantum 1500 (or your mtu) burst 10b cburst 10b

> 
> #filter for streaming
> tc filter add dev $DEV parent 1:1 protocol ip prio 0 u32 match ip src 
> 10.2.1.7 match ip dport 2001 0xffff flowid 1:10

Filters don't work as you need to add them to 1:0 also prio 0 is not 
highest for a filter - use 1

> tc filter add dev $DEV protocol ip parent 1:1 prio 0 u32 match ip src 
> 10.2.1.5 match ip dport 2001 0xffff flowid 1:10
> 
> #filter for my workstation
> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
> 10.2.1.251 flowid 1:10

If your workstation generates bulk traffic don't put it with stream - 
make another class.

> 
> #all other traffic sent to the other queue
> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
> 0.0.0.0/0 flowid 1:11

Not really needed if you use default 11 but remember arp - if you omit 
default 11 then leave this and arp will pass unshaped.


> tc qdisc add dev $DEV parent 1:10 handle 10: pfifo limit 2

two packets seems a bit low - maybe use a short bfifo to limit to a 
couple big packets (3k) but still allow more small.

> tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 2

perturb causes packet reordering 2 is too low use min 10 or higher.

Andy.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [LARTC] packet shaping bridge
  2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
                   ` (2 preceding siblings ...)
  2005-05-05 22:51 ` Andy Furniss
@ 2005-05-06 17:49 ` Jason Bath
  2005-05-09 22:26 ` Andy Furniss
  4 siblings, 0 replies; 6+ messages in thread
From: Jason Bath @ 2005-05-06 17:49 UTC (permalink / raw)
  To: lartc

Thanks!  Adding the filter to the root was the trick.  From the various 
documentation I was reading I had the impression that the filter needed 
to be added to the sub-classes - 1:1 and so forth.  I presume that's 
only appropriate when you have leaves below 1:1.

Anyhow, the trick now is figuring out how I want to configure things 
with two of these bridges in mind.  The topology would look like this:

Switch-bridge/filter-WAN router--Remote WAN router-bridge-remote switch

Now with 1.5Mbit/s with the potential for 2mbit/s I was thinking of 
limiting each bridge at 1Mbit/s. I didn't want to limit at 750kbit/s 
because if you're doing a big file transfer, you're going to suffer and 
besides, the ratio of download to upload is in favour of the download 
The streaming audio devices are set up for 128kbit/s MPEG-layer3.  So 
we're looking at dedicating a minimum of 150kbit/s which can double or 
more if I'm having congestion problems.

Now here's an interesting idea.  Let me know if it's possible or not. 
Is it possible for me to create a bridge between the two linux boxes so 
it physically looks like

eth0 eth1 --WAN--  eth1 eth0

but virtually you are going

eth0 ------- eth0

The reason I ask this is so I can create an awareness between the two 
bridges as to how much traffic is actually going through the pipe so I 
may optimize it to its fullest.

I suppose that it could be done via snmp or spanning-tree?


Thanks again.



Jason Bath
Network Administrator
CKUA Radio Network
780.428.2017


Andy Furniss wrote:
> Jason Bath wrote:
> 
>> I'm currently tweaking but this is what I have for now:
>> -----------------------
>> #!/bin/sh
>>
>> DEV=eth0
>> #setup the root
>>
>> #tc qdisc add dev $DEV root handle 1: htb default 11
> 
> 
> Remember arp traffic will go to default unless you filter elsewhere.
> 
>> tc class add dev $DEV parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
>> #Tokyo class
>> tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 
>> 100kbps
> 
> 
> I would use rate 90 ceil 100 prio 0
> 
>> #Everything else
>> tc class add dev $DEV parent 1:1 classid 1:11 htb rate 50kbps ceil 
>> 100kbps
> 
> 
> rate 10 ceil 100 prio 1 quantum 1500 (or your mtu) burst 10b cburst 10b
> 
>>
>> #filter for streaming
>> tc filter add dev $DEV parent 1:1 protocol ip prio 0 u32 match ip src 
>> 10.2.1.7 match ip dport 2001 0xffff flowid 1:10
> 
> 
> Filters don't work as you need to add them to 1:0 also prio 0 is not 
> highest for a filter - use 1
> 
>> tc filter add dev $DEV protocol ip parent 1:1 prio 0 u32 match ip src 
>> 10.2.1.5 match ip dport 2001 0xffff flowid 1:10
>>
>> #filter for my workstation
>> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
>> 10.2.1.251 flowid 1:10
> 
> 
> If your workstation generates bulk traffic don't put it with stream - 
> make another class.
> 
>>
>> #all other traffic sent to the other queue
>> tc filter add dev $DEV protocol ip parent 1:1 prio 3 u32 match ip src 
>> 0.0.0.0/0 flowid 1:11
> 
> 
> Not really needed if you use default 11 but remember arp - if you omit 
> default 11 then leave this and arp will pass unshaped.
> 
> 
>> tc qdisc add dev $DEV parent 1:10 handle 10: pfifo limit 2
> 
> 
> two packets seems a bit low - maybe use a short bfifo to limit to a 
> couple big packets (3k) but still allow more small.
> 
>> tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 2
> 
> 
> perturb causes packet reordering 2 is too low use min 10 or higher.
> 
> Andy.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [LARTC] packet shaping bridge
  2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
                   ` (3 preceding siblings ...)
  2005-05-06 17:49 ` Jason Bath
@ 2005-05-09 22:26 ` Andy Furniss
  4 siblings, 0 replies; 6+ messages in thread
From: Andy Furniss @ 2005-05-09 22:26 UTC (permalink / raw)
  To: lartc

Jason Bath wrote:
> Thanks!  Adding the filter to the root was the trick.  From the various 
> documentation I was reading I had the impression that the filter needed 
> to be added to the sub-classes - 1:1 and so forth.  I presume that's 
> only appropriate when you have leaves below 1:1.
> 
> Anyhow, the trick now is figuring out how I want to configure things 
> with two of these bridges in mind.  The topology would look like this:
> 
> Switch-bridge/filter-WAN router--Remote WAN router-bridge-remote switch
> 
> Now with 1.5Mbit/s with the potential for 2mbit/s I was thinking of 
> limiting each bridge at 1Mbit/s. I didn't want to limit at 750kbit/s 
> because if you're doing a big file transfer, you're going to suffer and 
> besides, the ratio of download to upload is in favour of the download 
> The streaming audio devices are set up for 128kbit/s MPEG-layer3.  So 
> we're looking at dedicating a minimum of 150kbit/s which can double or 
> more if I'm having congestion problems.
> 
> Now here's an interesting idea.  Let me know if it's possible or not. Is 
> it possible for me to create a bridge between the two linux boxes so it 
> physically looks like
> 
> eth0 eth1 --WAN--  eth1 eth0
> 
> but virtually you are going
> 
> eth0 ------- eth0
> 
> The reason I ask this is so I can create an awareness between the two 
> bridges as to how much traffic is actually going through the pipe so I 
> may optimize it to its fullest.
> 
> I suppose that it could be done via snmp or spanning-tree?

I don't know if that will work - if you can shape on both ends just do 
egress shaping on the WAN facing interfaces. You'll need to back off a 
bit to allow for link overheads, but it will be alot nicer than doing it 
all from one end.

Andy.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-05-09 22:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-05 16:26 [LARTC] packet shaping bridge Jason Bath
2005-05-05 21:58 ` Jason Bath
2005-05-05 22:20 ` Andreas Klauer
2005-05-05 22:51 ` Andy Furniss
2005-05-06 17:49 ` Jason Bath
2005-05-09 22:26 ` Andy Furniss

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.