计算虚拟化推动了网络虚拟化的发展
传统的数据中心:一台服务器上运行一个操作系统,服务器之间通过交换机实现互访、流量控制。
在计算虚拟化后:一台服务器可以虚拟化成多台虚拟主机,由于虚拟主机之间也需要相互通信,同时由于共享了物理设备,所以对安全隔离、流量控制有了更高的要求。因此产生了虚拟交换技术。
Linux Bridge(网桥)是工作于二层的虚拟网络设备,功能类似于物理的交换机
网桥可以绑定其他Linux网络设备作为从设备。将设备虚拟化成端口。这些设备被绑定到网桥上,相当于用网线将交换机与终端相连。
(如图,br0绑定了物理设备eth0,虚拟设备tap0/1,对于Hypervisor而言,只看br0,因此当这些从设备发送数据包时,交由br0来根据MAC地址与端口的映射关系进行转发。)
一款基于软件实现的开源虚拟交换机。
OpenFlow是一种工作在数据链路的网络协议。是SDN的一种。
它由OpenFlow交换机、FlowVisor和Controller三部分组成。(FlowVisor是OpenFlow上的网络虚拟化平台,它可以将物理网络分成多个逻辑网络,从而实现软件定义网络SDN)
传统网络架构下,我们将报文完全交给交换机/路由器来控制报文的转发过程。
在虚拟化场景下,OpenFlow将这些交由OpenFlow交换机和控制服务器(Controller)来共同完成,从而实现数据转发和路由控制的分离。(其中,控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的)
总结:OpenFlow网络由OpenFlow交换机、FlowVisor和Controller三部分组成。
OpenFlow交换机进行数据层的转发;
FlowVisor对网络进行虚拟化;
Controller对网络进行集中控制,实现控制层的功能。
分布式虚拟交换机在功能上类似于普通的二层交换机。
其中一端与VM的虚拟端口相连,中间是一条虚拟的链路。
另外一端则通过上行链路与主机上的物理网络适配器相连,再与物理交换机相连。
从而连接到各个主机和虚拟机,实现网络互通。
(注:分布式交换机在所有关联主机之间作为单个虚拟交换机使用。因此虚拟机在跨主机进行迁移时能够确保其网络配置保持一致。)
弹性虚拟交换机
可以理解为是采用了DPDK高速数据通道技术的OVS。
用到的技术:
物理网卡访问:DPDK高速数据通道
报文处理:使用大页内存
交换业务处理:轮询转发(减少调度开销),多核并行处理,OpenFlow流表转发优化
前后端:vhost-user技术
(其中IO性能提升使用了Intel DPDK技术,通过用户态进程接管网卡数据收发,采用“IO独占核”技术,即每个端口分配一个核专门用于数据收发,这种轮询式的处理方式比中断式的处理更高效,因而IO性能方面有显著提升)
(等我理解透了再回来描述清楚。)
通过DVSM对接vSwtich Agent,利用统一的接口对虚拟交换机进行管理。
能够集成开源Open vSwitch,充分利用开源社区虚拟交换的能力。
由于开源Open vSwitch与智能网卡的虚拟交换提供的功能完全一致,所以虚拟交换管理可以通过不同的插件管理Open vSwitch和智能网卡。
(图中LACP-链路聚合控制协议)
通过分布在各个物理服务器之间的虚拟交换机,为虚拟机提供二层通信的能力,具体功能和物理交换机类似。
管理员可以配置多个分布式交换机,每个分布式交换机可以覆盖集群中的多个CNA节点。
可以看到分布式交换机上有多个虚拟端口VSP,根据每个端口的属性(速率),可以将他们划分到同一端口组下方便管理,相同端口组的VLAN相同。
虚拟机通过vNIC(虚拟网卡)接口与交换机的VSP相连(一台VM可以有多个vNIC)
每个分布式交换机可以配置一个Uplink(上行链路)端口或者Uplink端口聚合组,连接到主机的物理网卡上,再与物理交换机相连,用于虚拟机对外通信。
(Uplink端口聚合组可以包含多个物理端口,端口聚合组可以配置负载均衡策略)
管理员可以通过定义端口组属性(安全/QoS/优先级/IP-MAC绑定)来定义虚拟机端口属性(简化操作)
几个概念:
端口组:端口组是网络属性相同的一组端口的属性集合
上行链路(Uplink):分布式交换机关联的服务器物理网口
上行链路聚合:分布式交换机关联的服务器绑定网口,绑定后的网口可以做主备、也可以做负载均衡策略。
华为的虚拟交换机提供三种虚拟交换模式:普通模式、SR-IOV直通模式、用户态交换模式
普通模式:在虚拟机当中有前后端两个虚拟网卡设备,前端网卡(eth0)连接在虚拟交换机的虚端口上,虚拟机网络数据包通过环形缓冲区和事件通道在前后端网卡之间传输,并最终通过后端网卡(tap0)连接的虚拟交换机(br1)实现转发。(其中br-eth1可以看作是DVSM,eth是主机的网卡)
SR-IOV直通模式:将支持SR-IOV的物理网卡虚拟出多个网卡供虚拟机使用,对于虚拟机来说就像是有一块单独的物理网卡一样。(相比软件虚拟化提升了网络I/O的性能,相对于硬件直通(PCI Passthrough)又减少了硬件网卡数量上的需求)
用户态交换:通过使用DPDK技术,用来在x86平台进行快速的数据包处理。它通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在x86处理器架构下的高性能报文转发能力,提高虚拟机网络性能。
(DPDK:Data Plane Development Kit,数据平面开发套件,DPDK是一系列库和驱动的集合)
包括:IP-MAC绑定、DHCP服务隔离
IP-MAC绑定:防止虚拟机用户修改虚拟网卡的IP、MAC地址发起IP、MAC仿冒攻击
(原理:通过生成IP-MAC的绑定关系,基于IP源侧防护(IP Source Guard)与动态ARP检测(DAI)对非绑定关系的报文进行过滤)
DHCP服务隔离:禁止用户虚拟机启动DHCP Server服务,防止用户无意识或恶意启动DHCP Server服务,影响正常的虚拟机IP地址分配。
管理员可以通过系统Portal,基于虚拟交换机端口组对象,配置报文抑制开关和报文抑制带宽阈值减少过量广播报文对二层网络带宽的消耗。(当广播报文一直发送时,会影响其他虚拟机的正常通信。)
可以将一定数量的虚拟机划分到同一个安全组当中,每个安全组都可以制定一组访问规则。
位于同一个安全组的所有虚拟机网卡都将使用该安全组规则进行网络通信。(虚拟机一块网卡只能加入一个安全组中。)
与我们物理交换机的trunk差不多。
普通类型的虚端口只能属于一个VLAN,中继类型的虚端口可以允许多个VLAN接收和发送报文。
普通虚拟机选择普通类型的端口,虚拟机的网卡启用VLAN设备的情况下选择中继类型的端口,否则虚拟机的网络可能不通(可能带其他VLAN标签的数据包就过不来了)。
对于普通网卡,绑定模式可以选择以下几种:
主备
轮询
基于源目的IP和端口负荷分担
基于源目的MAC的负荷分担
基于源目的MAC的LACP
基于源目的IP的LACP
对于支持DPDK驱动的物理网卡,绑定模式可以选择以下几种:
DPDK驱动的主备模式
DPDK驱动的基于源目的MAC的LACP模式
DPDK驱动的基于源目的IP和端口的LACP模式