我正在尝试使用XCP / XenServer的“交换机端口locking”function,以允许虚拟机pipe理程序限制虚拟机可以使用的IP地址。 但是,我似乎无法按预期工作。
环境:戴尔PE2950上运行的XCP 1.6。 VM(Ubuntu 12.04 VM)连接到单个networking。 提供给XCP的networking作为绑定(而不是LACP),未标记(即没有VLAN)networking。 XCP使用的是OVS,而不是Linux桥接。
与VM相关的VIFconfiguration如下:
# xe vif-param-list uuid=31c2106f-18c0-1feb-453b-5500f6d7c2b4 uuid ( RO) : 31c2106f-18c0-1feb-453b-5500f6d7c2b4 vm-uuid ( RO): 53cf1c1e-8fce-4c75-dbc5-987ed1dd6444 vm-name-label ( RO): wtctest1 allowed-operations (SRO): attach; unplug current-operations (SRO): device ( RO): 0 MAC ( RO): ae:63:a8:61:f6:24 MAC-autogenerated ( RO): false MTU ( RO): 1500 currently-attached ( RO): true qos_algorithm_type ( RW): qos_algorithm_params (MRW): qos_supported_algorithms (SRO): other-config (MRW): network-uuid ( RO): 8f2489a4-1b0e-b906-24bf-0f1c724396da network-name-label ( RO): 192.168.1.0/24 io_read_kbs ( RO): 0.331 io_write_kbs ( RO): 0.134 locking-mode ( RW): locked ipv4-allowed (SRW): 192.168.1.131 ipv6-allowed (SRW): fe80::ac63:a8ff:fe61:f624; 2001:470:e872:1::132
我期望,当虚拟机被configuration为使用一个IP,如192.168.1.132,stream量不会通过,但它是:
root@wtctest1:~# ip -4 addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.1.132/24 brd 192.168.1.255 scope global eth0 root@wtctest1:~# ping -c1 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.05 ms
如果我将VIF的locking模式设置为“禁用”,则所有stream量停止stream动,如预期的那样。
我错过了什么? 对别人来说显而易见,我相信…
感谢在社区中的一些方便的工作,我们有一个修复! 问题被George Skuklin发现并修补了。 有问题的脚本是/ opt / xensource / libexec / setup-vif-rules。 234行有一个问题。
“bridge_name =”xenbr%s“%devid”
“Devid是domU(fe vif1.15; 15 – devid)的设备号,绝对不是xenbr号(xenbr0,xenbr1等)。”
创build了一个补丁替代了这一行,并添加了一个返回VIF所属的正确桥的函数。 我将主机置于维护模式,并通过执行以下操作在每个主机上的dom0主目录中应用修补程序:
cd ~ wget https://github.com/selectel/xen-api/commit/7f5608382e7d1c634f748ec78ace67c2c98ba617.patch patch -p2 /opt/xensource/libexec/setup-vif-rules 7f5608382e7d1c634f748ec78ace67c2c98ba617.patch
修补后,我发现VIF级别locking在我池中的任何networking上按预期工作。