Picture of Jose Brustoloni José Carlos Brustoloni

Research on Network I/O Buffering and Scheduling

The way an operating system buffers network I/O data and schedules network I/O processing can have profound impact on network service performance and ultimately also on quality of service and security. The following items describe my work in this area.

SRP: Signal-based processing of incoming packets

Many operating systems, including Unix derivatives, process incoming packets in the context of an interrupt that has priority over any application processing. This makes systems vulnerable to denial-of-service attacks and incapable of providing quality of service guarantees. In SRP (Signaled Receiver Processing), I proposed a signal-based scheme for processing incoming packets. SRP overcomes the shortcomings of interrupt-level processing and advances previous work by being easily portable to systems that (1) do not support kernel threads (e.g., FreeBSD) or (2) have priority-based or proportional-share CPU scheduling (e.g., Eclipse/BSD). SRP is described in the paper:

NetTap: Efficient PC-based platform for network programming

Most current switches and routers are configurable but not user-programmable. This makes it hard to introduce new network services.

NetTap is a PC-based platform for prototyping, field-testing, and deploying new network services. NetTap is characterized by the following innovations:

NetTap can improve throughput up to four times relative to FreeBSD's existing network programming APIs (Berkeley packet filters, ipfw, and divert sockets):

Emulated copy: Copy avoidance with copy semantics in monolithic systems

Many operating systems, including Unix derivatives, copy data between system and application buffers. In the case of high-speed networks, such copying can severely limit end-to-end performance. I proposed emulated copy, a network I/O buffering scheme that avoids copying while preserving the copy semantics of conventional network I/O APIs, such as sockets. Emulated copy offers performance approaching that of interfaces with share or move semantics, which, unlike emulated copy, are incompatible with legacy applications:

Emulated copy can also provide performance approaching that of data passing avoidance and scheduling avoidance, techniques that are enabled by extensible kernels and can be used in applications such as device-to-device I/O and multicast:

Emulated copy interoperates with mapped files, allowing data to be passed between networks and file systems without copying and without changing existing APIs:

I/O-oriented IPC: Copy avoidance with copy semantics in microkernel systems

I proposed I/O-oriented IPC, an asymmetric IPC facility that offers two APIs: a client interface, with copy semantics, and a server interface, with semantics similar to that of kernel-level interfaces. This allows I/O-oriented IPC both to preserve compatibility with existing applications and allow easy server migration between kernel and user level. User-level servers have the advantage of being easier to debug and maintain. I demonstrated that I/O-oriented IPC gives to user-level protocol servers performance approaching that of kernel-level ones:

This result is surprising, given the poor performance of previous user-level protocol servers that have a client interface with copy semantics, e.g. Mach's BSD Unix emulation.

Buffer snap-off: Optional hardware support for emulated copy and I/O-oriented IPC

I investigated the network adapter support necessary for emulated copy. I demonstrated that even without any special hardware support (such as early demultiplexing and checksumming), emulated copy improves performance while imposing less restrictions than those of move semantics. Additionally, I proposed buffer snap-off , a new adapter feature that can be used to concatenate the data received in multiple packets. Buffer snap-off generalizes the conditions for copy avoidance using emulated copy and I/O-oriented IPC:

Back to José Brustoloni's home page.