XenServer网络术语
PIF
PIF
表示物理网卡,XenServer基于Linux,意味着每个物理网卡通常使用Linux的命名ethX
。XenServer为每个ethX
设备创建并指定一个PIF
对象。每个PIF
有自己唯一的ID,uuid
来标识。
VIF
虚拟机使用虚拟NIC连接网络,也就是虚拟网卡。虚拟网卡使得虚拟机能够发送和接收网络流量,并且虚拟网卡有自己的IP地址和MAC地址。
Network
在Xen虚拟环境,网络通常是一个具有交换功能的虚拟以太网交换机,这个虚拟交换机有自己唯一的uuid
和名字。在XenServer标准安装过程中通常会设置一个虚拟交换机以便虚拟机通过它们的VIF
连接。虚拟交换机可以通过PIF
提供一个连接外部网络的上联。
brctl show
显示输出虚拟交换机以及
bridge name bridge id STP enabled interfaces
xenbr0 8000.d89d6724d840 no eth0
vif10.0
vif8.0
vif7.0
vif2.0
vif1.0
Single-Server Private networks
(单服务器私有网络)
单服务器私有网络不需要连接到物理网卡,用于在独立的host主机上提供虚拟机之间通讯,但不提供访问外部网络。也就是常说的host
网络。
Cross-Server Private networks
(跨服务器私有网络)
跨服务器私有网络扩展了单个服务器的私有网络,允许通过vSwitch
连接不同host主机上的虚拟机。
Extenal networks
(扩展网络)
扩展网络通过物理网卡提供连接,并提供虚拟机之间和物理网卡接口之间的网桥,以连接虚拟机到外部真实网络。
Bonded networks
(多网卡捆绑网络)
在多个网卡上创建一个bond提供单一的,高性能通道连接虚拟机和外部网路。
VIF和扩展网桥
使用brctl show
命令可以显示虚拟网桥xenbr0
提供了物理网卡eth0
连接物理服务器,以及多个虚拟网卡vif
连接到这个虚拟网桥xenbr0
,这样提供了虚拟机访问外部网络的功能
bridge name bridge id STP enabled interfaces
xenbr0 8000.d89d6724d840 no eth0
vif10.0
vif8.0
vif7.0
vif2.0
vif1.0
XenServer如何处理VM流量
- 物理网卡
PIF
进入混杂模式(promiscuous mode
),即所有通过网络的数据包都接受 - 数据包被转发给虚拟交换机
xenbr0
- 虚拟交换机将查看目标MAC地址并找出连接在虚拟交换机上的
VIF
- 一旦找到了对应的VIF,Xen就会吧数据包传递给虚拟机
Bonds和VLANs
Bonding提供了多块网卡配置成逻辑网卡的功能,提供了冗余和通道聚合,主要分为:Active-backup
和Balance-slb (active-active)
VLANs提供了流量隔离功能,每个VLAN需要创建独立的虚拟网桥。VLAN配置对于guest vm是透明的,VLAN的taging/untagging是由内核完成的。
在Xen中使用VLAN需要配置虚拟网卡加上特定的VLAN tag,并且对应的(物理)网络交换机需要符合以下要求:
- 连接Xen的交换机端口必须配置成trunk port
- 交换机端口必须配置成
802.1q
- trunk端口不能配置Port security
- 作为trunk的端口必须设置成原生VLAN:默认使用1
详细配置参考 Xen多个VLANs的网络配置
参考
- XenServer Networking
- XenServer VLAN Networking
- Xen Networking - 这篇是Xen开源官方网站wiki,非常详尽的解释了Xen网络的工作原理