There's a new qdisc on the block. Here's some documentation on how it works. ---------- Forwarded message ---------- From: John Fastabend Date: Mon, May 9, 2011 at 11:22 AM Subject: Re: trying to wrap my head around mqprio To: Dave Taht 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 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