General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: "Bill Ver Steeg (versteb)" <versteb@cisco.com>
To: "bloat@lists.bufferbloat.net" <bloat@lists.bufferbloat.net>
Subject: [Bloat] sch_fq and sk->sk_pacing_rate
Date: Mon, 27 Apr 2015 14:49:30 +0000	[thread overview]
Message-ID: <AE7F97DB5FEE054088D82E836BD15BE9319C342B@xmb-aln-x05.cisco.com> (raw)

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

Bloaters (and particularly Eric)

I will try to not confuse the list, as this question is about host behaviors rather than middlebox behaviors. Having said that......

I am playing around with some application code that would benefit from pacing. The example I have in mind is MPEG-DASH style vide, but any type of ABR flow would probably benefit from the scheme I have in mind. I have done some work with client based pacing via RWND, but it is very clunky.

I am thinking of having the server tell the kernel the rate at which it wants data delivered to the client. (The client would probably tell the server via an HTTP pragma, but that is a separate can of worms....) So, the HTTP server would tell the kernel that it wants to deliver the TCP data at or below a certain max rate. There are currently hooks in sch_fq for the TCP layer to set sk_pacing_rate. It seems that I would need to add another pacing variable and have the data sent at the min of q->flow_max_rate, skb->sk->sk_pacing_rate, and this new app_pacing_rate. In other words, the old code


rate<http://lxr.free-electrons.com/ident?i=rate> = q->flow_max_rate;

if (skb<http://lxr.free-electrons.com/ident?i=skb>->sk)

   rate<http://lxr.free-electrons.com/ident?i=rate> = min<http://lxr.free-electrons.com/ident?i=min>(skb<http://lxr.free-electrons.com/ident?i=skb>->sk->sk_pacing_rate, rate<http://lxr.free-electrons.com/ident?i=rate>);

would become


rate<http://lxr.free-electrons.com/ident?i=rate> = q->flow_max_rate;

if (skb<http://lxr.free-electrons.com/ident?i=skb>->sk)

{

    rate<http://lxr.free-electrons.com/ident?i=rate> = min<http://lxr.free-electrons.com/ident?i=min>(skb<http://lxr.free-electrons.com/ident?i=skb>->sk->sk_pacing_rate, rate<http://lxr.free-electrons.com/ident?i=rate>);

    if (skb->sk->app_pacing_rate)

        rate = (min(skb->sk->app_pacing_rate, rate);

}


Thoughts?

Bill VerSteeg

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

             reply	other threads:[~2015-04-27 14:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-27 14:49 Bill Ver Steeg (versteb) [this message]
2015-04-27 15:30 ` Eric Dumazet
2015-04-27 14:56 Bill Ver Steeg (versteb)
2015-04-27 15:15 ` Steinar H. Gunderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AE7F97DB5FEE054088D82E836BD15BE9319C342B@xmb-aln-x05.cisco.com \
    --to=versteb@cisco.com \
    --cc=bloat@lists.bufferbloat.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox