部署instance到OVS本地网络:Neutron与OpenvSwitch交互解析

需积分: 0 0 下载量 157 浏览量 更新于2024-08-04 1 收藏 657KB DOCX 举报
"本文主要探讨了在OpenStack环境中,如何将instance部署到OVS(Open vSwitch)本地网络first_local_net,并分析了网络结构的变化。在部署instance后,Neutron会创建port,分配IP和MAC地址,并将port与instance关联。在Linux中,neutron-openvswitch-agent会创建tap设备,但实际情况下,我们发现设备名称为qvofc1c6ebb-71,而非预期的tapfc1c6ebb-71。同时,出现了一个新的网桥qbrfc1c6ebb-71,它与instance的虚拟网卡tapfc1c6ebb-71相连,而qvbfc1c6ebb-71则存在于qbrfc1c6ebb-71上。通过ethtool-S命令的统计信息,我们可以进一步探究这两个设备之间的关系。" 在OpenStack的部署过程中,instance的网络连接通常涉及多个组件的协作。在这个例子中,我们首先创建了名为first_local_net的OVS本地网络。当一个名为"cirros-vm1"的instance被部署并分配到这个网络时,Neutron系统会自动进行以下操作: 1. 在指定的subnet中为instance创建一个port,分配IP地址(例如172.16.1.3)和MAC地址。 2. neutron-openvswitch-agent会根据port信息创建一个tap设备,假设其名称为tapfc1c6ebb-71。 3. 这个tap设备会被连接到集成桥(br-int),从而使得instance能够接入网络。 然而,当我们通过`ovs-vsctl show`检查br-int的配置时,却发现了一个名为qvofc1c6ebb-71的设备,而不是预期的tapfc1c6ebb-71。这表明在实际操作中,OpenvSwitch驱动可能采用了不同的方式来连接instance。 进一步的调查发现,`brctl show`显示了一个新的Linux Bridge,名为qbrfc1c6ebb-71,它连接了两个设备:qvbfc1c6ebb-71和tapfc1c6ebb-71。通过`virsh edit`查看instance的配置,确认tapfc1c6ebb-71确实是cirros-vm1的虚拟网卡。 为了理解qvofc1c6ebb-71和qvbfc1c6ebb-71的作用,我们可以使用`ethtool -S`命令查看它们的统计信息。这个命令提供了关于网络接口的详细网络流量统计数据,可以帮助我们了解这两个设备在网络中的角色。 qvofc1c6ebb-71可能代表了OpenvSwitch中的一个vif(虚拟接口)对象,用于在OVS的br-int桥和instance的虚拟网络之间建立连接。而qvbfc1c6ebb-71可能是QEMU虚拟机管理程序创建的设备,它位于Linux Bridge qbrfc1c6ebb-71上,作为连接instance内部网络和OVS桥的桥梁。 虽然最初预期的是tap设备直接连接到OVS的br-int桥,但实际上,OpenStack使用了更复杂的网络架构,包括Linux Bridge和额外的vif设备,来确保instance的网络连接。这种设计提供了更高的灵活性和可扩展性,但同时也增加了理解和调试网络问题的复杂性。