已废弃:Neutron/FakeVM
目录
概述
FakeVM 为 Neutron 提供测试环境,无需 Nova(nova libvirt vif 驱动除外)。
通过此方法,我们可以模拟创建/删除/迁移 VM 端口,并对网络设备执行 ping 操作等。
除此之外,FakeVM 可以在单个主机上模拟多计算节点。
(但是,由于接口名称冲突,无法模拟迁移)
设置
像往常一样设置 Neutron(及其代理)。并运行 neutron-fakevm-agent。
命令
neutron-fakevm <命令> [选项] [参数]
选项
--host <主机名>:要操作的主机名
命令
create-port <网络 ID> <实例 ID>
创建 Neutron 端口并在指定主机上连接 vif
delete-port <vif-uuid>
断开 vif 连接并删除 Neutron 端口
migrate <目标主机> <vif-uuid>
将 vif 从通过 --host 选项指定的主机迁移到目标主机
plug <vif-uuid>
在指定主机上连接 vif
unplug <vif-uuid>
在指定主机上断开 vif 连接
unplug-all-host <vif-uuid>
断开所有主机上的 vif 连接
exec <vif-uuid> 命令
为 <vif-uuid> 执行命令
配置
neutron-fakevm-agent 有一些配置参数。
这些参数属于 [fakevm] 组。
通用参数
host = <主机名>
运行代理的主机名称。
fakevm_agent_plugin = <插件模块>
与 Neutron 插件对应的 FakeVM Agent Plugin 类。
有三个插件。
linuxbridge 插件:neutron.debug.fakevm.plugins.linuxbridge.NeutronFakeVMAgentLB
Open vSwitch 插件:neutron.debug.fakevm.plugins.openvswitch.NeutronFakeVMAgentOVS
Ryu 插件:neutron.debug.fakevm.plugins.ryu.NeutronFakeVMAgentRyu
vif_wrapper = <路径>
FakeVM VIF Wrapper 的路径。
例如,对于 devstack 环境,'/opt/stack/neutron/neutron/debug/fakevm/vif.py'。
nova_conf = <路径>
nova.conf 的路径。FakeVM 的 vif wrapper 使用它。
默认值为 /etc/nova/nova.conf。
以下参数将被使用。
libvirt_vif_driver = <vif 驱动程序>
libvirt_type = <kvm|qemu>
libvirt_use_virtio_for_bridges = <True|False>
firewall_driver = <防火墙驱动程序>
enable_multi_node_emulate = <True|False>
启用多节点模拟。默认值为 False。
对于 OVS 和 Ryu 插件
vir_bridge = <名称>
用于多节点模拟 VLAN 模式的桥接器名称。
use_tunnel = <True|False>
是否使用隧道。当 Neutron OVS 插件的隧道功能启用时,设置为 True。默认值为 False。
仅 OVS 插件
tunnel_interface = <名称>
启用 use_tunnel 时使用的隧道接口。
限制
模拟实时迁移
为了模拟实时迁移,需要两个主机。这是由于网络接口名称冲突造成的。在 Linux 上,网络接口名称限制为 14 个字节左右。
模拟多计算节点
- linuxbridge
目前,FakeVM linuxbridge 插件不支持多节点模拟。这是由于桥接器名称冲突造成的。桥接器名称由前缀“brq”和网络 ID 组成。前缀是静态定义的,网络 ID 是唯一的。因此,我们无法避免冲突。
- Open vSwitch 和 Ryu
目前,需要修改 Open vSwitch 才能使用多节点模拟的隧道模式。
有关详细信息,请参阅以下 URL
http://openvswitch.org/pipermail/dev/2013-June/028943.html
结构
在 FakeVM 代理中,有两个函数。一个是创建探测接口,另一个是模拟主机上的多个计算节点环境。每个 FakeVM 代理插件的实现方式不同。
探测接口
- Open vSwitch/Ryu
nova vif 驱动程序为端口创建一个 veth 和 linux 桥接器。veth 的一个接口连接到 br-int,另一个接口连接到 linux 桥接器。FakeVM 代理插件创建一个额外的 veth,并将一个接口连接到桥接器,另一个接口用作探测接口。代理插件还为探测接口创建一个命名空间,以分隔每个探测。
+----------+
| |
| br-int |
| |
+---[qvo]--+
| .... ns = fakevm-<HOST>-<PORT-ID> ...
| :
+-----[qvb]------+ :
| | :
| qbr<PORT-ID> [qfb]-----[qfv]
| | :
+----------------+ :
:
- linuxbridge
Neutron linuxbridge 插件代理处理名称以“tap”开头的接口。因此,探测接口的名称必须以“tap”开头。FakeVM 代理插件创建一个以“tap”开头的接口的 veth。该接口连接到 Neutron 网络的桥接器。另一个用作探测接口。
.... ns = fakevm-<HOST>-<PORT-ID> ... +-------------------+ : | | : | brq<NETWORK-ID> [tap]-----[qfv] | | : +-------------------+ :
多节点模拟
- Open vSwitch
有两种模式:VLAN 和隧道。在 VLAN 模式下,每个主机的 OVS 桥接器通过桥接器连接。当使用提供商网络时,为每个物理网络创建一个 Linux 桥接器。
+-------------------+ +-------------------+
| | | |
| br-int1 | | br-int2 |
| | | |
+--[int-<PHY-BR1>]--+ +--[int-<PHY-BR2>]--+
| |
| |
+--[phy-<PHY-BR1>]--+ +--[phy-<PHY-BR2>]--+
| | | |
| PHY-BR1 | | PHY-BR2 |
| | | |
+--[qfo<PHY-BR1>]---+ +---[qfo<PHY-BR2>]--+
| |
| |
+--[qfb<PHY-BR1>]----[qfb<PHY-BR2>]--+
| |
| bfv-<PHY-NET1> |
| |
+------------------------------------+
br-int1 用于主机 1,br-int2 用于主机 2。
在 host1 上,bridge_mappings 配置为 <PHY-NET1>:<PHY-BR1>。
在 host2 上,bridge_mappings 配置为 <PHY-NET1>:<PHY-BR2>。
在隧道模式下,为每个主机创建虚拟接口,并将隧道 IP 地址分配给该接口。
注意:要使用隧道模式,需要修改 Open vSwitch。请参阅上面的“限制”部分。
- linuxbridge
FakeVM 代理 linuxbridge 插件现在不支持多节点模拟。因为 Neutron linuxbridge 插件创建的桥接器名称冲突。桥接器名称由前缀“brq”和网络 ID 组成。前缀是静态定义的,网络 ID 是唯一的。因此,我们无法避免冲突。
- Ryu
模式与 OVS 类似。VLAN 模式比 OVS 简单,因为 Neutron Ryu 插件尚不支持提供商网络。它只是通过桥接器连接每个 OVS 桥接器。
+-------------------+ +-------------------+
| | | |
| br-int1 | | br-int2 |
| | | |
+----[qfo<HOST1>]---+ +---[qfo<HOST2>]----+
| |
| |
+--[qfb<HOST1>]--------[qfb<HOST2>]--+
| |
| br-fakevm |
| |
+------------------------------------+
隧道模式与 OVS 相同。
示例
单节点,创建端口并从探测接口 ping
使用 devstack 设置。
localrc
# only runs keystone and neutron. other components are not necessary ENABLED_SERVICES="" # disable all of default enabled services enable_service rabbit enable_service key enable_service mysql enable_service neutron enable_service q-agt enable_service q-l3 enable_service q-dhcp enable_service q-svc # q-meta makes sense only with nova # plus your neutron plugin settings... Q_PLUGIN=openvswitch ENABLE_TENANT_TUNNELS=False ENABLE_TENANT_VLANS=True PHYSICAL_NETWORK=phy1 TENANT_VLAN_RANGE=200:300 OVS_PHYSICAL_BRIDGE=br-eth1 # And necessary parameters...
运行 devstack,然后启动 fakevm 代理。
fakevm.ini
[default] debug = True verbose = True [fakevm] host = guest1 vif_wrapper = /opt/stack/neutron/neutron/debug/fakevm/vif.py nova_conf = /etc/nova/nova.conf fakevm_agent_plugin = neutron.debug.fakevm.fakevm_agent_ovs.NeutronFakeVMAgentOVS enable_multi_node_emulate = False
$ neutron-fakevm-agent --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ --config-file ./fakevm.ini
然后创建端口。
$ . ./openrc admin demo
$ neutron net-list
+--------------------------------------+---------+-------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+---------+-------------------------------------------------------+
| 18f725c7-dd56-42ba-975d-e444152a0377 | public | 76d5e916-2353-4025-a61a-2e5ca8a15708 192.168.100.0/24 |
| 5379c0d2-9a0d-4bc5-a028-a0c0c7df336d | private | ee138a17-cdf4-436f-b651-0245201ea71e 10.0.0.0/24 |
+--------------------------------------+---------+-------------------------------------------------------+
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
create-port --host guest1 5379c0d2-9a0d-4bc5-a028-a0c0c7df336d i-xxxx
:::
VM port created on guest1: vif_uuid: d7e577a9-a9cd-46a4-870c-2754641e6b87 mac: fa:16:3e:87:e6:4f tenant_id: 43dd8e1496104939bca6256edf874661
fixed_ips: [{u'subnet_id': u'ee138a17-cdf4-436f-b651-0245201ea71e', u'ip_address': u'10.0.0.3'}]
netowrk: {u'status': u'ACTIVE', u'subnets': [u'ee138a17-cdf4-436f-b651-0245201ea71e'], u'name': u'private', u'provider:physical_network': u'phy1', u'admin_state_up': True, u'tenant_id': u'43dd8e1496104939bca6256edf874661', u'provider:network_type': u'vlan', u'router:external': False, u'shared': False, u'id': u'5379c0d2-9a0d-4bc5-a028-a0c0c7df336d', u'provider:segmentation_id': 200}
$
$ neutron port-list
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| id | name | mac_address | fixed_ips |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| 4c12d56c-83fd-4b8e-8ad9-7b5823259e7d | | fa:16:3e:07:5e:3e | {"subnet_id": "ee138a17-cdf4-436f-b651-0245201ea71e", "ip_address": "10.0.0.2"} |
| 9ffdbffd-e8eb-4ae2-ad86-d0ca50303251 | | fa:16:3e:34:55:5e | {"subnet_id": "76d5e916-2353-4025-a61a-2e5ca8a15708", "ip_address": "192.168.100.2"} |
| b167fd32-3d4d-4a21-911e-230aa245bf32 | | fa:16:3e:bb:91:68 | {"subnet_id": "ee138a17-cdf4-436f-b651-0245201ea71e", "ip_address": "10.0.0.1"} |
| d7e577a9-a9cd-46a4-870c-2754641e6b87 | | fa:16:3e:87:e6:4f | {"subnet_id": "ee138a17-cdf4-436f-b651-0245201ea71e", "ip_address": "10.0.0.3"} |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
$
使用 dhclient 为探测接口分配 IP 地址。
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest1 d7e577a9-a9cd-46a4-870c-2754641e6b87 "ip link"
:::
VM port executeon guest1: d7e577a9-a9cd-46a4-870c-2754641e6b87 ip link
19: qfvd7e577a9-a: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:87:e6:4f brd ff:ff:ff:ff:ff:ff
21: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest1 d7e577a9-a9cd-46a4-870c-2754641e6b87 "dhclient -4 -v qfvd7e577a9-a"
:::
VM port executeon guest1: d7e577a9-a9cd-46a4-870c-2754641e6b87 dhclient -4 -v qfvd7e577a9-a
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest1 d7e577a9-a9cd-46a4-870c-2754641e6b87 "ifconfig"
:::
VM port executeon guest1: d7e577a9-a9cd-46a4-870c-2754641e6b87 ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
qfvd7e577a9-a Link encap:Ethernet HWaddr fa:16:3e:87:e6:4f
inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe87:e64f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2304 (2.3 KB) TX bytes:1528 (1.5 KB)
从探测接口 ping Neutron 网络上的 DHCP 端口。
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \ exec --host guest1 d7e577a9-a9cd-46a4-870c-2754641e6b87 "ping -c1 10.0.0.2" ::: VM port executeon guest1: d7e577a9-a9cd-46a4-870c-2754641e6b87 ping -c1 10.0.0.2 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=44.1 ms --- 10.0.0.2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 44.159/44.159/44.159/0.000 ms $
多节点并模拟实时迁移
在另一个物理主机上,运行 FakeVM 代理和 Neutron 插件代理。
fakevm.ini
[default] debug = True verbose = True [fakevm] host = guest2 vif_wrapper = /opt/stack/neutron/neutron/debug/fakevm/vif.py nova_conf = /etc/nova/nova.conf fakevm_agent_plugin = neutron.debug.fakevm.fakevm_agent_ovs.NeutronFakeVMAgentOVS enable_multi_node_emulate = False
$ neutron-fakevm-agent --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ --config-file ./fakevm.ini
$ sudo ovs-vsctl add-br br-int $ sudo ovs-vsctl add-br br-eth1 $ sudo ovs-vsctl add-port br-eth1 eth1 $ neutron-openvswitch-agent --debug --verbose \ --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
然后在原始节点上操作。
$ sudo ovs-vsctl add-port br-eth1 eth1
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
create-port --host guest2 5379c0d2-9a0d-4bc5-a028-a0c0c7df336d i-yyyy
:::
VM port created on guest2: vif_uuid: 418874ff-571b-46e2-a28a-75fe8afcb9e1 mac: fa:16:3e:c8:c0:34 tenant_id: 43dd8e1496104939bca6256edf874661
fixed_ips: [{u'subnet_id': u'ee138a17-cdf4-436f-b651-0245201ea71e', u'ip_address': u'10.0.0.4'}]
netowrk: {u'status': u'ACTIVE', u'subnets': [u'ee138a17-cdf4-436f-b651-0245201ea71e'], u'name': u'private', u'provider:physical_network': u'phy1', u'admin_state_up': True, u'tenant_id': u'43dd8e1496104939bca6256edf874661', u'provider:network_type': u'vlan', u'router:external': False, u'shared': False, u'id': u'5379c0d2-9a0d-4bc5-a028-a0c0c7df336d', u'provider:segmentation_id': 200}
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest2 418874ff-571b-46e2-a28a-75fe8afcb9e1 "ip link"
:::
VM port executeon guest2: 418874ff-571b-46e2-a28a-75fe8afcb9e1 ip link
17: qfv418874ff-5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:c8:c0:34 brd ff:ff:ff:ff:ff:ff
19: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest2 418874ff-571b-46e2-a28a-75fe8afcb9e1 "dhclient -4 -v qfv418874ff-5"
:::
VM port executeon guest2: 418874ff-571b-46e2-a28a-75fe8afcb9e1 dhclient -4 -v qfv418874ff-5
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest2 418874ff-571b-46e2-a28a-75fe8afcb9e1 "ifconfig"
:::
VM port executeon guest2: 418874ff-571b-46e2-a28a-75fe8afcb9e1 ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
qfv418874ff-5 Link encap:Ethernet HWaddr fa:16:3e:c8:c0:34
inet addr:10.0.0.4 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fec8:c034/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2130 (2.1 KB) TX bytes:2734 (2.7 KB)
$
从另一个节点 ping 到原始节点。
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \ exec --host guest2 418874ff-571b-46e2-a28a-75fe8afcb9e1 "ping -c1 10.0.0.3" ::: VM port executeon guest2: 418874ff-571b-46e2-a28a-75fe8afcb9e1 ping -c1 10.0.0.3 PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data. 64 bytes from 10.0.0.3: icmp_req=1 ttl=64 time=10.9 ms --- 10.0.0.3 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 10.921/10.921/10.921/0.000 ms $
然后尝试模拟实时迁移
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \ exec --host guest2 418874ff-571b-46e2-a28a-75fe8afcb9e1 "dhclient -4 -r qfv418874ff-5" ::: VM port executeon guest2: 418874ff-571b-46e2-a28a-75fe8afcb9e1 dhclient -4 -r qfv418874ff-5 $ $ neutron-fakevm --config-file /etc/neutron/neutron.conf \ migrate --host guest2 guest1 418874ff-571b-46e2-a28a-75fe8afcb9e1 ::: VM migrate : 418874ff-571b-46e2-a28a-75fe8afcb9e1 guest2 -> guest1 $ $ ip link|grep qvo 17: qvod7e577a9-a9: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 32: qvo418874ff-57: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 $
多节点模拟
在原始主机上,修改配置以启用多节点模式并重新启动 FakeVM 代理。
fakevm.ini
[default] debug = True verbose = True [fakevm] host = guest1 vif_wrapper = /opt/stack/neutron/neutron/debug/fakevm/vif.py nova_conf = /etc/nova/nova.conf fakevm_agent_plugin = neutron.debug.fakevm.fakevm_agent_ovs.NeutronFakeVMAgentOVS enable_multi_node_emulate = True use_tunnel = False vir_bridge = br-fakevm
$ neutron-fakevm-agent --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ --config-file ./fakevm.ini
在同一台机器上使用不同的配置运行 Neutron 插件代理和 FakeVM 代理。
guest3.ini
[ovs] integration_bridge = br-int2 bridge_mappings = phy1:br-eth2 [fakevm] host = guest3
$ neutron-fakevm-agent --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ --config-file ./fakevm.ini --config-file ./guest3.ini
$ neutron-openvswitch-agent --debug --verbose \ --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ --config-file ./guest3.ini
然后在模拟节点上创建一个端口。
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
create-port --host guest3 5379c0d2-9a0d-4bc5-a028-a0c0c7df336d i-zzzz
:::
VM port created on guest3: vif_uuid: c29cfc8c-c978-4025-8fa9-0a6c791bb31b mac: fa:16:3e:fc:f8:3e tenant_id: 43dd8e1496104939bca6256edf874661
fixed_ips: [{u'subnet_id': u'ee138a17-cdf4-436f-b651-0245201ea71e', u'ip_address': u'10.0.0.5'}]
netowrk: {u'status': u'ACTIVE', u'subnets': [u'ee138a17-cdf4-436f-b651-0245201ea71e'], u'name': u'private', u'provider:physical_network': u'phy1', u'admin_state_up': True, u'tenant_id': u'43dd8e1496104939bca6256edf874661', u'provider:network_type': u'vlan', u'router:external': False, u'shared': False, u'id': u'5379c0d2-9a0d-4bc5-a028-a0c0c7df336d', u'provider:segmentation_id': 200}
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest3 c29cfc8c-c978-4025-8fa9-0a6c791bb31b "ip link"
:::
VM port executeon guest3: c29cfc8c-c978-4025-8fa9-0a6c791bb31b ip link
49: qfvc29cfc8c-c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:fc:f8:3e brd ff:ff:ff:ff:ff:ff
51: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest3 c29cfc8c-c978-4025-8fa9-0a6c791bb31b "dhclient -4 -v qfvc29cfc8c-c"
:::
VM port executeon guest3: c29cfc8c-c978-4025-8fa9-0a6c791bb31b dhclient -4 -v qfvc29cfc8c-c
$
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \
exec --host guest3 c29cfc8c-c978-4025-8fa9-0a6c791bb31b "ifconfig"
:::
VM port executeon guest3: c29cfc8c-c978-4025-8fa9-0a6c791bb31b ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
qfvc29cfc8c-c Link encap:Ethernet HWaddr fa:16:3e:fc:f8:3e
inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fefc:f83e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2076 (2.0 KB) TX bytes:1272 (1.2 KB)
$
从模拟节点 ping 到原始节点。
$ neutron-fakevm --config-file /etc/neutron/neutron.conf \ exec --host guest3 c29cfc8c-c978-4025-8fa9-0a6c791bb31b "ping -c1 10.0.0.3" ::: VM port executeon guest3: c29cfc8c-c978-4025-8fa9-0a6c791bb31b ping -c1 10.0.0.3 PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data. 64 bytes from 10.0.0.3: icmp_req=1 ttl=64 time=11.8 ms --- 10.0.0.3 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 11.899/11.899/11.899/0.000 ms $