I am working on a traffic shaping system that will achieve several objectives:
- Classify egress traffic into 4 different bands - VoIP, interactive, standard and bulk. Traffic will be rated and bandwidth allocated according to which “speed lane” it is classified into.
- Control traffic at each end of a DSL link to allow latency and traffic flow to be managed. In effect download to the client will be shaped at the head-end on egress interface and vice versa for upload traffic.
- Control buffering in the ADSL router by maintaining the buffers in the RouterBoard and ensuring the ADSL router buffers do not come into play and affect the ability of RoS to prioritise traffic.
To address part 1 I have a simple classifier that mangles the traffic and assigns packet marks. e.g. VoIP is selected based on TOS or protocol e.g. IAX. Interactive will be tagged by TOS or protocol e.g. SSH or RDP. Bulk will be FTP and standard is the rest. Simple but effective. In this case I assume that I assign the queue to the egress interface. My egress interface will be an EoIP tunnel mostly so that I can open a connection to the data centre and provide transit routing from there.
To address 2 I use a RB at each end of the connection. One is installed after the DSL central line and between DSLAM and transit switch, the other is installed at the client end (tail end). I thus have egress control on interfaces at each end of the connection and should thus have full traffic flow control. I can also use this to bond connections and route a single block of IP across the bonded set.
To address 3 I am applying a simple queue that restricts the egress speed at each end. At the client end I set the egress speed to around 80% of the raw DSL sync rate (see below). I control upload from the client at the client end and I control download by controlling the egress at the head-end router. I set the speed to 80% of the DSL sync speed to allow for the ATM overhead, the L2TP central line delivery overhead then allow 10% margin to ensure the buffers in the DSL router are not allowed to fill.
I have a couple of questions that I have not been able to identify conclusive answers for:
-
If I use simple queues how do I limit the upload and download speed. My understanding is that I can control egress traffic but not ingress and thus I wonder why there are options to set both. I assume if the download limit is reached the RB will drop packets and assume the sending device will throttle back to reduce speed.
-
Can I control upload and download at a single end or is it advisable to use both ends?
-
In simple queue there is an option for prority and I assume packets are routed according to priority. As such this would seem to be a simple way to implement the 4 levels of traffic priority I had discussed above.
Any help anyone can offer would be most welcome. I am quite happy to completely document my settings for everyone to use if I can come up with a standard document and process.