[clug] Create an in - kernel API for packet classes in Net BSD operating system

aswani kumar aswani521 at gmail.com
Thu Oct 30 19:32:03 GMT 2008

Hello every one,

I saw this project recently  as part of Google Summer of Code GSOC  in
NetBSD operating system and I am interested in working on this. I am
curious to know is there such module is available for linux users
already. Please help me with suggestions.  The detailed description of
the project is given below.

Create an in-kernel API for packet classes in NetBSD


To create an in-kernel API for "Packet Classes" and for labeling
packets with their classes for special treatment by traffic shapers
and Network Interface drivers.
This API acts as a interface between software implementation of
traffic categorizers like PF, IPFilter etc. and both the software and
hardware implementation of traffic shapers like ALTQ,ath,rtw,Ethernet
etc. In an ideal case, this API makes both traffic categorizer and
traffic shaper fully interchangeable.
Make PF use the packet-classes API to convert PF tag names—see
pf.conf(5) for more about tags—to packet-class tokens, and to label
mbufs with the tokens as they exit PF.
Make ALTQ extract the packet-class tokens from mbufs and use them to
select the packet-scheduling class.


A packet categorizer is a software program that categorizes or tags a
packet being received or transmitted by kernel. For example, PF uses
pf.conf(5) file for reading in rules and adds tags to packets based on
those rulesets.ALTQ is a software traffic shaper which is integrated
with PF. It allows PF to implement class based Queuing (CBQ) because
it can read PF tags.
But device driver queues have no idea of what each packet is because
they don't understand PF tags.
Now, Packet class API plays. This API provides an interface to device
drivers which register the classes that this driver can handle.
During the registration part of the driver, a token is generated and
this token is used by the traffic categorizer to add to m_bufs.
As driver can understand this token now, it uses this tagged m_buf()
in scheduling of the packet.

Nerella , Venkata Aswani Kumar

More information about the linux mailing list