Re: Prioritizing forwarded traffic over locally generated traffic

Linux Advanced Routing and Traffic Control

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

 



Sounds to me like he's trying to match via source IP.. which would catch everything just fine..

Niel,
I do something very similar, its fairly simple..

you want to mark packets in your prerouting, then match against them in your qdiscs..

i use an htb.. my upload link can handle about 85 kilobytes / sec.

I have several classes that match with various rates, the cieling for all of them is ~80

Then i have a class that matches the mark that i use for that specific IP.

That mark goes into a class with a rate of 2 KB/s and a cieling of 75

that class gets 75 when nothing else is running, and 2 if other classes are filling it up.

Hope this helps,
Jason
Jason Boxman wrote:

On Thursday 23 September 2004 18:09, Neil Greatorex wrote:


Hi,

I'm a complete newbie at this traffic shaping / QoS stuff so please excuse
me if this is a silly question. I've searched and searched on Google and I
just end up confusing myself even more, so I thought I'd post my question
to this list and see whether someone can help me!



Sure.



Basically, I am running a Linux box as a NAT router on my home network
(machine name marvin). I want to use mldonkey on the router box for P2P
downloads. What I wish to do, is to have any traffic that originates on the
internal LAN take priority over traffic that is generated from mldonkey on
marvin. I don't wish to restrict the maximum bandwidth for the P2P
downloads on a permanent basis if I can help it - so that all the bandwidth
is used all of the time.



So you'd like to classify p2p traffic from mldonkey (Overnet/Kad/eDonkey) such that it is granted a lower priority than other traffic? Not a problem. However, because those three protocols use random ports, you cannot classify 'edonkey' traffic based on port. You can use either ipp2p or L7-Filter to match these flows based on layer 7 pattern matching, though.




My plan was to use the PREROUTING and OUTPUT chains of the mangle table to
mark the packets, and then use some form of qdisc/class structure that will
prioritise one over the other.



I believe you can use the POSTROUTING chain of the mangle table and nab all traffic. L7-Filter has a nice graphic[1] available.


[1] http://l7-filter.sourceforge.net/PacketFlow.png



The aim of this is to have an upload that would normally take say 20
seconds from a machine on the LAN still take 20 seconds when mldonkey is
uploading - so the NAT traffic will take all the bandwidth away from
mldonkey. The closer to this aim I can get the better!



That makes sense, although the time interval is relative to the data size and protocol being used, so it isn't a useful measure for the rest of us. What's the link size? What's the file / data size?




To test implementations, I am using SFTP to upload a file from both a
machine on my internal network (named slartibartfast), and marvin (the
router machine) simultaneously. The perfect behaviour would be for the
upload on slartibartfast to take 20 seconds, and the upload on marvin to
take 40.



Which implementations have you tried to use? I'd imagine Wondershaper? Others?




I have tried various setups of qdiscs and classes, using various examples
from all over the web (including the LARTC FAQ/cookbook) but I haven't been
able to get anywhere near my aim. All of the attempts I've made have led to
both uploads taking near enough 40 seconds, as they are both running at 50%
of the available bandwidth. I would like it to give almost all the
bandwidth to slartibartfast for the first 20 seconds, and then all the
bandwidth to marvin for the remaining time.



The problem is likely that you cannot effectively match p2p flows that use the 'edonkey' protocols. (Actually, the latest L7-Filter pattern matches do not yet match eMule's new Kad network, so you'll still need to either disable support for that in mldonkey or deal with latency issues that arise.)




I would really appreciate it if someone could tell me whether:
a) This setup is actually possible!



Absolutely!



b) If using the mangle table chains is correct for this



I believe so.



c) If it is, the easiest/best/fastest way to implement it. Just some hints
for the right direction would be fine!



You might explore my guide[2]. I have a setup quite similar to the one you wish to implement, except on my router does not generate any traffic. (I have mldonkey running on an internal machine instead.)


[2] http://trekweb.com/~jasonb/articles/traffic_shaping/



Many thanks in advance,
Neil Greatorex




_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/



_______________________________________________ LARTC mailing list / LARTC@xxxxxxxxxxxxxxx http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

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