拓扑:
- 创建网络
neutron net-create net-1
neutron net-create net-2
neutron subnet-create --name subnet-1 net-1 11.0.0.0/24
neutron subnet-create --name subnet-2 net-2 12.0.0.0/24
- 创建路由器,连接网络
neutron router-create --distributed False router-1
neutron router-interface-add router-1 subnet-1
neutron router-interface-add router-1 subnet-2
手动将路由器改为非 DVR ,要先把路由器 down 掉,再更新
neutron router-update router-1 --admin_state_up False
neutron router-update router-1 --distributed False
neutron router-update router-1 --admin_state_up True
- 分别在两个计算节点上各创建一个虚机
- 查看可用节点
nova service-list --binary nova-compute
nova boot --image cirros --flavor c1 --nic net-name=net-1 --availability-zone nova:controller vm1
nova boot --image cirros --flavor c1 --nic net-name=net-2 --availability-zone nova:compute-1 vm2
查看 console-log 看是否启动完成:
nova console-log vm1
nova console-log vm2
availability-zone: nova
local-hostname: vm2.novalocal
launch-index: 0
=== cirros: current=0.4.0 uptime=52.52 ===
____ ____ ____
/ __/ __ ____ ____ / __ \/ __/
/ /__ / // __// __// /_/ /\ \
\___//_//_/ /_/ \____/___/
http://cirros-cloud.net
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
vm2 login:
x@controller:~$
- 查看信息
查看 ovs 网桥信息sudo ovs-vsctl show | grep -E "Bridge|Port|options|tag"
查看端口信息neutron port-list
(精简后)
将端口信息和网桥信息对应起来(精简后的截图)
-
登陆虚拟机,ping 对端虚机
可以通过 horizon 登陆,也可以通过放行 ssh 安全组规则后使用 ssh 登陆 -
通过 tcpdump 查看数据包
登陆 compute 节点,通过 port-id 筛选查看 vm2 网卡信息
查看源目 mac 地址,与 port-list 对应,可以看到 vm2 上发出的报文目的 MAC 地址是位于controller节点上的 router-interface
虽然 vm2 虽然在计算节点上,但是三层数据转发还需要到控制节点,这种方式会出现流量瓶颈。
在物理网卡 ens4 上抓包,可以看到数据流向: