Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* Re: [Cake] diffserv3 vs diffserv4
  @ 2020-07-25 17:05  1%   ` David P. Reed
  0 siblings, 0 replies; 34+ results
From: David P. Reed @ 2020-07-25 17:05 UTC (permalink / raw)
  To: Jonathan Morton; +Cc: Justin Kilpatrick, cake

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


+1000%
 
I believe the problem with diffserv arose at conception, because it violated the core idea of IETF's operation:
 
"rough consensus and working code"
 
It was clear very, very early( to everyone but those working on it!) that no working approximate implementation ever existed, nor could it!
 
Had someone proposed a single better-efforts category, whose implementation would be Autonomous System by Autonomous System defined by a scheme roughly equivalent to "Paris Metro Pricing", it would have afforded experience at scale. (In Paris Metro Pricing, there are two knds of cars on each train, First Class and Second Class. If you pay for first class, you get to go into the first class cars. Cars change from second to first class iff the seats in first class are tending to be full. Trains run more often when there are lines waiting for second class cars. The analogy with router decisions is should be clear, except since trains can't run more often, congestion is signaled by drop or marking, which means that second class packets would be dropped or marked unless there were no first class packets.)
 
But instead the designers ignored implementation entirely, and invented "wish-based" classes.
 
This also violated an end-to-end argument - you should only put "in the network" functions that can be completely *implemented* "within the network".
And the TOS/QOS idea isn't meaningful to routers.
 
On Friday, July 24, 2020 11:13pm, "Jonathan Morton" <chromatix99@gmail.com> said:



> > On 24 Jul, 2020, at 6:56 pm, Justin Kilpatrick <justin@althea.net>
> wrote:
> >
> > "sqm-scripts used 3 tiers of priority pretty successfully as does free.fr. -
> de-prioritization seems a good idea, prioritization not so much."
> >
> > This is the best comment on why diffserv3 is the default that I could find on
> bufferbloat.net. I'm interested in hearing about what data (anecdotes welcome)
> lead to this conclusion.
> 
> In Cake, Diffserv4 maps conceptually (but not in detail) to the four priority
> buckets in Wifi - BK, BE, VI, VO. In Diffserv3 the VI bucket is dropped, because
> Cake's flow isolation within BE is already good enough to give decent video
> streaming performance. The BK and VO buckets are still useful to deal with
> certain specific problems; BK is the place to put "swarm" protocols which intend
> to be scavengers but which flow-isolation tends to prioritise, and VO is for
> latency-sensitive protocols which the user wants to specifically protect from
> random traffic fluctuations.
> 
> Thinking more broadly, I believe Diffserv would have been far more successful if
> it had replaced Precedence/TOS with a simple two-bit, four-way set of PHBs:
> 
> 00: High Throughput - equivalent to traditional Best Effort service.
> 
> 01: High Reliability - "Every Packet's Sacred".
> 
> 10: Low Cost - a scavenging service for altruistic applications.
> 
> 11: Low Latency - for the many protocols that are sensitive to delays more than
> throughput.
> 
> It may also have been reasonable to include a couple of extra bits for uses
> internal to an AS, on the understanding that the basic two bits would be preserved
> end-to-end as an indication of application intent.
> 
> Of the above four classes, Diffserv3 provides three - omitting only the High
> Reliability class. But that is a class most useful within a datacentre, where it
> is actually practical to implement a lossless backplane with backpressure signals
> instead of loss.
> 
> What we *actually* have is a six-bit field with ill-defined semantics, that is
> neither preserved nor respected end-to-end, is consequently ignored by most
> applications, and consumes all the space in the former TOS byte that is not
> specifically set aside for ECN (a field which could profitably have been larger). 
> It is a serious problem.
> 
> Implementations of PHBs still tend to think in terms of bandwidth reservation (a
> Bell-head paradigm) and/or strict priority (like the Precedence system which was
> lifted directly from telegraphy practice). Both approaches are inefficient, and
> go along with the misconception that if we can merely categorise traffic on the
> fly into a large enough number of pigeonholes, some magical method of dealing with
> the pigeonholes will make itself obvious. However, both the easy, universal
> method of categorisation and the magical delivery strategy have failed to
> materialise. It rather suggests that they're doing it wrong.
> 
> So that is why Diffserv3 is the default in Cake. It offers explicit "low cost"
> and "low latency" service for suitably marked traffic, and for everything else the
> Best Effort service uses flow and host isolation strategies to maintain good
> behaviour. It usually works well.
> 
> - Jonathan Morton
> 
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
> 

[-- Attachment #2: Type: text/html, Size: 7271 bytes --]

^ permalink raw reply	[relevance 1%]

* Re: [Cake] diffserv3 vs diffserv4
  @ 2020-07-25 17:18  0%     ` Sebastian Moeller
  2020-07-25 17:47  0%       ` Jonathan Morton
  2020-07-25 17:48  1%     ` David P. Reed
  1 sibling, 1 reply; 34+ results
From: Sebastian Moeller @ 2020-07-25 17:18 UTC (permalink / raw)
  To: Kevin Darbyshire-Bryant; +Cc: Cake List

Hi Kevin,


> On Jul 25, 2020, at 12:12, Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> wrote:
> 
> 
> 
>> On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> wrote:
>> 
>> 
>> The move from diffserv4 to diffserv5 WAS about de-prioritization.
> 
> It was also about minimum bandwidth allocations:
> 
> LE: 1/64th

That is 6 binary orders of magnitude, on a slow link, LE is effectively starved and there will be no real forward progress. For real scavenger services this might well be a sane policy, but this requires the very selective with assigning flows to this tin ;)

> BK: 1/16th
> BE: 1/1
> VI: 1/2
> VO: 1/4

So I see 1/64 + 1/16 + 1/1 + 1/2 + 1/4 = 1.828125 which seems excessive for actually guaranteed minimums. I was under the naive? impression the minima should add up to <= 1, no?


> 
> So worst case, best effort should get 11/64ths in the extreme case of all other tins in use.

	This seems only true, if on overload the lowest prioritiers tiers get their allotment first, no?

I am confused... but I am also confused by cake's output:
"

                   Bulk  Best Effort        Voice
  thresh       3062Kbit       49Mbit    12250Kbit"

as far as I can tell, Bulk's 3062Kbit must be the minimum, while BE and Voice give their maxima... That, or I am missing something important...
(I wonder whether it would not be clearer to give both min and max for each tin, then again I probably missing all the deyails of the actual implementation...)

Best Regards
	Sebastian

> 
> Cheers,
> 
> Kevin D-B
> 
> gpg: 012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A
> 
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake


^ permalink raw reply	[relevance 0%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 17:18  0%     ` Sebastian Moeller
@ 2020-07-25 17:47  0%       ` Jonathan Morton
  0 siblings, 0 replies; 34+ results
From: Jonathan Morton @ 2020-07-25 17:47 UTC (permalink / raw)
  To: Sebastian Moeller; +Cc: Kevin Darbyshire-Bryant, Cake List

> On 25 Jul, 2020, at 8:18 pm, Sebastian Moeller <moeller0@gmx.de> wrote:
> 
> I am confused... but I am also confused by cake's output:
> 
>                   Bulk  Best Effort        Voice
>  thresh       3062Kbit       49Mbit    12250Kbit"
> 
> as far as I can tell, Bulk's 3062Kbit must be the minimum, while BE and Voice give their maxima... That, or I am missing something important...
> (I wonder whether it would not be clearer to give both min and max for each tin, then again I probably missing all the deyails of the actual implementation...)

Cake delivers from the highest-priority tin that both has data to send and is "behind" its local schedule, defined by the threshold rate.  If no tin with data to send is behind schedule, then some tin that does have data to send is chosen (so Cake as a whole is work-conserving, modulo its global shaper).  IIRC, it'll be the highest priority such tin.

The notion of which tin is highest priority is a little counter-intuitive.  One tin must be at the global shaper rate, and will be the lowest priority tin - and normally that is the "best effort" tin.  So the BK tin is actually at a higher priority, but only up to its very limited threshold rate.  To avoid starving the best effort tin under all possible combinations of traffic, it is necessary and sufficient to ensure that the sum of all higher-priority tins' threshold rates is less than the global rate.

In the case of Diffserv3, the BK and VO tins both have higher priority than BE and sum to 5/16ths of the global rate. So with all tins saturated, the BE traffic gets 11/16ths which is pretty respectable.  If the BE and VO traffic goes away, BK is then able to use all available bandwidth.

 - Jonathan Morton


^ permalink raw reply	[relevance 0%]

* Re: [Cake] diffserv3 vs diffserv4
    2020-07-25 17:18  0%     ` Sebastian Moeller
@ 2020-07-25 17:48  1%     ` David P. Reed
  2020-07-25 17:54  0%       ` Kevin Darbyshire-Bryant
  1 sibling, 1 reply; 34+ results
From: David P. Reed @ 2020-07-25 17:48 UTC (permalink / raw)
  To: Kevin Darbyshire-Bryant; +Cc: Cake List

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


This idea (dividing the link rate capacity, since "bandwidth" is an incorrect term not to be promulgated), is absurd, but typical of "bellhead" thinking.
 
Per packet latency is the key control variable, even for TCP. That's because capacity/rate is not controllable by routers, but by routing in a general Internet situation.
 
Latency is controlled by queuing delay in a packet network, not bitrate. And in mixed traffic, which after all is why traffic is classified in the first place, by its characteristics and response to increased latency end-to-end, is the core "control" for the internetwork as a whole.
 
So, by promoting thinking about "bandwidth" a whole sequence of misformulations of network management is embedded into the thinking of those designing queue management algorithms.
 
And make no mistake, queue management is the ONLY knob other than sending different packets on different routes that one has for routers.
 
I don't know who proposed this fractional division, but it is clearly a bellhead-influenced thinker who thinks all protocols are CBR flows like in the old phone system.
 
But almost no flows in the internet are CBR flows! File transfers are not, streaming TV is not, web ttraffic is not, game traffic is not. Only non-statistically multiplexed real-time telephony and *some* video conferencing is CBR.
 
Yet this bizarre idea of dividing "bandwidth" among all categories of flows pops up. Probably from employees of phone companies or phone equipment suppliers. Or folks who went to Uni and were trained in "communications" by former phone engineers.
 
Latency, latency, latency. Queue delay, queue delay, queue delay. Not link speed! Change your brains.
 
It's hard fo fight this bellhead crowd (or the bellheadedness in your own thinking) but think about packets and queues instead.
 
My good friend Len Kleinrock didn't invent "Bandwidth Theory"! He invented Queueing Theory. For a reason.
 
On Saturday, July 25, 2020 6:12am, "Kevin Darbyshire-Bryant" <kevin@darbyshire-bryant.me.uk> said:



> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
> 
> 
> > On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant
> <kevin@darbyshire-bryant.me.uk> wrote:
> >
> >
> > The move from diffserv4 to diffserv5 WAS about de-prioritization.
> 
> It was also about minimum bandwidth allocations:
> 
> LE: 1/64th
> BK: 1/16th
> BE: 1/1
> VI: 1/2
> VO: 1/4
> 
> So worst case, best effort should get 11/64ths in the extreme case of all other
> tins in use.
> 
> Cheers,
> 
> Kevin D-B
> 
> gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> 
> 

[-- Attachment #2: Type: text/html, Size: 5438 bytes --]

^ permalink raw reply	[relevance 1%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 17:48  1%     ` David P. Reed
@ 2020-07-25 17:54  0%       ` Kevin Darbyshire-Bryant
  2020-07-25 19:35  1%         ` David P. Reed
  0 siblings, 1 reply; 34+ results
From: Kevin Darbyshire-Bryant @ 2020-07-25 17:54 UTC (permalink / raw)
  To: David P. Reed; +Cc: Cake List

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

I didn’t sign up for this abuse.  Bellhead eh?  Well f**k off!

I’ve had enough - bye.

> On 25 Jul 2020, at 18:48, David P. Reed <dpreed@deepplum.com> wrote:
> 
> This idea (dividing the link rate capacity, since "bandwidth" is an incorrect term not to be promulgated), is absurd, but typical of "bellhead" thinking.
> 
> Per packet latency is the key control variable, even for TCP. That's because capacity/rate is not controllable by routers, but by routing in a general Internet situation.
> 
> Latency is controlled by queuing delay in a packet network, not bitrate. And in mixed traffic, which after all is why traffic is classified in the first place, by its characteristics and response to increased latency end-to-end, is the core "control" for the internetwork as a whole.
> 
> So, by promoting thinking about "bandwidth" a whole sequence of misformulations of network management is embedded into the thinking of those designing queue management algorithms.
> 
> And make no mistake, queue management is the ONLY knob other than sending different packets on different routes that one has for routers.
> 
> I don't know who proposed this fractional division, but it is clearly a bellhead-influenced thinker who thinks all protocols are CBR flows like in the old phone system.
> 
> But almost no flows in the internet are CBR flows! File transfers are not, streaming TV is not, web ttraffic is not, game traffic is not. Only non-statistically multiplexed real-time telephony and *some* video conferencing is CBR.
> 
> Yet this bizarre idea of dividing "bandwidth" among all categories of flows pops up. Probably from employees of phone companies or phone equipment suppliers. Or folks who went to Uni and were trained in "communications" by former phone engineers.
> 
> Latency, latency, latency. Queue delay, queue delay, queue delay. Not link speed! Change your brains.
> 
> It's hard fo fight this bellhead crowd (or the bellheadedness in your own thinking) but think about packets and queues instead.
> 
> My good friend Len Kleinrock didn't invent "Bandwidth Theory"! He invented Queueing Theory. For a reason.
> 
> On Saturday, July 25, 2020 6:12am, "Kevin Darbyshire-Bryant" <kevin@darbyshire-bryant.me.uk> said:
> 
> > _______________________________________________
> > Cake mailing list
> > Cake@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/cake
> >
> >
> > > On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant
> > <kevin@darbyshire-bryant.me.uk> wrote:
> > >
> > >
> > > The move from diffserv4 to diffserv5 WAS about de-prioritization.
> >
> > It was also about minimum bandwidth allocations:
> >
> > LE: 1/64th
> > BK: 1/16th
> > BE: 1/1
> > VI: 1/2
> > VO: 1/4
> >
> > So worst case, best effort should get 11/64ths in the extreme case of all other
> > tins in use.
> >
> > Cheers,
> >
> > Kevin D-B
> >
> > gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> >
> >


Cheers,

Kevin D-B

gpg: 012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A


[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 17:54  0%       ` Kevin Darbyshire-Bryant
@ 2020-07-25 19:35  1%         ` David P. Reed
  2020-07-25 20:04  0%           ` Sebastian Moeller
  2020-07-25 21:27  0%           ` Jonathan Morton
  0 siblings, 2 replies; 34+ results
From: David P. Reed @ 2020-07-25 19:35 UTC (permalink / raw)
  To: Kevin Darbyshire-Bryant; +Cc: Cake List

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


I want to apologize for any implication that you, Mr. Darbyshire-Bryant, were a "bellhead". AFAIK, you were quoting a staement from the designers of diffserv4, who apparently still believe in bandwidth division as a metric.
 
But I understand it might be painful to hear my critique of the diffserv design process.
 
Just be aware that it's my problem, not yours. I don't mean to offend you. I do, however, feel like the folks who did "design" diffserv (and continue to promote it) completely miss the whole point of why the Internet is architected the way it is. And since they haven't managed to respond to a clue-by-4 yet, I'm tired of just pointing out that the idea doesn't actually achieve any benefits, because no one (literally no one) has evern done a consistent assignment of end-to-end meaning to the various diffserv labels after decades of failed testing.
 
Since this is a group discussion, and not just a response to you, my comment was aimed at the general group (which is not dedicated to bellhead thinking, thank goodness).
 
And to be clear, AQM (cake, being an example) is not about bandwidth allocation. It does focus on latency/queueing-delay, for the most part.
 
Hence my concern that diffserv's fundamental misunderstanding of the responsibility of router queue management might contaminate a very, very important project.
 
 
On Saturday, July 25, 2020 1:54pm, "Kevin Darbyshire-Bryant" <kevin@darbyshire-bryant.me.uk> said:



> I didn’t sign up for this abuse. Bellhead eh? Well f**k off!
> 
> I’ve had enough - bye.
> 
> > On 25 Jul 2020, at 18:48, David P. Reed <dpreed@deepplum.com> wrote:
> >
> > This idea (dividing the link rate capacity, since "bandwidth" is an incorrect
> term not to be promulgated), is absurd, but typical of "bellhead" thinking.
> >
> > Per packet latency is the key control variable, even for TCP. That's because
> capacity/rate is not controllable by routers, but by routing in a general Internet
> situation.
> >
> > Latency is controlled by queuing delay in a packet network, not bitrate. And
> in mixed traffic, which after all is why traffic is classified in the first place,
> by its characteristics and response to increased latency end-to-end, is the core
> "control" for the internetwork as a whole.
> >
> > So, by promoting thinking about "bandwidth" a whole sequence of
> misformulations of network management is embedded into the thinking of those
> designing queue management algorithms.
> >
> > And make no mistake, queue management is the ONLY knob other than sending
> different packets on different routes that one has for routers.
> >
> > I don't know who proposed this fractional division, but it is clearly a
> bellhead-influenced thinker who thinks all protocols are CBR flows like in the old
> phone system.
> >
> > But almost no flows in the internet are CBR flows! File transfers are not,
> streaming TV is not, web ttraffic is not, game traffic is not. Only
> non-statistically multiplexed real-time telephony and *some* video conferencing is
> CBR.
> >
> > Yet this bizarre idea of dividing "bandwidth" among all categories of flows
> pops up. Probably from employees of phone companies or phone equipment suppliers.
> Or folks who went to Uni and were trained in "communications" by former phone
> engineers.
> >
> > Latency, latency, latency. Queue delay, queue delay, queue delay. Not link
> speed! Change your brains.
> >
> > It's hard fo fight this bellhead crowd (or the bellheadedness in your own
> thinking) but think about packets and queues instead.
> >
> > My good friend Len Kleinrock didn't invent "Bandwidth Theory"! He invented
> Queueing Theory. For a reason.
> >
> > On Saturday, July 25, 2020 6:12am, "Kevin Darbyshire-Bryant"
> <kevin@darbyshire-bryant.me.uk> said:
> >
> > > _______________________________________________
> > > Cake mailing list
> > > Cake@lists.bufferbloat.net
> > > https://lists.bufferbloat.net/listinfo/cake
> > >
> > >
> > > > On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant
> > > <kevin@darbyshire-bryant.me.uk> wrote:
> > > >
> > > >
> > > > The move from diffserv4 to diffserv5 WAS about de-prioritization.
> > >
> > > It was also about minimum bandwidth allocations:
> > >
> > > LE: 1/64th
> > > BK: 1/16th
> > > BE: 1/1
> > > VI: 1/2
> > > VO: 1/4
> > >
> > > So worst case, best effort should get 11/64ths in the extreme case of
> all other
> > > tins in use.
> > >
> > > Cheers,
> > >
> > > Kevin D-B
> > >
> > > gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> > >
> > >
> 
> 
> Cheers,
> 
> Kevin D-B
> 
> gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> 
> 

[-- Attachment #2: Type: text/html, Size: 7236 bytes --]

^ permalink raw reply	[relevance 1%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 19:35  1%         ` David P. Reed
@ 2020-07-25 20:04  0%           ` Sebastian Moeller
  2020-07-25 21:33  0%             ` Kevin Darbyshire-Bryant
  2020-07-25 21:27  0%           ` Jonathan Morton
  1 sibling, 1 reply; 34+ results
From: Sebastian Moeller @ 2020-07-25 20:04 UTC (permalink / raw)
  To: David P. Reed; +Cc: Kevin Darbyshire-Bryant, Cake List

Hi David,

I believe that folks here, certainly Kevin, have accepted the domain specificity of diffserv and we are mainly discussion, how many tiers of differential latency tolerance we desire ;). It goes without saying that this is all within the "home domain", and the goal is how little/few priority games we need to play for decent performance under load. Sure, end2end signaling would be desirable, but as you point out does not exist in diffserve today and is also not very likely to appear anytime soon, but in one's home it is still relatively easy to identify a few special cases, like bit-torrent (don't get in the way of "real" traffic) or VoIP (quite latency and especially jitter averse, but also typically of modest rate) that could/should be taken care of. 
	As far as I can tell that is all the cake/sqm's diffserve modes try to accomplish. DSCPs are simply used, as there exists machinery for routers/end-hosts OS to selectively set/re-set them and all IP packets will carry them. 
	Regarding the Bell-haededness, sure I might qualify for that moniker/abuse*, but the relevant factor, IMHO, is not so much the exact rate cut-offs of the different priority tiers, but the simple realization that low latency via prioritization requires relatively low rates, otherwise "priority" traffic will self congest, so these thresholds serve to establish a "cost" for using each priority tier. 

Best Regards
	Sebastian

*) By virtue of intellectual laziness, it is simply often easier for me to think in rate shares than the alternatives. But hey, I do this as a hobby, so I cut myself a lot of slack here ;) But I take no offense in being labeled that.


> On Jul 25, 2020, at 21:35, David P. Reed <dpreed@deepplum.com> wrote:
> 
> I want to apologize for any implication that you, Mr. Darbyshire-Bryant, were a "bellhead". AFAIK, you were quoting a staement from the designers of diffserv4, who apparently still believe in bandwidth division as a metric.
>  
> But I understand it might be painful to hear my critique of the diffserv design process.
>  
> Just be aware that it's my problem, not yours. I don't mean to offend you. I do, however, feel like the folks who did "design" diffserv (and continue to promote it) completely miss the whole point of why the Internet is architected the way it is. And since they haven't managed to respond to a clue-by-4 yet, I'm tired of just pointing out that the idea doesn't actually achieve any benefits, because no one (literally no one) has evern done a consistent assignment of end-to-end meaning to the various diffserv labels after decades of failed testing.
>  
> Since this is a group discussion, and not just a response to you, my comment was aimed at the general group (which is not dedicated to bellhead thinking, thank goodness).
>  
> And to be clear, AQM (cake, being an example) is not about bandwidth allocation. It does focus on latency/queueing-delay, for the most part.
>  
> Hence my concern that diffserv's fundamental misunderstanding of the responsibility of router queue management might contaminate a very, very important project.
>  
>  
> On Saturday, July 25, 2020 1:54pm, "Kevin Darbyshire-Bryant" <kevin@darbyshire-bryant.me.uk> said:
> 
> > I didn’t sign up for this abuse. Bellhead eh? Well f**k off!
> > 
> > I’ve had enough - bye.
> > 
> > > On 25 Jul 2020, at 18:48, David P. Reed <dpreed@deepplum.com> wrote:
> > >
> > > This idea (dividing the link rate capacity, since "bandwidth" is an incorrect
> > term not to be promulgated), is absurd, but typical of "bellhead" thinking.
> > >
> > > Per packet latency is the key control variable, even for TCP. That's because
> > capacity/rate is not controllable by routers, but by routing in a general Internet
> > situation.
> > >
> > > Latency is controlled by queuing delay in a packet network, not bitrate. And
> > in mixed traffic, which after all is why traffic is classified in the first place,
> > by its characteristics and response to increased latency end-to-end, is the core
> > "control" for the internetwork as a whole.
> > >
> > > So, by promoting thinking about "bandwidth" a whole sequence of
> > misformulations of network management is embedded into the thinking of those
> > designing queue management algorithms.
> > >
> > > And make no mistake, queue management is the ONLY knob other than sending
> > different packets on different routes that one has for routers.
> > >
> > > I don't know who proposed this fractional division, but it is clearly a
> > bellhead-influenced thinker who thinks all protocols are CBR flows like in the old
> > phone system.
> > >
> > > But almost no flows in the internet are CBR flows! File transfers are not,
> > streaming TV is not, web ttraffic is not, game traffic is not. Only
> > non-statistically multiplexed real-time telephony and *some* video conferencing is
> > CBR.
> > >
> > > Yet this bizarre idea of dividing "bandwidth" among all categories of flows
> > pops up. Probably from employees of phone companies or phone equipment suppliers.
> > Or folks who went to Uni and were trained in "communications" by former phone
> > engineers.
> > >
> > > Latency, latency, latency. Queue delay, queue delay, queue delay. Not link
> > speed! Change your brains.
> > >
> > > It's hard fo fight this bellhead crowd (or the bellheadedness in your own
> > thinking) but think about packets and queues instead.
> > >
> > > My good friend Len Kleinrock didn't invent "Bandwidth Theory"! He invented
> > Queueing Theory. For a reason.
> > >
> > > On Saturday, July 25, 2020 6:12am, "Kevin Darbyshire-Bryant"
> > <kevin@darbyshire-bryant.me.uk> said:
> > >
> > > > _______________________________________________
> > > > Cake mailing list
> > > > Cake@lists.bufferbloat.net
> > > > https://lists.bufferbloat.net/listinfo/cake
> > > >
> > > >
> > > > > On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant
> > > > <kevin@darbyshire-bryant.me.uk> wrote:
> > > > >
> > > > >
> > > > > The move from diffserv4 to diffserv5 WAS about de-prioritization.
> > > >
> > > > It was also about minimum bandwidth allocations:
> > > >
> > > > LE: 1/64th
> > > > BK: 1/16th
> > > > BE: 1/1
> > > > VI: 1/2
> > > > VO: 1/4
> > > >
> > > > So worst case, best effort should get 11/64ths in the extreme case of
> > all other
> > > > tins in use.
> > > >
> > > > Cheers,
> > > >
> > > > Kevin D-B
> > > >
> > > > gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> > > >
> > > >
> > 
> > 
> > Cheers,
> > 
> > Kevin D-B
> > 
> > gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
> > 
> >
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake


^ permalink raw reply	[relevance 0%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 19:35  1%         ` David P. Reed
  2020-07-25 20:04  0%           ` Sebastian Moeller
@ 2020-07-25 21:27  0%           ` Jonathan Morton
  1 sibling, 0 replies; 34+ results
From: Jonathan Morton @ 2020-07-25 21:27 UTC (permalink / raw)
  To: David P. Reed; +Cc: Kevin Darbyshire-Bryant, Cake List

> On 25 Jul, 2020, at 10:35 pm, David P. Reed <dpreed@deepplum.com> wrote:
> 
> And to be clear, AQM (cake, being an example) is not about bandwidth allocation. It does focus on latency/queueing-delay, for the most part.

Cake is not *just* an AQM, though I understand your point.  It is a qdisc with many interwoven functions.

Cake's Diffserv support is neither a pure priority scheme nor a pure bandwidth allocation.  By using a hybrid of the two for bandwidth allocation, I was hoping to avoid the main pitfalls that the simple Bell-headed approaches routinely encounter.  Each tin also has its own AQM parameters, which feed into the distinction between high-throughput and low-latency classes of traffic.

There are doubtless other approaches that could be tried, of course.  And there might be endless debate over exactly how many traffic classes are actually needed; I don't think five is the right number, and the symmetry argument is not persuasive.  But can we at least agree that Cake's attempt is a step in the right direction?

 - Jonathan Morton


^ permalink raw reply	[relevance 0%]

* Re: [Cake] diffserv3 vs diffserv4
  2020-07-25 20:04  0%           ` Sebastian Moeller
@ 2020-07-25 21:33  0%             ` Kevin Darbyshire-Bryant
  0 siblings, 0 replies; 34+ results
From: Kevin Darbyshire-Bryant @ 2020-07-25 21:33 UTC (permalink / raw)
  To: Sebastian Moeller, David P. Reed; +Cc: Cake List

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

Apologies.  I think this is a cultural divide and misunderstanding, certainly on my part.  Bellhead is uncomfortably close to bellend and in the context of ‘absurd’ I’m afraid I rather took your bellhead to be rather closer to my interpretation of bellend.  In essence I thought you were saying I was a bit of a cock, which I probably am but for reasons other than the ones mentioned.

Possibly getting back to subject.  CAKE is probably the fairest thing I know and worships the god of (low) latency.  When I first heard of cake many years ago, the promise of ‘full link’ and ‘low latency’ I couldn’t believe it.  I’ve subsequently learned it’s all about queues, effective queue management and picking the right packet at the right time to fill the right tx slot.  It’s all about latency.  It’s all about shooting/marking the right packets to signal correctly and keep latency of each flow under control.  I understand the phrase “It’s the latency, stupid”.

Cake is so fair across flows that cake offers deliberate unfairness features, things that bias that fairness, some obvious, some not.  The obvious one is using packet categorisation to choose priority levels.  Instead of the default ‘every packet is equal’ of besteffort, a choice of categorisation are available from ‘diffserv3’ (a 3 tier system) to ‘diffserv8’ (an 8 tier system) all designed to introduce an unfairness, ‘least important’ to ‘most important’.  The categories or tins in cake parlance also have bandwidth thresholds, representing minimum capacities for that tin in the presence of traffic in competing tins.

A less obvious but deliberate unfairness mechanism in cake is ‘host fairness’.  This counts the number of flows to/from each host and divides the bandwidth amongst the flows such that each host gets an even share. e.g. 1 host with 9 flows vs 1 host with 1 flow will end up with the 9 flow host getting 50% of bandwidth across those 9 flows whilst the 1 flow host will get 50% of bandwidth across 1 flow.  This prevents gaming of bandwidth allocation simply by starting more flows.

Going all the way back to the start of this thread which spoke about ‘more important to de-prioritise’ my domestic use case/problem is to support ‘bittorrent’ but at a lower importance than bulk (my backups) at a lower importance than best effort (browsing) at a lower importance than latency/jitter sensitive video at a lower importance than voip.  That’s 5 categories (LE, BK, BE, VI, VO), but it could easily be 4 (LE, BK, BE, VO) with ‘video’ lumped in with Best Effort as is done with diffserv3.

Cake’s tin bandwidth thresholds say ‘you’re allowed to have at least this much’ and in my diffserv5 implementation it’s 1/64th of configured bandwidth simply ‘cos it can’t really be zero.  In the absence of other traffic, Least Effort under CAKE will happily consume ALL the bandwidth, great, nothing more important..bittorrent you go right ahead.  But as soon as something more important comes along, well, that takes (within limits) priority.  I think this is called ’soft admission’ but not totally sure.

I apologies if I have incorrectly used bandwidth/capacity/rate/whatever but hopefully everyone will understand what I’m trying to say.

Kevin

> On 25 Jul 2020, at 21:04, Sebastian Moeller <moeller0@gmx.de> wrote:
> 
> Hi David,
> 
> I believe that folks here, certainly Kevin, have accepted the domain specificity of diffserv and we are mainly discussion, how many tiers of differential latency tolerance we desire ;). It goes without saying that this is all within the "home domain", and the goal is how little/few priority games we need to play for decent performance under load. Sure, end2end signaling would be desirable, but as you point out does not exist in diffserve today and is also not very likely to appear anytime soon, but in one's home it is still relatively easy to identify a few special cases, like bit-torrent (don't get in the way of "real" traffic) or VoIP (quite latency and especially jitter averse, but also typically of modest rate) that could/should be taken care of.
> 	As far as I can tell that is all the cake/sqm's diffserve modes try to accomplish. DSCPs are simply used, as there exists machinery for routers/end-hosts OS to selectively set/re-set them and all IP packets will carry them.
> 	Regarding the Bell-haededness, sure I might qualify for that moniker/abuse*, but the relevant factor, IMHO, is not so much the exact rate cut-offs of the different priority tiers, but the simple realization that low latency via prioritization requires relatively low rates, otherwise "priority" traffic will self congest, so these thresholds serve to establish a "cost" for using each priority tier.
> 
> Best Regards
> 	Sebastian
> 
> *) By virtue of intellectual laziness, it is simply often easier for me to think in rate shares than the alternatives. But hey, I do this as a hobby, so I cut myself a lot of slack here ;) But I take no offense in being labeled that.
> 
> 
>> On Jul 25, 2020, at 21:35, David P. Reed <dpreed@deepplum.com> wrote:
>> 
>> I want to apologize for any implication that you, Mr. Darbyshire-Bryant, were a "bellhead". AFAIK, you were quoting a staement from the designers of diffserv4, who apparently still believe in bandwidth division as a metric.
>> 
>> But I understand it might be painful to hear my critique of the diffserv design process.
>> 
>> Just be aware that it's my problem, not yours. I don't mean to offend you. I do, however, feel like the folks who did "design" diffserv (and continue to promote it) completely miss the whole point of why the Internet is architected the way it is. And since they haven't managed to respond to a clue-by-4 yet, I'm tired of just pointing out that the idea doesn't actually achieve any benefits, because no one (literally no one) has evern done a consistent assignment of end-to-end meaning to the various diffserv labels after decades of failed testing.
>> 
>> Since this is a group discussion, and not just a response to you, my comment was aimed at the general group (which is not dedicated to bellhead thinking, thank goodness).
>> 
>> And to be clear, AQM (cake, being an example) is not about bandwidth allocation. It does focus on latency/queueing-delay, for the most part.
>> 
>> Hence my concern that diffserv's fundamental misunderstanding of the responsibility of router queue management might contaminate a very, very important project.
>> 
>> 
>> On Saturday, July 25, 2020 1:54pm, "Kevin Darbyshire-Bryant" <kevin@darbyshire-bryant.me.uk> said:
>> 
>>> I didn’t sign up for this abuse. Bellhead eh? Well f**k off!
>>> 
>>> I’ve had enough - bye.
>>> 
>>>> On 25 Jul 2020, at 18:48, David P. Reed <dpreed@deepplum.com> wrote:
>>>> 
>>>> This idea (dividing the link rate capacity, since "bandwidth" is an incorrect
>>> term not to be promulgated), is absurd, but typical of "bellhead" thinking.
>>>> 
>>>> Per packet latency is the key control variable, even for TCP. That's because
>>> capacity/rate is not controllable by routers, but by routing in a general Internet
>>> situation.
>>>> 
>>>> Latency is controlled by queuing delay in a packet network, not bitrate. And
>>> in mixed traffic, which after all is why traffic is classified in the first place,
>>> by its characteristics and response to increased latency end-to-end, is the core
>>> "control" for the internetwork as a whole.
>>>> 
>>>> So, by promoting thinking about "bandwidth" a whole sequence of
>>> misformulations of network management is embedded into the thinking of those
>>> designing queue management algorithms.
>>>> 
>>>> And make no mistake, queue management is the ONLY knob other than sending
>>> different packets on different routes that one has for routers.
>>>> 
>>>> I don't know who proposed this fractional division, but it is clearly a
>>> bellhead-influenced thinker who thinks all protocols are CBR flows like in the old
>>> phone system.
>>>> 
>>>> But almost no flows in the internet are CBR flows! File transfers are not,
>>> streaming TV is not, web ttraffic is not, game traffic is not. Only
>>> non-statistically multiplexed real-time telephony and *some* video conferencing is
>>> CBR.
>>>> 
>>>> Yet this bizarre idea of dividing "bandwidth" among all categories of flows
>>> pops up. Probably from employees of phone companies or phone equipment suppliers.
>>> Or folks who went to Uni and were trained in "communications" by former phone
>>> engineers.
>>>> 
>>>> Latency, latency, latency. Queue delay, queue delay, queue delay. Not link
>>> speed! Change your brains.
>>>> 
>>>> It's hard fo fight this bellhead crowd (or the bellheadedness in your own
>>> thinking) but think about packets and queues instead.
>>>> 
>>>> My good friend Len Kleinrock didn't invent "Bandwidth Theory"! He invented
>>> Queueing Theory. For a reason.
>>>> 
>>>> On Saturday, July 25, 2020 6:12am, "Kevin Darbyshire-Bryant"
>>> <kevin@darbyshire-bryant.me.uk> said:
>>>> 
>>>>> _______________________________________________
>>>>> Cake mailing list
>>>>> Cake@lists.bufferbloat.net
>>>>> https://lists.bufferbloat.net/listinfo/cake
>>>>> 
>>>>> 
>>>>>> On 24 Jul 2020, at 18:42, Kevin Darbyshire-Bryant
>>>>> <kevin@darbyshire-bryant.me.uk> wrote:
>>>>>> 
>>>>>> 
>>>>>> The move from diffserv4 to diffserv5 WAS about de-prioritization.
>>>>> 
>>>>> It was also about minimum bandwidth allocations:
>>>>> 
>>>>> LE: 1/64th
>>>>> BK: 1/16th
>>>>> BE: 1/1
>>>>> VI: 1/2
>>>>> VO: 1/4
>>>>> 
>>>>> So worst case, best effort should get 11/64ths in the extreme case of
>>> all other
>>>>> tins in use.
>>>>> 
>>>>> Cheers,
>>>>> 
>>>>> Kevin D-B
>>>>> 
>>>>> gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
>>>>> 
>>>>> 
>>> 
>>> 
>>> Cheers,
>>> 
>>> Kevin D-B
>>> 
>>> gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A
>>> 
>>> 
>> _______________________________________________
>> Cake mailing list
>> Cake@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/cake
> 


Cheers,

Kevin D-B

gpg: 012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A


[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: [Cake] Cake, low speed ADSL & fwmark
  @ 2020-07-27 22:46  0% ` Jonathan Morton
  2020-07-28 16:51  0%   ` Jim Geo
  2020-07-28 14:52  1% ` Y
  1 sibling, 1 reply; 34+ results
From: Jonathan Morton @ 2020-07-27 22:46 UTC (permalink / raw)
  To: Jim Geo; +Cc: cake

> On 28 Jul, 2020, at 12:41 am, Jim Geo <dim.geo@gmail.com> wrote:
> 
> Thank you for all the efforts you have done to make internet usable.
> 
> I currently use htb & fq_codel in my low speed ADSL 6Mbps downlink/1 Mbps uplink. I use fwmark to control both uplink and downlink with good results in terms of bandwidth allocation. Streaming video is chopping bulk traffic successfully.
> 
> Is setting up cake worth the effort at such low speeds? Would it reduce latency?

Cake has a better-quality shaper than HTB does, and a more sophisticated flow-isolation scheme than fq_codel does.  These tend to matter more at low speeds, not less.  It's also generally easier to set up than a compound qdisc scheme.

> Regarding fwmark can you please elaborate more on the calculations performed? Man page is not that helpful.
> 
> My understanding is this:
> 
> I use 1,2,3,4 as marks of traffic.
> If I set the mask to 0xffffff[..] the marks will remain unchanged. Then right shifting will occur for the unset bits, so they will land on tins
> 1,1,3,1
> 
> Can you please correct me? If logical and performed between mask and mark value?

Since there's only a few "tins" at a time used in Cake, and the fwmark is a direct mapping into those tins, a narrow mask is probably safer to use than a wide one.  The reason for the mask is so you can encode several values into different parts of the mark value.  The shift is simply to move the field covered by the mask to the low end of the word, so that it is useful to Cake.

For your use case, a mask of 0xF will be completely sufficient.  It would allow you to specify mark values of 1-15, to map directly in the first 15 tins used by Cake, or a mark value of 0 to fall back to Cake's default Diffserv handling.  None of Cake's tin setups use more than 8 tins, and most use fewer.

 - Jonathan Morton


^ permalink raw reply	[relevance 0%]

* Re: [Cake] Cake, low speed ADSL & fwmark
    2020-07-27 22:46  0% ` Jonathan Morton
@ 2020-07-28 14:52  1% ` Y
  1 sibling, 0 replies; 34+ results
From: Y @ 2020-07-28 14:52 UTC (permalink / raw)
  To: cake

Hi,all

My situation is/was similer.
I prefer to use cake because it costs lower cpu time than htb + fq_codel.

tc qdisc add root dev eth0 cake bandwidth 810kbit pppoa-vcmux diffserv4 
ack-filter-aggressive dual-srchost

pi@raspberrypi:~ $ tc -s qdisc show dev eth0
qdisc cake 8023: root refcnt 2 bandwidth 810Kbit diffserv4 dual-srchost 
nonat nowash ack-filter-aggressive split-gso rtt 100.0ms atm overhead 10
  Sent 18265833249 bytes 23590044 pkt (dropped 7172987, overlimits 
53950415 requeues 11)
  backlog 1444b 1p requeues 11
  memory used: 130147b of 4Mb
  capacity estimate: 810Kbit
  min/max network layer size:           30 /    1478
  min/max overhead-adjusted size:       53 /    1643
  average network hdr offset:           14

                    Bulk  Best Effort        Video        Voice
   thresh       50624bit      810Kbit      405Kbit    202496bit
   target        356.5ms       22.3ms       44.6ms       89.1ms
   interval      713.0ms      117.3ms      139.6ms      184.1ms
   pk_delay       62.6ms      132.6ms       13.8ms       86.4ms
   av_delay        9.0ms       42.3ms        7.2ms       14.8ms
   sp_delay        1.3ms        5.5ms        981us        3.6ms
   backlog            0b        1444b           0b           0b
   pkts              369     30744151         8116        10396
   bytes           19926  23924477414       438264      5958198
   way_inds            0      6553855            4            1
   way_miss          250      1048934         4749          205
   way_cols            0            0            0            0
   drops               0      4430387            0            0
   marks               0         7611            0            0
   ack_drop            0      2742600            0            0
   sp_flows            1            4            1            1
   bk_flows            0            2            0            0
   un_flows            0            0            0            0
   max_len            54         2984           54          590
   quantum           300          300          300          300



On 28/07/2020 06:41, Jim Geo wrote:
> Hello,
> 
> Thank you for all the efforts you have done to make internet usable.
> 
> I currently use htb & fq_codel in my low speed ADSL 6Mbps downlink/1 
> Mbps uplink. I use fwmark to control both uplink and downlink with good 
> results in terms of bandwidth allocation. Streaming video is chopping 
> bulk traffic successfully.
> 
> Is setting up cake worth the effort at such low speeds? Would it reduce 
> latency?
> 
> Regarding fwmark can you please elaborate more on the calculations 
> performed? Man page is not that helpful.
> 
> My understanding is this:
> 
> I use 1,2,3,4 as marks of traffic.
> If I set the mask to 0xffffff[..] the marks will remain unchanged. Then 
> right shifting will occur for the unset bits, so they will land on tins
> 1,1,3,1
> 
> Can you please correct me? If logical and performed between mask and 
> mark value?
> 
> Thanks,
> Jim
> 
> 
> 
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
> 

^ permalink raw reply	[relevance 1%]

* Re: [Cake] Cake, low speed ADSL & fwmark
  2020-07-27 22:46  0% ` Jonathan Morton
@ 2020-07-28 16:51  0%   ` Jim Geo
  2020-07-28 16:54  0%     ` Jonathan Morton
  2020-07-28 16:56  0%     ` Toke Høiland-Jørgensen
  0 siblings, 2 replies; 34+ results
From: Jim Geo @ 2020-07-28 16:51 UTC (permalink / raw)
  To: Jonathan Morton; +Cc: cake

>
> > On 28 Jul, 2020, at 12:41 am, Jim Geo <dim.geo@gmail.com> wrote:
> >
> > Thank you for all the efforts you have done to make internet usable.
> >
> > I currently use htb & fq_codel in my low speed ADSL 6Mbps downlink/1 Mbps uplink. I use fwmark to control both uplink and downlink with good results in terms of bandwidth allocation. Streaming video is chopping bulk traffic successfully.
> >
> > Is setting up cake worth the effort at such low speeds? Would it reduce latency?
>
> Cake has a better-quality shaper than HTB does, and a more sophisticated flow-isolation scheme than fq_codel does.  These tend to matter more at low speeds, not less.  It's also generally easier to set up than a compound qdisc scheme.
>
> > Regarding fwmark can you please elaborate more on the calculations performed? Man page is not that helpful.
> >
> > My understanding is this:
> >
> > I use 1,2,3,4 as marks of traffic.
> > If I set the mask to 0xffffff[..] the marks will remain unchanged. Then right shifting will occur for the unset bits, so they will land on tins
> > 1,1,3,1
> >
> > Can you please correct me? If logical and performed between mask and mark value?
>
> Since there's only a few "tins" at a time used in Cake, and the fwmark is a direct mapping into those tins, a narrow mask is probably safer to use than a wide one.  The reason for the mask is so you can encode several values into different parts of the mark value.  The shift is simply to move the field covered by the mask to the low end of the word, so that it is useful to Cake.
>
> For your use case, a mask of 0xF will be completely sufficient.  It would allow you to specify mark values of 1-15, to map directly in the first 15 tins used by Cake, or a mark value of 0 to fall back to Cake's default Diffserv handling.  None of Cake's tin setups use more than 8 tins, and most use fewer.
>
>  - Jonathan Morton
>

Thanks for the info! I've noticed that by using 0xF, marks 1-4 become
tins 0-3. Tin 0 is special? I assumed it's for bulk traffic. I use
diffserv8.

^ permalink raw reply	[relevance 0%]

* Re: [Cake] Cake, low speed ADSL & fwmark
  2020-07-28 16:51  0%   ` Jim Geo
@ 2020-07-28 16:54  0%     ` Jonathan Morton
  2020-07-28 16:56  0%     ` Toke Høiland-Jørgensen
  1 sibling, 0 replies; 34+ results
From: Jonathan Morton @ 2020-07-28 16:54 UTC (permalink / raw)
  To: Jim Geo; +Cc: cake

> On 28 Jul, 2020, at 7:51 pm, Jim Geo <dim.geo@gmail.com> wrote:
> 
> Thanks for the info! I've noticed that by using 0xF, marks 1-4 become
> tins 0-3. Tin 0 is special? I assumed it's for bulk traffic. I use
> diffserv8.

Mark 0 (not tin 0) is special because it corresponds to "no mark set".  Otherwise, what you see is what you get, and mark N goes into tin N-1.

 - Jonathan Morton

^ permalink raw reply	[relevance 0%]

* Re: [Cake] Cake, low speed ADSL & fwmark
  2020-07-28 16:51  0%   ` Jim Geo
  2020-07-28 16:54  0%     ` Jonathan Morton
@ 2020-07-28 16:56  0%     ` Toke Høiland-Jørgensen
  1 sibling, 0 replies; 34+ results
From: Toke Høiland-Jørgensen @ 2020-07-28 16:56 UTC (permalink / raw)
  To: Jim Geo, Jonathan Morton; +Cc: cake

Jim Geo <dim.geo@gmail.com> writes:

>>
>> > On 28 Jul, 2020, at 12:41 am, Jim Geo <dim.geo@gmail.com> wrote:
>> >
>> > Thank you for all the efforts you have done to make internet usable.
>> >
>> > I currently use htb & fq_codel in my low speed ADSL 6Mbps downlink/1 Mbps uplink. I use fwmark to control both uplink and downlink with good results in terms of bandwidth allocation. Streaming video is chopping bulk traffic successfully.
>> >
>> > Is setting up cake worth the effort at such low speeds? Would it reduce latency?
>>
>> Cake has a better-quality shaper than HTB does, and a more sophisticated flow-isolation scheme than fq_codel does.  These tend to matter more at low speeds, not less.  It's also generally easier to set up than a compound qdisc scheme.
>>
>> > Regarding fwmark can you please elaborate more on the calculations performed? Man page is not that helpful.
>> >
>> > My understanding is this:
>> >
>> > I use 1,2,3,4 as marks of traffic.
>> > If I set the mask to 0xffffff[..] the marks will remain unchanged. Then right shifting will occur for the unset bits, so they will land on tins
>> > 1,1,3,1
>> >
>> > Can you please correct me? If logical and performed between mask and mark value?
>>
>> Since there's only a few "tins" at a time used in Cake, and the fwmark is a direct mapping into those tins, a narrow mask is probably safer to use than a wide one.  The reason for the mask is so you can encode several values into different parts of the mark value.  The shift is simply to move the field covered by the mask to the low end of the word, so that it is useful to Cake.
>>
>> For your use case, a mask of 0xF will be completely sufficient.  It would allow you to specify mark values of 1-15, to map directly in the first 15 tins used by Cake, or a mark value of 0 to fall back to Cake's default Diffserv handling.  None of Cake's tin setups use more than 8 tins, and most use fewer.
>>
>>  - Jonathan Morton
>>
>
> Thanks for the info! I've noticed that by using 0xF, marks 1-4 become
> tins 0-3. Tin 0 is special? I assumed it's for bulk traffic. I use
> diffserv8.

Nah, it's just that the fwmark uses 1-indexed tin numbers (because a
mark of 0 is the same as 'unset').

The code in cake_select_tin() that handles the mark is literally just this:

	else if (mark && mark <= q->tin_cnt)
		tin = q->tin_order[mark - 1];

-Toke

^ permalink raw reply	[relevance 0%]

* Re: [Cake] NLA_F_NESTED is missing
  @ 2020-11-01 16:53  1% ` Y
    2020-11-03  1:14  0% ` Jonathan Morton
  2 siblings, 0 replies; 34+ results
From: Y @ 2020-11-01 16:53 UTC (permalink / raw)
  To: cake, Dean Scarff

My pi doesn't have error using cake through eth0.






Le dimanche 1 novembre 2020 à 19:15:54 UTC+9, Dean Scarff <dos@scarff.id.au> a écrit : 





Hi,

I've been happily running the out-of-tree sch_cake on my Raspberry Pi 
since 2015.  However, I recently upgraded my kernel (to 5.4.72 from 
Raspbian's raspberrypi-kernel 1.20201022-1), which comes with the 
sch_cake in mainline.  Now, when running:

  sudo /sbin/tc qdisc add dev ppp0 root cake

I get the error:

  Error: NLA_F_NESTED is missing.

I get this error with the sch_cake in mainline, and also with sch_cake 
built out-of-tree.  I also get the error with both Debian's iproute2 
5.9.0-1 (built myself via debian/rules) and "tc" from dtaht's tc-adv 
repo.

Any ideas on what this error means and how to fix it?

_______________________________________________
Cake mailing list
Cake@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cake

^ permalink raw reply	[relevance 1%]

* Re: [Cake] NLA_F_NESTED is missing
  @ 2020-11-03  1:11  1%   ` Dean Scarff
  2020-11-03  8:07  1%     ` Dean Scarff
  2020-11-03 11:00  0%     ` Toke Høiland-Jørgensen
  0 siblings, 2 replies; 34+ results
From: Dean Scarff @ 2020-11-03  1:11 UTC (permalink / raw)
  To: cake

 On Mon, 02 Nov 2020 13:37:00 +0100, Toke wrote:
> Dean Scarff <dos@scarff.id.au> writes:
>
>>  Hi,
>>
>>  I've been happily running the out-of-tree sch_cake on my Raspberry 
>> Pi
>>  since 2015.  However, I recently upgraded my kernel (to 5.4.72 from
>>  Raspbian's raspberrypi-kernel 1.20201022-1), which comes with the
>>  sch_cake in mainline.  Now, when running:
>>
>>    sudo /sbin/tc qdisc add dev ppp0 root cake
>>
>>  I get the error:
>>
>>    Error: NLA_F_NESTED is missing.
>>
>>  I get this error with the sch_cake in mainline, and also with 
>> sch_cake
>>  built out-of-tree.  I also get the error with both Debian's 
>> iproute2
>>  5.9.0-1 (built myself via debian/rules) and "tc" from dtaht's 
>> tc-adv
>>  repo.
>>
>>  Any ideas on what this error means and how to fix it?
>
> I just tried building a 5.4.72 kernel and couldn't reproduce this, so 
> it
> seems it's a fault with the raspberry pi kernel; I guess opening a 
> bug
> against that would be the way to go?
>
> As for what's actually causing this, I couldn't find anything obvious
> that touches this code in the qdisc layer; but I suppose it has
> something to do with the core qdisc netlink parsing code?
>
> -Toke

 Thanks for the data point.

 For the record, the relevant kernel source is:
 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/net/netlink.h?h=v5.4.72#n1143
 and the Pi branch:
 https://github.com/raspberrypi/linux/blob/raspberrypi-kernel_1.20201022-1/include/net/netlink.h#L1143

 It seems very unlikely that the Pi folks are patching the netlink 
 stuff, so I don't think I'll get much traction there unless I can call 
 out something specifically wrong with their patchset.

 My current theory (despite the 4 combinations I tried) is that there's 
 some mismatch between Raspbian/Debian's tc and the kernel (somewhere in 
 the tc's qdisc code it's calling nla_parse_nested but not setting 
 nla_type), but it's odd that nobody else can repro.  tbh the Debian 
 patches look pretty innocent too:

 https://salsa.debian.org/debian/iproute2/-/tree/558bae88bd0befc1bf3e1070733bafd522e44992/debian/patches

 I should be able to figure it out by poking around in tc with gdb.

^ permalink raw reply	[relevance 1%]

* Re: [Cake] NLA_F_NESTED is missing
    2020-11-01 16:53  1% ` Y
  @ 2020-11-03  1:14  0% ` Jonathan Morton
  2020-11-03  1:51  1%   ` Dean Scarff
  2 siblings, 1 reply; 34+ results
From: Jonathan Morton @ 2020-11-03  1:14 UTC (permalink / raw)
  To: Dean Scarff; +Cc: cake

> On 1 Nov, 2020, at 12:15 pm, Dean Scarff <dos@scarff.id.au> wrote:
> 
>  Error: NLA_F_NESTED is missing.

Since you're running an up-to-date kernel, you should check you are also running up-to-date userspace tools.  That flag is associated with the interface between the two.

 - Jonathan Morton

^ permalink raw reply	[relevance 0%]

* Re: [Cake] NLA_F_NESTED is missing
  2020-11-03  1:14  0% ` Jonathan Morton
@ 2020-11-03  1:51  1%   ` Dean Scarff
  0 siblings, 0 replies; 34+ results
From: Dean Scarff @ 2020-11-03  1:51 UTC (permalink / raw)
  To: cake

 On Tue, 3 Nov 2020 03:14:37 +0200, Jonathan Morton wrote:
>> On 1 Nov, 2020, at 12:15 pm, Dean Scarff <dos@scarff.id.au> wrote:
>>
>>  Error: NLA_F_NESTED is missing.
>
> Since you're running an up-to-date kernel, you should check you are
> also running up-to-date userspace tools.  That flag is associated 
> with
> the interface between the two.
>
>  - Jonathan Morton

 Thanks.  I figured the same thing (see my other post today), but if 
 anything, one of the userspace versions I tested (iproute2 5.9.0) is 
 *too* new (released Oct 19 for 5.9 kernels, see:
 https://lwn.net/Articles/834755/ ).  For good measure, I also tested 
 with Debian's iproute2_5.7.0-1 ;)

 Either way though, I can debug the userspace tools, which should get me 
 to the root cause.

^ permalink raw reply	[relevance 1%]

* Re: [Cake] NLA_F_NESTED is missing
  2020-11-03  1:11  1%   ` Dean Scarff
@ 2020-11-03  8:07  1%     ` Dean Scarff
  2020-11-03 11:00  0%     ` Toke Høiland-Jørgensen
  1 sibling, 0 replies; 34+ results
From: Dean Scarff @ 2020-11-03  8:07 UTC (permalink / raw)
  To: cake

 On Tue, 03 Nov 2020 12:11:06 +1100, Dean Scarff wrote:

> I should be able to figure it out by poking around in tc with gdb.

 I did this, and I confirmed that tc isn't trying to send any nested 
 attributes.  So I think the problem is on the kernel side, since it 
 seems to be hallucinating attributes it expects to be nested but aren't.

 Note that "tc" does send an empty options attribute:

 	addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);

 https://salsa.debian.org/debian/iproute2/-/blob/v5.7.0/tc/q_cake.c#L356

 It's the same in upstream iproute2 and iproute2-next:
 https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/tc/q_cake.c#n356
 https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/tree/tc/q_cake.c#n356

 This looks valid to me.  While I'm less sure about all the other 
 attributes being added in cake_parse_opt (i.e. whether they should be 
 nested under TCA_OPTIONS), that's moot in my repro case, because they're 
 not being set anyway.


 ---
 Interesting parts of the gdb session:

 (gdb) run qdisc add dev ppp0 root cake
 Starting program: /home/dean/iproute2/tc/tc qdisc add dev ppp0 root 
 cake

 Breakpoint 10, rtnl_talk (rtnl=0xc72d0 <rth>, n=0x7efefb78, answer=0x0)
     at libnetlink.c:1048
 1048    return __rtnl_talk(rtnl, n, answer, true, NULL);
 (gdb) p *rtnl
 $14 = {fd = 3, local = {nl_family = 16, nl_pad = 0, nl_pid = 18698,
     nl_groups = 0}, peer = {nl_family = 0, nl_pad = 0, nl_pid = 0,
     nl_groups = 0}, seq = 1604370876, dump = 1604370876, proto = 0,
   dump_fp = 0x0, flags = 0}
 (gdb) p *n
 $15 = {nlmsg_len = 52, nlmsg_type = 36, nlmsg_flags = 1537, nlmsg_seq = 
 0,
   nlmsg_pid = 0}
 (gdb) p sizeof(struct nlmsghdr)
 $16 = 16
 (gdb) call print_qdisc(n, stdout)
 added qdisc cake 0: dev ppp0 root refcnt 0 nonat nowash no-ack-filter 
 no-split-gso noatm overhead 0
 $17 = 0

 I've annotated the following to show the structure of the request.  
 There are only two attributes, TCA_KIND and TCA_OPTIONS, and neither of 
 those is nested.

 (gdb) x/52xb n
 nlmsghdr:
 0x7efefb78: [0x34] 0x00  0x00  0x00 [0x24] 0x00  0x01  0x06
              len=52                  RTM_NEWQDISC
 0x7efefb80:  0x00  0x00  0x00  0x00  0x00  0x00  0x00  0x00

 payload:
 family header:
 0x7efefb88: [0x00][0x00][0x00  0x00][0x05  0x00][0x00  0x00]
              family=AF_UNSPEC        ifindex=ppp0
                    pad1  pad2                    alignment
 0x7efefb90: [0x00  0x00  0x00  0x00][0xff  0xff  0xff  0xff]
              handle=0                parent=TC_H_ROOT

                                      attributes:
 0x7efefb98: [0x00  0x00  0x00  0x00][0x09  0x00][0x01  0x00]
              info=0                  rta_len=9   rta_type=TCA_KIND
 0x7efefba0: [0x63  0x61  0x6b  0x65  0x00][0x00  0x00  0x00]
              rta_data=“cake”               alignment
 0x7efefba8: [0x04  0x00][0x02  0x00]
              rta_len=4   rta_type=TCA_OPTIONS


 (gdb) up
 #1  0x000199a4 in tc_qdisc_modify (cmd=36, flags=1536, argc=0, 
 argv=0x7efffd70)
     at tc_qdisc.c:208
 208    if (rtnl_talk(&rth, &req.n, NULL) < 0)
 (gdb) p req.t
 $19 = {tcm_family = 0 '\000', tcm__pad1 = 0 '\000', tcm__pad2 = 0,
   tcm_ifindex = 5, tcm_handle = 0, tcm_parent = 4294967295, tcm_info = 
 0}


^ permalink raw reply	[relevance 1%]

* Re: [Cake] NLA_F_NESTED is missing
  2020-11-03  1:11  1%   ` Dean Scarff
  2020-11-03  8:07  1%     ` Dean Scarff
@ 2020-11-03 11:00  0%     ` Toke Høiland-Jørgensen
  2020-11-04  5:48  1%       ` Dean Scarff
  1 sibling, 1 reply; 34+ results
From: Toke Høiland-Jørgensen @ 2020-11-03 11:00 UTC (permalink / raw)
  To: Dean Scarff, cake

Dean Scarff <dos@scarff.id.au> writes:

>  On Mon, 02 Nov 2020 13:37:00 +0100, Toke wrote:
>> Dean Scarff <dos@scarff.id.au> writes:
>>
>>>  Hi,
>>>
>>>  I've been happily running the out-of-tree sch_cake on my Raspberry 
>>> Pi
>>>  since 2015.  However, I recently upgraded my kernel (to 5.4.72 from
>>>  Raspbian's raspberrypi-kernel 1.20201022-1), which comes with the
>>>  sch_cake in mainline.  Now, when running:
>>>
>>>    sudo /sbin/tc qdisc add dev ppp0 root cake
>>>
>>>  I get the error:
>>>
>>>    Error: NLA_F_NESTED is missing.
>>>
>>>  I get this error with the sch_cake in mainline, and also with 
>>> sch_cake
>>>  built out-of-tree.  I also get the error with both Debian's 
>>> iproute2
>>>  5.9.0-1 (built myself via debian/rules) and "tc" from dtaht's 
>>> tc-adv
>>>  repo.
>>>
>>>  Any ideas on what this error means and how to fix it?
>>
>> I just tried building a 5.4.72 kernel and couldn't reproduce this, so 
>> it
>> seems it's a fault with the raspberry pi kernel; I guess opening a 
>> bug
>> against that would be the way to go?
>>
>> As for what's actually causing this, I couldn't find anything obvious
>> that touches this code in the qdisc layer; but I suppose it has
>> something to do with the core qdisc netlink parsing code?
>>
>> -Toke
>
>  Thanks for the data point.
>
>  For the record, the relevant kernel source is:
>  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/net/netlink.h?h=v5.4.72#n1143
>  and the Pi branch:
>  https://github.com/raspberrypi/linux/blob/raspberrypi-kernel_1.20201022-1/include/net/netlink.h#L1143
>
>  It seems very unlikely that the Pi folks are patching the netlink 
>  stuff, so I don't think I'll get much traction there unless I can call 
>  out something specifically wrong with their patchset.

Well, something odd is certainly going on. The error message you're
quoting comes form a part of the netlink parsing code (in the kernel)
that shouldn't even be hit by the qdisc addition: NLA_F_NESTED parsing
is only enabled in 'strict' validation mode, which is not used for
qdiscs.

So IDK, maybe a compiler issue or a bit that gets set wrong somewhere?
Bisecting the kernel may be the only option here, I don't think you're
going to find anything in userspace...

-Toke

^ permalink raw reply	[relevance 0%]

* Re: [Cake] NLA_F_NESTED is missing
  2020-11-03 11:00  0%     ` Toke Høiland-Jørgensen
@ 2020-11-04  5:48  1%       ` Dean Scarff
  2020-11-04 11:27  0%         ` Toke Høiland-Jørgensen
  0 siblings, 1 reply; 34+ results
From: Dean Scarff @ 2020-11-04  5:48 UTC (permalink / raw)
  To: cake

 On Tue, 03 Nov 2020 12:00:55 +0100, Toke Høiland-Jørgensen wrote:
> Dean Scarff <dos@scarff.id.au> writes:
>
>>  On Mon, 02 Nov 2020 13:37:00 +0100, Toke wrote:
>>> Dean Scarff <dos@scarff.id.au> writes:
>>>
>>>>  Hi,
>>>>
>>>>  I've been happily running the out-of-tree sch_cake on my 
>>>> Raspberry
>>>> Pi
>>>>  since 2015.  However, I recently upgraded my kernel (to 5.4.72 
>>>> from
>>>>  Raspbian's raspberrypi-kernel 1.20201022-1), which comes with the
>>>>  sch_cake in mainline.  Now, when running:
>>>>
>>>>    sudo /sbin/tc qdisc add dev ppp0 root cake
>>>>
>>>>  I get the error:
>>>>
>>>>    Error: NLA_F_NESTED is missing.
>>>>
>>>>  I get this error with the sch_cake in mainline, and also with
>>>> sch_cake
>>>>  built out-of-tree.  I also get the error with both Debian's
>>>> iproute2
>>>>  5.9.0-1 (built myself via debian/rules) and "tc" from dtaht's
>>>> tc-adv
>>>>  repo.
>>>>
>>>>  Any ideas on what this error means and how to fix it?
>>>
>>> I just tried building a 5.4.72 kernel and couldn't reproduce this, 
>>> so
>>> it
>>> seems it's a fault with the raspberry pi kernel; I guess opening a
>>> bug
>>> against that would be the way to go?
>>>
>>> As for what's actually causing this, I couldn't find anything 
>>> obvious
>>> that touches this code in the qdisc layer; but I suppose it has
>>> something to do with the core qdisc netlink parsing code?
>>>
>>> -Toke
>>
>>  Thanks for the data point.
>>
>>  For the record, the relevant kernel source is:
>>  
>> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/net/netlink.h?h=v5.4.72#n1143
>>  and the Pi branch:
>>  
>> https://github.com/raspberrypi/linux/blob/raspberrypi-kernel_1.20201022-1/include/net/netlink.h#L1143
>>
>>  It seems very unlikely that the Pi folks are patching the netlink
>>  stuff, so I don't think I'll get much traction there unless I can 
>> call
>>  out something specifically wrong with their patchset.
>
> Well, something odd is certainly going on. The error message you're
> quoting comes form a part of the netlink parsing code (in the kernel)
> that shouldn't even be hit by the qdisc addition: NLA_F_NESTED 
> parsing
> is only enabled in 'strict' validation mode, which is not used for
> qdiscs.
>
> So IDK, maybe a compiler issue or a bit that gets set wrong 
> somewhere?
> Bisecting the kernel may be the only option here, I don't think 
> you're
> going to find anything in userspace...

 Yeah, I came to the same conclusion.  I verified the userspace was sane 
 via gdb (see earlier post), and I also read through the sch_api.c and 
 nlattr.c kernel code and it sure looks impossible for the strict 
 validation to be getting hit.

 Safe to say this was random corruption: I downgraded the kernel, things 
 worked as expected, then I upgraded back to the 5.4.72 and it worked 
 too!  Interestingly, the problem persisted across reboots (so it wasn't 
 just RAM corruption), and all the kernel files also matched their "dpkg" 
 MD5s (so it wasn't like the binaries were obviously corrupt on disk).  
 I've replaced the Pi's microSD card just to be safe, though... kernel 
 corruption is scary.


^ permalink raw reply	[relevance 1%]

* Re: [Cake] NLA_F_NESTED is missing
  2020-11-04  5:48  1%       ` Dean Scarff
@ 2020-11-04 11:27  0%         ` Toke Høiland-Jørgensen
  0 siblings, 0 replies; 34+ results
From: Toke Høiland-Jørgensen @ 2020-11-04 11:27 UTC (permalink / raw)
  To: Dean Scarff, cake

Dean Scarff <dos@scarff.id.au> writes:

>  On Tue, 03 Nov 2020 12:00:55 +0100, Toke Høiland-Jørgensen wrote:
>> Dean Scarff <dos@scarff.id.au> writes:
>>
>>>  On Mon, 02 Nov 2020 13:37:00 +0100, Toke wrote:
>>>> Dean Scarff <dos@scarff.id.au> writes:
>>>>
>>>>>  Hi,
>>>>>
>>>>>  I've been happily running the out-of-tree sch_cake on my 
>>>>> Raspberry
>>>>> Pi
>>>>>  since 2015.  However, I recently upgraded my kernel (to 5.4.72 
>>>>> from
>>>>>  Raspbian's raspberrypi-kernel 1.20201022-1), which comes with the
>>>>>  sch_cake in mainline.  Now, when running:
>>>>>
>>>>>    sudo /sbin/tc qdisc add dev ppp0 root cake
>>>>>
>>>>>  I get the error:
>>>>>
>>>>>    Error: NLA_F_NESTED is missing.
>>>>>
>>>>>  I get this error with the sch_cake in mainline, and also with
>>>>> sch_cake
>>>>>  built out-of-tree.  I also get the error with both Debian's
>>>>> iproute2
>>>>>  5.9.0-1 (built myself via debian/rules) and "tc" from dtaht's
>>>>> tc-adv
>>>>>  repo.
>>>>>
>>>>>  Any ideas on what this error means and how to fix it?
>>>>
>>>> I just tried building a 5.4.72 kernel and couldn't reproduce this, 
>>>> so
>>>> it
>>>> seems it's a fault with the raspberry pi kernel; I guess opening a
>>>> bug
>>>> against that would be the way to go?
>>>>
>>>> As for what's actually causing this, I couldn't find anything 
>>>> obvious
>>>> that touches this code in the qdisc layer; but I suppose it has
>>>> something to do with the core qdisc netlink parsing code?
>>>>
>>>> -Toke
>>>
>>>  Thanks for the data point.
>>>
>>>  For the record, the relevant kernel source is:
>>>  
>>> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/net/netlink.h?h=v5.4.72#n1143
>>>  and the Pi branch:
>>>  
>>> https://github.com/raspberrypi/linux/blob/raspberrypi-kernel_1.20201022-1/include/net/netlink.h#L1143
>>>
>>>  It seems very unlikely that the Pi folks are patching the netlink
>>>  stuff, so I don't think I'll get much traction there unless I can 
>>> call
>>>  out something specifically wrong with their patchset.
>>
>> Well, something odd is certainly going on. The error message you're
>> quoting comes form a part of the netlink parsing code (in the kernel)
>> that shouldn't even be hit by the qdisc addition: NLA_F_NESTED 
>> parsing
>> is only enabled in 'strict' validation mode, which is not used for
>> qdiscs.
>>
>> So IDK, maybe a compiler issue or a bit that gets set wrong 
>> somewhere?
>> Bisecting the kernel may be the only option here, I don't think 
>> you're
>> going to find anything in userspace...
>
>  Yeah, I came to the same conclusion.  I verified the userspace was sane 
>  via gdb (see earlier post), and I also read through the sch_api.c and 
>  nlattr.c kernel code and it sure looks impossible for the strict 
>  validation to be getting hit.
>
>  Safe to say this was random corruption: I downgraded the kernel, things 
>  worked as expected, then I upgraded back to the 5.4.72 and it worked 
>  too!  Interestingly, the problem persisted across reboots (so it wasn't 
>  just RAM corruption), and all the kernel files also matched their "dpkg" 
>  MD5s (so it wasn't like the binaries were obviously corrupt on disk).  
>  I've replaced the Pi's microSD card just to be safe, though... kernel 
>  corruption is scary.

Ugh, Heisenbugs are the worst! Great to hear you managed to resolve it,
though :)

-Toke

^ permalink raw reply	[relevance 0%]

* Re: [Cake] [Bloat]  New board that looks interesting
  @ 2020-12-18 23:48  1%         ` Aaron Wood
  2021-01-04  2:11  1%           ` Dean Scarff
  0 siblings, 1 reply; 34+ results
From: Aaron Wood @ 2020-12-18 23:48 UTC (permalink / raw)
  To: Dave Taht; +Cc: Cake List, David P. Reed, Make-Wifi-fast, bloat

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

I have, finally.  It's been running for a week or so, now.

OpenWRT was an _adventure_.  The board is UEFI, not standard bios.  And
while it will merrily boot OpenWRT's non-uefi images off of USB, it won't
boot the non-UEFI setup from the internal storage (I'm using the eMMC).  So
_that_ was fun (and I made some dumb mistakes that were especially fun to
correct.

But it's running OpenWRT 19.07 (and a UEFI bootloader before grub that's
from ToT OpenWRT).

Anyway, I have cake running, 950Mbps ingress and 35Mbps egress (modem is
provisioned at 1.3G ingress, and a bit over 35Mbps egress).  fq_codel was
defaulted, in multi-queue mode.  While I'm using cake on ingress, my local
link hasn't been hitting the limiter very often:

                Tin 0
  thresh        950Mbit
  target          1.5ms
  interval       30.0ms
  pk_delay         22us
  av_delay          9us
  sp_delay          2us
  backlog            0b
  pkts        243608193
  bytes    250748364896
  way_inds     13167720
  way_miss      1245030
  way_cols            0
  drops            1075
  marks             101
  ack_drop            0
  sp_flows            0
  bk_flows            1
  un_flows            0
  max_len         69876
  quantum          1514

Given that most of the hosts that I interact with are only about 10-15ms
away, I'm probably going to change the interval target to better match that.

Interestingly, while it has a pair of multiqueue NICs (i211s), the igbe
driver isn't configuring them for RSS.  Both output queues are being used,
but not the ingress queues:

wan interface:
     tx_queue_0_packets: 56635989
     tx_queue_1_packets: 39777210
     rx_queue_0_packets: 243646072
     rx_queue_1_packets: 0

lan interface:
     tx_queue_0_packets: 85047897
     tx_queue_1_packets: 162004500
     rx_queue_0_packets: 111174855
     rx_queue_1_packets: 0

Since I have housemates that don't appreciate me messing with the network
during their meetings, I haven't gotten around to poking more deeply at
that (or at experimenting with running cake on two ingress queues).

That being said, I bench-tested this before I put it into operation and was
able to see 940Mbps of iperf goodput through cake and NAT...  Took all of a
core, though (and that core was still cold and therefore potentially able
to boost to 2.5GHz).  I haven't determined how long it will take to
thermally throttle, and if bandwidth suffers as a result.

Pretty happy with it so far, though.

On Sun, Apr 26, 2020 at 7:46 PM Dave Taht <dave.taht@gmail.com> wrote:

> anyone got around to hacking on this board yet?
>
> On Sat, Apr 4, 2020 at 9:27 AM Aaron Wood <woody77@gmail.com> wrote:
> >
> > The comparison of chipset performance link (to OpemWRT forums) that went
> out had this chip, the J4105 as the fastest.  Able to do a gigabit with
> cake (nearly able to do it in both directions).
> >
> > I think this has replaced the apu2 as the board I’m going with as my
> edge router.
> >
> > On Sat, Apr 4, 2020 at 9:10 AM Dave Taht <dave.taht@gmail.com> wrote:
> >>
> >> Historically I've found the "Celeron" chips rather weak, but it's just
> >> a brand. I haven't the foggiest idea how well this variant will
> >> perform.
> >>
> >> The intel ethernet chips are best of breed in linux, however. It's
> >> been my hope that the 211 variant with the timed networking support
> >> would show up in the field (sch_etx) so we could fiddle with that,
> >> (the apu2s aren't using that version) but I cannot for the life of me
> >> remember the right keywords to look it up at the moment. this feature
> >> lets you program when a packet emerges from the driver and is sort of
> >> a whole new ballgame when it comes to scheduling - there hasn't been
> >> an aqm designed for it, and you can do fq by playing tricks with the
> >> sent timestamp.
> >>
> >> All the other features look rather nice on this board.
> >>
> >> On Sat, Apr 4, 2020 at 7:47 AM David P. Reed <dpreed@deepplum.com>
> wrote:
> >> >
> >> > Thanks! I ordered one just now. In my experience, this company does
> rather neat stuff. Their XMOS based microphone array (ReSpeaker) is really
> useful. What's the state of play in Linux/OpenWRT for Intel 9560
> capabilities regarding AQM?
> >> >
> >> > On Saturday, April 4, 2020 12:12am, "Aaron Wood" <woody77@gmail.com>
> said:
> >> >
> >> > > _______________________________________________
> >> > > Cake mailing list
> >> > > Cake@lists.bufferbloat.net
> >> > > https://lists.bufferbloat.net/listinfo/cake
> >> > > https://www.seeedstudio.com/ODYSSEY-X86J4105800-p-4445.html
> >> > >
> >> > > quad-core Celeron J4105 1.5-2.5 GHz x64
> >> > > 8GB Ram
> >> > > 2x i211t intel ethernet controllers
> >> > > intel 9560 802.11ac (wave2) wifi/bluetooth chipset
> >> > > intel built-in graphics
> >> > > onboard ARM Cortex-M0 and RPi & Arduino headers
> >> > > m.2 and PCIe adapters
> >> > > <$200
> >> > >
> >> >
> >> >
> >> > _______________________________________________
> >> > Bloat mailing list
> >> > Bloat@lists.bufferbloat.net
> >> > https://lists.bufferbloat.net/listinfo/bloat
> >>
> >>
> >>
> >> --
> >> Make Music, Not War
> >>
> >> Dave Täht
> >> CTO, TekLibre, LLC
> >> http://www.teklibre.com
> >> Tel: 1-831-435-0729
> >
> > --
> > - Sent from my iPhone.
>
>
>
> --
> Make Music, Not War
>
> Dave Täht
> CTO, TekLibre, LLC
> http://www.teklibre.com
> Tel: 1-831-435-0729
>

[-- Attachment #2: Type: text/html, Size: 8094 bytes --]

^ permalink raw reply	[relevance 1%]

* Re: [Cake] ECN not working?
  @ 2020-12-22 20:15  0% ` Jonathan Morton
  0 siblings, 0 replies; 34+ results
From: Jonathan Morton @ 2020-12-22 20:15 UTC (permalink / raw)
  To: xnor; +Cc: cake

> On 22 Dec, 2020, at 10:06 pm, xnor <xnoreq@gmail.com> wrote:
> 
> The client initiates the IPv4 TCP connection with:
> IP Differentiated Services Field: 0x02 (DSCP: CS0, ECN: ECT(0))
> TCP Flags: 0x0c2 (SYN, ECN, CWR)
> Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
> 
> The server responds:
> Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
> Flags: 0x012 (SYN, ACK)
> Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 SACK_PERM=1 WS=128
> 
> Shouldn't the server respond with ECT set in the SYN ACK packet
> and possibly also have ECN-related flags set in the TCP header?

Not all servers have ECN support enabled.  A SYN-ACK without the ECE bit set indicates it does not.  The connection then proceeds as Not-ECT.

I'm reasonably sure Akamai has specifically enabled ECN support.  A lot of smaller webservers are probably running with the default passive-mode ECN support as well (ie. will negotiate inbound but not initiate outbound).

 - Jonathan Morton

^ permalink raw reply	[relevance 0%]

* Re: [Cake] [Bloat]  New board that looks interesting
  2020-12-18 23:48  1%         ` Aaron Wood
@ 2021-01-04  2:11  1%           ` Dean Scarff
  0 siblings, 0 replies; 34+ results
From: Dean Scarff @ 2021-01-04  2:11 UTC (permalink / raw)
  To: cake

 Any stats on how much power it pulled during your tests and when idle?

 On Fri, 18 Dec 2020 15:48:46 -0800, Aaron Wood wrote:
> I have, finally.  It's been running for a week or so, now.
>
> OpenWRT was an _adventure_.  The board is UEFI, not standard bios.. 
> And while it will merrily boot OpenWRT's non-uefi images off of USB,
> it won't boot the non-UEFI setup from the internal storage (I'm using
> the eMMC).  So _that_ was fun (and I made some dumb mistakes that
> were especially fun to correct.
>
> But it's running OpenWRT 19.07 (and a UEFI bootloader before grub
> that's from ToT OpenWRT).
>
> Anyway, I have cake running, 950Mbps ingress and 35Mbps egress (modem
> is provisioned at 1.3G ingress, and a bit over 35Mbps egress).
>  fq_codel was defaulted, in multi-queue mode.  While I'm using cake
> on ingress, my local link hasn't been hitting the limiter very often:
>
>                 Tin 0
>   thresh        950Mbit
>   target          1.5ms
>   interval       30.0ms
>   pk_delay         22us
>   av_delay          9us
>   sp_delay          2us
>   backlog            0b
>   pkts        243608193
>   bytes    250748364896
>   way_inds     13167720
>   way_miss      1245030
>   way_cols            0
>   drops            1075
>   marks             101
>   ack_drop            0
>   sp_flows            0
>   bk_flows            1
>   un_flows            0
>   max_len         69876
>   quantum          1514
>
> Given that most of the hosts that I interact with are only about
> 10-15ms away, I'm probably going to change the interval target to
> better match that.
>
> Interestingly, while it has a pair of multiqueue NICs (i211s), the
> igbe driver isn't configuring them for RSS.  Both output queues are
> being used, but not the ingress queues:
>
> wan interface:
>
>      tx_queue_0_packets: 56635989
>      tx_queue_1_packets: 39777210
>      rx_queue_0_packets: 243646072
>      rx_queue_1_packets: 0
>
> lan interface:
>
>      tx_queue_0_packets: 85047897
>      tx_queue_1_packets: 162004500
>      rx_queue_0_packets: 111174855
>      rx_queue_1_packets: 0
>
> Since I have housemates that don't appreciate me messing with the
> network during their meetings, I haven't gotten around to poking more
> deeply at that (or at experimenting with running cake on two ingress
> queues).
>
> That being said, I bench-tested this before I put it into operation
> and was able to see 940Mbps of iperf goodput through cake and NAT... 
> Took all of a core, though (and that core was still cold and 
> therefore
> potentially able to boost to 2.5GHz).  I haven't determined how long
> it will take to thermally throttle, and if bandwidth suffers as a
> result.
>
> Pretty happy with it so far, though.

^ permalink raw reply	[relevance 1%]

* Re: [Cake] quantum configuration
  @ 2021-01-26 15:46  1%   ` Dave Taht
  0 siblings, 0 replies; 34+ results
From: Dave Taht @ 2021-01-26 15:46 UTC (permalink / raw)
  To: Toke Høiland-Jørgensen; +Cc: Luca Muscariello, Cake List

I have kind of thought we could scale the quantum much higher as we
crack 200mbit to see if that helps on performance.

On Fri, Jul 24, 2020 at 5:26 AM Toke Høiland-Jørgensen via Cake
<cake@lists.bufferbloat.net> wrote:
>
> Luca Muscariello <muscariello@ieee.org> writes:
>
> > Is there a reason why in cake the quantum cannot be configured to a
> > different value like in fq_codel?
>
> I think this was mostly to be as no-knob as possible; so the quantum is
> auto-scaled with the tin bandwidths, instead of being configurable.
>
> Jonathan can probably expand on this...
>
> -Toke
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake



-- 
"For a successful technology, reality must take precedence over public
relations, for Mother Nature cannot be fooled" - Richard Feynman

dave@taht.net <Dave Täht> CTO, TekLibre, LLC Tel: 1-831-435-0729

^ permalink raw reply	[relevance 1%]

* Re: [Cake] [Cerowrt-devel] wireguard almost takes a bullet
  @ 2021-03-31 16:08  1%       ` Theodore Ts'o
  0 siblings, 0 replies; 34+ results
From: Theodore Ts'o @ 2021-03-31 16:08 UTC (permalink / raw)
  To: David P. Reed
  Cc: Dave Taht, Cake List, Make-Wifi-fast, Jason A. Donenfeld,
	cerowrt-devel, bloat

On Tue, Mar 30, 2021 at 09:23:50PM -0400, David P. Reed wrote:
> 
> On the other hand, they are pretty damn high salaries for a
> non-profit. Are they appropriate? Depends. There are no stockholders
> and no profits, just a pretty substantial net worth.

For better or for worse, senior software engineers who work for Big
Tech will be making similar amounts of money.  Without being
inappropriately specific, my total compensation isn't that different
from Linus's, once you take things like equity compensation into
account.  This was true both in my current employer, as well as my
previous employer (IBM).

Is that right or wrong?  Unfortunately, it is what it is.  Part of it
is that it's very much a supply and demand question.  I know, because
I've tried to find talented file system kernel developers for my
team.... and it's hard to find them.

I know that in many ways, it's hugely unfair.  When I was at IBM, I
was the high powered senior developer who could meet with the senior
technical leaders at a major US defense contractor.  I was the one
with ths TS/SCI security clearance, and yes, I was the senior
architect who got an IBM award for my team's work on real-time Linux
capable of running real-time Java for us in the DDG(1000) Zumwalt
class destroyer.  And yet, the vast majority of the work was done by
much more junior engineers, and they didn't get any of the major
awards, and their salary was much less.  It was one of the best teams
I had the pleasure of working with, and I'm glad to see that they are
now working in much more senior roles at other companies.

So while it's easy to criticize the Linux Foundation, it's by no means
unique to it, and to the extent that it's part of a larger tech
ecosystem that pays engineers in a very disproportionate way, it has
to pay its people commensurate with what they could get if they had
decided to go work for a company like Facebook or Amazon.

> Regarding the organizaton of "Linux, Inc." as a hierachical control
> structure - I'll just point out that hierarchical control of the
> development of Linux suggests that it is not at all a "community
> project" (if it ever was). It's a product development organization
> with multiple levels of management.

So I'd argue that *any* successful, very large open source project
needs to have multiple levels of management.  It's *technical*
managers, and I would point out that it's really more servant
leadership more than anything else.  I may be the ext4 maintainer, but
that means that in order to make ext4 successful, I end up doing the
work that no one else finds "fun" to work for, or that companies
aren't willing to pay engineers to do as part of their day job.  So
for example, the test framework[1] for ext4 is something I had to create
and maintain, because no one else would do it.  And code review is not
necessary *fun*, but someone has to do it.  Much of this work actually
happens late at night or on weekend, on my own time, because I care
enough about it that it's something I *choose* to do it.

[1] https://thunk.org/gce-xfstests 

So if your definition of a "community project" is one which has a
non-scalable governance structure, I'm going to have to disagree.  In
the early 90's, when I first getting started with Linux, there were
attempts from senior leaders at NetBSD and GNU HURD who tried to woo
me to do work for their kernel instead.  Let's just say that even
then, after seeing the toxicity/drama of those governance structures,
(and it didn't help that living in Cambridge, I had the ability to
meet and break bread with some of these senior people face-to-face),
one of the primary *reasons* why I declined to work on *BSD and HURD
was due to the leaders of those projects that I would have had to work
with.  This despite the fact that my first OS/systems programming
experience, courtesy of MIT Project Athena, was on BSD 4.3.

> Yet the developers are employees of a small number of major
> corporations. In this sense, it is like a "joint venture" among
> those companies.
>  
> To the extent that those companies gain (partial) control of the
> Linux kernel, as appears to be the case, I think Linux misrepresents
> itself as a "community project", and in particular, the actual users
> of the software may have little say in the direction development
> takes going forwards.

There are certainly still developers in Linux that are hobbyists, and
not everyone works for Big Tech.  In fact, Jason worked at a startup
that was certainly not what I would call an example of Big Tech.
Sure, his startup let him spend a significant amount of his time
working on getting WireGuard upstream, but WireGuard was very much
accepted on the basis of the merits of his work.  It was not because
someone paid $$$ to the Linux Foundation, or anything crazy like that.

I also started out as a hobbyist.  For a long time, being tech lead
for Kerberos at MIT, and doing IETF standards work (e.g., I was ipsec
working group chair) was my day job, and Linux as my hobby.  Sure, I
was the first North American Linux kernel developer, and that got me
invited to a bunch of conferences who were willing to pay my travel
expenses (since I was a starving academic), but I was paid a very
small salary compared to industry.  (We were wondering why MIT kept on
losing people to industry, so my department brought in a salary
consultant who determined that MIT was paying its people at the tenth
percentile of industry at that time.)  I doubled my salary when I went
to work for a startup, and given that VA Linux Systems imploded before
I was able to sell most of my stock, that figure was *before* any
equity compensation.

Some of the people who were smarter than me, at least in terms of
deciding to go out into industry much sooner, and who were able to
benefit from Red Hat's IPO, have multiple expensive houses and can
travel between them as the ski seasons open up.  And I also know
people working in Indiana contributing to Linux who make a tiny
fraction of what one can make in Big Tech.  I try not to get envious
over those who have done financially much better than I, and I also
try not to think that I'm inherently superior just because I've been
incredibly blessed and lucky and have a very privileged existence.
Life is unfair, and all you can do is to try to your best to make the
world a better place than when you entered it.

> There's little safeguard, for example, against "senior management"
> biases in support of certain vendors, if other vendors are excluded
> from effective participation by one of many techniques. In other
> words, there's no way it can be a level playing field for
> innovation.

The safeguard is in the maintainers' hands.  Remember, we "own" our
subsystems and to the extent that we are passionate to let it be
successful, we'll take the help from whereever we can get it.  I might
be at Company A one year, and Company B another, and if I take crappy
code from one Company, I'll end up owning that crap and I'll
ultimately need to fix it later, perhaps when I'm at another company.

It is true that as a someone who manages volunteers (regardless of
whether such volunteers are hobbyists or people who are doing the work
paid by a certain company), we can't force someone to implement a
particular feature or fix a certain bug.  As I learned from my service
on the IETF, the only power of such leaders is to say "No".  But if we
stop a good feature from getting in, that ultimately is going to be to
the detriment of our subsystem.

And if that does happen for some reason, one of the roles that Linus
plays is as an authority that someone can appeal to.  I've never seen
a support for some CPU architecture get denied just because it might
threaten existing "Big Companys", for example.  I'm sure the ARM SOC's
weren't happy to see RISC-V support land in the kernel.  But if there
was an attempt to keep RISC-V out of the kernel, that's a case where
Linus would intervene, since ultimately it's *his* choice to accept a
new subsystem and a new maintainer.

> (one that is not transparent at all about functioning as such -
> preferring to give the impression that the kernel is developed by
> part-time voluntary "contributions").

Actually, the Linux Foundation has been quite transparent about this;
every few years, it relases a "Who Writes Linux Report".  Anyone who
had such an impression hasn't been paying attention:

https://www.linuxfoundation.org/wp-content/uploads/linux-kernel-report-2017.pdf
https://www.linuxfoundation.org/wp-content/uploads/2020_kernel_history_report_082720.pdf

From these reports, you'll see that in 2017 we had 8.2% of the
contributions coming from people weren't getting financial
contributions (with another 4.1% where the source of financial support
couldn't be determined).  This was down from the 2013 report, where
14.6% of the contributions came from hobbyists.

In the 2020 report, "None" was 11.95%, with the next highest
contributor being Intel at 10%, Red Hat at 8.9%, "Unknown" at 4%, and
IBM at 3.8%.  (Google was much farther down the list, at 2.8%).  Not
to put too fine a point on it, "people who receive no financial
contributions" are #1 on the "Top 20 committers list".

> The contrast with other open source communities is quite sharp
> now. There is little eleemosynary intent that can be detected any
> more. I think that is too bad, but things change.

If you look at the members of the Git, Perl and Python communitiesn, I
believe you'll find that most of the major contributors do work for
companies that pay for at least part of their open source
contributions.  Given that most people do enjoy having food with their
meals, if a OSS project is successful, this really shouldn't be a
surprise.

It is true that there is a huge long tail of OSS projects which have
not been successful, and which only exist as abandonware on
SourceForge or GitHub.  (Or in the case of OpenOffice, as part of the
Apache Consortium :-P)  But just as the vast majorities of startups end
up emploding with less than 1% becoming the IPO unicorns, I'm not so
sure it's anything more than sour graps for people to claim that the
startups which made it big were never "real startups" to begin with,
and that the story of startups is all a Big Lie.

Cheers,

						- Ted

^ permalink raw reply	[relevance 1%]

* [Cake] Fwd: Update | Starlink Beta
       [not found]     ` <CANmPVK-wsLrn4bp+pJ8j4K-ZYxQfVYqDQSBPLPKoK02KXdHBow@mail.gmail.com>
@ 2021-04-06 14:50  1%   ` Dave Taht
  0 siblings, 0 replies; 34+ results
From: Dave Taht @ 2021-04-06 14:50 UTC (permalink / raw)
  To: bloat, cerowrt-devel, Make-Wifi-fast, Cake List

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

Send a resume to:

*starlinksoftwarejobs@spacex.com <starlinksoftwarejobs@spacex.com>*

If anyone here would like to apply. Got no idea what "dynamic frame
allocation" is, but they are still testing out as quite bloated....

---------- Forwarded message ---------
From: myfriendontheinside <myfriendontheinside@gmail.com>
Date: Mon, Apr 5, 2021 at 10:18 PM
Subject: Fwd: Update | Starlink Beta
To: Dave Taht <dave.taht@gmail.com>


Starlink update email

---------- Forwarded message ---------
From: Starlink <no-reply@starlink.com>
Date: Mon, Apr 5, 2021, 7:23 PM
Subject: Update | Starlink Beta



[image: Starlink Logo]

Throughout the beta program, customer feedback has helped drive some of our
most important changes to date as we continue to test and scale the network.

The Starlink team has implemented a number of improvements since our last
update. Below are some of the key highlights:
*Starlink Expansion*
Since rollout of initial U.S. service in October 2020, Starlink now offers
limited beta service in Canada, U.K., Germany and New Zealand. To date, we
have deposits from almost every country around the world; going forward,
our ability to expand service will be driven in large part by governments
granting us licensing internationally.

*Preventative Maintenance*
Recently some beta users saw short but more frequent outages, particularly
in the evening hours. This was caused by two main issues— preventive
maintenance on various ground gateways, coupled with a network logic bug
that intermittently caused some packet processing services to hang until
they were reset. The good news is fixes were implemented and users should
no longer see this particular issue.

Gateway Availability
As more users come online, the team is seeing an increase in surges of
activity, particularly during peak hours.  The gateway infrastructure to
support these types of surges is in place, but we are awaiting final
regulatory approval to use all available channels.  Near term fixes have
been implemented to facilitate better load balancing in the interim, and
this issue will fully resolve once all approvals are received.

*Dynamic Frame Allocation*
The Starlink software team recently rolled out our dynamic frame allocation
feature which dynamically allocates additional bandwidth to beta users
based on real time usage. This feature enables the network to better
balance load and deliver higher speeds to the user.

*Connecting to the Best Satellite*
Today, your Starlink speaks to a single satellite assigned to your terminal
for a particular period of time.  In the future, if communication with your
assigned satellite is interrupted for any reason, your Starlink will
seamlessly switch to a different satellite, resulting in far fewer network
disruptions. There can only be one satellite connected to your Starlink at
any time, but this feature will allow for choice of the best satellite.
This feature will be available to most beta users in April and is expected
to deliver one of our most notable reliability improvements to date.
These upgrades are part of our overall effort to build a network that not
only reaches underserved users, but also performs significantly better than
traditional satellite internet.

To that end, the Starlink team is always looking for great software,
integration and network engineers. If you want to help us build the
internet in space, please send your resume to *starlinksoftwarejobs@spacex.com
<starlinksoftwarejobs@spacex.com>*.
Thank you for your feedback and continued support!
The Starlink Team
Space Exploration Technologies Corp | 1 Rocket Road, Hawthorne, CA 90250 |
Unsubscribe
Questions? See Starlink FAQs <https://www.starlink.com/faq>


-- 
"For a successful technology, reality must take precedence over public
relations, for Mother Nature cannot be fooled" - Richard Feynman

dave@taht.net <Dave Täht> CTO, TekLibre, LLC Tel: 1-831-435-0729

[-- Attachment #2: Type: text/html, Size: 20087 bytes --]

^ permalink raw reply	[relevance 1%]

* [Cake] Fwd: [Tech-board-discuss] Reminder: Voting procedures for the Linux Foundation Technical Advisory Board
       [not found]     <fccbdadc-a57a-f6fe-68d2-0fbac2fd6b81@labbott.name>
@ 2021-09-09 16:58  1% ` Dave Taht
  0 siblings, 0 replies; 34+ results
From: Dave Taht @ 2021-09-09 16:58 UTC (permalink / raw)
  To: cerowrt-devel, bloat, Cake List

for 5 positions there are presently only 2 nominees. I run for the
Linux Foundation TAB once in a while, just to try and somehow insert
my wish that the LF do more to improve embedded linux development
processes,  with no luck. I'm thinking about running,
now, using my starlink story as the canonical example of what's been
going increasingly wrong in that market.

But: If anyone else would like to step up and into this particular
blender though?

I like very much this new strategy for voting (it turned out I barely
qualified), described below.

---------- Forwarded message ---------
From: Laura Abbott <laura@labbott.name>
Date: Thu, Sep 9, 2021 at 9:49 AM
Subject: [Tech-board-discuss] Reminder: Voting procedures for the
Linux Foundation Technical Advisory Board
To: <ksummit@lists.linux.dev>, linux-kernel@vger.kernel.org
<linux-kernel@vger.kernel.org>,
tech-board-discuss@lists.linuxfoundation.org
<tech-board-discuss@lists.linuxfoundation.org>


Hi,

Reminder that the Linux Foundation Technical Advisory Board (TAB) annual
election will be held virtually during the 2021 Kernel Summit and Linux
Plumbers Conference. Voting will run from September 20th to September
23rd 16:00 GMT-4 (US/Eastern). The voting criteria for the 2021 election
are:

There exist three kernel commits in a mainline or stable released
kernel that both
- Have a commit date in the year 2020 or 2021
- Contain an e-mail address in one of the following tags or merged
tags (e.g. Reviewed-and-tested-by)
-- Signed-off-by
-- Tested-by
-- Reported-by
-- Reviewed-by
-- Acked-by

If you have more than 50 commits that meet this requirement you will
receive a ballot automatically.

If you have between 3 and 49 commits that meet this requirement please
e-mail tab-elections@lists.linuxfoundation.org to request your ballot.
We strongly encourage everyone who meets this criteria to request a
ballot.

We will be using Condorcet Internet Voting
Service (CIVS) https://civs1.civs.us/ . This is a voting service
focused on security and privacy. There are sample polls on the
website if you would like to see what a ballot will look like.

If you have any questions please e-mail
tab-elections@lists.linuxfoundation.org.

Thanks,
Laura

P.S. Please also consider this another reminder to consider running for
the TAB as well
_______________________________________________
Tech-board-discuss mailing list
Tech-board-discuss@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/tech-board-discuss


-- 
Fixing Starlink's Latencies: https://www.youtube.com/watch?v=c9gLo6Xrwgw

Dave Täht CEO, TekLibre, LLC

^ permalink raw reply	[relevance 1%]

* [Cake] Fwd: [NetFPGA-announce] Announcing NetFPGA PLUS 1.0
       [not found]     <AD02259F-4E80-42B7-9B02-A50023EEF2F7@cl.cam.ac.uk>
@ 2021-09-29 16:21  2% ` Dave Taht
  0 siblings, 0 replies; 34+ results
From: Dave Taht @ 2021-09-29 16:21 UTC (permalink / raw)
  To: Make-Wifi-fast, Cake List

---------- Forwarded message ---------
From: Andrew Moore <andrew.moore@cl.cam.ac.uk>
Date: Fri, Sep 24, 2021 at 2:58 PM
Subject: [NetFPGA-announce] Announcing NetFPGA PLUS 1.0
To: <cl-netfpga-announce@lists.cam.ac.uk>



It is with great excitement we announce the release of NetFPGA PLUS.

NetFPGA PLUS 1.0

NetFPGA PLUS 1.0 has arrived, available in a public repository to all,
links on the netfpga.org website. I’ve reprinted the outline, included
as part of the original announcement, at the bottom of this
newsletter. The overly optimistic timetable fell to the brutal
realities of the last 9 months.

NetFPGA PLUS has been  is a momentous effort that largely has fallen
to the broad shoulders of the increasingly slim NetFPGA team at
Cambridge; one person in particular deserves much credit for this huge
effort and for us achieving this first release.

On behalf of us all, I thank Yuta Tokusashi who has lead the NetFPGA
PLUS work throughout this effort and who has managed this despite the
extraordinary challenges of the last 18 months.

Many critical issues were managed and overcome with the expert
guidance of Noa Zilberman, while release testing and preparation would
not have been possible without the assistance of Salvator Galea.

This entire effort was enabled by many members of the excellent Xilinx
team from Gordon Brebner’s leadership and enthusiasm through to the
phenomenal efforts of the Open-NIC team; notably Yan Zhang, and Chris
Neely, as well as critical advice from Cathal McCabe, part of Xilinx
in Dublin.

My personal thanks and on behalf of the NetFPGA community to each of
them. (I’m excruciatingly aware the moment I send this email I will
realise I’ve not credited a critical member of the team - my apologies
in advance.)

I will leave some details to a future newsletter - in preparation -
but promise it shortly, as soon as we have all caught up on our sleep.

Do check out the new website, thanks to Adam Pettigrew for his efforts
there; and of course do check out the public, openly available, Apache
licensed, NetFPGA PLUS codebase too!

Items planned for the next announcement will include

1. License change for NetFPGA
2. NetFPGA PLUS plans
3. NetFPGA SUME status


Thank you all,
Andrew Moore
on behalf of the NetFPGA team.




[direct copy of the PLUS announcement from the December 2020 NetFPGA newsletter]

5. Announcing NetFPGA PLUS (formerly NetFPGA 2020) - 100Gbps and beyond.

At the ACM SOSR19 keynote, I announced the NetFPGA 2020 project,
taking forward the NetFPGA ecosystem to 100Gbps.

Called NetFPGA PLUS, this work does not require a bespoke NetFPGA
board. Instead the codebase is designed to work across a number of the
(commodity) Alveo boards that utilise the Xilinx UltraScale+ FPGA
family. This project will provide more options for the NetFPGA
community and more opportunities for NetFPGA work to continue to be
the foundation stone of future education, future designs, future
research, and ongoing success.

At this time, we have been testing across a subset of the Xilinx Alveo
board family: U200, U250, U280, and also the ancestor VCU1525 board.

A typical specification (VCU1525/U200 in this case) is support for two
QSFP28 100G ports, PCIe Gen3 x16 or Gen4 x8, up to 64GB of DDR4, and
an FPGA which sports 2,586K system logic cells, 345Mbit of on chip
memory and a great many other features beside. The U250 and U280 are
even higher specification systems.

Built upon the Xilinx Vivado toolchain, the initial release of the
NetFPGA-PLUS system still provides the same nf_datapath architecture
that we know and love.  The hybrid approach of using NetFPGA and
Xilinx components brings standard interfaces and board-specific blocks
(e.g., CMAC, PCIe), holds promise of an easier migration between
platforms, while holding constant the NetFPGA datapath and networking
capabilities, alongside host software and the build, test and
simulation infrastructure critical for development.

In the first instance we are focussed upon those users with one or
more Alveo boards in hand (or accessible remotely). The initial
release (due early in the new year) will have the basic reference
designs of NetFPGA-SUME:
-  Network Interface Card reference project
-  Switch reference project (simple switch and learning switch), and
-  IPv4 Router reference project

along with the standard NetFPGA Python3 based simulation and hardware
testing framework.

Also on the planning list (a release for Q3 2021):
- Fully integrated P4 compilation support, to provide an open P4
hardware platform
- MAC/PHY support for QSFP28 to 4xSFP28, permitting up to 8 10/25Gbps ports
- New generation open source network tester capable of many 100Gbps.







_______________________________________________
cl-netfpga-announce mailing list
cl-netfpga-announce@lists.cam.ac.uk
https://lists.cam.ac.uk/mailman/listinfo/cl-netfpga-announce


-- 
Fixing Starlink's Latencies: https://www.youtube.com/watch?v=c9gLo6Xrwgw

Dave Täht CEO, TekLibre, LLC

^ permalink raw reply	[relevance 2%]

* Re: [Cake] [PATCH net] sched: sch_cake: add bounds checks to host bulk flow fairness counts
  @ 2025-01-07  3:14  1% ` kernel test robot
  0 siblings, 0 replies; 34+ results
From: kernel test robot @ 2025-01-07  3:14 UTC (permalink / raw)
  To: Toke Høiland-Jørgensen,
	Toke Høiland-Jørgensen, Jamal Hadi Salim, Cong Wang,
	Jiri Pirko, Paolo Abeni
  Cc: oe-kbuild-all, syzbot+f63600d288bfb7057424, Eric Dumazet,
	Jakub Kicinski, Simon Horman, cake, netdev

Hi Toke,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Toke-H-iland-J-rgensen/sched-sch_cake-add-bounds-checks-to-host-bulk-flow-fairness-counts/20250106-214156
base:   net/main
patch link:    https://lore.kernel.org/r/20250106133837.18609-1-toke%40redhat.com
patch subject: [PATCH net] sched: sch_cake: add bounds checks to host bulk flow fairness counts
config: i386-buildonly-randconfig-004-20250107 (https://download.01.org/0day-ci/archive/20250107/202501071052.ZOECqwS9-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250107/202501071052.ZOECqwS9-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501071052.ZOECqwS9-lkp@intel.com/

All warnings (new ones prefixed by >>):

   net/sched/sch_cake.c: In function 'cake_dequeue':
>> net/sched/sch_cake.c:1975:37: warning: variable 'dsthost' set but not used [-Wunused-but-set-variable]
    1975 |         struct cake_host *srchost, *dsthost;
         |                                     ^~~~~~~
>> net/sched/sch_cake.c:1975:27: warning: variable 'srchost' set but not used [-Wunused-but-set-variable]
    1975 |         struct cake_host *srchost, *dsthost;
         |                           ^~~~~~~


vim +/dsthost +1975 net/sched/sch_cake.c

046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1970  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1971  static struct sk_buff *cake_dequeue(struct Qdisc *sch)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1972  {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1973  	struct cake_sched_data *q = qdisc_priv(sch);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1974  	struct cake_tin_data *b = &q->tins[q->cur_tin];
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06 @1975  	struct cake_host *srchost, *dsthost;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1976  	ktime_t now = ktime_get();
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1977  	struct cake_flow *flow;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1978  	struct list_head *head;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1979  	bool first_flow = true;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1980  	struct sk_buff *skb;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1981  	u64 delay;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1982  	u32 len;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1983  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1984  begin:
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1985  	if (!sch->q.qlen)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1986  		return NULL;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1987  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1988  	/* global hard shaper */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1989  	if (ktime_after(q->time_next_packet, now) &&
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1990  	    ktime_after(q->failsafe_next_packet, now)) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1991  		u64 next = min(ktime_to_ns(q->time_next_packet),
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1992  			       ktime_to_ns(q->failsafe_next_packet));
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1993  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1994  		sch->qstats.overlimits++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1995  		qdisc_watchdog_schedule_ns(&q->watchdog, next);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1996  		return NULL;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1997  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1998  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  1999  	/* Choose a class to work on. */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2000  	if (!q->rate_ns) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2001  		/* In unlimited mode, can't rely on shaper timings, just balance
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2002  		 * with DRR
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2003  		 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2004  		bool wrapped = false, empty = true;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2005  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2006  		while (b->tin_deficit < 0 ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2007  		       !(b->sparse_flow_count + b->bulk_flow_count)) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2008  			if (b->tin_deficit <= 0)
cbd22f172df782 Kevin 'ldir' Darbyshire-Bryant 2019-12-18  2009  				b->tin_deficit += b->tin_quantum;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2010  			if (b->sparse_flow_count + b->bulk_flow_count)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2011  				empty = false;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2012  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2013  			q->cur_tin++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2014  			b++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2015  			if (q->cur_tin >= q->tin_cnt) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2016  				q->cur_tin = 0;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2017  				b = q->tins;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2018  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2019  				if (wrapped) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2020  					/* It's possible for q->qlen to be
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2021  					 * nonzero when we actually have no
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2022  					 * packets anywhere.
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2023  					 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2024  					if (empty)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2025  						return NULL;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2026  				} else {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2027  					wrapped = true;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2028  				}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2029  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2030  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2031  	} else {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2032  		/* In shaped mode, choose:
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2033  		 * - Highest-priority tin with queue and meeting schedule, or
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2034  		 * - The earliest-scheduled tin with queue.
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2035  		 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2036  		ktime_t best_time = KTIME_MAX;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2037  		int tin, best_tin = 0;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2038  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2039  		for (tin = 0; tin < q->tin_cnt; tin++) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2040  			b = q->tins + tin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2041  			if ((b->sparse_flow_count + b->bulk_flow_count) > 0) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2042  				ktime_t time_to_pkt = \
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2043  					ktime_sub(b->time_next_packet, now);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2044  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2045  				if (ktime_to_ns(time_to_pkt) <= 0 ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2046  				    ktime_compare(time_to_pkt,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2047  						  best_time) <= 0) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2048  					best_time = time_to_pkt;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2049  					best_tin = tin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2050  				}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2051  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2052  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2053  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2054  		q->cur_tin = best_tin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2055  		b = q->tins + best_tin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2056  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2057  		/* No point in going further if no packets to deliver. */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2058  		if (unlikely(!(b->sparse_flow_count + b->bulk_flow_count)))
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2059  			return NULL;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2060  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2061  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2062  retry:
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2063  	/* service this class */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2064  	head = &b->decaying_flows;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2065  	if (!first_flow || list_empty(head)) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2066  		head = &b->new_flows;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2067  		if (list_empty(head)) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2068  			head = &b->old_flows;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2069  			if (unlikely(list_empty(head))) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2070  				head = &b->decaying_flows;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2071  				if (unlikely(list_empty(head)))
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2072  					goto begin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2073  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2074  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2075  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2076  	flow = list_first_entry(head, struct cake_flow, flowchain);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2077  	q->cur_flow = flow - b->flows;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2078  	first_flow = false;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2079  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2080  	/* triple isolation (modified DRR++) */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2081  	srchost = &b->hosts[flow->srchost];
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2082  	dsthost = &b->hosts[flow->dsthost];
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2083  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2084  	/* flow isolation (DRR++) */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2085  	if (flow->deficit <= 0) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2086  		/* Keep all flows with deficits out of the sparse and decaying
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2087  		 * rotations.  No non-empty flow can go into the decaying
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2088  		 * rotation, so they can't get deficits
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2089  		 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2090  		if (flow->set == CAKE_SET_SPARSE) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2091  			if (flow->head) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2092  				b->sparse_flow_count--;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2093  				b->bulk_flow_count++;
712639929912c5 George Amanakis                2019-03-01  2094  
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2095  				cake_inc_srchost_bulk_flow_count(b, flow, q->flow_mode);
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2096  				cake_inc_dsthost_bulk_flow_count(b, flow, q->flow_mode);
712639929912c5 George Amanakis                2019-03-01  2097  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2098  				flow->set = CAKE_SET_BULK;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2099  			} else {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2100  				/* we've moved it to the bulk rotation for
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2101  				 * correct deficit accounting but we still want
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2102  				 * to count it as a sparse flow, not a bulk one.
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2103  				 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2104  				flow->set = CAKE_SET_SPARSE_WAIT;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2105  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2106  		}
712639929912c5 George Amanakis                2019-03-01  2107  
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2108  		flow->deficit += cake_get_flow_quantum(b, flow, q->flow_mode);
712639929912c5 George Amanakis                2019-03-01  2109  		list_move_tail(&flow->flowchain, &b->old_flows);
712639929912c5 George Amanakis                2019-03-01  2110  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2111  		goto retry;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2112  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2113  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2114  	/* Retrieve a packet via the AQM */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2115  	while (1) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2116  		skb = cake_dequeue_one(sch);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2117  		if (!skb) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2118  			/* this queue was actually empty */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2119  			if (cobalt_queue_empty(&flow->cvars, &b->cparams, now))
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2120  				b->unresponsive_flow_count--;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2121  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2122  			if (flow->cvars.p_drop || flow->cvars.count ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2123  			    ktime_before(now, flow->cvars.drop_next)) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2124  				/* keep in the flowchain until the state has
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2125  				 * decayed to rest
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2126  				 */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2127  				list_move_tail(&flow->flowchain,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2128  					       &b->decaying_flows);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2129  				if (flow->set == CAKE_SET_BULK) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2130  					b->bulk_flow_count--;
712639929912c5 George Amanakis                2019-03-01  2131  
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2132  					cake_dec_srchost_bulk_flow_count(b, flow, q->flow_mode);
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2133  					cake_dec_dsthost_bulk_flow_count(b, flow, q->flow_mode);
712639929912c5 George Amanakis                2019-03-01  2134  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2135  					b->decaying_flow_count++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2136  				} else if (flow->set == CAKE_SET_SPARSE ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2137  					   flow->set == CAKE_SET_SPARSE_WAIT) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2138  					b->sparse_flow_count--;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2139  					b->decaying_flow_count++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2140  				}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2141  				flow->set = CAKE_SET_DECAYING;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2142  			} else {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2143  				/* remove empty queue from the flowchain */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2144  				list_del_init(&flow->flowchain);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2145  				if (flow->set == CAKE_SET_SPARSE ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2146  				    flow->set == CAKE_SET_SPARSE_WAIT)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2147  					b->sparse_flow_count--;
712639929912c5 George Amanakis                2019-03-01  2148  				else if (flow->set == CAKE_SET_BULK) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2149  					b->bulk_flow_count--;
712639929912c5 George Amanakis                2019-03-01  2150  
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2151  					cake_dec_srchost_bulk_flow_count(b, flow, q->flow_mode);
c75152104797f8 Toke Høiland-Jørgensen         2025-01-06  2152  					cake_dec_dsthost_bulk_flow_count(b, flow, q->flow_mode);
712639929912c5 George Amanakis                2019-03-01  2153  				} else
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2154  					b->decaying_flow_count--;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2155  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2156  				flow->set = CAKE_SET_NONE;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2157  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2158  			goto begin;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2159  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2160  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2161  		/* Last packet in queue may be marked, shouldn't be dropped */
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2162  		if (!cobalt_should_drop(&flow->cvars, &b->cparams, now, skb,
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2163  					(b->bulk_flow_count *
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2164  					 !!(q->rate_flags &
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2165  					    CAKE_FLAG_INGRESS))) ||
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2166  		    !flow->head)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2167  			break;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2168  
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2169  		/* drop this packet, get another one */
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2170  		if (q->rate_flags & CAKE_FLAG_INGRESS) {
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2171  			len = cake_advance_shaper(q, b, skb,
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2172  						  now, true);
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2173  			flow->deficit -= len;
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2174  			b->tin_deficit -= len;
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2175  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2176  		flow->dropped++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2177  		b->tin_dropped++;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2178  		qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb));
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2179  		qdisc_qstats_drop(sch);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2180  		kfree_skb(skb);
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2181  		if (q->rate_flags & CAKE_FLAG_INGRESS)
7298de9cd7255a Toke Høiland-Jørgensen         2018-07-06  2182  			goto retry;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2183  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2184  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2185  	b->tin_ecn_mark += !!flow->cvars.ecn_marked;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2186  	qdisc_bstats_update(sch, skb);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2187  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2188  	/* collect delay stats */
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2189  	delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb)));
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2190  	b->avge_delay = cake_ewma(b->avge_delay, delay, 8);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2191  	b->peak_delay = cake_ewma(b->peak_delay, delay,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2192  				  delay > b->peak_delay ? 2 : 8);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2193  	b->base_delay = cake_ewma(b->base_delay, delay,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2194  				  delay < b->base_delay ? 2 : 8);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2195  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2196  	len = cake_advance_shaper(q, b, skb, now, false);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2197  	flow->deficit -= len;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2198  	b->tin_deficit -= len;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2199  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2200  	if (ktime_after(q->time_next_packet, now) && sch->q.qlen) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2201  		u64 next = min(ktime_to_ns(q->time_next_packet),
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2202  			       ktime_to_ns(q->failsafe_next_packet));
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2203  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2204  		qdisc_watchdog_schedule_ns(&q->watchdog, next);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2205  	} else if (!sch->q.qlen) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2206  		int i;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2207  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2208  		for (i = 0; i < q->tin_cnt; i++) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2209  			if (q->tins[i].decaying_flow_count) {
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2210  				ktime_t next = \
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2211  					ktime_add_ns(now,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2212  						     q->tins[i].cparams.target);
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2213  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2214  				qdisc_watchdog_schedule_ns(&q->watchdog,
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2215  							   ktime_to_ns(next));
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2216  				break;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2217  			}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2218  		}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2219  	}
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2220  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2221  	if (q->overflow_timeout)
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2222  		q->overflow_timeout--;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2223  
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2224  	return skb;
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2225  }
046f6fd5daefac Toke Høiland-Jørgensen         2018-07-06  2226  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[relevance 1%]

* Re: [Cake] [Bloat] In loving memory of Dave Täht <3
       [not found]         ` <976DC4FC-44CA-4C7E-90E0-DE39B57F01E1@comcast.com>
@ 2025-04-02 13:59  1%       ` Livingood, Jason
  2025-04-02 19:51  0%         ` David P. Reed
  0 siblings, 1 reply; 34+ results
From: Livingood, Jason @ 2025-04-02 13:59 UTC (permalink / raw)
  To: Vint Cerf, Frantisek Borsik, codel-wireless,
	Jeremy Austin via Rpm, cerowrt-commits, Make-Wifi-fast, libreqos,
	Dave Taht via Starlink, Herbert Wolverson,
	Frantisek (Frank) Borsik,
	Network Neutrality is back! Let´s make the technical
	aspects heard this time!,
	codel, cerowrt-devel, bloat, Cake List, bloat-ietf,
	cerowrt-users, Robert Chacón

Very sad news indeed! I had the pleasure of working closely with Dave for 15 years. He was generous with his time and had a unique way of bringing people together to make the internet better for everyone!


I had to go down memory lane to recall when I first really started working with him. It may have been around 2010 or so. In 2012, I started sending funds his way via my day job to help him and his merry network of collaborators work to develop the CoDel AQM. 


Funding him was not necessarily easy, as Dave had a unique way of working and was best when he had complete autonomy and only loosely outlined goals - typically hard to sell in a big company. But he could make things happen, so it worked. And I knew when he started complaining about maintenance needs on his boat, or the need to recruit a new person to the project, or about a great new (and practical!) idea, that it was time to top up his funding. ;-)


That initial CoDel support in 2012 was extended to underwrite work on his idea to develop RRUL, the first real working latency test that I can remember (https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/ <https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/>). He was also helpful in introducing me to Simon Kelley, developer of dnsmasq, so we could underwrite some IPv6 features in dnsmasq (and Dave convinced Simon to come to an IETF meeting to help gather requirements and meet folks). 


Dave got CoDel working, so we developed a compelling demo of CoDel on a DOCSIS network (via a CeroWrt-based router connected to a cable modem) and brought him along to IETF-86 in March 2013 in Orlando - see interview with Dave at https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&t=195 <https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&amp;t=195>. 


From 2014-2017, I was able to make additional financial support happen for him, so he could do R&D into how to improve buffer bloat in WiFi network links and equipment, a project he called "Make WiFi Fast". In 2020-2021 and 2024, I found funding for his work again, this time to work on accelerating AQM adoption in the real world & work related to the CAKE AQM.


Thanks in part to my longstanding collaboration with Dave, tens of millions of DOCSIS users in our network have AQM and thus far better network responsiveness. The same is true for AQMs he worked on, CeroWrt, LibreQoS, and other projects. He succeeded in his goal to make the internet better for everyone!


We will miss you, Dave!


Jason












^ permalink raw reply	[relevance 1%]

* Re: [Cake] [Bloat] In loving memory of Dave Täht <3
  2025-04-02 13:59  1%       ` Livingood, Jason
@ 2025-04-02 19:51  0%         ` David P. Reed
  2025-04-03  3:28  0%           ` [Cake] [Starlink] " the keyboard of geoff goodfellow
  0 siblings, 1 reply; 34+ results
From: David P. Reed @ 2025-04-02 19:51 UTC (permalink / raw)
  To: Livingood, Jason
  Cc: Vint Cerf, Frantisek Borsik, codel-wireless,
	Jeremy Austin via Rpm, cerowrt-commits, Make-Wifi-fast, libreqos,
	Dave Taht via Starlink, Herbert Wolverson,
	Frantisek (Frank) Borsik,
	Network Neutrality is back! Let´s make the technical
	aspects heard this time!,
	codel, cerowrt-devel, bloat, Cake List, bloat-ietf,
	cerowrt-users, Robert Chacón

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


Hi all -
 
I've already shared my sadness and appreciation of my good friend Dave on LinkedIn.
I met him through Jim Gettys at the beginning of the Bufferbloat discovery, and besides our long correspondence, I hope I have given him enough support over the years - including introducing him to my network of friends, some of whom are on this list. Others he found by himself. 
He's been a one-person social network out there, who got things done beyond what institutions seem to be able to do. (And he amazed me by managing to get a stodgy IETF crowd to pay attention to the congestion control issue, despite much institutional resistance, and academic networking researchers who never got the point). Of course, Jason Livingood worked behind the scenes very hard to bypass corporate resistance, too.

Also, I can share something that few knew about - I brought Dave into an ex parte policy discussion at the FCC about an idea being promoted that the FCC should require all routers the FCC certified to have a complete "locked down" configuration that could not be changed by users. I got brought in because of my FCC TAC involvement around Software Defined Radio. But the folks behind the proposal were just using that as an excuse - they wanted really to block WISPs by raising the cost of WiFi routers. Dave, who knew more than anything why re-flashing routers made them MORE secure and could explain it in a disarming way to lawyers and policymakers, managed to get the commissioners to understand that security wasn't something the FCC could certify, and also why commercial routers weren't at all secure. He was so much better at explaining in what you might call an inclusive, folksy way that he changed the FCC's approach significantly - away from Certifying Security entirely. (The SDR issue ended up not being relevant to routers, though SDR is still a complex policy issue that is holding back innovation in wireless systems.) I'm certain Dave has had much impact of this sort.
 
However, Dave's passing s very frustrating to me because of two things:
 
1) there is no one who can replace Dave. The things he made happen will continue, but he was only getting started on issues like improving WiFi. Again, the resistance to improving WiFi is both institutional and corporate, and researchers won't challenge the institutional and corporate shibboleths that get in the way of solving critical problems in the 802.11 implementation and systems architecture domain. (Unfortunately, WiFi has become a political term that is being used by "wireless" operators and their suppliers to fight for or against monopoly control of the airwaves, very parallel to the problems of getting engineering solutions on Internet fabric that deal with congestion. So it can't be done in the institutions and corporations focused away from the engineering challenges. That's why Dave was needed.)

2) I was thinking about how we could get Dave recognized for his contributions. Like other unsung heroes, Dave didn't work for BBN or some other moneyed entity who would commission a book or a memorial. (BBN paid Katie Hafner to write the text that later turned into her book "When Wizards Stay Up Late", which oddly only talked about the ARPANET/Internet pioneers who worked for BBN, omitting many of my Internet colleagues.)  Dave wasn't the kind of guy that gets Awards from the Computer History Museum or the ACM or IEEE. He wasn't beloved at IETF or ISOC that I know of. He's in the category of folks like Noel Chiappa or Bram Cohen or Richard Stallman or Aaron Swartz - people I think really changed the way we think about computing and internetworking, but who won't be in the official histories.

I was hoping (before this week) to try to 
On Wednesday, April 2, 2025 09:59, "Livingood, Jason via Cake" <cake@lists.bufferbloat.net> said:



> Very sad news indeed! I had the pleasure of working closely with Dave for 15
> years. He was generous with his time and had a unique way of bringing people
> together to make the internet better for everyone!
> 
> 
> I had to go down memory lane to recall when I first really started working with
> him. It may have been around 2010 or so. In 2012, I started sending funds his way
> via my day job to help him and his merry network of collaborators work to develop
> the CoDel AQM.
> 
> 
> Funding him was not necessarily easy, as Dave had a unique way of working and was
> best when he had complete autonomy and only loosely outlined goals - typically
> hard to sell in a big company. But he could make things happen, so it worked. And
> I knew when he started complaining about maintenance needs on his boat, or the
> need to recruit a new person to the project, or about a great new (and practical!)
> idea, that it was time to top up his funding. ;-)
> 
> 
> That initial CoDel support in 2012 was extended to underwrite work on his idea to
> develop RRUL, the first real working latency test that I can remember
> (https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/
> <https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/>). He was also
> helpful in introducing me to Simon Kelley, developer of dnsmasq, so we could
> underwrite some IPv6 features in dnsmasq (and Dave convinced Simon to come to an
> IETF meeting to help gather requirements and meet folks).
> 
> 
> Dave got CoDel working, so we developed a compelling demo of CoDel on a DOCSIS
> network (via a CeroWrt-based router connected to a cable modem) and brought him
> along to IETF-86 in March 2013 in Orlando - see interview with Dave at
> https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&t=195
> <https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&t=195>.
> 
> 
> From 2014-2017, I was able to make additional financial support happen for him, so
> he could do R&D into how to improve buffer bloat in WiFi network links and
> equipment, a project he called "Make WiFi Fast". In 2020-2021 and 2024, I found
> funding for his work again, this time to work on accelerating AQM adoption in the
> real world & work related to the CAKE AQM.
> 
> 
> Thanks in part to my longstanding collaboration with Dave, tens of millions of
> DOCSIS users in our network have AQM and thus far better network responsiveness.
> The same is true for AQMs he worked on, CeroWrt, LibreQoS, and other projects. He
> succeeded in his goal to make the internet better for everyone!
> 
> 
> We will miss you, Dave!
> 
> 
> Jason
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
> 

[-- Attachment #2: Type: text/html, Size: 8310 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: [Cake] [Starlink]  [Bloat] In loving memory of Dave Täht <3
  2025-04-02 19:51  0%         ` David P. Reed
@ 2025-04-03  3:28  0%           ` the keyboard of geoff goodfellow
  0 siblings, 0 replies; 34+ results
From: the keyboard of geoff goodfellow @ 2025-04-03  3:28 UTC (permalink / raw)
  To: David P. Reed
  Cc: Livingood, Jason, cerowrt-commits, bloat-ietf, Herbert Wolverson,
	Make-Wifi-fast, cerowrt-users, libreqos, Jeremy Austin via Rpm,
	Frantisek (Frank) Borsik,
	Network Neutrality is back! Let´s make the technical
	aspects heard this time!,
	codel-wireless, cerowrt-devel, bloat, Cake List, codel,
	Dave Taht via Starlink, Robert Chacón, Internet-history

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

vis-a-vis* "**thinking about how we could get Dave recognized for his
contributions" ➔➔ *At The Very Least Dave should immediately
be posthumously nominated to The InternetHallOfFame.org as Dave Most
Certainly Qualifies For *"Recognizing the People **Who Bring the Internet
to Life"*

geoff

On Wed, Apr 2, 2025 at 12:52 PM David P. Reed via Starlink <
starlink@lists.bufferbloat.net> wrote:

> Hi all -
>
>
>
> I've already shared my sadness and appreciation of my good friend Dave on
> LinkedIn.
>
> I met him through Jim Gettys at the beginning of the Bufferbloat
> discovery, and besides our long correspondence, I hope I have given him
> enough support over the years - including introducing him to my network of
> friends, some of whom are on this list. Others he found by himself.
> He's been a one-person social network out there, who got things done
> beyond what institutions seem to be able to do. (And he amazed me by
> managing to get a stodgy IETF crowd to pay attention to the congestion
> control issue, despite much institutional resistance, and academic
> networking researchers who never got the point). Of course, Jason Livingood
> worked behind the scenes very hard to bypass corporate resistance, too.
>
> Also, I can share something that few knew about - I brought Dave into an
> ex parte policy discussion at the FCC about an idea being promoted that the
> FCC should require all routers the FCC certified to have a complete "locked
> down" configuration that could not be changed by users. I got brought in
> because of my FCC TAC involvement around Software Defined Radio. But the
> folks behind the proposal were just using that as an excuse - they wanted
> really to block WISPs by raising the cost of WiFi routers. Dave, who knew
> more than anything why re-flashing routers made them MORE secure and could
> explain it in a disarming way to lawyers and policymakers, managed to get
> the commissioners to understand that security wasn't something the FCC
> could certify, and also why commercial routers weren't at all secure. He
> was so much better at explaining in what you might call an inclusive,
> folksy way that he changed the FCC's approach significantly - away from
> Certifying Security entirely. (The SDR issue ended up not being relevant to
> routers, though SDR is still a complex policy issue that is holding back
> innovation in wireless systems.) I'm certain Dave has had much impact of
> this sort.
>
>
>
> However, Dave's passing s very frustrating to me because of two things:
>
>
>
> 1) there is no one who can replace Dave. The things he made happen will
> continue, but he was only getting started on issues like improving WiFi.
> Again, the resistance to improving WiFi is both institutional and
> corporate, and researchers won't challenge the institutional and corporate
> shibboleths that get in the way of solving critical problems in the 802.11
> implementation and systems architecture domain. (Unfortunately, WiFi has
> become a political term that is being used by "wireless" operators and
> their suppliers to fight for or against monopoly control of the airwaves,
> very parallel to the problems of getting engineering solutions on Internet
> fabric that deal with congestion. So it can't be done in the institutions
> and corporations focused away from the engineering challenges. That's why
> Dave was needed.)
>
> 2) I was thinking about how we could get Dave recognized for his
> contributions. Like other unsung heroes, Dave didn't work for BBN or some
> other moneyed entity who would commission a book or a memorial. (BBN paid
> Katie Hafner to write the text that later turned into her book "When
> Wizards Stay Up Late", which oddly only talked about the ARPANET/Internet
> pioneers who worked for BBN, omitting many of my Internet colleagues.)
> Dave wasn't the kind of guy that gets Awards from the Computer History
> Museum or the ACM or IEEE. He wasn't beloved at IETF or ISOC that I know
> of. He's in the category of folks like Noel Chiappa or Bram Cohen or
> Richard Stallman or Aaron Swartz - people I think really changed the way we
> think about computing and internetworking, but who won't be in the official
> histories.
>
> I was hoping (before this week) to try to
>
> On Wednesday, April 2, 2025 09:59, "Livingood, Jason via Cake" <
> cake@lists.bufferbloat.net> said:
>
> > Very sad news indeed! I had the pleasure of working closely with Dave
> for 15
> > years. He was generous with his time and had a unique way of bringing
> people
> > together to make the internet better for everyone!
> >
> >
> > I had to go down memory lane to recall when I first really started
> working with
> > him. It may have been around 2010 or so. In 2012, I started sending
> funds his way
> > via my day job to help him and his merry network of collaborators work
> to develop
> > the CoDel AQM.
> >
> >
> > Funding him was not necessarily easy, as Dave had a unique way of
> working and was
> > best when he had complete autonomy and only loosely outlined goals -
> typically
> > hard to sell in a big company. But he could make things happen, so it
> worked. And
> > I knew when he started complaining about maintenance needs on his boat,
> or the
> > need to recruit a new person to the project, or about a great new (and
> practical!)
> > idea, that it was time to top up his funding. ;-)
> >
> >
> > That initial CoDel support in 2012 was extended to underwrite work on
> his idea to
> > develop RRUL, the first real working latency test that I can remember
> > (https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/
> > <https://www.bufferbloat.net/projects/bloat/wiki/RRUL_Spec/>). He was
> also
> > helpful in introducing me to Simon Kelley, developer of dnsmasq, so we
> could
> > underwrite some IPv6 features in dnsmasq (and Dave convinced Simon to
> come to an
> > IETF meeting to help gather requirements and meet folks).
> >
> >
> > Dave got CoDel working, so we developed a compelling demo of CoDel on a
> DOCSIS
> > network (via a CeroWrt-based router connected to a cable modem) and
> brought him
> > along to IETF-86 in March 2013 in Orlando - see interview with Dave at
> > https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&t=195
> > <https://youtu.be/NuHYOu4aAqg?si=p0SJHLNpp_6n7XP9&t=195>.
> >
> >
> > From 2014-2017, I was able to make additional financial support happen
> for him, so
> > he could do R&D into how to improve buffer bloat in WiFi network links
> and
> > equipment, a project he called "Make WiFi Fast". In 2020-2021 and 2024,
> I found
> > funding for his work again, this time to work on accelerating AQM
> adoption in the
> > real world & work related to the CAKE AQM.
> >
> >
> > Thanks in part to my longstanding collaboration with Dave, tens of
> millions of
> > DOCSIS users in our network have AQM and thus far better network
> responsiveness.
> > The same is true for AQMs he worked on, CeroWrt, LibreQoS, and other
> projects. He
> > succeeded in his goal to make the internet better for everyone!
> >
> >
> > We will miss you, Dave!
> >
> >
> > Jason
> >
> > _______________________________________________
> > Cake mailing list
> > Cake@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/cake
> >
> _______________________________________________
> Starlink mailing list
> Starlink@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/starlink
>


-- 
Geoff.Goodfellow@iconia.com
living as The Truth is True

[-- Attachment #2: Type: text/html, Size: 10578 bytes --]

^ permalink raw reply	[relevance 0%]

Results 201-234 of 234	 | reverse | sort options + mbox downloads above
-- links below jump to the message on this page --
2020-04-04  4:12     [Cake] New board that looks interesting Aaron Wood
2020-04-04 14:47     ` David P. Reed
2020-04-04 16:10       ` [Cake] [Bloat] " Dave Taht
2020-04-04 16:27         ` Aaron Wood
2020-04-27  2:45           ` Dave Taht
2020-12-18 23:48  1%         ` Aaron Wood
2021-01-04  2:11  1%           ` Dean Scarff
2020-07-21 15:32     [Cake] quantum configuration Luca Muscariello
2020-07-24 12:26     ` Toke Høiland-Jørgensen
2021-01-26 15:46  1%   ` Dave Taht
2020-07-24 15:56     [Cake] diffserv3 vs diffserv4 Justin Kilpatrick
2020-07-24 17:42     ` Kevin Darbyshire-Bryant
2020-07-25 10:12       ` Kevin Darbyshire-Bryant
2020-07-25 17:18  0%     ` Sebastian Moeller
2020-07-25 17:47  0%       ` Jonathan Morton
2020-07-25 17:48  1%     ` David P. Reed
2020-07-25 17:54  0%       ` Kevin Darbyshire-Bryant
2020-07-25 19:35  1%         ` David P. Reed
2020-07-25 20:04  0%           ` Sebastian Moeller
2020-07-25 21:33  0%             ` Kevin Darbyshire-Bryant
2020-07-25 21:27  0%           ` Jonathan Morton
2020-07-25  3:13     ` Jonathan Morton
2020-07-25 17:05  1%   ` David P. Reed
2020-07-27 21:41     [Cake] Cake, low speed ADSL & fwmark Jim Geo
2020-07-27 22:46  0% ` Jonathan Morton
2020-07-28 16:51  0%   ` Jim Geo
2020-07-28 16:54  0%     ` Jonathan Morton
2020-07-28 16:56  0%     ` Toke Høiland-Jørgensen
2020-07-28 14:52  1% ` Y
2020-11-01 10:15     [Cake] NLA_F_NESTED is missing Dean Scarff
2020-11-01 16:53  1% ` Y
2020-11-02 12:37     ` Toke Høiland-Jørgensen
2020-11-03  1:11  1%   ` Dean Scarff
2020-11-03  8:07  1%     ` Dean Scarff
2020-11-03 11:00  0%     ` Toke Høiland-Jørgensen
2020-11-04  5:48  1%       ` Dean Scarff
2020-11-04 11:27  0%         ` Toke Høiland-Jørgensen
2020-11-03  1:14  0% ` Jonathan Morton
2020-11-03  1:51  1%   ` Dean Scarff
2020-12-22 20:06     [Cake] ECN not working? xnor
2020-12-22 20:15  0% ` Jonathan Morton
2021-03-28 15:56     [Cake] wireguard almost takes a bullet Dave Taht
2021-03-29 20:28     ` [Cake] [Cerowrt-devel] " David P. Reed
2021-03-30  1:52       ` Theodore Ts'o
2021-03-31  1:23         ` David P. Reed
2021-03-31 16:08  1%       ` Theodore Ts'o
     [not found]     <wCPnMFHETQCgTR9s6iHn8w@geopod-ismtpd-2-0>
     [not found]     ` <CANmPVK-wsLrn4bp+pJ8j4K-ZYxQfVYqDQSBPLPKoK02KXdHBow@mail.gmail.com>
2021-04-06 14:50  1%   ` [Cake] Fwd: Update | Starlink Beta Dave Taht
     [not found]     <fccbdadc-a57a-f6fe-68d2-0fbac2fd6b81@labbott.name>
2021-09-09 16:58  1% ` [Cake] Fwd: [Tech-board-discuss] Reminder: Voting procedures for the Linux Foundation Technical Advisory Board Dave Taht
     [not found]     <AD02259F-4E80-42B7-9B02-A50023EEF2F7@cl.cam.ac.uk>
2021-09-29 16:21  2% ` [Cake] Fwd: [NetFPGA-announce] Announcing NetFPGA PLUS 1.0 Dave Taht
2025-01-06 13:38     [Cake] [PATCH net] sched: sch_cake: add bounds checks to host bulk flow fairness counts Toke Høiland-Jørgensen
2025-01-07  3:14  1% ` kernel test robot
2025-04-01 17:27     [Cake] In loving memory of Dave Täht <3 Frantisek Borsik
2025-04-02  1:21     ` [Cake] [Bloat] " David Lang
2025-04-02  9:06       ` Toke Høiland-Jørgensen
     [not found]         ` <976DC4FC-44CA-4C7E-90E0-DE39B57F01E1@comcast.com>
2025-04-02 13:59  1%       ` Livingood, Jason
2025-04-02 19:51  0%         ` David P. Reed
2025-04-03  3:28  0%           ` [Cake] [Starlink] " the keyboard of geoff goodfellow

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