删除一个openvswitch网桥上的端口会导致另一个网桥上的MAC地址发生变化

我试图在名为br-ex的openvswitch网桥上设置一个明确的MAC地址。 我正在运行Fedora 20,并使用本地ifdown / ifup命令来configuration网桥(我的networkingconfiguration文件的详细信息在这个问题的底部)。

通过运行ifdown br-exifup eth0重新创buildbr-ex后,我的OVSconfiguration如下所示:

 # ovs-vsctl show 1ab8ae7e-e9da-4af9-9226-03b54f5d2544 Bridge br-int Port br-int Interface br-int type: internal Port int-br-ex Interface int-br-ex Port "tapa1747c68-d3" tag: 1 Interface "tapa1747c68-d3" type: internal Bridge br-ex Port "eth0" Interface "eth0" Port br-ex Interface br-ex type: internal ovs_version: "2.0.1" 

请注意br-ex上的MAC地址:

 # ip link show dev br-ex 80: br-ex: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default link/ether fa:16:3e:ef:91:ec brd ff:ff:ff:ff:ff:ff 

现在从br-int删除port int-br-ex它不再以任何方式连接到br-ex

 # ovs-vsctl --if-exists del-port br-int int-br-ex 

并注意br-ex上的MAC地址已经改变:

 # ip link show dev br-ex 80: br-ex: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default link/ether f2:2a:d3:bf:3c:47 brd ff:ff:ff:ff:ff:ff 

刚刚发生了什么?

networkingconfiguration

我有,在/etc/sysconfig/network-scripts

 # cat ifcfg-br-ex DEVICE=br-ex DEVICETYPE=ovs TYPE=OVSBridge ONBOOT=yes OVSBOOTPROTO=dhcp OVSDHCPINTERFACES=eth0 MACADDR=fa:16:3e:ef:91:ec # cat ifcfg-eth0 DEVICE="eth0" ONBOOT="yes" BOOTPROTO=none TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex 

这里发生了什么? 为什么br-ex上的MAC地址改变? 我如何让它坚持下去?

看起来使用ip set link命令无法在OVS网桥上设置永久MAC地址。 相反,您需要通过ovs-vsctl进行设置:

 ovs-vsctl set bridge br-ex other-config:hwaddr=$MACADDR 

如果你使用的是RHEL / CentOS / Fedora,你可以通过在你的界面configuration文件中设置以下内容来完成:

 OVS_EXTRA="set bridge br-ex other-config:hwaddr=$MACADDR"