本文介绍并提供了有关vSphere 5.1 Distributed Switch中新BPDU筛选器功能的示例。
一、什么是bpdu
桥接协议数据单元(BPDU)是在物理交换机之间交换的帧,作为生成树协议(STP)的一部分。STP用于防止网络中的环路,通常在物理交换机上启用。当物理交换机端口上的链路上升时,STP协议开始计算和BPDU交换以确定端口是否应处于转发或阻塞状态。桥接协议数据单元(BPDU)帧跨物理交换机端×××换以识别根网桥并形成树形拓扑。VMware的vSwitch不支持STP,也不参与BPDU交换。如果在vSwitch上行链路上接收到BPDU帧,则丢弃该帧。同样,VMware vSwitch不会生成BPDU帧。
注意:VMware vSwitches(标准和分布式)无法形成循环,因为无法在OSI层的第2层将两个虚拟交换机连接在一起。因此,没有生成树协议功能已合并到虚拟交换机中。

识别根网桥并查找交换机端口是处于转发状态还是阻塞状态的STP过程大约需要30到50秒。在此期间,无法从这些交换机端口传递数据。如果连接到端口的服务器长时间无法通信,则在其上运行的应用程序将超时。要避免服务器上出现超时问题,最佳做法是在连接服务器NIC的交换机端口上启用端口快速配置。端口快速配置将物理交换机端口立即置于STP转发状态。有关详细信息,请参阅故障转移或故障恢复事件发生时STP可能导致网络连接暂时丢失(1003804)。

这些面向vSphere主机的交换机端口上的另一个推荐配置是启用BPDU防护。此配置定义STP边界,并通过防止连接到这些端口的设备影响STP拓扑来保持拓扑可预测。

二、原理
下图显示了由于物理交换机端口上的BPDU防护配置而创建的生成树协议边界。通过此设置,在物理交换机端口上接收的任何BPDU帧都会导致该端口被阻塞。
了解vSphere中的BPDU筛选器功能

物理交换机端口上的端口快速和BPDU Guard配置
当受感染的虚拟机开始生成BPDU帧时,某些客户遇到了拒绝服务***情况。在这种情况下,BPDU帧通过vSwitch转发并到达物理交换机端口。由于BPDU防护配置,物理交换机依次禁用端口。要从此上行链路流量路径故障中恢复,vSphere主机会将该虚拟机流量移至另一个上行链路,从而禁用另一个交换机端口。这最终会创建一个群集范围的故障情形,如下图所示(红色虚拟机正在发送BPDU帧):
了解vSphere中的BPDU筛选器功能

拒绝服务***情形

为防止此类拒绝服务***情形,BPDU筛选器功能作为vSphere 5.1及更高版本的一部分得到支持。在ESXi主机级别配置此功能后,vSwitch将删除来自任何虚拟机的BPDU帧。标准和分布式vSwitch均提供此功能。下图显示了生成BPDU的虚拟机(红色)以及vSwitch丢弃的BPDU:
了解vSphere中的BPDU筛选器功能
备注:
BPDU过滤器设置仅适用于正在设置的主机。如果要在环境中的所有主机上启用此功能,则必须单独在所有主机上更改该设置。
启用BPDU过滤后,它将应用于已配置主机上的所有出站流量。因此,将过滤与此主机关联的所有标准和分布式交换机端口。
默认情况下,ESXi中禁用BPDU筛选器。
此配置更改立即生效,不需要重新引导主机,但如果在更改值后打开电源,则该设置将在虚拟机上生效。必须关闭和打开虚拟机才能应用此过滤器。

三、如何启用bpdu

要从vSphere Client启用BPDU筛选器:
使用vSphere Client,切换到“ 主机和群集”视图。
从左窗格的清单树视图中单击所需的主机。
单击配置选项卡,然后单击软件下的高级设置。
单击“ 网络”,然后找到该Net.BlockGuestBPDU选项。
将值更改为1,启用BPDU筛选。
单击确定。
要从vSphere Web Client启用BPDU筛选:
单击清单中的所需主机。
单击管理选项卡,然后单击设置。
单击高级系统设置。
在页面右上角的“ 过滤器”字段中,键入BPDU以过滤结果。
Net.BlockGuestBPDU出现一个设置。
将值更改为1以启用BPDU筛选器。
要从命令行启用BPDU筛选:
使用SSH或直接控制台用户界面(DCUI)连接到所需的主机。有关更多信息,请参见在ESXi 5.0和5.1中使用ESXi Shell(2004746)。
:通过运行以下命令在主机上启用了BPDU过滤器

#esxcli system settings advanced set -o /Net/BlockGuestBPDU --int-value=1

注意事项:
有关在ESXi中设置高级选项的详细信息,请参阅配置ESXi / ESX的高级选项(1038578)。
只有在打开此过滤器以使过滤器生效后,才应启动具有桥接虚拟NIC的虚拟机。