主机信息

为了使服务主机(通常是计算节点)与网络提供者主机之间进行功能协商,os-vif 暴露了一些描述运行插件的主机的对象。

主机信息对象

以下对象编码了关于服务主机的信息。

HostInfo

这个类提供关于主机整体的信息。目前这意味着主机上安装的插件列表。未来这可能包括关于主机操作系统状态的进一步信息。

HostPluginInfo

这个类提供关于安装在主机上的单个 os-vif 插件实现能力的信息。目前这意味着插件能够使用的 VIF 对象列表。未来这可能包括关于主机上插件可以/将要利用的资源的进一步信息。虽然许多插件只会支持单个 VIF 对象,但允许支持多个不同的 VIF 对象。例如,openvswitch 可以使用相同的底层主机网络功能以多种不同的方式配置虚拟机。

HostVIFInfo

这个类提供关于插件支持的单个 VIF 对象的信息。这将包括版本化的对象名称以及可以使用的对象的最小和最大版本。

网络提供者的责任是确保它只发送回满足插件指示的最小和最大版本约束的序列化 VIF 对象。超出此版本范围的对象将被拒绝并出现致命错误。

协商网络

当服务主机想要创建网络端口时,它将首先填充 HostInfo 类的一个实例,以描述主机上安装的所有插件。然后它会将这个类序列化为 JSON 并将其发送到网络管理器主机。网络管理器主机将将其反序列化回 HostInfo 对象。然后可以将它传递给网络驱动程序,网络驱动程序可以使用它来决定如何配置网络端口。

如果网络主机上安装的 os-vif 版本低于服务主机上的版本,它可能无法反序列化 HostInfo 类。在这种情况下,它应该向服务主机回复一个错误。错误消息应该报告支持的 HostInfo 类的最大版本。服务主机应该然后将它的 HostInfo 对象降级到该版本,然后再序列化它并重试端口创建请求。

在网络和服务主机之间传递插件信息的机制或传输方式未定义。由 os-vif 的用户决定适当的方法。