已索引

ESXi 网卡点灯(亮灯)定位

有的时候,我们需要根据报错信息去定位物理网卡位置,此时可以使用 ethtool 的亮灯功能。

首先找到网卡名。网卡名可以在 VC > ESXi 主机 > 配置 > 网络 > 物理适配器 里找到。也可以通过命令行找到:
esxcli network nic list

找到网卡名后,就可以 ssh 到 ESXi,使用 ethtool 命令来亮灯了:
ethtool -p vmnic3 [20]

虚拟交换机的概念

虚拟交换机是vSphere中的一个功能组件,其功能与物理交换机相似。
物理机通过网线或光纤连接到物理交换机的端口,而虚拟机通过虚拟网卡连接到虚拟交换机的虚拟端口。

  • Virtual switches connect VMs to the physical network.
  • They provide connectivity between VMs on the same ESXi host or on different ESXi hosts.
  • They also support VMkernel services, such as vSphere vMotion migration, iSCSI, NFS, and access to the management network.

虚拟交换机端口类型

虚拟交换机上可以有如下三种端口:

  • Uplink ports: 关联物理网卡

    ESXi主机物理网卡是虚拟交换机与物理交换机的连接通道。
    在vSphere中将ESXi主机物理网卡称作“上行链路”。
    
  • VM port groups(连接到虚拟机网卡,这些端口是二层端口,不能配置IP地址)

    端口组:具有一定数量的虚拟交换机端口的集合,每个虚拟端口可以连接到(一台虚拟机的)一块虚拟网卡。端口组有名称、端口数量、端口属性(VLAN ID等)。简单来说,在一台虚拟交换机中可以有多个端口组,每个端口组可以具有不同的VLAN ID,对应物理网络不同的VLAN。为虚拟机分配网络属性时选择网卡关联的端口组。
    
  • VMkernel port: For IP storage, vSphere vMotion migration, vSphere Fault Tolerance, vSAN, vSphere Replication, and the ESXi management network.(通常我们称为管理端口,这些端口上可以配置IP地址[三层])

    VMKernel网络层提供到ESXi主机的连接,并处理 IP 存储, vSphere vMotion, FT, vSAN等其他服务的标准系统流量。
    

生产中,建议VMkernel与虚拟机端口组使用不同的上行链路,可以使用不同交换机的上行链路,也可以使用相同交换机的不同的上行链路,且上行链路做好绑定。

在物理网卡充足的情况下,我们甚至可以将 VMkernel 网络、端口组网络各自进一步细分,使用不同的上行链路(对应到不同的物理网卡上)。例如:

在下图中,点击“VMkernel adapters”,红框处的IP地址即是 ESXi 的地址,箭头所指的列头显示了 VMKernel适配器支持的功能及是否开启。
vmkernel支持功能查看.jpg

如下图所示,我们点击“拓扑”,可以看到上面的两个VMkernel网络,但这儿有一个不足,就是虽然根据功能的不同划分了不同的VMkernel,但是它们使用的是共同的上行链路,且上行链路只有一块网卡。
vmkernel端口查看.jpg

Port groups 与 VLANs

虚拟交换机通过VLAN实现逻辑隔离。

ESXi provides VLAN support by assigning a VLAN ID to a port group.

打标记有三种方法:

  • Virtual Switch Tagging (VST)
  • External Switch Tagging (EST)
  • Virtual Guest Tagging (VGT)

VST是用得最多的一种方式,下面简单介绍一下。

如图:
portgroup_vlan.jpg

数据包从 vNIC 出去时,还没有打 tag,数据包从 vNIC 出去后,被 VMkernel 截获到,虚拟交换机会对数据包打 tag,然后再通过虚拟交换机找到 uplink 端口,再由物理网卡将数据包传给物理交换机(三层),物理交换机的端口要设置为 trunk 口。数据包回去的时候,在离开虚拟机交换机时,会把 tag 去掉。可以在虚拟交换机配置中,对端口组关联标签(VLAN ID)。

EST 是指在物理交换机上打tag。
VGT是指在虚拟机发送数据包时打上 tag。
这两种方式,都要注意在虚拟交换机上不要设置 VLAN ID,即None(0)。
这两种方式知道这些就行了,不用深究。

虚拟交换机类型

VMWare 虚拟化中有两种类型的虚拟机:

  • 标准交换机
  • 分布式交换机

标准交换机(基于主机)
Virtual switch that is configured for a single host
即在一个ESXi主机上创建的交换机,并不会同步到其它ESXi主机上,需要手动多次配置

分布式交换机(基于VC)
Virtual switch that is configured for an entire data center.
Up to 2000 hosts can be attached to the same distributed switch.
The configuration is consistent across all attached hosts.
Hosts must either have an Enterprise Plus license or belong to a vSAN cluster.

两种类型的共同属性:
Layer 2 switch、VLAN segmentation (802.1Q tagging)、IPv6 support、NIC teaming、Outbound traffic shaping、Cisco Discovery Protocol (CDP)。

分布式交换机有但标准交换机没有的特性(VCP超纲):
Inbound traffic shaping, VM network port block, Private VLANs, Load-based teaming, Data center level management, vSphere vMotion migration of virtual networking state, Per-port policy settings, Port state monitoring of network statistics, NetFlow, Port mirroring, Access to NSX-T port groups, Link Layer Discovery Protocol(LLDP)

标准虚拟交换机策略

点击ESXi主机 --> 配置 --> 网络 --> 虚拟交换机
找到相关标准交换机名,点击 "编辑" ,可以看到3种策略。

安全(security)

  • 混杂模式(Promiscuous mode):You can allow a virtual switch or port group to forward all traffic regardless of the destination. 接收所有数据流量,故障诊断和监控(即抓包处理),默认是拒绝。
  • MAC地址更改(MAC address changes):You can accept or reject inbound traffic when the MAC address is altered by the guest.
  • 伪传输(Forged transmits):You can accept or reject outbound traffic when the MAC address is altered by the guest.

在虚拟机属性里可以看到网卡的MAC 地址,这个 MAC 地址我们称为 initial MAC,在虚拟机操作系统内,我们可以看到网卡的 MAC 地址,这个MAC 地址我们称为 excutive MAC。正常来说,这两个MAC地址是一样的。如果这两个地址不一样,就涉及到后两种策略。

7.0 之前的版本,后两种关于MAC的安全策略默认都是 Accept。
从7.0开始,默认变为了 Reject。

流量调整(流量整形)(Traffic shaping)

Network traffic shaping is a mechanism for limiting a virtual machine's consumption of available network bandwidth.

Average rate, peak rate, and burst size are configurable.

traffic_shaping.jpg

红色线表示实时流量,小于平均流量,迸发。

流量整形,标准交换机只能支持外发流量(Outbound)。

绑定和故障切换(Teaming and failover)

见后文单独说明。

创建标准虚拟交换机

standard_switch_01.jpg

如上图所示,假设物理主机一开始只有一张一口的物理网卡,安装ESXi Server 后会自动生成 vSwitch0 交换机,其上行链路是 vmnic0。

现作如下变更:
1、增加 vmnic1 ~ vmnic4 四张物理网卡
2、将 vmnic1 也作为 vSwitch0的上行链路
3、创建 vSwitch1 标准虚拟交换机
4、将 vmnic3 和 vmnic4 作为 vSwitch1 的上行链路
5、在 vSwitch1 上面划分端口组

为现有交换机配置上行链路

为vSwitch0添加上行链路:
standard_switch_02.jpg

然后根据提示添加上行链路。

创建标准虚拟交换机

创建 vSwitch1 标准虚拟交换机:
standard_switch_03.jpg
standard_switch_04.jpg

添加端口组

为 vSwitch1 虚拟机添加端口组:
standard_switch_05.jpg
standard_switch_06.jpg

这样,就可以设置虚拟机的网卡属于不同的VLAN了:
standard_switch_07.jpg

管理标准虚拟交换机

点击 ESXi 主机 > 配置 > 网络 > 虚拟交换机,即可以看到当前 ESXi 主机关联的所有虚拟交换机,展开某个具体的虚拟交换机,就可以看到该虚拟交换机的拓扑(具有的3种端口),在拓扑图中,只要看到IP地址,表示这是职能网络,如果看到关联有虚拟机,表示这是端口组。

点击右上侧的 "添加网络",就可以通过向导为现有虚拟交换机添加一个网络(Port Group 或者职能网络)或者添加一个虚拟交换机

> 选择连接类型

  • VMkernel 网络适配器:VMkernel TCP/IP 堆栈可处理以下 ESXi 服务的流量: vSphere vMotion、iSCSI、NFS、FCoE、Fault Tolerance、vSAN 和主机管理。
  • 标准交换机的虚拟机端口组:端口组将处理标准交换机上的虚拟机流量。
  • 物理网络适配器:物理网络适配器处理网络中其他主机的网络流量(即仅添加一个虚拟交换机)。

VMkernel 网络适配器,步骤为:
选择目标设备 > 端口属性 > IPv4 设置 > 即将完成

  • 选择目标设备:

    • 选择现有网络
    • 选择现有标准交换机
    • 新建标准交换机(则会多一个创建标准交换机的步骤,选择使用的上行网卡即可)
  • 端口属性:指定 VMkernel 端口设置,包括网标签、VLAN ID、启用哪些服务等
  • IPv4设置:指定 VMkernel IPv4设置

标准交换机的虚拟机端口组,步骤为:
选择目标设备 > 连接设置 > 即将完成

  • 选择目标设备:

    • 选择现有标准交换机
    • 新建标准交换机(则会多一个创建标准交换机的步骤,选择使用的上行网卡即可)
  • 连接设置:指定网络标签和 VLAN ID(可以指定 VLAN ID 或者选择无(0))

物理网络适配器,即仅添加一个虚拟交换机,步骤为:
选择目标设备 > 添加物理网络适配器 > 即将完成

  • 选择目标设备:

    • 选择现有标准交换机
    • 新建标准交换机(则会多一个创建标准交换机的步骤,选择使用的上行网卡即可)
  • 添加物理网络适配器:将物理网络适配器分配给该交换机

点击 ESXi 主机 > 配置 > 网络 > VMkernel 适配器,可以查看当前的 VMkernel 适配器及其承担的服务,并且也可以点击 "添加网络",开始 VMkernel 适配器的添加向导。

点击 ESXi 主机 > 配置 > 网络 > 物理适配器,可以查看到所有的物理网卡及其使用情况,并且也可以点击 "添加网络",开始虚拟交换机的添加向导。

创建分布式交换机与端口组

dvs1.jpg

规划如图所示,每个ESXi主机有4个网口
第1,2个口接到Access口
第3,4个口接到trunk口

创建一个分布式交换机,使用第3,4个口作为上行链路。

创建分布式交换机

dvs2.jpg
dvs3.jpg
注意上行链路数是指每台ESXi主机上的上行链路数。
这样,虚拟交换机这个逻辑对象就创建好了。(相当于搭了一个空架子)

添加和管理主机

即,关联分布式交换机上行链路和ESXi主机物理网卡
dvs4.jpg

dvs5.jpg

如上图所示,分别为每台ESXi主机指定上行链路。

创建分布式交换机端口组

dvs6.jpg
dvs7.jpg

建议端口组的名称定义为网段名,例如 192.168.1.0_vlan2001,方便识别和管理。

vSphere 网络规划原则

下面介绍的是一些被认可的原则。

  • 管理与生产分离:即用于管理ESXi主机的网络,以及用于生产环境中、负责虚拟机对外流量的网络要分离。最低要求是逻辑分离,管理网络使用一个VLAN,生产网络使用其它的一个或多个VLAN。如果ESXi主机网口数量充足,管理网络与业务网络建议使用不同的上行链路口。
  • 冗余的原则:无论是管理,还是生产,每个物理网络连接(即上行链路适配器)必须是冗余的。一般是2个网卡,多了也无意义。
  • 负载平衡:不可否认,在虚拟化的数据中心中,由于同时有多个虚拟机的存在,主机的物理网卡,要比普通的未采用虚拟化的物理服务器承担更多的网络流量。如果这些网络流量加在一起,超过了单块网卡的负载能力,那网络的性能会下降。所以,在使用多个网卡时,除了考虑到冗余功能外,还考虑到负载平衡能力。为了提供比单个物理网卡更高的带宽,可以将主机多个网卡进行聚合,以提供更高的带宽,但这需要物理交换机的支持。

vSphere 网络规划-生产示例

点击 ESXi 主机 --> Configure --> Networking --> Virtual switches

topology0.jpg

如上图所示,本主机关联了4个虚拟交换机,其中,两个分布式交换机,两个标准虚拟交换机。

标准交换机vSwitch0和vSwitch1的情况如下图所示:
topology1.jpg

vSwitch0这个标准交换机被设计为用来做管理,此外,它上面还有一个虚拟机端口组,它们使用 vmnic8 和 vmnic10 作为共同的上行链路网口。
vSwitch1这个标准交换机被设计为用来做vMotion,此外,它上面还有一个虚拟机端口组,它们使用 vmnic9 和 vmnic 11 作为共同的上行链路网口。

两个分布式交换机的情况如下图所示:
topology2.jpg

topology3.jpg

分布式交换机 Dvs_OA_nas 被设计为与NAS存储通信。所有服务器都使用 vmnic12 和 vmnic14 作为上行链路网口。该交换机有1个端口组。
分布式交换机 Dvs_OA_app 被设计为用于业务通信。x.x.x.1 使用 vmnic13 和 vmnic10 作为上行链路网口,其它主机都使用 vmnic13 和 vmnic15 作为上行链路网口。该交换机有3个端口组,对应到不同的业务网段。

绑定和故障切换(Teaming and failover)(网卡绑定配置)(链路聚合配置)

对于标准交换机:
点击ESXi主机 --> 配置 --> 网络 --> 虚拟交换机
找到相关标准交换机名,点击 "编辑" ,可以看到3种策略。

Load balancing

  • Use explicit failover order(此时在故障切换顺序列表中指定活动适配器和备用适配器,建议均使用一块网卡即可)
  • Route based on originating virtual port(默认):假如我们有4个虚拟机,每个虚拟机一张网卡(对应交换机的一个端口上),上行链路有3张物理网卡,则,第1台虚拟机的网卡从第1张物理网卡出去的,同理,第2台虚拟机从第2张物理网卡出去,第3台虚拟机从第3张物理网卡出去,第4台虚拟机从第1张物理网卡出去。虚拟交换机会使用轮循的方式将物理网卡与虚拟机的网卡对应的交换机端口关联起来,并固定下来。在虚拟机网卡和物理机网卡不变的情况下,这种关系也不会发生改变。
  • Source MAC Hash:只要虚拟机网卡的MAC地址不变,则通过HASH算法算出的值就不会变化,那么,与其关联的物理网卡就不会变化。如果网卡算出的HASH值不一样,则可能被分配到其它物理网卡上。较之上面的方法,有额外的计算开销。
  • Source and Destination IP Hash:如果仅仅是基于 vritual port ID,则虚拟机的网卡总是跟某张物理网卡关联,加入 Destination后,即使用是虚拟机的同一张网卡发出的数据包,但是因为目标IP不一样,也可能通过不同的物理网卡出去。
Originating Virtual Port IDSource MAC HashSource and Destination IP Hash
Virtual SwitchCalculate once per vNICHash for every packageHash for every package
Physical SwitchNo changesNo changesLACP 802.3 ad/EtherChannel Cisco
VM throughputMore than one vNICs per VMMultiple source MAC addresses per VMMultiple IP addresses per VM
Load-based teamingNot Support, need use VDSNot Support, need use VDSNot Support, need use VDS

基于 load-based teaming 也需要交换机配置 LACP 802.3 ad.

Network failure detection

  • Link status only: 网卡坏了,线没连上等物理故障
  • Beacon probing(信标探测): 通过发送探针包的方式来做一些逻辑探测

Notify switch

通知物理交换机更新ARP表,去掉故障网卡

Failback(故障恢复)

主好了后,是否切回主

上面是在交换机上配置的策略(standard switch level)。
也可以点击端口组名,点击“编辑”,配置上述策略( 和 port group level)。
在 port group level 上面配置的策略可以覆盖 standard switch level 上配置的策略。

对于分布式交换机,“网络”标签 > 分布式交换机名 > 配置 > 设置 > 拓扑
vmware_uplink

拓扑图的右边就是上行链路。从这儿可以快速直观的看到哪些物理服务器的哪些物理网卡绑定到了上行链路。
如上图所示,99.116 主机使用了两张物理网卡绑定到上行链路,一张是 vmnic5,一张是 vmnic 7。
此外,我们看到,99.117 主机的 vmnic7 这张网卡出现了故障,我们可以通过MAC地址让网络同事进行定位,或者使用 ethtool 来亮灯定位。
还有,上行链路1与上行链路2接入的网卡数据不一样,说明有些主机只使用了一张物理网卡接入了上行链路1。

点击拓扑左边的端口组右上角的...,可以查看和配置端口组策略,包括 VLAN、安全、绑定和故障切换、流量调整。

“网络”标签 > 分布式交换机名 > 端口组名称 > 配置,可以查看端口组的配置。
但是注意,即使在这儿看到端口组有两个上行链路,但是在ESXi主机上,也可能只有一个上行链路绑定了物理网卡。

在 ESXi 主机 > 配置 > 网络 > 虚拟交换机,展开需要查看的分布式交换机,也可以查看端口组的配置,但是信息有限且不能调整。

vSphere 网络规划-其它示例

单台ESXi主机-单网络

topology-o1.jpg
如图,标准交换机1是缺省的,标准交换机2是后面创建,交换机2不关联物理网卡。虚拟机2,3,4通过虚拟机机1对外通信。

单台ESXi主机-多网络

topology-o2.jpg
如图,外部网络通过标准交换机1(虚拟机1)与web服务器 & 数据库服务器进行通信,内部网络通过标准交换机3(虚拟机4)与web服务器 & 数据库服务器进行通信。

多台ESX主机-仅标准交换机

topology-o3.jpg
标准交换机1,对外上行链路对应两张网卡(冗余)。标准交换机2,对外上行链路对应两张网卡(冗余),用于业务网络。

  • 3台ESXi主机,每台主机4块网卡
  • 2块:连接到交换机的vlan2006端口,属于172.18.96.0/24
  • 2块:连接到交换机的Trunk端口,允许vlan2001~vlan2006通过

缺点:每台ESXi主机都要做相同的配置(虚拟交换机和端口组)。

多台ESX主机-标准交换机+分布式交换机

topology-o4.jpg

多台ESX主机-仅分布式交换机

标准交换机并不是必须的,在安装vCenter Server并由vCenter Server管理vSphere 数据中心后,创建vSphere Distributed Switch,可以将标准交换机及标准交换机的VMkernel端口迁移到vSphere分布式交换机。
topology-o5.jpg

VDS规划配置1:负载平衡方式(1,2Access,3、4Trunk)

topology-o6.jpg

VDS规划2:主备方式(全TRUNK端口)

topology-o7.jpg

网络流量控制

标准交换机没有 Q0S 的功能,只有分布式交换机才有。

点击交换机名——> 配置——>资源分配,就可以对网络流量控制进行设置了。

VMkernel

Vmkernel也可以使用分布式交换机的端口组:
点击 ESXi 主机 ——> 配置 ——> 网络 ——> VMkernel 适配器 ——> 添加网络

注意需要在每个主机上添加vmkernel适配器。

-- By 许望(RHCA、OCM、VCP)
最后修改:2024 年 01 月 29 日 03 : 52 PM
如果觉得我的文章对你有用,请随意赞赏