JITNIC: Just-in-Time Compilation for In-Network Processing
With the end to Moore's Law looming ever closer, it is becoming ever more crucial to design and effectively leverage specialized hardware components. This has taken shape in the domain of networking in the form of programmable switches and new domain-specific languages used to configure such devices. However, a large portion of the packet-processing workload is still handled by general-purpose hardware on servers despite rapid advances in the efficiency and versatility of these network devices. This paper presents JITNIC, a new formalism and corresponding software prototype, which applies methods from dynamic compilers to leverage the speed and flexibility of programmable network hardware. This novel application of just-in-time compilation defines a distributed implementation of the semantics of packet-processing programs, allowing a general-purpose CPU to delegate the execution of program traces onto the network card. After developing the theoretical foundations for just-in-time compilation for NICs, the implementation is experimentally validated in a prototype setting, producing results that indicate potential for significant speed-up in a practical system.