Bugzilla – Bug 920
[PATCH] Priority queuing for Point-to-point netdevice
Last modified: 2016-03-31 07:09:40 UTC
I have created a patch that may or may not be used in conjunction with the one in bug #897 to have multiple output queues in PointToPointDevice. There may be up to 256 queues, with the number 0 being the default and being used for compatibility. If a QosTag is present in the packet, the packet is enqueued to the matching queue, if there's room. If not, all other queues of lower priority are attempted. A "strict" priority queuing, where only the specific queue is attempted should be easy to obtain too. Right now I'm not sure how to implement this at Helper. In application level, I'm currently copying IP TOS byte to the QosTag's tid field for routed packets, and setting it directly in application before calling socket->SendTo(). Probably helper should provide some capability to allocate queues based on preference. E.g. I f I want to e.g. allocate 200 kbps for VoIP with higher priority, you might use Cisco's implicit queue limits or similar (see http://www.cisco.com/en/US/docs/ios/12_0s/feature/guide/12simql.html#wp1046949 ) For me, I'm using it to prioritize signaling traffic over bulk.
Created attachment 876 [details] Patch
On further thought, this of course should be just a separate queue type, inherited from Queue, even if it is just an array of DropTailQueue. I wonder, will this lead to ListQueue-kind of situation (contrast to ListRouting), especially if someone wants to implement Cisco-style hierarchical class-maps and service policies... Anyway, I'll refactor this into a separate queue class at some point.
Stefano, can you please review and advise if you think any parts of this should be reworked, or whether it can be closed?
I think prioritizing some kind of traffic over others pertains to the traffic control layer rather than the netdevice layer. I understand in 2010 it could only be done that way, but now it can be achieved by using queue discs. Pfifo_fast may already be used for this purpose, though some bits (i.e., setting user priorities) are still being worked on. Long story short, I believe this patch is outdated and the bug can be closed.