[Bloat] Some mqprio documentation

Dave Taht dave.taht at gmail.com
Mon May 9 14:38:50 EDT 2011


There's a new qdisc on the block. Here's some documentation on how it works.

---------- Forwarded message ----------
From: John Fastabend <john.r.fastabend at intel.com>
Date: Mon, May 9, 2011 at 11:22 AM
Subject: Re: trying to wrap my head around mqprio
To: Dave Taht <dave.taht at gmail.com>


On 5/8/2011 12:49 AM, Dave Taht wrote:
> I just finished backporting sfb into openwrt and was looking around
> at iproute2 when I noticed mqprio was in there now.
>
> Is there any doc on how this works? I'm about to run a big test of a
> few dozen debufferbloated wireless routers and eBDP hasn't been going
> so well.....
>
> -- Dave Täht SKYPE: davetaht US Tel: 1-239-829-5608
> http://www.bufferbloat.net <http://the-edge.blogspot.com>


Hi Dave,

Currently, there is no documentation. I should write a tc-mqprio
man page I'll try to get to this soon.

This qdisc was created to support hardware offloaded QOS. Today
a lot of hardware supports various QOS schemes. Mostly these
are 802.1Q transmission selection algorithms specifically
strict priority seems common enough and a few more support
ETS part of the 802.1Qaz spec (colloquially referred to as DCB).

The driver typically assigns queues to different traffic classes
in hardware. The problem I was trying to address with this qdisc
was expose the mapping of queues onto traffic class to the QOS layer
so we had a mechanism to steer skbs towards the correct hardware
queues based on priority. Previously drivers were using select_queue()
to do this or administrators were building implicit mappings
in QOS using multiq qdisc because they happened to know some
specifics about the hardware. This was error prone especially
when the number of queues and mappings were not static.

As it stands now applications can set the priority with SO_PRIORITY
or set the mark with SO_MARK. Then ip rules can set the priority
based on the mark and the priority will get directly mapped into
a queue set associated with a traffic class in hardware.

The mqprio netlink interface allows using a driver callback ndo_setup_tc()
to allow the driver to configure the device or the user can
override the driver defaults and assign whatever mappings they would
like. If you do this I expect you understand the hardware well enough
to know the hardware limitations. For example the Intel 82598 card
only supports 1 or 8 traffic classes but nothing in between.

Hope this helps.

Thanks,
John.



-- 
Dave Täht
SKYPE: davetaht
US Tel: 1-239-829-5608
http://the-edge.blogspot.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/bloat/attachments/20110509/1d6b0e97/attachment-0002.html>


More information about the Bloat mailing list