Bonding模式共享BMC网口

双网卡Bonding模式下共享BMC网口不工作怎么办?

为了保证网卡的物理冗余,Bonding是常见的技术手段。Bonding将两个物理网口绑定为一个虚拟的网口,使得任意一个网口失效都不会影响该网口的通信。更多信息请参见 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/ch-configure_network_bonding 。开启Bonding后,当物理机通过Bonding网口发送报文时,会按照Bonding配置的模式,以主备或者负载均衡的方式,选择其中一个物理网口发送报文。反之,当交换机向物理机的Bonding网口发送报文时,也会按照规则选择其中一个网口作为实际的接收网口发送报文,接收到的报文在服务器的虚拟Bonding网口进行重组,就好像报文是通过一个网口接收的一样。

BMC网口是网络访问物理服务器BMC带外管理服务的网络接口,有两种模式:1)专用网口(dedicated),物理机主板上有一个专门的独立网口用于访问BMC。2)共享模式(shared):可以通过物理机的板载通信网口(一般是第一个口)访问BMC,这个时候通过第一个口既可以访问物理机的第一个网口,也可以访问BMC,可以理解为第一个网口有两个mac地址,一个是BMC的网口mac,另一个是正常的网口的mac。为了便于部署,节约交换机网口和网线,很多时候会采用共享模式的BMC网口。BMC网口采用专用还是共享模式需要在BMC的控制面板进行设置。

当开启了BMC共享网口模式,使用第一个板载物理网口作为共享BMC口,同时又使用第一二个网口bonding的时候,往往会导致BMC网口访问失效。究其原因也比较容易理解:当外部访问BMC网口时,交换机会认为访问BMC的报文也是一个访问物理机的普通报文,会按照发送给物理机bonding网口的逻辑处理,选择其中一个网口发送。但是,由于BMC网口只监听在第一个网口,交换机通过第二个网口发送的报文就无法被BMC接收到。这样BMC无法正常接收报文,导致BMC网络功能无法正常访问。

要解决这个问题,原理也比较简单:需要在物理机上联的交换机上做路由策略,将访问BMC的报文必须从指定的第一个网口发送,这样BMC就能接收到完整的报文,从而能够正常通信。

然而,配置这样的路由策略比较复杂。

庆幸的是,目前一些新型交换机已经为此场景设计了专门的命令,用来解决这个问题。例如,H3C的交换机就增加配置聚合管理VLAN和聚合管理端口的专用命令,如下图所示。

具体请参见:https://www.h3c.com/cn/d_201903/1157320_30005_0.htm#_Toc4502224