Code Monkey home page Code Monkey logo

bufferbloat-net's Introduction

Bufferbloat.net web site source

This repo contains the source files for the bufferbloat.net web site (https://www.bufferbloat.net). The site is built using the Hugo static site generator (https://gohugo.io) and most of the content is automatically converted from the old bufferbloat.net redmine installation.

Contributions to improve the content are very welcome. See below for some pointers on how the content is organised and how to contribute.

Organisation of this repository

The content shown on the site is all in the content directory. Each subdirectory is a project, which in turn has subdirectories corresponding to the different types of content. Currently, these are wiki for Wiki pages, news for news items and issues for the exported bug reports from the old site. The latter is mainly kept for archival purposes, and is probably not worth editing.

The scripts used to convert the content from the old site live in the export directory, which also contains the csv files with the data. Hopefully, there shouldn't be a need to run these anymore. The old-projects directory contains exported data for projects that it was not deemed relevant to move over to the new site. This data is here for archival purposes and is not used when generating the site.

Finally, the static directory contains resources such as images and CSS files used for the site layout, and the layouts directory contains the templates Hugo uses to build the site. For more information on how the latter works, consult the documentation at https://gohugo.io.

Contributing to the Site

To contribute to the site, simply clone the repository, make your changes to the markdown file corresponding to the page you wish to edit, commit the results and open a pull request against this repository. It is also possible to file issues to point out errors or omissions, or give suggestions for the content.

The site is build using the Hugo static site generator. Version 0.16 (not higher!) is required to build the site. See the Using Docker for development section below.

Live Editing

When making changes, you can see a local version of the site by installing Hugo and running hugo serve in this directory. That will run a web server on localhost, which you can navigate to and see a live version of the site.

Creating a new News Item

You can use the hugo binary to create a new news item with appropriate front matter (the stuff in the top that tells Hugo that this is a news item). First, decide which project the news item should belong to, then issue a command like

hugo new -k news bloat/news/2016-06-12-my-news-heading.md

to create the new file (the -k news tells Hugo to create a news item).

The new item will be marked as a draft and appear in the content/bloat/news directory. You can then edit the file (don't forget to the title and add your name as author). While you are editing, you can run hugo -D serve to see the changes in real-time (the -D means 'show drafts'). When you are done you can either manually change the draft status at the top of the file, or you can use the hugo undraft command to do it for you. Then add the file to git and submit a pull request to have your news item included on the site.

Using Docker for development

The Bufferbloat.net site relies on Hugo 0.16 capabilities. (Newer Hugo versions give WARNING: blackfriday's sourceRelativeLinksEval is deprecated ... error messages for the hundreds of internal links in the repo.)

Docker provides an easy way to run Hugo 0.16 reliably on any OS. The codycraven/docker-hugo repo has a container for creating and running a Hugo server in Docker.

The Docker instance operates on the current directory, so normal editing, git commands, etc. work as desired.

Run the Hugo server in Docker

This command runs the Hugo server, listening on port 8080. To use it, cd <directory-containing-your-Hugo-files> then issue the docker run... command each time you edit the site.

cd <directory-containing-your-Hugo-files>

docker run --rm -it \
    -v /tmp:/tmp:Z \
    -v $(pwd):/site:Z -w /site \
    -p 8080:8080 \
    codycraven/hugo:0.16 \
    server \
    --bind=0.0.0.0 \
    --port=8080 \
    -w

Follow the link to localhost:8080/projects, and you'll see the blog as it appears. As you edit the underlying pages, the web display will update live.

bufferbloat-net's People

Contributors

artoria2e5 avatar asche77 avatar cascadingstyletrees avatar cbachert avatar dekker500 avatar dtaht avatar flupsy avatar heistp avatar henkpoley avatar hexchain avatar idealisms avatar ivanbaldo avatar kojoley avatar martynodlrr avatar moeller0 avatar qrbaker avatar richb-hanover avatar simoniremonger avatar thovthe avatar tmmorin avatar tohojo avatar whereami8224 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bufferbloat-net's Issues

Showing two graphs side by side

I'd like to be doing "before - after" plots side by side. It doesn't appear hugo by default lets you do anything fancy with graphics like this. I figure writing a new macro {{%figure2 src1= src2= %}} to do it right would be good - but in this modern era do you use tables? div tags? Apply some extra css. what?

also would like to "flow" text along the side of a graph (image align left or right)

(yes, I'm willing to learn enough go/hugo/templating to do this, but being too ancient to even know how to apply styles in modern is a PITA)

Hundreds of errors when running hugo locally

When I use hugo serve on the master branch, I get hundreds of these errors:

ERROR: 2016/06/14 error processing shortcode shortcodes/issue_journal.html
 ERR: template: shortcodes/issue_journal.html:5:14: executing "shortcodes/issue_journal.html" at <markdownify>: wrong type for value; expected string; got template.HTML

I don't know enough about hugo to know how to fix them. Thoughts? Thanks!

Bufferbloat on variable bandwidth (mobile LTE/5G)

Is there any development ongoing for handling bufferbloat with variable bandwidths?

For a lot of volks LTE/5G is the only option for their internet access and therefore have to deal with variable bandwidth.
In my case the download bandwidth varies from 30 to 130 Mbit/s (Download) 30 to 45 Mbit/s (Upload) which makes every algorithm with fixed bandwith unuseable, if you do not want to go with the minimum of 30 Mbit/s.

best regards

Maybe suggest using BBR congestion control?

For kernel >= 4.9 maybe it should be suggested to add this in sysctl:
net.ipv4.tcp_congestion_control = bbr
And this in /etc/modules:
tcp_bbr
Maybe I am wrong though... but if thats the case, then it could be mentioned in the webpage why I am wrong so others don't ask themselves this same question.
Thanks a lot!

How to trigger a re-render of hugo site?

I updated the bufferbloat.net repo to scratch a couple itches...

  • Fix the "What Can I Do About Bufferbloat?" page to be more explicit and less duplicative of other pages.
  • Remove/Update references to LEDE in favor of "OpenWrt"
  • Make a pass through the CeroWrt index.md page to note that it's an archive of older work
  • Fix a couple broken links

How does the official bufferbloat.net site get updated with the new content? Thanks.

Not always the router

bufferbloar.net usually points the router as the source of buffer-bloat, but that's not always the case. It can be any network device.

For example my computer suffered from it on the Ethernet cable, but when I tried with a second computer the phenomenon didn't appear. So the Ethernet adapter was the cause itself, not the router.

I think it would be good clarifying that it could be due to any device. And mention that usually the router is to blame, just not always.

Some quick random notes towards future bloat work (fun?)

@tohojo @richb-hanover @heistp @chromi (et al - normally I'd use the bloat list or a google doc for this, I don't know all the aliases folk use on github)

I have no idea what will do for a next project, if we do one. 7 years of debloating enough for y'all?

Whats left worth fixing?

Personally I have an hankering to go look hard at a "sane ecn", which in part involves looking at tcps and in part improving codel-ly responses to it. Other stuff might be fixing bloat in things like openvpn or wireguard. Am still in search of another wifi chipset worth fixing. Nobody seems very interested in speeding up cake, ebpf, or doing bobbie. As I have an early deployment of "fast" cake, running at 100mbit on wndr3800s, I personally need a faster shaper, so I took an old fork of that ( https://github.com/dtaht/sch_tart ) and will try to get it working at some point.

I could see trying to add better network stats awareness to various core applications, like netperf,
apache, ssh, and freeswitch, to get them to notice things like retransmits. "smartperf". Babel could also use some love here in how it blasts traffic. I'd like to be fiddling with audio at 2.7ms intervals.

I put a bunch of possibly worthwhile things for flent over here: tohojo/flent#148

On the tcp front, I've been forced of late to think about ecn issues hard ( systemd/systemd#9880 ) . I've done my best to ignore the whole issue for more than a few years now. Part of my problem is that few share my deep skepticism about it or my level of testing and the other is what it does to my BP when discussed. redteaming it would be reassuring.

Stuff I'd like to try includes:

fq

  • can we make it faster?
  • researching van's timer queue idea and virtualclock based fq and the etx qdisc

aqm

tcps (see also: systemd/systemd#9725 )

  • if we are stuck at cwnd 2 and still getting loss, reduce the initial window, constrain growth for a while,
    pretend we are re-ordering (?).
  • make cwnd 1 possible again
  • decrease the mss dynamically as torrent used to do
  • evolve tsq + pacing so that pacing is independent is independent of the cwnd
  • an ect(0) - should at the very least constrain cwnd growth as it happens in the case of loss or reordering, I don't think it does. I'm also unsure if we have rfc compliant behavior on retransmits
  • both ecn and loss on a RTT - cut back by more than half
  • Fiddle with bbr
  • try to incorporate some bbr ideas into cubic
  • fiddle with quic

cake

  • anything that could make it faster
  • ISP version
  • cake-mq

fq_codel

  • Make sure the bsd version is right

BQL

  • I'd like to see this scale better with multiple hardware queues
  • AIMD version

website

  • could use some love in general
  • lartc finally died we can replace it
  • hugo is at v44, and we are stuck at 18
  • doing a better educational video
  • pursuing publicity, picking another fight with the fcc
  • more talks

videoconferencing

  • try breaking the audio and video into different tuples, use the audio as a clock for the video
  • try improving encoders to have better changes in network conditions

???
...

Or we could all declare victory and stay home merely enjoying our vastly better networks. I'm thinking of taking up starcraft 2 again. Anybody want to take on me as a Protoss? :)

Error from PowerShell command

PS C:\Windows\system32> set-nettcpsetting -CongestionProvider CTCP
set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
 set-nettcpsetting -CongestionProvider CTCP

    + CategoryInfo          : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
   g) [Set-NetTCPSetting], CimException
    + FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
 set-nettcpsetting -CongestionProvider CTCP

    + CategoryInfo          : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
   g) [Set-NetTCPSetting], CimException
    + FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
 set-nettcpsetting -CongestionProvider CTCP

+ CategoryInfo          : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
   g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

set-nettcpsetting : Property CongestionProvider is read-only
At line:1 char:1
 set-nettcpsetting -CongestionProvider CTCP

+ CategoryInfo          : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
   g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
 set-nettcpsetting -CongestionProvider CTCP

+ CategoryInfo          : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
   g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

Bufferbloat on wireless

Greetings!

I m new to bufferbloat control... i m using a simple HFSC script to control my bufferbloat... i m on 30/30 fiber limited to 22 on both with veth system... problem that i m facing is that my upload goes very high on 5ghz wireless(mt7610E)...

What happens on my 5ghz is that it goes beyond 22 mbps and while it does i see bufferbloat... it eventually comes to settle at 22 mbps... but this thing doesnt happen to me on my 2.4 ghz as well as on my wired...

Broken links in import

The import scripts try to resolve links between wiki pages, and it mostly works, but there are a bunch that didn't resolve. These probably need to be fixed up manually. They appear marked with <link> tags in the markdown source, so grepping for these and fixing them should be fairly straight forward.

[Crowdfunding]

I believe that you should make a kickstarter/similar website campaign for being able to create an even faster wifi,and to remunerate you because you have merit!
thank you for making a better world.
<3

couple questions on formatting

This is the first time I've looked at the git tree in forever.

languageCode: "en-us" # why not utf-8?

By what magic operation is a table of contents generated?

I see I've been using markdown wrong - I would use # title of section ## subtitle, where here its

WHATEVER

The rss.xml stuff kind of needs love, I think.

I was about to try and finish a few things on blog.cerowrt.org - notably "found with flent" and "flaws in flent" and to start a tutorial for lede users, and perhaps those might belong here rather than there. I feel compelled to write in a a highly opinionated bloggy style - at least at first, over there - that perhaps isn't the right thing here, though.

Otherwise the usability, look and feel are all great, the cdn behavior is marvellous (god, something like 1.5M wordpress sites compromised last week), and I should really, really, really go and make an edit pass here like I've been promising to do for a year now.

Van Jacobson links are dead

The Van Jacobson links to the video and slides on the Bloat Videos page are both dead. The video times out, and the slides were sadly shared via Google+, which was unceremoniously dumped in a ditch this April.

Given it is the primary source of the "fountain" analogy alluded to in the introduction page, I think its important to address this.

If someone has a backup of the video, could we look at getting it on a hosting site like YouTube or perhaps Peertube? Failing that, a written description of the fountain model would be a nice idea. If someone can explain it to me (I was trying to learn about it when I discovered this linkrot) I'd be happy to draft something.

Odd problem when running hugo locally

The live bufferbloat.net site seems fine, but I get broken links everywhere when trying to run locally with hugo serve. I set up the following as an experiment:

[Introduction]({{< relref "bloat/wiki/Introduction.md" >}}) 
[Introduction](Introduction)
[Introduction](Introduction.md)
[Introduction](./Introduction.md)

The first and second links work as expected, but the third and fourth (with ".md" suffix) gives the plain/unstyled 404 page not found page. Any clues (beyond dropping all the .md suffixes?)

Some things that are unclear from the 'Getting SQM Running Right' article

I just arrived at the bufferbloat website, I've read a few introductory articles, now I'm reading 'what can I do about bufferbloat', and in Step 1 the author directs me to the 'getting sqm running right' to see an example of SQM tuning.

This article is very informative but I feel like I'm going off the deep end here. For example the first plot, is that before or after the tuning? From the text it's not clear to me.

And then the article is about SQM tuning, but it looks to me like they're tuning the router's bandwith caps to avoid filling a buffer at the ISP side and not the queue management. Is that right? It's not in the text as far as I can see, maybe I missed something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.