SONiC & VPP: Building High-Performance Software-Defined Networks
The networking landscape is undergoing a significant shift towards disaggregation, driven by the demands of modern data centers and the rise of software-defined infrastructure. This transformation is exemplified by the integration of the Software for Open Networking in the Cloud (SONiC) control plane and the Vector Packet Processing (VPP) data plane, creating a powerful, open-source routing solution.
The Rise of Disaggregated Networking
Traditionally, network hardware and software were tightly coupled, leading to vendor lock-in and limited innovation. Disaggregation separates these components, allowing for independent selection and enhanced performance. This approach began with separating network hardware from the network operating system (NOS), a move pioneered by hyperscale operators seeking greater control, and flexibility.1 The decoupling of the control and data planes further fosters modular design and cost management.
SONiC and VPP: A Powerful Combination
SONiC, originally developed by Microsoft and now an open-source project under the Linux Foundation, provides a comprehensive suite of Layer 3 (L3) routing features.3 VPP, a high-performance software data plane, accelerates packet transmission speeds. Together, they form a fully software-defined router capable of delivering performance comparable to Application-Specific Integrated Circuits (ASICs) on standard x86 hardware while maintaining the openness and flexibility of Linux-based systems.
How SONiC and VPP Work Together
SONiC’s containers communicate asynchronously by publishing and subscribing to tables within a Redis database.3 VPP focuses on optimizing packet transmission, handling packet processing in user space. The Switch Abstraction Interface (SAI) facilitates communication between the SONiC control plane and the VPP data plane.4 The Switch State Service translates configuration into SAI calls, which are implemented by libsaivpp for the VPP platform.2
Building a Lab Environment
A practical demonstration of the SONiC-VPP architecture involves a containerized lab setup with two SONiC-VPP routers and two Linux hosts. This environment, often orchestrated by tools like Containerlab, allows for rapid deployment and configuration of a multi-node network topology.
Lab Topology
- router1: A SONiC-VPP virtual machine acting as the gateway for the first LAN segment.
- router2: A second SONiC-VPP virtual machine, serving as the gateway for the second LAN segment.
- PC1: A Linux container representing a host in the first LAN segment.
- PC2: Another Linux container representing a host in the second LAN segment.
The nodes are interconnected as follows: an inter-router link connects router1:eth1 to router2:eth1; PC1 is connected to router1 via PC1:eth2 and router1:eth2; and PC2 is connected to router2 via PC2:eth2 and router2:eth2.4
Configuration and Routing
The initial network configuration involves setting static IP addresses and routes for the Linux hosts. The SONiC-VPP routers are configured using the SONiC CLI. Dynamic routing is established between the routers using the FRRouting suite integrated within SONiC, utilizing an internal BGP (iBGP) session within Autonomous System (AS) 65100.4 Each router advertises its connected LAN segment, enabling route learning and establishing end-to-end connectivity.
Verification and Performance
Verification involves checking the BGP session status and learned routes via the vtysh shell. The forwarding table in the VPP data plane can be inspected using the vppctl command. A successful ping between the hosts confirms the functionality of the entire data path.4
Performance Implications and Future Development
VPP consistently demonstrates faster packet processing than kernel-based forwarding, with potential throughput improvements ranging from 10x to 100x.3 This enables use cases like high-performance edge routing, multi-cloud connectivity, and integrated security services. VPP’s user-space operation and poll-mode drivers minimize latency, providing predictable performance crucial for emerging workloads like real-time IoT data processing and 5G network functions.3
Ongoing development efforts focus on extending the SAI API to expose more of VPP’s features to the SONiC control plane, including Network Address Translation (NAT) and advanced VxLAN multi-tenancy capabilities.2
The Future of Networking
The integration of SONiC and VPP represents a significant step towards a more flexible, performant, and open networking future. This architecture enables NetDevOps practices, treating network infrastructure as code and embracing automation, version control, and CI/CD pipelines.7 The synergy between SONiC and VPP, both Linux Foundation projects, demonstrates the power of collaborative, community-driven development in redefining the router as a dynamic, high-performance software application.
Sources
- SONiC Foundation – Linux Foundation Project
- SONiC Architecture – Software for Open Networking in the Cloud (SONiC) – Cisco DevNet
- SONiC & VPP: Building High-Performance Software-Defined Networks
- Disaggregated Routing with SONiC and VPP: Lab Demo and Performance Insights
- Openstack edge cloud with SONiC VPP for high-speed and low-latency multi-cloud connectivity – YouTube
- Pull requests · sonic-net/sonic-platform-vpp – GitHub
- SONiC VPP-BGP Multipath