Development of a NIC driver in C#
This work addresses the challenge of making driver development more accessible and secure for software developers by exploring the use of high-level languages, though it appears incremental as it builds on an existing model.
The authors tackled the problem of developing a network interface card (NIC) driver in C# to challenge the view that high-level languages are unsuitable for such tasks due to performance and hardware interaction requirements, and they aimed to assess feasibility and performance while identifying potential gaps in C# for driver development.
Drivers have a special status among the developer community that sees them as mysterious and inaccessible. We think their extensive communication with the hardware and their need of high performance are the cause of this bad reputation. According to a widely held view, these two requirements cannot be met using high level languages. However high level languages' compilers and runtimes made great progress these past years to enhance the performance of programs. The use of these languages can also reduce by a significant amount the number of bugs and security issues introduced by the programmers by taking care of some error-prone parts like memory allocation and accesses. We also think that using high level languages can help to demystify the drivers' development. With this project, we try to develop a driver for a network card, the Intel 82599, in C\#. Our goal is to find out the feasibility of such a development and the performance of such a driver. We will also be able to tell what could be missing today in C\# to write a driver. We base our driver on the model proposed by Pirelli (2020) and its implementation in C.