By David Le Goff – 6WIND Product Marketing Manager
Developers of high-end networking equipment for enterprise, cloud and mobile infrastructure applications are challenged to deliver on-going performance improvements while maintaining small form-factors. A standard Linux networking stack uses services provided by the Operating System and is subject to significant overheads associated with functions such as preemptions, threads, timers and locking. These overheads may be imposed on each packet passing through the system, resulting in a major performance penalty for networking applications. Although some improvements can be made to an OS stack to support multicore architectures, the performance of an SMP Linux implementation fails to scale linearly over multiple cores or multiple processors. Finally, the non-deterministic throughput and latency penalties of standard Linux distributions complicate the design of high-performance networking equipment that must meet hard real-time constraints.
A fast path software architecture for packet processing is the optimum solution to these problems. The networking stack is split into two layers and the lower, fast path layer runs on dedicated CPU cores to process the majority of incoming packets outside the OS environment and without incurring any of the OS overheads that degrade overall performance. Only those rare packets that require complex processing are forwarded to the OS networking stack, which performs the necessary management, signaling and control functions. Using a solution such as 6WINDGate™, in which the fast path executes in a Linux userspace environment, the system can be reconfigured (or rescheduled) dynamically as traffic patterns change in order to most efficiently share the CPU resources allocated to the control plane and the fast path. Packets are distributed across multiple cores and processed in parallel, using a run-to-completion model. The overall system performance scales linearly with the number of cores configured to run the fast path.
Figure 1: Fast Path Software Architecture
For developers whose custom applications can benefit from running in the fast path, as opposed to running in Linux, Linux-based open APIs are provided to enable this configuration. The fast path is continuously synchronized with Linux, using a shared-memory design for efficient communication with other layers of the application.
With optimized support for a wide range of industry-leading processor platforms, 6WINDGate (refer Figure 2) enables developers to maintain a single, unified application software platform that can be deployed across a product portfolio based on one or more processor architectures. The source code of the 6WINDGate fast path protocols is generic, based on a high-level API for packet handling (header manipulation, chaining, cloning), crypto, hardware queues, timers, locks etc., called the “FPN-SDK” API. This API is implemented using the SDK specific to the target processor and uses appropriate capabilities of the processor when available (falling back to software when not available). Examples of such capabilities are checksum computation, specific crypto instructions or asynchronous crypto engines, hardware queues etc.
Figure 2: 6WINDGate Multi Platform Architecture
Performance Use cases
Given the enablement of separating the network processing from the application, networking equipment manufacturers provide an easy way for scalability along with high performance while keeping small density of their solution platforms.
The result measurements below demonstrate how NEPs can handle millions of subscriber sessions on a single platform facing with confidence the current growth in workloads.
Figure 3: 6WINDGate IP Forwarding Performance
Figure 4: 6WINDGate GRE Performance