[Cake] cake separate qos for lan

moeller0 moeller0 at gmx.de
Sun Mar 27 04:20:44 EDT 2016


Hi Allan,

> On Mar 27, 2016, at 09:35 , Jonathan Morton <chromatix99 at gmail.com> wrote:
> 
> 
>> On 27 Mar, 2016, at 08:31, Allan Pinto <allan316 at gmail.com> wrote:
>> 
>> Cache-Server
>>       |
>> internet Gateway ---> L2 switch   --> LInux router with cake - - [ pppoe connection ]  --> customer
> 
> Aha - that is a different topology than we usually assume.  So the egress side of the port is the right one to consider.  It’s nice to see Cake being considered for the provider's side of the link.
> 
> Interesting.
> 
> Cake doesn’t have its own facilities to do the sort of specific discrimination you want.  All the mechanisms it has are geared to sharing a fixed capacity as equitably as is feasible.  So you will need to divide the traffic using some other mechanism, and pass it through two separate instances of Cake.
> 
> Ideally you want one instance set for the capacity of the physical link, with all traffic passing through it, and the second instance set for the allocation for non-cache traffic, with the cache traffic bypassing it.  The customer will then get full link capacity when accessing the cache and nothing else, and latency will still be controlled well with a complex mix of traffic.
> 
> I recommend you use the IMQ mechanism (http://lartc.org/howto/lartc.imq.html) to achieve the ideal configuration above:

	While IMQ seems more complete than IFB, ifb made it into the main-line kernel, so IMQ will be staying out in the cold, so it might be more future-proof to just use IFBs from the get-go; unless you are happy to keep compiling out of tree modules (which you wll have to do anyways for cake, but cake hopefully will be included/offered upstream).

> 
> ip link set imq0 up
> 
> tc qdisc replace dev ppp0 root handle 1: cake pppoe-vcmux bandwidth $FULL_RATE triple-isolate

	I would respectfully recommend to avoid the symbolic overhead parameters and use “overhead NN” instead (with NN being the number in bytes), as the current state of the symbolic parameters is under-documented and inconsistent. 

> 
> tc qdisc replace dev imq0 root handle 2: cake raw bandwidth $NONCACHE_RATE flows
> 
> iptables -t mangle -A PREROUTING -o ppp0 -s $CACHE_IP -j IMQ —todev 0
> 
> That reminds me - we need to update the documentation to properly describe the overhead and triple-isolation keywords.  

	We first need to fix the overhead keywords I believe, having some of them re-set the overhead to a fixed number and some being modifiers that can be reasonably added to other overhead keywords with no distinction of this fact in either the parameter name or documentation is sub-optimal… The current state where one can supply multiple keywords on the commend line with some being additive and some resetting the the overhead to a fixed value is highly surprising. 
	And IMHO just documenting this inconsistency better is not the right solution. I would vote for making all of the additive and document that well; this will allow to do the right thing easily but will also allow for the unforeseeable in the future (and I actually had a patch ages ago that pushed the behaviour further in the “right” direction).

Best Regards
	Sebastian

> You might need a different overhead setting than “pppoe-vcmux” depending on the details of your link.
> 
> - Jonathan Morton
> 
> _______________________________________________
> Cake mailing list
> Cake at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake



More information about the Cake mailing list