![[NetBSD logo]](../../NetBSD.png) |
& |
![[Google logo]](http://www.google.com/intl/en/images/logo.gif) |
NetBSD-SoC: Create an in-kernel API for packet classes
Student: Anish Babu
Mentor : Herb Peyerl
Goal of the project :
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.
Approach :
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.
Status
- April 21, 2008: Community Bonding Period -- Students get to know mentors, read
documentation, get up to speed to begin working on their projects.
- May 26, 2008: Students begin coding for their GSoC projects; Google begins issuing initial student payments
- July 7, 2008: Mentors and students can begin submitting mid-term evaluations.
- July 14, 2008: Mid-term evaluation deadline; Google begins issuing mid-term student payments provided passing student survey is on file.
- August 11, 2008: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc.
- August 18, 2008: Firm 'pencils down' date. Mentors, students and organization administrators can begin submitting final evaluations to Google.
- September 1, 2008: Final evaluation deadline; Google begins issuing student and mentoring organization payments provided forms and evaluations are on file.
Deliverables
Mandatory components:
- An API for drivers to register their classes
- Add a module in PF to tag packets with their 'tokens'
- Add a module in ALTQ to shape traffic based on this token added by PF
Optional (would-be-nice) components:
- A module to be used for real time traffic
Documentation
Will be added soon
Technical Details
PF
pf.conf(5)
pf.conf(4)
pfctl(8)
ALTQ
altqd(8)
altq(9)
altq.conf(5)
tbrconfig(8)
Personal page
Anish contact:
http://anishbabu.wordpress.com/netbsd/