[LARTC] Splitting 128Kbps DigiNet Circuit with QoS?

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We need to split a 128Kbps line to 2 companies guaranteeing each at least
64Kbps (they should be able to use all available bandwidth if the link is
idle). We would also like to implement fairly simplistic QoS...

I'm still totally confused after reading through the LARTC guide (although
this is most likely my problem and not the HOWTO authors's)...

Herewith the script I've managed to scratch together, does anyone see any
"Argh!"'s in it?

# (ISP) eth1 ------ cbq box ------ eth0  (192.168.1.0/24 and 192.168.2.0/24
are 2 clients)
# Note. NAT is done upstream...

# Bandwidth Management and Quality of Service:
#                1:
#                |
#               1:1
#              /    \
#            /        \
#          /            \
#        /                \
#      1:10               1:20
#     /    \             /    \
#    /      \           /      \
#   /        \         /        \
#1:100      1:110   1:200      1:210
#  |          |       |          |
# 100:       110:    200:       210:

# Towards Gerber Computer Services (GCS)
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc add dev eth0 root handle 1: cbq bandwidth 100Mbit avpkt 1000 cell 8
tc class add dev eth0 parent 1: classid 1:1 cbq bandwidth 100Mbit rate
128kbit weight 12.8kbit allot 1514 prio 8 cell 8 maxburst 20 avpkt 1000
bounded
tc class add dev eth0 parent 1:1 classid 1:10 cbq bandwidth 100Mbit rate
64kbit weight 6.4kbit allot 1514 prio 5 cell 8 maxburst 20 avpkt 1000
tc class add dev eth0 parent 1:1 classid 1:20 cbq bandwidth 100Mbit rate
64kbit weight 6.4kbit allot 1514 prio 5 cell 8 maxburst 20 avpkt 1000
tc class add dev eth0 parent 1:10 classid 1:100 cbq rate 60kbit allot 1514
prio 1 avpkt 1000
tc class add dev eth0 parent 1:10 classid 1:110 cbq rate 54kbit allot 1514
prio 2 avpkt 1000
tc class add dev eth0 parent 1:20 classid 1:200 cbq rate 60kbit allot 1514
prio 1 avpkt 1000
tc class add dev eth0 parent 1:20 classid 1:210 cbq rate 54kbit allot 1514
prio 2 avpkt 1000
tc qdisc add dev eth0 parent 1:100 handle 100: sfq perturb 10
tc qdisc add dev eth0 parent 1:110 handle 110: sfq perturb 10
tc qdisc add dev eth0 parent 1:200 handle 200: sfq perturb 10
tc qdisc add dev eth0 parent 1:210 handle 210: sfq perturb 10
tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip dst
192.168.1.0/24 match ip tos 0x10 0xff flowid 1:100
tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip dst
192.168.2.0/24 match ip tos 0x10 0xff flowid 1:200
tc filter add dev eth0 parent 1: protocol ip prio 11 u32 match ip dst
192.168.1.0/24 match ip protocol 1 0xff flowid 1:100
tc filter add dev eth0 parent 1: protocol ip prio 11 u32 match ip dst
192.168.2.0/24 match ip protocol 1 0xff flowid 1:200
tc filter add dev eth0 parent 1: protocol ip prio 12 u32 match ip dst
192.168.1.0/24 \
   match ip protocol 6 0xff \
   match u8 0x05 0x0f at 0 \
   match u16 0x0000 0xffc0 at 2 \
   match u8 0x10 0xff at 33 \
   flowid 1:100
tc filter add dev eth0 parent 1: protocol ip prio 12 u32 match ip dst
192.168.2.0/24 \
   match ip protocol 6 0xff \
   match u8 0x05 0x0f at 0 \
   match u16 0x0000 0xffc0 at 2 \
   match u8 0x10 0xff at 33 \
   flowid 1:200
tc filter add dev eth0 parent 1: protocol ip prio 13 u32 match ip dst
192.168.1.0/24 match ip src 0.0.0.0/0 flowid 1:110
tc filter add dev eth0 parent 1: protocol ip prio 13 u32 match ip dst
192.168.2.0/24 match ip src 0.0.0.0/0 flowid 1:210

# Towards Internet Solutions (IS)
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
tc qdisc del dev eth1 ingress 2> /dev/null > /dev/null
tc qdisc add dev eth1 root handle 1: cbq bandwidth 100Mbit avpkt 1000 cell 8
tc class add dev eth1 parent 1: classid 1:1 cbq bandwidth 100Mbit rate
128kbit weight 12.8kbit allot 1514 prio 8 cell 8 maxburst 20 avpkt 1000
bounded
tc class add dev eth1 parent 1:1 classid 1:10 cbq bandwidth 100Mbit rate
64kbit weight 6.4kbit allot 1514 prio 5 cell 8 maxburst 20 avpkt 1000
tc class add dev eth1 parent 1:1 classid 1:20 cbq bandwidth 100Mbit rate
64kbit weight 6.4kbit allot 1514 prio 5 cell 8 maxburst 20 avpkt 1000
tc class add dev eth1 parent 1:10 classid 1:100 cbq rate 60kbit allot 1514
prio 1 avpkt 1000
tc class add dev eth1 parent 1:10 classid 1:110 cbq rate 54kbit allot 1514
prio 2 avpkt 1000
tc class add dev eth1 parent 1:20 classid 1:200 cbq rate 60kbit allot 1514
prio 1 avpkt 1000
tc class add dev eth1 parent 1:20 classid 1:210 cbq rate 54kbit allot 1514
prio 2 avpkt 1000
tc qdisc add dev eth1 parent 1:100 handle 100: sfq perturb 10
tc qdisc add dev eth1 parent 1:110 handle 110: sfq perturb 10
tc qdisc add dev eth1 parent 1:200 handle 200: sfq perturb 10
tc qdisc add dev eth1 parent 1:210 handle 210: sfq perturb 10
tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip src
192.168.1.0/24 match ip tos 0x10 0xff flowid 1:100
tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip src
192.168.2.0/24 match ip tos 0x10 0xff flowid 1:200
tc filter add dev eth1 parent 1: protocol ip prio 11 u32 match ip src
192.168.1.0/24 match ip protocol 1 0xff flowid 1:100
tc filter add dev eth1 parent 1: protocol ip prio 11 u32 match ip src
192.168.2.0/24 match ip protocol 1 0xff flowid 1:200
tc filter add dev eth1 parent 1: protocol ip prio 12 u32 match ip src
192.168.1.0/24 \
   match ip protocol 6 0xff \
   match u8 0x05 0x0f at 0 \
   match u16 0x0000 0xffc0 at 2 \
   match u8 0x10 0xff at 33 \
   flowid 1:100
tc filter add dev eth1 parent 1: protocol ip prio 12 u32 match ip src
192.168.2.0/24 \
   match ip protocol 6 0xff \
   match u8 0x05 0x0f at 0 \
   match u16 0x0000 0xffc0 at 2 \
   match u8 0x10 0xff at 33 \
   flowid 1:200
tc filter add dev eth1 parent 1: protocol ip prio 13 u32 match ip dst
0.0.0.0/0 match ip src 192.168.1.0/24 flowid 1:110
tc filter add dev eth1 parent 1: protocol ip prio 13 u32 match ip dst
0.0.0.0/0 match ip src 192.168.2.0/24 flowid 1:210

# QoS:
/sbin/iptables -t mangle -A PREROUTING -p tcp --sport 21 -j TOS --set-tos
Minimize-Delay
/sbin/iptables -t mangle -A PREROUTING -p tcp --sport 22 -j TOS --set-tos
Minimize-Delay
/sbin/iptables -t mangle -A PREROUTING -p tcp --sport 23 -j TOS --set-tos
Minimize-Delay

Regards
David Herselman

=- 12 Coronation Road      http://www.syrex.co.za
   Sandhurst               +27-(0)11-883-2246 Voice
   2196                    +27-(0)11-884-7945 Fax




[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux