VMware vSphere虚拟机交换机支持四种VLAN类型,分别是:无、VLAN、VLAN中继、专用VLAN。
在路由/交换领域,VLAN的中继端口叫做Trunk。Trunk技术用在交换机之间互连,使不同VLAN通过共享链路与其它交换机中的相同VLAN通信。交换机之间互连的端口就称为Trunk端口。Trunk是基于OSI第二层数据链路层(Data Link Layer)的技术。
如果没有VLAN中继,假设两台交换机上分别创建了多个VLAN(VLAN是基于Layer 2的),在两台交换机上相同的VLAN(比如VLAN10)要通信,则需要将交换机A上属于VLAN10的一个端口与交换机B上属于VLAN10的一个端口互连;如果这两台交换机上其它相同VLAN间也需要通信(例如VLAN20、VLAN30),那么就需要在两个交换机之间VLAN20的端口互连,而划分到VLAN30的端口也需要互连,这样不同的交换机之间需要更多的互连线,端口利用率就太低了。
交换机通过trunk功能,事情就简单了,只需要两台交换机之间有一条互连线,将互连线的两个端口设置为trunk模式,这样就可以使交换机上不同VLAN共享这条线路。
Trunk不能实现不同VLAN间通信,VLAN间的通信需要通过三层设备(路由/三层交换机)来实现。
vSphere网络支持标准虚拟交换机及分布式虚拟交换机。你可以将vSphere虚拟交换机,当成一个"二层"可网管的交换机来使用。普通的物理交换机支持的功能与特性,vSphere虚拟交换机也支持。vSphere主机的物理网卡,可以"看成"vSphere虚拟交换机与物理交换机之间的"级联线"。根据主机物理网卡连接到的物理端口的属性(Access、Trunk、链路聚合),可以在vSphere虚拟交换机上,以实现不同的网络功能。
当vSphere虚拟交换机(标准交换机或分布式交换机)上行链路(指主机物理网卡)连接到交换机的Access端口时,虚拟机的类型为"无",即该虚拟交换机,与其上行链路物理交换机端口属性相同,如果该主机物理网卡连接到一个VLAN,则该虚拟交换机属性该物理交换机的VLAN。
当vSphere虚拟虚拟机上行链路连接到物理交换机的Trunk端口时,此时VMware虚拟交换机的"虚拟端口组"可以分配三种属性:
VLAN:在虚拟交换机的端口组中,指定VLAN ID,该虚拟端口组所分配的虚拟机,属于对应的VLAN ID,可以与其他虚拟机及物理网络通讯。
VLAN 中继:在虚拟交换机端口组,指定允许通过的VLAN,然后在虚拟机中,在虚拟网卡中指定VLAN ID。
专用VLAN:指定VLAN ID,虚拟端口组所分配的虚拟机,属于对应的专用VLAN,受物理交换机专用VLAN ID的功能限制。
下面我们通过具体的实例进行介绍。
-
网络拓扑描述
当前环境中有3台ESXi主机,每个主机有4个网卡,其中每个主机的第1、第2个网卡创建了标准交换机,这两个网卡连接到物理交换机的Access端口,属于vlan1016;其中每个主机的第3、第4网卡创建了分布式交换机,这些网卡都连接到物理交换机的Trunk端口。拓扑如图1-1所示。
主机所连接的物理交换机的VLAN划分如表1-1所示。
-
虚拟端口组"无VLAN"配置
在规划大多数的vSphere虚拟化数据中心时,每台ESXi主机都至少需要配置4块千兆网卡,并且遵循每2块网卡一组的原则配置虚拟交换机。一般情况下将其中的两个网卡连接到交换机的Access端口,用做管理(即设置ESXi的管理地址);而将剩余的另两个网卡连接到交换机的Trunk端口,用于承载虚拟机的网络流量,如图2-1所示。
在图2-1中画出了1个物理主机的连接示意图,其中第、第2个网卡连接到物理交换机的Access端口(即某个VLAN端口,一般为服务器专门规划一段VLAN),这2个网卡创建一个虚拟交换机(一般是标准交换机,安装ESXi的时候创建)。如果有虚拟机,例如图中的虚拟机1~虚拟机2,则与主机的管理地址属于同一个VLAN。而网卡3、网卡4则连接到物理交换机的Trunk端口,由这两个网卡作为虚拟交换机2的上行链路,而虚拟交换机2中的"虚拟端口组"可以根据需要,设置为VLAN、VLAN中继或专用VLAN方式。
【说明】在同一个虚拟交换机中可以创建多个端口组,并且端口组的类型可以不同。
在本小节中,虚拟交换机1的虚拟端口组,则与物理网卡1、2所属的VLAN是同一个网段,不需要指定VLAN ID(保持默认为空即可),如图2-2所示,这是类似"虚拟交换机1"中,虚拟端口组的VLAN类型设置页。
如果有虚拟机使用该端口组(图2-2中端口组名称为manager,而在安装ESXi的时候,其默认的端口组名称为VM Network),则与管理地址属于同一网段。在我们的示例中,当前ESXi主机的管理地址段为172.16.16.0/24,属于VLAN1016,则图2-1中的虚拟机1与虚拟机2所使用的IP地址也应该是VLAN 1016才可。
-
在虚拟端口组配置"VLAN"
当虚拟交换机的上行链路(绑定的主机物理网卡)连接到交换机的Trunk端口时,虚拟端口组需要在VLAN、VLAN中继、专用VLAN之间进行选择设置。本节先介绍"VLAN"功能,这也是最常用的功能。我们仍然以图2-1为例,其中第3、第4网卡连接到物理交换机的Trunk端口,物理交换机中划分了1016、1017、1018、1019等VLAN,则在VMware虚拟交换机的虚拟端口组中,可以添加对应ID的VLAN端口组,并且采用"同名"的端口组,以方便管理。例如,在图3-1中,这是在vSphere Client管理界面中,配置好分布式虚拟交换机后,创建的vlan1017、vlan1018、vlan1019等指定了VLAN ID的虚拟机端口组。
对于每一个端口组,在VLAN类型中都指定了VLAN ID,如图3-2所示。
当虚拟机选择"网络标签"时,选择那个端口组,则虚拟机网络则会被限制为端口组所指定的VLAN,如图3-3所示。
例如,如果在图3-3中选择Vlan1017,则虚拟机的网络属于 VLAN 1017。 在虚拟端口组配置"VLAN中继"功能
如果要在虚拟机中指定VLAN ID,则需要添加一个类型为"VLAN中继"的端口组,并为虚拟机分配这个端口组,并且虚拟机使用VMXNET3虚拟网卡,才能使用这一功能。
4.1. 在虚拟交换机中创建VLAN中继端口组
在虚拟交换机(标准交换机或分布式交换机)中,创建端口组,设置端口组的属性为"VLAN中继",主要步骤如下。
4.1.1. 使用vSphere Client或vSphere Web Client,进入网络管理,右击要添加端口组的标准交换机或分布式交换机,在弹出的快捷菜单中选择"新建端口组",如图4-1-1所示。
4.1.2. 在"属性"对话框中,在"名称"文本框中输入新建的端口组的名称,在此命名为Trunk,在"VLAN类型"下拉列表中选择"VLAN中继",在"VLAN中继范围"文本框中,输入该端口VLAN中继范围,例如1-4、5、10-21等,这需要与你的物理交换机的VLAN相对应。如果你要允许所有VLAN通过,则键入1-4094,如图4-1-2所示。
4.1.3. 在"即将完成"对话框,单击"完成"按钮,如图4-1-3所示。
4.2. 在虚拟机中测试VLAN中继
要使用属性为"VLAN中继"的端口组,要在虚拟机的网卡上设置VLAN ID,而这一功能只有VMXNET3的虚拟网卡才能支持,下面介绍这一过程。
4.2.1. 打开一个测试用的虚拟机,为虚拟机添加一个类型为"VMXNET 3"的虚拟网卡,并且在"网络连接"中选择"Trunk"网络标签,如图4-2-1所示。
4.2.2. 返回到虚拟机配置页,移除原来的网卡(大多数虚拟网卡类型为Intel E1000),单击"确定"按钮,完成添加,如图4-2-2所示。
4.2.3. 进入虚拟机控制台,打开网络连接,选择新添加的vmxnet3 虚拟网卡,在连接属性中,单击"配置"按钮,如图4-2-3所示。
4.2.4. 在"高级"选项卡,在"VLAN ID"选项中,在"值"文本框中,键入一个VLAN ID,该VLAN ID需要是物理交换机上已经存在的VLAN,例如1016,如图4-2-4所示。
4.2.5. 设置完成之后,查看网络连接信息,如果当前VLAN ID有DHCP,则会获得VLAN 1016的IP地址,如图4-2-5所示。
如果你的网络中没有DHCP,你可以设置VLAN 1016的IP地址、子网掩码、网关,然后使用ping命令进行测试,这些不一一介绍。
【说明】该方法的优点是非常灵活,所有的虚拟机都可以属于不同的VLAN,缺点就是工作量大,需要对每一台虚拟机进行修改。