From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
To: Michel Machado <michel@digirati.com.br>
Cc: Nishanth Devarajan <ndev2021@gmail.com>,
xiyou.wangcong@gmail.com, jhs@mojatatu.com, jiri@resnulli.us,
davem@davemloft.net, netdev@vger.kernel.org, doucette@bu.edu
Subject: Re: [PATCH v3 net-next] net/sched: add skbprio scheduler
Date: Mon, 9 Jul 2018 18:40:17 -0300 [thread overview]
Message-ID: <20180709214016.GD10923@localhost.localdomain> (raw)
In-Reply-To: <ababf6ae-28f5-359c-8574-a2c3306167d2@digirati.com.br>
On Mon, Jul 09, 2018 at 05:03:31PM -0400, Michel Machado wrote:
> On 07/09/2018 03:53 PM, Marcelo Ricardo Leitner wrote:
> > On Mon, Jul 09, 2018 at 02:18:33PM -0400, Michel Machado wrote:
> > > On 07/09/2018 11:44 AM, Marcelo Ricardo Leitner wrote:
> > > > On Sat, Jul 07, 2018 at 03:43:55PM +0530, Nishanth Devarajan wrote:
> > > > > net/sched: add skbprio scheduer
> > > > >
> > > > > Skbprio (SKB Priority Queue) is a queueing discipline that prioritizes packets
> > > > > according to their skb->priority field. Under congestion, already-enqueued lower
> > > > > priority packets will be dropped to make space available for higher priority
> > > > > packets. Skbprio was conceived as a solution for denial-of-service defenses that
> > > > > need to route packets with different priorities as a means to overcome DoS
> > > > > attacks.
> > > >
> > > > Why can't we implement this as a new flag for sch_prio.c?
> > > >
> > > > I don't see why this duplication is needed, especially because it will
> > > > only be "slower" (as in, it will do more work) when qdisc is already
> > > > full and dropping packets anyway.
> > >
> > > sch_prio.c and skbprio diverge on a number of aspects:
> > >
> > > 1. sch_prio.c supports up to 16 priorities whereas skbprio 64. This is
> > > not just a matter of changing a constant since sch_prio.c doesn't use
> > > skb->priority.
> >
> > Yes it does use skb->priority for classifying into a band:
> >
> > prio_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
> > {
> > struct prio_sched_data *q = qdisc_priv(sch);
> > u32 band = skb->priority;
> > ...
>
> Changing TC_PRIO_MAX from 15 to 63 risks breaking backward compatibility
> with applications.
If done, it needs to be done carefully, indeed. I don't know if it's
doable, neither I know how hard is your requirement for 64 different
priorities.
You can get 64 different priorities by stacking sch_prio, btw. And if
you implement drop_from_tail() as part of Qdisc, you can even get it
working for this cascading case too.
>
> > > 3. The queues of sch_prio.c are struct Qdisc, which don't have a method
> > > to drop at its tail.
> >
> > That can be implemented, most likely as prio_tail_drop() as above.
>
> struct Qdisc represents *all* qdiscs. My knowledge of the other qdiscs is
> limited, but not all qdiscs may have a meaningful method to drop at the
> tail. For example: a qdisc that works over flows may not know with flow is
True, but it doesn't mean you have to implement it for all available qdiscs.
> the tail. Not to mention that this would be a widespread patch to only
> support this new prio qdisc. It would be prudent to wait for the production
> success of the proposed, self-contained qdisc before making this commitment.
On the other hand, by adding another qdisc you're adding more work
that one needs to do when dealing with qdisc infrastructure, such as
updating enqueue() prototype, for example.
Once this new qdisc is in, it won't be easy to deprecate it.
Marcelo
next prev parent reply other threads:[~2018-07-09 21:40 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-07 10:13 [PATCH v3 net-next] net/sched: add skbprio scheduler Nishanth Devarajan
2018-07-09 15:44 ` Marcelo Ricardo Leitner
2018-07-09 18:18 ` Michel Machado
2018-07-09 19:53 ` Marcelo Ricardo Leitner
2018-07-09 21:03 ` Michel Machado
2018-07-09 21:40 ` Marcelo Ricardo Leitner [this message]
2018-07-10 14:03 ` Michel Machado
2018-07-10 14:33 ` Marcelo Ricardo Leitner
2018-07-11 2:25 ` Cong Wang
2018-07-11 19:33 ` Marcelo Ricardo Leitner
2018-07-13 6:05 ` Cong Wang
2018-07-13 13:04 ` Marcelo Ricardo Leitner
2018-07-13 18:26 ` Cong Wang
2018-07-14 4:39 ` Marcelo Ricardo Leitner
2018-07-17 6:41 ` Cong Wang
2018-07-11 2:32 ` Cong Wang
2018-07-11 18:37 ` Marcelo Ricardo Leitner
2018-07-13 5:07 ` Cong Wang
2018-07-13 13:00 ` Marcelo Ricardo Leitner
2018-07-13 18:17 ` Cong Wang
2018-07-14 4:51 ` Marcelo Ricardo Leitner
2018-07-17 5:36 ` Cong Wang
2018-07-11 2:38 ` Cong Wang
2018-07-11 2:57 ` Cong Wang
2018-07-11 15:24 ` Michel Machado
2018-07-19 18:39 ` Cong Wang
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180709214016.GD10923@localhost.localdomain \
--to=marcelo.leitner@gmail.com \
--cc=davem@davemloft.net \
--cc=doucette@bu.edu \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=michel@digirati.com.br \
--cc=ndev2021@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=xiyou.wangcong@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.