解耦路由新实践:SONiC与VPP的L3路由演示与性能洞察 - 第二部分
在系列文章的第一部分中,我们探讨了SONiC控制平面和VPP数据平面如何通过交换机抽象接口形成一个统一的软件定义路由栈。我们概述了SONiC基于Redis的编排和VPP用户空间包处理引擎如何共同创建一个高性能、开放的路由器架构。
在这第二部分中,我们将理论付诸实践。您将通过一个连接两个SONiC-VPP路由器和Linux主机的容器化实验设置,了解该架构如何转化为一个可运行的环境。
重建L3路由演示
理解架构是基础,但通过一个实用的、基于容器的实验场景,这种集成的真正威力才会显现出来。该演示使用两个SONiC-VPP虚拟路由器和两个Linux主机构建了一个完整的L3路由环境,展示了如何配置接口、建立动态路由以及验证端到端连通性。
实验环境与拓扑
该演示是使用容器化实验环境构建的,由Containerlab等工具编排。这种方法允许从一个简单的声明性文件快速部署和配置多节点网络拓扑。拓扑包含四个节点:
- router1:一个SONiC-VPP虚拟机,充当第一个LAN网段的网关。
- router2:第二个SONiC-VPP虚拟机,充当第二个LAN网段的网关。
- PC1:一个标准的Linux容器,代表第一个LAN网段中的主机。
- PC2:另一个Linux容器,代表第二个LAN网段中的主机。
这些节点按如下方式互连:
- 一条路由器间链路连接router1:eth1和router2:eth1。
- PC1通过PC1:eth2和router1:eth2连接到router1。
- PC2通过PC2:eth2和router2:eth2连接到router2。
初始网络配置
实验室部署完成后,一个启动脚本会向所有节点应用初始的L3配置。
-
主机配置:Linux主机PC1和PC2配置了静态IP地址和路由。
- PC1被分配IP地址10.20.1.1/24,并通过其网关router1(10.20.1.254)获得一条指向网络10.20.2.0/24的静态路由。
- PC2被分配IP地址10.20.2.1/24,并通过其网关router2(10.20.2.254)获得一条指向网络10.20.1.0/24的静态路由。
-
路由器接口配置:SONiC-VPP路由器使用标准的SONiC CLI进行配置。
- router1:
- 路由器间接口Ethernet0配置为IP 10.0.1.1/30。
- 面向LAN的接口Ethernet4配置为IP 10.20.1.254/24。
- router2:
- 路由器间接口Ethernet0配置为IP 10.0.1.2/30。
- 面向LAN的接口Ethernet4配置为IP 10.20.2.254/24。
- 分配IP地址后,使用
sudo config interface startup命令启用每个接口。
- router1:
使用BGP进行动态路由
接口配置完成后,使用集成在SONiC中的FRRouting套件在两个路由器之间建立动态路由。配置通过vtysh shell应用。
- iBGP对等:在router1和router2之间建立一个内部BGP会话,因为它们都属于同一个自治系统65100。
- router1(路由器ID 10.0.1.1)配置为与10.0.1.2的router2对等。
- router2(路由器ID 10.0.1.2)配置为与10.0.1.1的router1对等。
- 路由通告:每个路由器将其连接的LAN网段通告到BGP会话中。
- router1通告网络10.20.1.0/24。
- router2通告网络10.20.2.0/24。
此BGP配置确保router1学习如何通过router2到达PC2的网络,router2学习如何通过router1到达PC1的网络。
验证与数据路径分析
最后阶段是验证配置在堆栈的每一层是否正常工作。
- 控制平面验证:可以在任一路由器上的vtysh内检查BGP会话状态和学习到的路由。在router1上,命令
show ip bgp summary将确认与router2建立了对等会话。命令show ip route将显示通过BGP从10.0.1.2学到的到10.20.2.0/24的路由。 - 数据平面验证:为了确认路由已编程到VPP数据平面,操作员需要访问syncd容器内的VPP命令行界面。命令
show ip fib将显示转发表,其中应该包含通过BGP学到的到10.20.2.0/24的路由,从而确认状态已成功从控制平面同步。 - 端到端测试:最终测试是在主机之间生成流量。从PC1执行简单的
ping 10.20.2.1应该成功。这证实了整个数据路径是正常的:PC1将数据包发送到其网关(router1),router1在其VPP FIB中执行查找并将数据包转发给router2,router2然后将其转发给PC2。返回流量遵循相反路径,验证了完整的集成解决方案。
这个使用标准容器工具和声明性配置的实践演示,有力地说明了SONiC-VPP架构在构建高性能、软件定义的L3网络方面的操作简便性和健壮性。
性能影响与未来展望
SONiC-VPP集成的优雅性与其令人印象深刻的性能以及对各种现代网络挑战的适用性相匹配。通过将数据平面从内核卸载到高度优化的用户空间框架,该解决方案解锁了传统基于软件的路由根本无法实现的能力。
性能提升令人印象深刻。VPP的基准测试一致显示其比基于内核的转发快得多,有消息称其包处理吞吐量有10倍到100倍的提升。这使得诸如在多核COTS服务器上实现“太比特IPSEC”等用例成为可能,这在几年前是无法想象的。实际部署已经验证了这一潜力。2024年ONE Summit上的一个演示展示了SONiC-VPP虚拟网关在AWS和Azure之间提供多云连接。性能测试显示应用工作负载与云提供商接入点(AWS Direct Connect和Azure ExpressRoute)之间的往返时间小于1毫秒,突显了其对高性能、低延迟应用的适用性。
这种性能水平为各种苛刻的用例打开了大门:
- 高性能边缘路由:作为虚拟路由器或网关,SONiC-VPP可以处理网络边缘的海量流量,成为专有硬件路由器强大且经济高效的替代品。
- 多云和混合云连接:该解决方案非常适合创建安全、高吞吐量的虚拟网关,将本地数据中心与多个公有云互连,正如ONE Summit演示中所展示的那样。
- 集成安全服务:VPP的性能使其成为计算密集型安全功能的绝佳平台。基于此架构的商业产品,如AsterNOS-VPP,将该解决方案打包为路由、安全(防火墙、IPsec VPN、IDS/IPS)和运营的集成平台。
虽然原始吞吐量数据令人信服,但更微妙的好处在于性能本身的性质。Linux内核尽管功能强大,但它是一个通用操作系统。其网络堆栈受到系统中断、进程调度和上下文切换等造成的非确定性延迟的影响。这带来了不可预测的延迟,可能对敏感应用有害。VPP通过在专用核心上运行于用户空间并使用轮询模式驱动程序,规避了这些不可预测性的来源。这不仅提供了高吞吐量,而且提供了一致、低延迟的性能。对于边缘的新兴工作负载,例如实时IoT数据处理、AI/ML推理和5G网络功能,这种可预测的性能通常比原始聚合带宽更为关键。因此,关键的价值主张不仅是“快”,而且是“可预测地快”。
SONiC-VPP项目并非静止的;它是开源社区内一个活跃的开发领域。未来的一个关键重点是深化集成,通过扩展SAI API向SONiC控制平面暴露更多VPP的丰富功能集。目前,SAI主要涵盖核心的L2/L3转发基础。然而,VDPP拥有大量高级功能。正在进行的开发工作致力于为网络地址转换和高级VxLAN多租户能力等功能创建SAI扩展,这将允许通过这些功能直接通过标准SONiC接口进行配置和管理。对sonic-platform-vpp GitHub仓库上拉取请求的审查显示,正在持续进行添加对复杂功能(如VxLAN BGP EVPN)的支持和改进ACL测试的工作,这表明了其健康且前瞻性的发展轨迹。
未来是软件定义且开放的
SONiC控制平面与VPP数据平面的集成远不止是一个巧妙的工程实践。它是解耦网络模型成熟度和可行性的有力证明。该架构成功结合了两个最重要的开源网络项目的优势,创建了一个灵活、高性能且不受专有硬件约束的平台。它证明,控制平面和数据平面的分离不再是一个理论概念,而是一个实用的、可部署的现实,提供了无与伦比的架构自由度。
SONiC和FD.io VPP(两者都是Linux基金会的旗舰项目)之间的协同作用,突显了协作、社区驱动开发的巨大创新能力。这种联合努力产生了一个从根本上重新定义路由器的解决方案,将其从单一的硬件设备转变为可以部署在商用服务器上的动态、高性能软件应用。
也许最重要的是,该架构提供了按照管理现代软件开发的相同原则来管理网络基础设施的工具。正如L3路由演示生命周期所示——从代码构建、用声明性文件配置、并作为版本化工件部署,SONiC-VPP栈为真正的NetDevOps铺平了道路。它使网络工程师和操作员能够拥抱自动化、版本控制和CI/CD流水线,最终将网络基础设施视为代码。
这样做,它兑现了软件定义网络的最终承诺——一个与它所支持的应用一样敏捷、可扩展和创新的网络。
参考文献
- SONiC Foundation – Linux Foundation Project https://sonicfoundation.dev/
- SONiC Architecture – Software for Open Networking in the Cloud (SONiC) – Cisco DevNet https://developer.cisco.com/docs/sonic/sonic-architecture/
- The Technology Behind FD.io – FD.io https://fd.io/technology/
- SONiC Architecture and Deployment Deep Dive – Cisco Live https://www.ciscolive.com/c/dam/r/ciscolive/global-event/docs/2025/pdf/BRKMSI-2004.pdf
- Openstack edge cloud with SONiC VPP for high-speed and low-latency multi-cloud connectivity – YouTube https://www.youtube.com/watch?v=R6elTX_Zmtk
- Pull requests · sonic-net/sonic-platform-vpp – GitHub https://github.com/sonic-net/sonic-platform-vpp/pulls
- SONiC VPP-BGP Multipath https://pantheon.tech/blog-news/demo-sonic-vpp-bgp-multipath/