跳转到: 导航, 搜索

Networking-vpp

Networking-VPP

概述

Networking-VPP 项目是一个 ML2 机制驱动程序,用于控制 FD.io VPP 软件交换机。

什么是 VPP 以及为什么需要它?

VPP 是一个非常快速的软件交换机,特别适合于高网络密集型应用。

它是一个运行在 DPDK 之上的用户空间交换机,这意味着它不使用内核驱动程序从硬件获取数据包,而是直接控制硬件以加速数据包路径——更少的内核调用,意味着更少的上下文切换,意味着更快的处理速度。DPDK 还通过使用大页、确保所有内容位于 NUMA 区域内以及为交换机的日常工作提供加速功能(包括复制数据包)来优化系统内存的使用。VPP 通过使用特殊的算法来确保尽可能减少数据包处理周期数来进一步增强这一点——通过批量处理多个数据包,确保 CPU 的缓存保持活跃并避免缓存未命中。(考虑:在 10G 的峰值速率下,您每秒需要处理 1480 万个数据包,这使得每个数据包的处理时间约为 150 个时钟周期。缓存未命中可能需要 17 个周期才能处理。)

需要注意的是:VPP 致力于实现最高的网络速度。为此,它——就像所有基于 DPDK 的系统一样——将始终使用一个核心来执行其任务,即使没有流量。这是正常且预期的行为,因此当您在“top”命令中看到它时不要感到惊讶。为此付出的代价是,可以保证所有数据包始终具有低延迟。

Networking-VPP 适用于哪些场景?

Networking-VPP 仍在开发中。我们不断添加功能并与 VPP 的上游版本保持一致。截至撰写本文时(2016 年 12 月),Networking-VPP 可以将虚拟机连接在一起,并与 ML2 的 L3、DHCP 和元数据驱动程序正确互操作;它被设计为冗余的,因此系统中的单点故障不会造成严重影响并且可以恢复;并且我们已经考虑了常见的维护操作,例如升级,以便您可以在不关闭系统的情况下升级控制器甚至转发器的代码。(祝您好运,尝试升级像 OVS 或 Linuxbridge 这样的内核转发器!)它尚未完全与 Neutron 中的标准网络驱动程序(如 OVS 或 Linuxbridge)相当——安全组是一个值得注意的缺失功能——但我们希望在 2017 年 1 月针对 VPP 17.01 发布的第一个生产版本中解决大部分遗留问题。

如何参与?

我们欢迎任何感兴趣的人的贡献——只需使用我们仓库中的标准 OpenStack 审查系统提交补丁进行审查即可,https://opendev.org/x/networking-vpp。待处理的补丁位于 https://launchpad.net/networking-vpp——欢迎参与审查并对您认为不正常、不整洁或不理解的内容进行评论——我们的代码应该足够简单且注释充分,易于阅读和修复,因此没有坏问题。如果您需要帮助,您应该可以在 openstack-dev@openstack.org 邮件列表中找到有人,或者可以在 irc.freenode.net #openstack-neutron 上联系我们。我们的错误列表保存在 Launchpad 中——如果您发现问题,请从 https://launchpad.net/networking-vpp 开始。(我们欢迎任何类型的错误报告;如果 VPP 不工作,Networking-VPP 也不工作,因此请在其中提交,我们可以添加和跟踪所需的 VPP 修复。)

我可以在哪些方面提供最大的帮助?

我们欢迎任何贡献。如果您有简单的修复程序或功能添加,请直接发布。如果您想进行更大幅度的更改,并且希望在开始编码之前对想法进行第二意见,那么您可以始终提交一个标题以“RFE:”开头的错误报告,并在开始之前解释您的想法,我们将为您提供对您想法的第二意见以及有关最佳实施方法和它可能与其他管道更改交互方式的建议。