Neutron与Nova的网络逻辑关系—Nova节点网络逻辑关系(一)推荐

在开始讲Neutron与Nova的网络关系前,先理解一下Openvswitch是两个模块组件中,特别重要的网络通讯模块了,而Openvswitch主要为管理Linux bridge及接口,了解Linux Bridge是学习Neutron很重要的一部份,下面我带着一个平台中的两个节点(Neutron和Nova)去理解Neutron和Nova的网络逻辑关系:

1.通过以下Vxlan的逻辑图,去理解每个节点中,到底存在些什么组件与接口

Nova与Neutron的接口架构图

2.通过以上图,先从计算节点(Nova)入手,通过使用相关命令去查询一些信息,操作如下:

[root@compute03 ~]# ip addr | grep q

1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN

2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP qlen 1000

3: eth1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP qlen 1000

4: ovs-system: BROADCAST,MULTICAST mtu 1500 qdisc noop state DOWN

5: br-int: BROADCAST,MULTICAST mtu 1500 qdisc noop state DOWN

13: br-tun: BROADCAST,MULTICAST mtu 1500 qdisc noop state DOWN

14: qbr7047c83a-64: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP

15: qvo7047c83a-64: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000

16: qvb7047c83a-64: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master qbr7047c83a-64 state UP qlen 1000

108: qbrae27b327-c5: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP

109: qvoae27b327-c5: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000

110: qvbae27b327-c5: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master qbrae27b327-c5 state UP qlen 1000

111: tapae27b327-c5: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master qbrae27b327-c5 state UNKNOWN qlen 500

112: qbr0945157b-02: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP

113: qvo0945157b-02: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000

114: qvb0945157b-02: BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master qbr0945157b-02 state UP qlen 1000

117: tap0945157b-02: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast master qbr0945157b-02 state UNKNOWN qlen 500

可用作为参考查询命令(Openvswitch的命令)

[root@compute03 ~]# ovs-vsctl list-br —-查询网桥

br-int

br-tun

[root@compute03 qemu]# ovs-vsctl list Bridge —-查询网桥更详细信息

_uuid : c6b6e91b-ee62-4fe4-ae1a-b25a69c037b8

controller : []

datapath_id : “00001ae9b6c6e44f”

datapath_type : “”

external_ids : {}

fail_mode : secure

flood_vlans : []

flow_tables : {}

ipfix : []

mirrors : []

name : br-tun

netflow : []

other_config : {}

ports : [02c8f17f-5add-431f-8034-461a05ad3f17, 189c8849-fd29-4d11-9233-109ca963187f, 4c7e8b0b-ce3d-4ad8-97cc-13bdc709cd8d, 568b47a0-973b-4930-b8c7-26915dd97fc1, ff1e1f72-9cd5-4e8e-999f-7da4b6efa760]

protocols : []

sflow : []

status : {}

stp_enable : false

[root@controller02 ~]# ovs-vsctl list-portsbr-int

patch-tun

tap0a0688b4-f8 —DHCP

tap3f46f81b-4f —Router

tapeb25bcee-1b —DHCP

tapf36b911d-fa —DHCP

tapf733605f-e2 —DHCP

tapfb9f4bc2-30 —Router

从以上命令行中,我们可以看到,有两个Linux Bridge,还有大概11个接口,其中有一些接口可以跟逻辑图对上位。

3.继续使用命令查询OVS相关配置信息,如下操作命令

[root@compute03 ~]# ovs-vsctl show

f6df2d7f-497e-4f62-a346-ab096811d737

Bridge br-int —-linux bridge

fail_mode: secure

Port patch-tun —–在br-int桥上的接口 ,与br-tun桥相连接的接口

Interface patch-tun

type: patch

options: {peer=patch-int}—-linux bridge 的接口名称

Port br-int

Interface br-int

type: internal

Port “qvoae27b327-c5”—–在br-int桥上的接口

tag: 21

Interface “qvoae27b327-c5”

Port “qvo0945157b-02”—–在br-int桥上的接口

tag: 1

Interface “qvo0945157b-02”

Bridge br-tun —-linux bridge

fail_mode: secure

Port br-tun —–在br-tun桥上的接口 ,与br-int桥相连接的接口

Interface br-tun

type: internal

Port “vxlan-0af80901”

Interface “vxlan-0af80901”—–在br-tun桥上的接口

type: vxlan

options: {df_default=”true”, in_key=flow, local_ip=”10.248.9.3″, out_key=flow, remote_ip=”10.248.9.1″}

Port “vxlan-0af80905”

Interface “vxlan-0af80905”—–在br-tun桥上的接口

type: vxlan

options: {df_default=”true”, in_key=flow, local_ip=”10.248.9.3″, out_key=flow, remote_ip=”10.248.9.5″}

Port patch-int

Interface patch-int

type: patch

options: {peer=patch-tun}

Port “vxlan-0af80902”

Interface “vxlan-0af80902”—–在br-tun桥上的接口

type: vxlan

options: {df_default=”true”, in_key=flow, local_ip=”10.248.9.3″, out_key=flow, remote_ip=”10.248.9.2″}

可用作为参考查询命令(Openvswitch的命令)

[root@compute03 ~]# ovs-vsctl list-ports br-int

patch-tun

qvo0945157b-02

qvoae27b327-c5

[root@compute03 ~]# ovs-vsctl list-ports br-tun

patch-int

vxlan-0af80901

vxlan-0af80902

vxlan-0af80905

[root@compute03 ~]#ovs-vsctl list Port | more —-查询接口更详细的信息

_uuid : 568b47a0-973b-4930-b8c7-26915dd97fc1

bond_downdelay : 0

bond_fake_iface : false

bond_mode : []

bond_updelay : 0

external_ids : {}

fake_bridge : false

interfaces : [c417e672-4127-41c4-87da-b3f4a325a49d]

lacp : []

mac : []

name : patch-int

other_config : {}

qos : []

statistics : {}

status : {}

tag : []

trunks : []

vlan_mode : []

以上命令中,先与逻辑图和Ip addr 进行对位,从中我们可以知道原来Nova还存在很多接口,其中Vxlan属于隧道技术了,也就是点对点技术,在Options的配置中可以了解到,还有现在看到接口都是Linux bridge的接口了,那么在ip addr | grep q的命令行中,我们也看到了tap、qbr、qvb的接口,这个属于什么接口呢?

4.继续使用命令或配置文件,查询tap、qbr、qvb的接口信息,如下操作:

[root@compute03 qemu]# pwd

/etc/libvirt/qemu

[root@compute03 qemu]# cat instance-0000006d.xml | grep qbr

source bridge=’qbr0945157b-02’/

[root@compute03 qemu]# cat instance-0000006d.xml | grep tap

target dev=’tap0945157b-02’/

从4的配置文件与命令行中,可以看到tap属于VM的的虚拟主机网口,而qbr是另外一个网桥,直接与虚拟主机的网口进行对接的网桥,目前还有没看到qvb的接口属于什么接口,按照逻辑图应该属于qbr面对接br-int的接口。

5.继续使用命令查询qvb的接口相关信息,如下操作:

[root@computer03 qemu]# brctl show

bridge name bridge id STPenabled interfaces

qbr0945157b-02 8000.2afe03b868fd no qvb0945157b-02

tap0945157b-02

qbrae27b327-c5 8000.16b068a489a3 no qvbae27b327-c5

tapae27b327-c5

从5以上命令中,可以看到很详细信息,qvb属于qbr的接口,同时tap也是他的一个接口,只是两个接口作用完全不同,一个是对接br-int,一个是对接VM。

Nova节点的命令总结:

IP addr

ovs-vsctl(show/list/list-ports/list-br)

ovs-ofctl(show)

ovs-appctl(fdb/show)

brctl (show)

从以上逻辑图可以很清楚知道数据流量向,每个接口的关系与顺序,请关注“Neutron与Nova的网络逻辑关系—Neutron节点网络逻辑关系(二)”

幸福不是因为你拥有得多,而是由于你计较得少。

Neutron与Nova的网络逻辑关系—Nova节点网络逻辑关系(一)推荐

相关文章:

你感兴趣的文章:

标签云: