我已经通过 OVS 设置了网络。但是,与其他 PC 的通信无法正常进行。
检查原因,入站广播数据包被丢弃。
ovs-vsctl 显示
Bridge "vmbr1"
Port "vmbr1"
Interface "vmbr1"
type: internal
Port "enp5s0" <= Trunk Port
Interface "enp5s0"
Port "veth1"
tag: 10
Interface "veth1"
type: internal
ovs_version: "2.12.0"
/etc/网络/接口:
auto enp5s0
iface enp5s0 inet manual
ovs_type OVSPort
ovs_bridge vmbr1
auto veth1
iface veth1 inet static
address 10.0.0.100/24
gateway 10.0.0.1
ovs_type OVSIntPort
ovs_bridge vmbr1
ovs_options tag=10
auto vmbr1
iface vmbr1 inet manual
ovs_type OVSBridge
ovs_ports veth1 enp5s0
ovs_options rstp_enable=true other_config:rstp-priority=40960
测试 1:从 PC ping 到服务器
不工作。
# tcpdump -nn -e -i enp5s0
05:32:36.472613 aa:aa:aa:aa:aa:aa > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 64: vlan 10, p 0, ethertype ARP, Request who-has 10.0.0.100 tell 10.0.0.200, length 46
# tcpdump -nn -i vmbr1
(with -e option)
05:39:40.596069 aa:aa:aa:aa:aa:aa > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 64: vlan 10, p 0, ethertype ARP, Request who-has 10.0.0.100 tell 10.0.0.200, length 46
09:21:01.249929 ARP, Request who-has 10.0.0.100 tell 10.0.0.200, length 46
# tcpdump -nn -i veth1
(没有内容,已删除!使用 -e 选项)
测试 2:从服务器 ping 到 PC
在职的。
测试 2 后从 PC ping 服务器
在职的。
# tcpdump -nn -e -i enp5s0
05:37:10.284850 aa:aa:aa:aa:aa:aa > bb:bb:bb:bb:bb:bb, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 10.0.0.200 > 10.0.0.100: ICMP echo request, id 1591, seq 23140, length 64
05:37:10.285915 bb:bb:bb:bb:bb:bb > aa:aa:aa:aa:aa:aa, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 10.0.0.100 > 10.0.0.200: ICMP echo reply, id 1591, seq 23140, length 64
测试 3 之后,使用 remove arp 从 PC ping 服务器
sudo arp -d 10.0.0.100 && ping 10.0.0.100
又不工作了!
可能原因是广播没有到达veth1,无法响应arp。
我的设置有问题吗?
另外,像ping -b 10.0.0.255一样,arp以外的协议都一样。广播不会在网桥上泛滥。
============================================
禁用 rstp 没问题!可能是什么原因?
答案1
OpenVSwitch 中的 STP 存在缺陷
抱歉,我又碰到了同样的问题,而且我在网上/邮件列表/等等上看到的研究:当你启用任何一个对于 RSTP 或 STP。
我怀疑接口无法进入 STP/RSTP 进程的转发/块指定表/数据库,从而中断通信。
我做过注意到虚拟机创建后初始化,在与内部网络(OVSIntPort)接口完全相同的 vlan 标记上运行良好,因为它们很乐意接收广播,但不能接收 OVSIntPorts;(