Mentor: Hiren Panchasara (hiren@), George Neville-Neil (gnn@), Robert Watson (rwatson@)
Project description
The aim of this project is to design and implement a infrastructure to validate that a number of the network stack's multiqueue behaviours are as expected.
Approach to solving the problem
Extending tap(4) to support multiqueue input and provide the same RSS behaviours with the hardware multiqueue network cards.
Adding hooks in each layer of the network stack to collect the per-ring per-cpu per-layer statistics.
Extending netstat(1) and related tools to report these statistics.
Developing simple test applications using multiqueue tap(4) and socket(2) to validate that a number of multiqueue behaviours are as expected.
Deliverables
A general mechanism to collect the per-ring per-cpu statistics which can be used by all NIC drivers (including the extended netstat(1) which can report these statistics).
May25 - June4 (1.5 weeks): Extend the tap(4)/tun(4) to support multiqueue input. (A new module vme is implemented based on tap(4) to provide the same multiqueue behaviours with the hardware multiqueue NICs, D3425)
June5 - June14 (1.5 weeks): Add the hooks to each layer of the network stack to collect the statistics. (Done, D3415, D3416, D3417, D3418, D3421)
June15 - June28 (2 weeks): Extend netstat(1) and related tools to report on these couters. (Done, D3422)
[June26 - July3: Mid-term Evaluations]: Should be able to print the per-ring, per-cpu, per-layer statistics of the specified interface via netstat(1). (Done)
June29 - July5 (1 week): Extend socket layer to allow querying the RSS affinity of a socket using socket options. (There is an existing way to do this in FreeBSD)
July6 - July19 (2 weeks): Develop simple test applications using multiqueue tap(4)/tun(4) to validate that a number of multiqueue behaviours are as expected. (Done, D3426, D3427)
July20 - August2 (2 weeks): Refine and test the code thoroughly.
August3 - August9 (1 week): Handle unforseen problems if necessary.
August10 - August16 (1 week): Tidy up any loose ends, ensuring the code is integrated and made available in the FreeBSD repositories.
[August17: End of coding (soft)]
Test Plan
(List of steps you plan to use to test your work, as discussed with your mentor)