PSPAT Implementation

PSPAT Subsystem Implementation in the FreeBSD Kernel - Overview

PSPAT is an advanced and robust packet scheduling architecture aimed at systems that can generate tens of millions of network packets per second. Most hardware and software packet schedulers in use today fail to be fully efficient under such high load conditions. At present, the client threads are responsible for en-queuing/de-queuing the packets to/from a scheduling algorithm (SA). Hence, when there are scores of clients (Virtual Machines) operating on the same system, the lock contention to use the SA among them increases significantly and this negatively impacts the system’s potential to transmit packets at the optimum possible speed.

The idea of PSPAT is to make the client threads put their packets on lock-less queues which have been implemented as IFFQ based mailboxes. Next, a separate kernel thread ‘arbiter’ picks these packets up from the client mailboxes and queues/de-queues them to/from a Scheduling Algorithm without having to hold any locks. This is expected to significantly increase the system’s throughput. The arbiter can then also go on to transmit these packets in batches to the Network Interface or a separate kernel thread ‘dispatcher’ can be used for this purpose. At present, an attempt has been made to integrate PSPAT with dummynet by intercepting the out-going packets passing through dummynet and using dummynet’s implementation of Scheduling Algorithms with the arbiter thread to queue/de-queue the packets. The mailbox implementation and the core PSPAT implementation has been tested to work properly in stages.

Tasks Completed

Future Work

Code

https://github.com/theGodlessLakra/freebsd-pspat/tree/projects/pspat

SummerOfCode2018Projects/PSPAT (last edited 2018-10-09T08:22:29+0000 by SumitLakra)