虚拟机或容器需要进行相互通信,包括同一台主机内部或者与主机外部的物理设备或虚拟设备进行通信,无论哪种情况,都需要用到网卡进行通信。
存在两种通信方式,一种是通过虚拟化接口,另一种是使用虚拟机的专用物理接口,当然,物理接口仅用于与主机外部的设备进行通信。但是,由于虚拟机所需的接口数量通常远大于基础设施可用的物理接口数量,因而就不可避免地需要用到接口级虚拟化机制。NFVI层则负责执行该功能(当然也包括其他功能),包括可供虚拟机使用的vNIC(virtual Network Interface Card,虚拟网卡)。
虚拟机将这些vNIC视为真实的物理接口,利用这些接口在虚拟机外部发送和接收数据包。为了让虚拟接口具备可扩展性及部分交换功能,同时在不显著降低性能的情况下能够执行分组交换功能,目前业界已经提供了多种方法来实现这些功能,下面分析其中的一些常见方法。
1、虚拟交换机
使用虚拟网桥是实现接口虚拟化的一种简单解决方案,但虚拟网桥的功能特性、可扩展性以及灵活性不足。为了解决功能特性不足问题,可以采用其他几种虚拟交换机软件进行虚拟机通信,以提供增强型交换功能,如Cisco的Nexus 1000v、VMware的Virtual Switch(虚拟交换机)和OVS(Open Virtual Switch,开放虚拟交换)。