Neutron與Nova的網絡邏輯關係---Nova節點網絡邏輯關係(一)

在開始講Neutron與Nova的網絡關係前,先理解一下Openvswitch是兩個模塊組件中,特別重要的網絡通訊模塊了,而Openvswitch主要爲管理Linux bridge及接口,瞭解Linux Bridge是學習Neutron很重要的一部份,下面我帶着一個平臺中的兩個節點(Neutron和Nova)去理解Neutron和Nova的網絡邏輯關係:


1.通過以下Vxlan的邏輯圖,去理解每個節點中,到底存在些什麼組件與接口


wKiom1aYsSnCxhglAAL79akUegU607.png                                                         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節點網絡邏輯關係(二)”



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章