9. PCI Express networking basics

The PCI Express network enables a process on one machine to safely write data directly into the address space of a process running on a remote machine. This can be done using either direct store operations of the CPU (for lowest latency), using the DMA engine of the PCI Express chipset or using a system DMA resource (for lowest CPU utilization).

The PCI Express network also enables standard PCI Express devices to be accessed from remote system. It is also possible to enable PCI Express devices to stream data to remote devices or memories.

PCI Express networking is made possible and very flexible by standard Non-Transparent PCI Express bridge functionality that exists in many standard PCI Express chipsets. It enables advanced device drivers to set up direct access to designated communication areas in remote system memory and PCI Express devices.

These hardware features are safely used by Dolphins software to implement several optimized software communication protocols:

The SISCI API implements an easy to use, but yet very powerful API for accessing PCI Express networking transport and functionality directly from applications. It provides a well defined C system call interface to ease customer integration to the PCI Express Network. SISCI enables customer application to easily bypass the limitations of traditional network solutions, avoiding time consuming operating system calls, and network protocol software overhead.

SuperSockets on Linux consists of both kernel modules and a user-space library. The implementation on kernel-level makes sure that the SuperSockets socket-implementation is fully compatible with the TCP/UDP/IP-based sockets provided by the operating system. By being explicitly preloaded, the user-space library operates between the unmodified binary of the applications and the operating system and intercepts socket-related function calls. Based on the system configuration and a potential user-provided configuration, the library makes a first decision if this function call will be processed by SuperSockets or the standard socket implementation and redirects it accordingly. The SuperSockets kernel module then performs the operation on the PCI Express interconnect. If a high speed network problem is detected (e.g. cable unplugged), it will fall back and forward communication to Ethernet transparently even when the socket is under load.