OpenStack Neutron 的 CLI(openstack network/subnet/port/router …)负责「逻辑层面的抽象」,真正落到宿主机上,都是通过 neutron-openvswitch-agent 把配置下发到 OVS 里的。
所以排查网络问题的时候,除了 openstack
命令,还必须配合 ovs-vsctl / ip netns / ip link / ip route 一起看。
以下是把 OpenStack CLI + OVS 命令整合成一条完整的排查链路。
openstack server show <vm>
→ 确认 VM 的 IP 和网卡端口openstack port show <port-id>
→ 看绑定网络、子网、安全组openstack subnet show <subnet-id>
→ CIDR / gateway_ipopenstack router port list <router-id>
→ router 接口openstack router show <router-id>
→ external_gateway_infoopenstack network list --external
→ 外部网络 / 网关ovs-vsctl show | grep tap
ovs-vsctl list port tap-xxxx
ovs-vsctl show
ovs-vsctl list-br
ovs-vsctl list-ports br-int
ovs-vsctl list-ports br-tun
ovs-vsctl show | grep vxlan
确认 VXLAN peer(remote_ip)是否正确。
ovs-vsctl list-ports br-ex
ip link show veth2
ovs-vsctl show | grep patch
ip netns list
ip netns exec qrouter-xxxx ip addr
ip netns exec qrouter-xxxx ip route
从虚拟机发包 → 出到物理网卡 的流程图
[ VM 内部网卡 eth0 ]
│
▼
[ tap-xxxx (qemu/kvm 虚拟接口) ]
│
▼
[ br-int (OVS 集中交换机) ]
├─ 租户网卡 (tap-xxx)
├─ Router 内口 (qr-xxx)
└─ Patch 口 (int-br-ex)
│
▼
[ phy-br-ex (OVS patch 口) ]
│
▼
[ br-ex (外部网桥) ]
├─ qg-xxx (Router 外口)
└─ veth/物理网卡 (enoXXXX)
│
▼
[ 物理网络 / 外部世界 ]
VM → tap-口
openstack port show <vm-port-id>
ovs-vsctl list-ports br-int | grep tap
tap → br-int
ovs-vsctl show
ovs-vsctl list port tap-xxxx
br-int → qrouter (qr-xxx)
ip netns list
ip netns exec qrouter-xxxx ip addr
br-int → br-ex (patch 口)
ovs-vsctl show | grep patch
br-ex → qg-xxx
ip netns exec qrouter-xxxx ip addr
br-ex → 物理网卡 / veth
ovs-vsctl list-ports br-ex
ip link show veth2 # 或者宿主机物理口 enoXXXX
最终出宿主机
ip route
tcpdump -i veth2 -n icmp