Multiqueue Testing Project

  • Student: Tiwei Bie (btw@)
  • Mentor: Hiren Panchasara (hiren@), George Neville-Neil (gnn@), Robert Watson (rwatson@)

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.

  • 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.
  • 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).
  • A suite of network stack behavior testing programs which consists of (a) a virtual multiqueue ethernet interface (vme), (b) a UDP packet generator based on vme, © a UDP server based on socket(2), (d) a TCP client based on lwip and vme, (e) a TCP server based on socket.
  • 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)]

(List of steps you plan to use to test your work, as discussed with your mentor)

  • summerofcode2015/multiqueuetestingproject.txt
  • Last modified: 2015/08/21 20:06
  • by HirenPanchasara