ABSTRACT

The network interface provides the hardware that supports the implementation of the features exposed by the software APIs. Modern network interfaces leverage various approaches to implementing the network API. Most network interfaces accelerate some portion of their native low-level programming interface (see Section 6.3); however, how much of that interface is implemented on the NIC varies from almost all [353] to almost none [13]. To complement the work done on the NIC, various networks leverage everything from threads [301] to interrupts [63] to simply application level libraries [206]. In this chapter, we explore the issues and trade-offs in modern network interface design and place them in the context of several modern network interfaces. We conclude with a look at several research efforts with implications for future network interfaces.