Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
* [Cake] Announce - possible new feature - DSCP cleaning
@ 2015-11-10 15:00 Kevin Darbyshire-Bryant
  2015-11-16 14:59 ` Kevin Darbyshire-Bryant
  0 siblings, 1 reply; 22+ messages in thread
From: Kevin Darbyshire-Bryant @ 2015-11-10 15:00 UTC (permalink / raw)
  To: cake

[-- Attachment #1: Type: text/plain, Size: 1801 bytes --]

Greetings :-)

A bit of a blast from the past this one, but one Sebastian Moeller of
this list fame wrote a while ago "

Just played a bit with the shiny new squash option. For my limited testing it seems to work. I do wonder whether the automatic default to besteffort is the ideal behavior though. For example on egress it would be nice to be able to use the internal set DSCP markings but clean them from the outgoing packets as not to leak “information” to the ISP, similarly but more contrived the same could be agued for ingress  "

Well Mr Moeller, today is your lucky day because I've just pushed 'squash' branches to both cake & tc-adv that separate the 'DSCP squashing' behaviour from diffserv behaviour.  Specifying 'squash' sets diffserv mode to 'besteffort' (ie 1 tin only) and squashes DSCP as before, however if you specify something like 'diffserv4 squash' then DSCP codings are noted at qdisc enqueue so tins/bandwidths are used as marked, then the DSCP marking is squashed so on dequeue DSCP has been removed.

The active bit of the change is (diff):

        /* extract the Diffserv Precedence field, if it exists */
-       if (q->tin_mode != CAKE_MODE_SQUASH) {
+       if (q->tin_mode != CAKE_MODE_BESTEFFORT) {
                tin = q->tin_index[cake_get_diffserv(skb)];
                if (unlikely(tin >= q->tin_cnt))
                        tin = 0;
        } else {
-               cake_squash_diffserv(skb);
                tin = 0;
        }
 
+       /* now clear DSCP bits if squashing */
+       if (q->squash)
+               cake_squash_diffserv(skb);


https://github.com/dtaht/sch_cake/tree/squash  &  https://github.com/dtaht/tc-adv/tree/squash

Needs testing (I've not managed to break it yet) and *thought before merging*




[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4816 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread
* Re: [Cake] Announce - possible new feature - DSCP cleaning
@ 2015-11-17 19:05 Dave Taht
  2015-11-18 11:17 ` Kevin Darbyshire-Bryant
  0 siblings, 1 reply; 22+ messages in thread
From: Dave Taht @ 2015-11-17 19:05 UTC (permalink / raw)
  To: Kevin Darbyshire-Bryant; +Cc: cake, Jesper Dangaard Brouer

I have had about .01% braincells on cake for 2 months, and only
causually was reading the list. It is my hope that this time - as the
test results are looking quite good - we can at least get an RFC patch
upstream for further review.

A) One big debate I remember going by was about accuracy of various
settings, where one value would be weirdly rounded to another when
read back.

I do not have a problem with a pure 64 bit interface between userspace
and kernelspace, if that will alleviate the problems. The cost of
doing that, now, is trivial.

Try to cast yourself into a future - 20 years ahead - with a 10240
cpus embedded in your head,  when the onboard network-to-brain
interfaces have 8ns latency each, and think upon how someone would
curse us for not having forbearance enough to understand how much
different the brain-cell dscp had to be to get multicast to all the
neurons.... (or something like that. :))

Another way to help spur visualization like that, is think 20 years
past - to 1995 - and where networking stood then.

B) Also, I think, but am not sure, that most parsers of tc -s qdisc
output will break unless the root of the qdisc has 0 indentation and
the rest, at least 2.

C) And I kind of expect netdev to want all those stats in some sysfs
thing rather than tc, but will defer to stephen/jesper - guys, will
this sort of tc output go upstream?

d@snapon:~/git/tc-adv/tc$ ./tc -s qdisc show dev eno1
qdisc cake 8002: root refcnt 2 unlimited diffserv4 flows rtt 100.0ms raw
 Sent 6079713916 bytes 5489146 pkt (dropped 0, overlimits 0 requeues 28656)
 backlog 0b 0p requeues 28656
memory used: 612600b of 15140Kb # not huge on parsing this
capacity estimate: 724522Kbit # not huge on parsing this
             Tin 0       Tin 1       Tin 2       Tin 3
  thresh        0bit        0bit        0bit        0bit
  target       5.0ms       5.0ms       5.0ms       5.0ms
interval     100.0ms     100.0ms     100.0ms     100.0ms
Pk-delay       4.6ms       924us         0us       1.1ms
Av-delay       1.2ms       598us         0us       454us
Sp-delay       312us         0us         0us       179us
  pkts         43938      104843           0      468916
  bytes     63945533   154488126           0   708247426
way-inds           0           2           0         333
way-miss           6         528           0          10
way-cols           0           0           0           0
  drops            0           0           0           0
  marks           17           2           0           0
Sp-flows           0           1           0           0
Bk-flows           1          13           0           1
last-len       28766          66           0       68130
max-len        68130       68130           0       68130






On Tue, Nov 17, 2015 at 7:52 PM, Kevin Darbyshire-Bryant
<kevin@darbyshire-bryant.me.uk> wrote:
>
>
> On 17/11/15 10:12, Dave Taht wrote:
>> we can break anything until it goes upstream. I'm not satisified with
>> the api (or wasn't 2 months back)....
>
> Could you elucidate on what is wrong with the API?  My understanding of
> the present code is that additional options can be transferred between
> kernel space & user space (tc) with 'ease' via the netlink API.  Indeed
> the 'squash' enable/disable option is passed as a new option via this
> API.  Also look at how easy the recently implented rtt, target & memory
> options were to introduce without backward/forward compatibility issues.
>
> Where it falls down is where one passed option is used to control more
> than one thing - that's not an API thing really, it's how we use the
> API. For example and in my opinion, squash should not have been passed
> as a 'diffserv mode' as this limits how combinations of diffserv mode &
> squash may be implemented.  That's precisely why I took the step to
> split out the diffserv mode and squash mode (like for example 'atm'
> compensation or not)  Because 'squash' was previously regarded as a
> diffserv mode it does cause a compatibility issue (it won't blow up, but
> it may not go into quite the mode expected, or the reporting of mode via
> tc may not quite match'
>
> Personally, i'd say break it now while we can and get what I consider a
> better implementation out there.  I'm not the only person out here, on
> this list, I may be wrong.
>
>
>
>
>
>

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

end of thread, other threads:[~2015-11-18 18:56 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-10 15:00 [Cake] Announce - possible new feature - DSCP cleaning Kevin Darbyshire-Bryant
2015-11-16 14:59 ` Kevin Darbyshire-Bryant
2015-11-16 15:03   ` Dave Taht
2015-11-16 15:20     ` Kevin Darbyshire-Bryant
2015-11-16 15:57       ` Dave Taht
2015-11-16 16:25         ` Kevin Darbyshire-Bryant
2015-11-16 17:47         ` Kevin Darbyshire-Bryant
2015-11-16 17:59           ` Dave Taht
2015-11-16 18:11             ` Kevin Darbyshire-Bryant
2015-11-16 18:25               ` Dave Taht
2015-11-16 18:32                 ` Sebastian Moeller
2015-11-16 18:35                   ` Dave Taht
2015-11-16 18:43                     ` Kevin Darbyshire-Bryant
2015-11-16 18:47                       ` Dave Taht
2015-11-16 20:09                         ` Kevin Darbyshire-Bryant
2015-11-17 10:12                           ` Dave Taht
2015-11-17 18:52                             ` Kevin Darbyshire-Bryant
2015-11-16 15:33     ` Sebastian Moeller
2015-11-17 19:05 Dave Taht
2015-11-18 11:17 ` Kevin Darbyshire-Bryant
2015-11-18 11:57   ` Toke Høiland-Jørgensen
2015-11-18 18:56     ` Kevin Darbyshire-Bryant

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox