tohojo / bufferbloat-net

The source repository for the bufferbloat.net web site
https://www.bufferbloat.net
Other
52 stars 32 forks source link

Start developing the recipes #56

Closed davecb closed 3 years ago

davecb commented 3 years ago

Amend the FAQ and add a recipes page, for review.

moeller0 commented 3 years ago

"Since I use TCP BBR everywhere, I am not too concerned about the upload and so I don't shape it."

Why do you believe that using BBR saves your butt here? I would believe that you will see BBR's cyclic bandwidth probing as cyclic latency "spikes". Sure, might not be an issue for your traffic, but the same logic applies to say TCP Reno as well, as long as you are sufficiently latency tolerant ;) Also, the very moment UDP flows enter the egress mix all bets are off (these will not do BBR). Or too many flows in the initial window phase, in short I fully accept that no upstream shaper works well for you, but I would not think this to be a decent starting point for all naive users.

ibaldonl commented 3 years ago

"Since I use TCP BBR everywhere, I am not too concerned about the upload and so I don't shape it."

Why do you believe that using BBR saves your butt here? I would believe that you will see BBR's cyclic bandwidth probing as cyclic latency "spikes". Sure, might not be an issue for your traffic, but the same logic applies to say TCP Reno as well, as long as you are sufficiently latency tolerant ;) Also, the very moment UDP flows enter the egress mix all bets are off (these will not do BBR). Or too many flows in the initial window phase, in short I fully accept that no upstream shaper works well for you, but I would not think this to be a decent starting point for all naive users.

I thought that David wanted to see some real world example for ADSL so I shared the only real world example I have. This is at my home with my girlfriend and cat (not at work) and my main issue was the download latencies, not the upload ones. If you guys need it, I may try to disable BBR switching to CUBIC and do some upload tests with CAKE and limiting bandwidth. But for the moment, didn't have issues with upload in my house if I use BBR so didn't care to fiddle with it yet; if there are spikes, they are short and sporadic and not important for my use case and exigency, also we don't upload much with non-BBR devices it seems. Of course that for bigger houses or businesses, it makes all the sense in the world to take some time and shape egress too and it surely gives a better experience than using BBR alone.

moeller0 commented 3 years ago

"I thought that David wanted to see some real world example for ADSL so I shared the only real world example I have."

Oops, sorry, got carried away. Yours was a perfectly fine answer to David's question, and I should have phrased my response better.

"If you guys need it, I may try to disable BBR switching to CUBIC and do some upload tests with CAKE and limiting bandwidth."

No need to bother, it is clear that cake on the egress/upstream is going to improve things for almost all use-cases, but BBR (due to BBR's somewhat haphazard decision to make up its own mind when a lost packet means congestion and when it can be ignored); I say this as upstream shaping on DSL links requires in the extreme zero sacrifice of throughput...

davecb commented 3 years ago

The minimal viable revision is ready for the light of day, reviewers (;-))

richb-hanover commented 3 years ago

Two thoughts, both related to hiding our light under a bushel... Thanks.

  1. Would you provide a link to the recipe page?
  2. When it's ready for the full glare of public review, the Recipes should be listed as a News Item on the bufferbloat home page.
tohojo commented 3 years ago

Rich Brown notifications@github.com writes:

  1. When it's ready for the full glare of public review, the Recipes should be listed as a News Item on the bufferbloat home page.

I'll update the "Recent News & Articles" to sort by modification date instead of initial publication date...

ibaldonl commented 3 years ago

Shouldn't the recipes include also shaping the ingress?

davecb commented 3 years ago

I'll ask the list about the bandwidth questions in the recipies page.

davecb commented 3 years ago

Yes, please!

On 2020-10-04 4:27 p.m., Toke Høiland-Jørgensen wrote:

@tohojo requested changes on this pull request.

A few more nits :)


In content/codel/wiki/CakeRecipes.mdhttps://github.com/tohojo/bufferbloat-net/pull/56#discussion_r499285016:

+ +Inbound, General case +--- +This applies to most inbound cases, not just cable. + +ip link add name ifb4eth0 type ifb +tc qdisc del dev eth0 ingress +tc qdisc add dev eth0 handle ffff: ingress +tc qdisc del dev ifb4eth0 root +tc qdisc add dev ifb4eth0 root cake bandwidth 170mbit besteffort +ip link set ifb4eth0 up # important +tc filter add dev eth0 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0 + +This creates a named link for download/ingress and applies +CAKE to it. +* bandwidth is the download bandwidth of your link, often

This doesn't actually render as a bullet for some reason - needs a whole new paragraph, perhaps?


In content/codel/wiki/CakeRecipes.mdhttps://github.com/tohojo/bufferbloat-net/pull/56#discussion_r499285260:

+ ack-filter skips sending redundant acknowledgements. + bandwidth is the upload bandwidth of your link, often +taken from speed tests like http://www.dslreports.com/speedtest. + + +Inbound, General case +--- +This applies to most inbound cases, not just cable. +``` +ip link add name ifb4eth0 type ifb +tc qdisc del dev eth0 ingress +tc qdisc add dev eth0 handle ffff: ingress +tc qdisc del dev ifb4eth0 root +tc qdisc add dev ifb4eth0 root cake bandwidth 170mbit besteffort +ip link set ifb4eth0 up # important +tc filter add dev eth0 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0

This line can be simplified to: tc filter add dev eth0 parent ffff: matchall action mirred egress redirect dev ifb4eth0


In content/codel/wiki/CakeRecipes.mdhttps://github.com/tohojo/bufferbloat-net/pull/56#discussion_r499285397:

@@ -0,0 +1,88 @@ +--- +title: CakeRecipes +date: 2020-10-07T14:10:00 +lastmod: 2020-10-07T14:10:00 +type: wiki +--- +Cake Recipes +============ +Cake is the comprehensive queue management system the bufferbloat +project has been working on since 2013 and is now in general release.

s/and is now in general release/which is included in the Linux kernel since v4.19/


In content/codel/wiki/CakeRecipes.mdhttps://github.com/tohojo/bufferbloat-net/pull/56#discussion_r499285469:

@@ -0,0 +1,88 @@ +--- +title: CakeRecipes +date: 2020-10-07T14:10:00 +lastmod: 2020-10-07T14:10:00 +type: wiki +--- +Cake Recipes +============ +Cake is the comprehensive queue management system the bufferbloat +project has been working on since 2013 and is now in general release.

And maybe use the same formulation on the other page (above)?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/tohojo/bufferbloat-net/pull/56#pullrequestreview-501656230, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAEITEOJSM76JHMNCGBQ3VTSJDLBZANCNFSM4RGHN7TQ.

-- David Collier-Brown, | Always do right. This will gratify System Programmer and Author | some people and astonish the rest dave.collier-brown@indexexchange.commailto:dave.collier-brown@indexexchange.com | -- Mark Twain

CONFIDENTIALITY NOTICE AND DISCLAIMER : This telecommunication, including any and all attachments, contains confidential information intended only for the person(s) to whom it is addressed. Any dissemination, distribution, copying or disclosure is strictly prohibited and is not a waiver of confidentiality. If you have received this telecommunication in error, please notify the sender immediately by return electronic mail and delete the message from your inbox and deleted items folders. This telecommunication does not constitute an express or implied agreement to conduct transactions by electronic means, nor does it constitute a contract offer, a contract amendment or an acceptance of a contract offer. Contract terms contained in this telecommunication are subject to legal review and the completion of formal documentation and are not binding until same is confirmed in writing and has been signed by an authorized signatory.

moeller0 commented 3 years ago

Hi Dave,

On Oct 4, 2020, at 16:01, David Collier-Brown notifications@github.com wrote:

@davecb commented on this pull request.

ibaldonl wrote: Shouldn't the recipes include also shaping the ingress?

Yes, which reminded me my original idea was to make it easy for the recipes to be added to, and go from most general to most specific.

In content/codel/wiki/CakeRecipes.md:

+ +* dev is the device, eth0 in this case +* root means this is the "top" qdisc +* docsis says tune for a cable-tv uplink: cable TV follows the +_docsis_ standards +* The ack-filter skips sending redundant acknowlegements +* nat tells cake network address translation is happening on _this_ +machine, not a separate router +* bandwidth is the downbound bandwidth of your link, often taken +from DSLReport's speed test + + +Internet over Telephone Lines +----------------------------- + +TBD

@moeller0 commented on this pull request.

Hi Dave,

great work, maybe you can have a look at https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm and https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm-details where we collected quite some recommendations fo OpenWrt users that basically should translate well to all users of fq traffic shapers in general? (for some reason I don't see that in the web gui, so I pasted it)

That's hugely helpful to the openwrt users, and indeed a guide for my work here. At the moment I'm trying to get a first sane recommendation in place to point to from LWN. If it's OK, I'll refer to your work as well.

By all means refer to it, but please understand,  that this is not my work, I added a few details (enough to include myself in the "...we collected..."), but the core of the OpenWrt documentation was written by Rich B. Hannover with a number of edits by other's.

The hidden agenda is to bootstrap "grandma's sysadmin", meaning people like me. I'm working on

• a demonstration of how bad things really are with us all working from home, • a path that grandma (and my office guy at work) can follow to get them out of the hole, and • references to learn more. That's why I was looking for a credible one-liner for someone who had to live with DSL (;-))

--dave

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

tohojo commented 3 years ago

Iván Baldo notifications@github.com writes:

@ibaldonl commented on this pull request.

+ ack-filter skips sending redundant acknowledgements. + bandwidth is the upload bandwidth of your link, often +taken from speed tests like http://www.dslreports.com/speedtest. + + +Inbound, General case +--- +This applies to most inbound cases, not just cable. +``` +ip link add name ifb4eth0 type ifb +tc qdisc del dev eth0 ingress +tc qdisc add dev eth0 handle ffff: ingress +tc qdisc del dev ifb4eth0 root +tc qdisc add dev ifb4eth0 root cake bandwidth 170mbit besteffort +ip link set ifb4eth0 up # important +tc filter add dev eth0 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0

That line was taken from https://www.bufferbloat.net/projects/codel/wiki/Cake/ under "Inbound configuration under linux". It should be simplified there as well.

Good point. And oh boy, is that page out of date; will do some updates throughout...