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:
- A new API that eliminates copying and greatly reduces system-call
overheads. The NetTap API efficiently supports user-level
network applications, avoiding difficulties associated with
kernel-level software.
- A bypass switch that prevents NetTap faults from jeopardizing
network connectivity.
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.