[Cake] [PATCH] q_cake: Update xstats format to use per-tin structure

Toke Høiland-Jørgensen toke at toke.dk
Wed Mar 7 07:59:57 EST 2018


Kevin Darbyshire-Bryant <kevin at darbyshire-bryant.me.uk> writes:

> I don’t the column alignment can be correct because the print lines don’t include a leading space, so columns can run into each other.
>
> fprintf(f, "%12u", tst->unresponse_flows);
> v
> fprintf(f, " %12u", tst->unresponse_flows);
>
> The header lines are probably wrong.  Should be as per
> https://github.com/ldir-EDB0/iproute2-cake-next/commit/172c116722e2902bdc69824271303dac7249f379

Ah, right; ported that change over to the tc-adv repo as well. Which
brings us down to the following diff:

diff --git a/tc/q_cake.c b/tc/q_cake.c
index e21552e8..95301b41 100644
--- a/tc/q_cake.c
+++ b/tc/q_cake.c
@@ -243,12 +243,22 @@ static int cake_parse_opt(struct qdisc_util *qu, int argc, char **argv,
                /* Typical VDSL2 framing schemes, both over PTM */
                /* PTM has 64b/65b coding which absorbs some bandwidth */
                } else if (strcmp(*argv, "pppoe-ptm") == 0) {
+                       /* 2B PPP + 6B PPPoE + 6B dest MAC + 6B src MAC
+                        * + 2B ethertype + 4B Frame Check Sequence
+                        * + 1B Start of Frame (S) + 1B End of Frame (Ck)
+                        * + 2B TC-CRC (PTM-FCS) = 30B
+                        */
                        atm = 2;
-                       overhead += 27;
+                       overhead += 30;
                        overhead_set = true;
                } else if (strcmp(*argv, "bridged-ptm") == 0) {
+                       /* 6B dest MAC + 6B src MAC + 2B ethertype
+                        * + 4B Frame Check Sequence
+                        * + 1B Start of Frame (S) + 1B End of Frame (Ck)
+                        * + 2B TC-CRC (PTM-FCS) = 22B
+                        */
                        atm = 2;
-                       overhead += 19;
+                       overhead += 22;
                        overhead_set = true;
 



I assume 30 and 22 are the correct values? Could someone confirm this? :)

> qdisc cake 8004: root refcnt 4486780 bandwidth 19900Kbit diffserv3 dual-srchost nat rtt 100.0ms ptm overhead 4502152
>  Sent 42615751 bytes 4491092 pkt (dropped 4491108, overlimits 4491124 requeues 4491152)
>  backlog 0b 4491256p requeues 4491272
>  memory used: 78592b of 4Mb
>  capacity estimate: 19900Kbit
>  min/max transport layer size:    4537916 / 4537972
>  min/max overhead-adjusted size:  4538000 / 4537972
>  average transport hdr offset:    4538072
>
> I’m pondering if it’s an endian issue?

Are you using the latest kernel code? Those values were added in an
incompatible manner, so if you don't have userspace and kernel code in
sync they'll be garbage, basically...

-Toke


More information about the Cake mailing list