基于p4的交换机的VirtP4硬虚拟化

Hard Virtualization of P4-based switches with VirtP4

意义

VirtP4,一种概念架构,基于p4的交换机程序的硬虚拟化。与现有解决方案相比,不需要访问交换机源代码(无论是用于合并还是自定义编译)。因此,在为虚拟交换机实例提供接近线率的性能的同时,我们保留了交换机程序的知识产权。

挑战

操作系统虚拟化方面的问题,如资源映射和隔离

如何从虚拟化盒解耦虚拟交换机实例

如何引导帧输入输出到虚拟交换机实例

方案

按照规范的NetFPGA参考设计构建了VirtP4,重构其架构以支持基于p4的交换机实例的并行执行。

两个VirtP4模块:Input P4 Interface (IPI)和Output P4 Interface (OPI),它们负责从虚拟交换机实例转发帧。

前者负责将传入的数据帧分派到正确的虚拟交换机实例。VirtP4使用32位VLAN标记(802.1Q)和一个在控制器中托管的match+动作表来确定哪个交换机实例必须接收给定的数据帧。如果某个数据帧包含一个表中没有找到的标签,该帧将被静默丢弃。

后一个块(OPI)负责将数据帧发送到正确的物理(输出)端口。该模块不会丢弃任何帧。

在VirtP4中,可以独立地编写和编译交换机代码(这意味着可以保留对自己代码的所有权)。

开放问题

IPI/IPO模块查询的match+动作表是硬编码的。

这意味着对所使用的VLAN标记方案(或表中填充的标记配置)的更改需要重新构建整个项目(并从头重新烧写FPGA板)。我们正在研究FPGA板的部分重新烧写,以使VLAN标记和虚拟交换机实例的热插拔能够重新烧写,而不需要整个项目的重新编译。

总结

VirtP4是基于p4交换机的硬虚拟化的概念解决方案和概念验证实现。