OpenStack里的GRE

neutron網(wǎng)絡(luò)目的是為OpenStack云更靈活的劃分網(wǎng)絡(luò),在多租戶的環(huán)境下提供給每個租戶獨立的網(wǎng)絡(luò)環(huán)境。

neutron混合實施了第二層的VLAN和第三層的路由服務(wù),它可為支持的網(wǎng)絡(luò)提供防火墻,負載均衡以及IPSec VPN等擴展功能。

neutron是openstack中一個重要模塊,也是比較難理解和debug的模塊之一。

一、分析經(jīng)典的三個節(jié)點的Havana的OpenStack中網(wǎng)絡(luò)


圖1:三節(jié)點opens網(wǎng)絡(luò)

分為三個網(wǎng)絡(luò):

1、External Network/API Network,這個網(wǎng)絡(luò)是鏈接外網(wǎng)的,無論是用戶調(diào)用OpenStack的API,還是創(chuàng)建出來的虛擬機要訪問外網(wǎng),或者外網(wǎng)要ssh到虛擬機,都需要通過這個網(wǎng)絡(luò)

2、Data Network,數(shù)據(jù)網(wǎng)絡(luò),虛擬機之間的數(shù)據(jù)傳輸通過這個網(wǎng)絡(luò)來進行,比如一個虛擬機要連接到另一個虛擬機,虛擬機要連接虛擬路由都是通過這個網(wǎng)絡(luò)來進行

3、Management Network,管理網(wǎng)絡(luò),OpenStack各個模塊之間的交互,連接數(shù)據(jù)庫,連接Message Queue都是通過這個網(wǎng)絡(luò)來進行。

將這三個網(wǎng)絡(luò)隔離,一方面是安全,在虛擬機里面,無論采用什么手段,干擾的都僅僅是Data

Network,都不可能訪問到我的數(shù)據(jù)庫。一方面是流量分離,Management

Network的流量不是很大的,而且一般都會比較優(yōu)雅的使用,而Data Network和External Network就需要有流量控制策略。

這個網(wǎng)絡(luò)結(jié)構(gòu)有點奇怪,除了Controlller節(jié)點是兩張網(wǎng)卡之外,其他的都多了一張網(wǎng)卡連接到External Network。這個網(wǎng)卡是用來做apt-get的,因為Compute Node按說是沒有網(wǎng)卡連接到外網(wǎng)的,為了apt-get添加了eth0;NetWork Node雖然有一個網(wǎng)卡eth1是連接外網(wǎng)的,而在neutron配置好之前,這個網(wǎng)卡通常是沒有IP的,為了apt-get也添加了eth0;有人說可以通過route規(guī)則都通過Controller連接到外網(wǎng),但是對于初學者,這樣比較容易操作。

二、neutron三個節(jié)點簡介

neutron是用來創(chuàng)建虛擬網(wǎng)絡(luò)的,所謂虛擬網(wǎng)絡(luò),就是虛擬機啟動的時候會有一個虛擬網(wǎng)卡,虛擬網(wǎng)卡會連接到虛擬switch上,虛擬交換機連接到虛擬router上,虛擬路由器最終和物理網(wǎng)卡聯(lián)通,從而虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)聯(lián)通起來。

neutron分成多個模塊分布在三個節(jié)點上。

Controller節(jié)點:

neutron-server,用于接受API請求創(chuàng)建網(wǎng)絡(luò),子網(wǎng),路由器等,然而創(chuàng)建的這些東西僅僅是一些數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)庫里面

?Network節(jié)點:

neutron-l3-agent,用于創(chuàng)建和管理虛擬路由器,當neutron-server將路由器的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建好,neutron-l3-agent是做具體事情的,真正的調(diào)用命令行將虛擬路由器,路由表,namespace,iptables規(guī)則全部創(chuàng)建好。

neutron-dhcp-agent,用于創(chuàng)建和管理虛擬DHCP server,每個虛擬網(wǎng)絡(luò)都會有一個DHCP server,這個DHCP server為這個虛擬網(wǎng)絡(luò)里面的虛擬機提供IP。

neutron-openvswitch-plugin-agent,這個是用于創(chuàng)建L2的switch的,在Network節(jié)點上,Router和DHCP Server都會連接到二層的switch上。

?Compute節(jié)點:

neutron-openstackvswitch-plugin-agent,這個是用于創(chuàng)建L2層switch的,在compute節(jié)點上,虛擬機的網(wǎng)卡也是連接到二層的switch上。

三、租戶網(wǎng)絡(luò)創(chuàng)建過程

當我們搭建好了OpenStack,然后創(chuàng)建好了tenant后,我們會為這個tenant創(chuàng)建一個網(wǎng)絡(luò)。

圖2:租戶網(wǎng)絡(luò)創(chuàng)建過程

結(jié)合上圖說明給一個租戶創(chuàng)建網(wǎng)絡(luò)的流程:

1、為這個Tenant創(chuàng)建一個private network,不同的private network是需要通過VLAN

tagging進行隔離的,互相之間廣播(broadcast)不能到達,這里我們我們用的是GRE模式,也需要一個類似VLANID的東西,稱為Segment

ID

2、為private network創(chuàng)建一個subnet,subnet才是真正配置IP網(wǎng)段的地方,對于私網(wǎng),我們常常用192.168.0.0/24這個網(wǎng)段

3、為這個Tenant創(chuàng)建一個Router,才能夠訪問外網(wǎng)

4、將private network連接到Router上

5、創(chuàng)建一個External Network

6、創(chuàng)建一個External

Network的Subnet,這個外網(wǎng)邏輯上代表了我們數(shù)據(jù)中心的物理網(wǎng)絡(luò),通過這個物理網(wǎng)絡(luò),我們可以訪問外網(wǎng)。因而PUBLIC_GATEWAY應(yīng)該設(shè)為數(shù)據(jù)中心里面的Gateway,PUBLCI_RANGE也應(yīng)該和數(shù)據(jù)中心的物理網(wǎng)絡(luò)的CIDR一致,否則連不通。之所以設(shè)置PUBLIC_START和PUBLIC_END,是因為在數(shù)據(jù)中心中,不可能所有的IP地址都給OpenStack使用,另外的可能搭建了VMware

Vcenter,可能有物理機,所以僅僅分配一個區(qū)間給OpenStack來用。

7、將Router連接到External Network

經(jīng)過這個流程,從虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)即邏輯上聯(lián)通了。

代碼流程如下:

#!/bin/bash?

TENANT_NAME="openstack"???

TENANT_NETWORK_NAME="openstack-net"???

TENANT_SUBNET_NAME="${TENANT_NETWORK_NAME}-subnet"???

TENANT_ROUTER_NAME="openstack-router"???

FIXED_RANGE="192.168.0.0/24"???

NETWORK_GATEWAY="192.168.0.1"


PUBLIC_GATEWAY="172.24.1.1"??

PUBLIC_RANGE="172.24.1.0/24"???

PUBLIC_START="172.24.1.100"?????

PUBLIC_END="172.24.1.200"?

TENANT_ID=$(keystone tenant-list | grep " $TENANT_NAME " | awk '{print $2}')


(1) TENANT_NET_ID=$(neutron net-create --tenant_id $TENANT_ID

$TENANT_NETWORK_NAME --provider:network_type gre

--provider:segmentation_id 1 | grep " id " | awk '{print $4}')

(2) TENANT_SUBNET_ID=$(neutron subnet-create --tenant_id $TENANT_ID

--ip_version 4 --name $TENANT_SUBNET_NAME $TENANT_NET_ID $FIXED_RANGE

--gateway $NETWORK_GATEWAY --dns_nameservers list=true 8.8.8.8 | grep "

id " | awk '{print $4}')

(3) ROUTER_ID=$(neutron router-create --tenant_id $TENANT_ID $TENANT_ROUTER_NAME | grep " id " | awk '{print $4}')

(4) neutron router-interface-add $ROUTER_ID $TENANT_SUBNET_ID

(5) neutron net-create public --router:external=True

(6) neutron subnet-create --ip_version 4 --gateway $PUBLIC_GATEWAY

public $PUBLIC_RANGE --allocation-pool

start=$PUBLIC_START,end=$PUBLIC_END --disable-dhcp --name public-subnet

(7) neutron router-gateway-set ${TENANT_ROUTER_NAME} public

四、GRE模式下網(wǎng)絡(luò)細節(jié)

創(chuàng)建完網(wǎng)絡(luò),如果不創(chuàng)建虛擬機,我們發(fā)現(xiàn)neutron的agent還是做了很多工作的,創(chuàng)建了很多虛擬網(wǎng)卡和switch。

-----------------------------------------------------------------------------------------------

在compute節(jié)點上:

root@ComputeNode:~#ip addr??? 【顯示所有接口的IP信息】

1:eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:49:5c:41 brd ff:ff:ff:ff:ff:ff

inet 172.24.1.124/22 brd 16.158.167.255 scope global eth0???

2: eth2: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:8e:42:2c brd ff:ff:ff:ff:ff:ff

inet 192.168.56.124/24 brd 192.168.56.255 scope global eth2???

3:eth3: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:68:92:ce brd ff:ff:ff:ff:ff:ff

inet 10.10.10.124/24 brd 10.10.10.255 scope global eth3???

4: br-int: mtu 1500 qdisc noqueue state UNKNOWN

link/ether d6:2a:96:12:4a:49 brd ff:ff:ff:ff:ff:ff

5:br-tun: mtu 1500 qdisc noqueue state UNKNOWN

link/ether a2:ee:75:bd:af:4a brd ff:ff:ff:ff:ff:ff

6:qvof5da998c-82: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether c2:7e:50:de:8c:c5 brd ff:ff:ff:ff:ff:ff

7:qvbf5da998c-82: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether c2:33:73:40:8f:e0 brd ff:ff:ff:ff:ff:ff

root@ComputeNode:~#ovs-vsctl show??? 【查看open vswitch網(wǎng)橋】

39f69272-17d4-42bf-9020-eecc9fe8cde6

Bridge br-int

Port patch-tun???

Interface patch-tun

type: patch

options: {peer=patch-int}

??? Port br-int???

Interface br-int

type: internal

Bridge br-tun

Portpatch-int???

Interface patch-int

type: patch

options: {peer=patch-tun}

Port"gre-1"

Interface "gre-1"

type: gre

options: {in_key=flow, local_ip="10.10.10.124", out_key=flow, remote_ip="10.10.10.121"}

Port br-tun

Interface br-tun

type: internal

ovs_version: "1.10.2"

------------------------------------------------------------------------------------------------

在Network 節(jié)點上:?

root@NetworkNode:~#ip addr??? 【顯示所有接口的IP信息】

1: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:22:8a:7a brd ff:ff:ff:ff:ff:ff

inet 172.24.1.121/22 brd 172.24.1.255 scope global eth0

2:eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:f1:31:81 brd ff:ff:ff:ff:ff:ff

3: eth2: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:56:7b:8a brd ff:ff:ff:ff:ff:ff

inet 192.168.56.121/24 brd 192.168.56.255 scope global eth2

4:eth3: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 08:00:27:26:bc:84 brd ff:ff:ff:ff:ff:ff

inet 10.10.10.121/24 brd 10.10.10.255 scope global eth3

5:br-ex: mtu 1500 qdisc noqueue state UNKNOWN

link/ether 08:00:27:f1:31:81 brd ff:ff:ff:ff:ff:ff

inet 172.24.1.8/24 brd 172.24.1.255 scope global br-ex

6:br-int: mtu 1500 qdisc noqueue state UNKNOWN

link/ether 22:fe:f1:9b:29:4b brd ff:ff:ff:ff:ff:ff

7:br-tun: mtu 1500 qdisc noqueue state UNKNOWN

link/ether c6:ea:94:ff:23:41 brd ff:ff:ff:ff:ff:ff

root@NetworkNode:~#ip netns?【列出網(wǎng)絡(luò)命名空間】

qrouter-b2510953-1ae4-4296-a628-1680735545ac

qdhcp-96abd26b-0a2f-448b-b92c-4c98b8df120b

root@NetworkNode:~#ip netns exec qrouter-b2510953-1ae4-4296-a628-1680735545ac ip addr??? 【利用網(wǎng)絡(luò)命名空間進行操作】

8: qg-97040ca3-2c: mtu 1500 qdisc noqueue state UNKNOWN

link/ether fa:16:3e:26:57:e3 brd ff:ff:ff:ff:ff:ff

inet 172.24.1.100/24 brd 172.24.1.255 scope global qg-97040ca3-2c

11: qr-e8b97930-ac: mtu 1500 qdisc noqueue state UNKNOWN

link/ether fa:16:3e:43:ef:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.0.1/24 brd 192.168.0.255 scope global qr-e8b97930-ac

root@NetworkNode:~#ip netns exec qdhcp-96abd26b-0a2f-448b-b92c-4c98b8df120b ip addr??? 【利用網(wǎng)絡(luò)命名空間進行操作】

9: tapde5739e1-95: mtu 1500 qdisc noqueue state UNKNOWN

link/ether fa:16:3e:19:8c:67 brd ff:ff:ff:ff:ff:ff

inet 192.168.0.2/24 brd 192.168.0.255 scope global tapde5739e1-95

inet 169.254.169.254/16 brd 169.254.255.255 scope global tapde5739e1-95

root@NetworkNode:~#ovs-vsctl show??? 【查看open vswitch的網(wǎng)絡(luò)狀態(tài)】

d5d5847e-1c9e-4770-a68c-7a695b7b95cd

Bridge br-ex

Port "qg-97040ca3-2c"

Interface "qg-97040ca3-2c"

type: internal

Port "eth1"

Interface "eth1"

Port br-ex

Interface br-ex

type: internal

Bridge br-int

Port patch-tun???

Interface patch-tun

type: patch

options: {peer=patch-int}

Port "tapde5739e1-95"

tag: 1

Interface "tapde5739e1-95"

type: internal

Port br-int

Interface br-int

type: internal

Port "qr-e8b97930-ac"

tag: 1

Interface "qr-e8b97930-ac"

type: internal

Bridge br-tun

Portpatch-int???

Interface patch-int

type: patch

options: {peer=patch-tun}

Port "gre-2"

Interface "gre-2"

type: gre

options: {in_key=flow, local_ip="10.10.10.121", out_key=flow, remote_ip="10.10.10.124"}

Port br-tun

Interface br-tun

type: internal

ovs_version: "1.10.2"

這時如果我們在這個網(wǎng)絡(luò)里創(chuàng)建一個虛擬機,在Compute Node多了下面的網(wǎng)卡:

13:qvof5da998c-82: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether c2:7e:50:de:8c:c5 brd ff:ff:ff:ff:ff:ff

14:qvbf5da998c-82: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether c2:33:73:40:8f:e0 brd ff:ff:ff:ff:ff:ff

15:qbr591d8cc4-df: mtu 1500 qdisc noqueue state UP

link/ether f2:d9:f0:d5:48:c8 brd ff:ff:ff:ff:ff:ff

16:qvo591d8cc4-df: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether e2:58:d4:dc:b5:16 brd ff:ff:ff:ff:ff:ff

17:

qvb591d8cc4-df: mtu

1500 qdisc pfifo_fast master qbr591d8cc4-df state UP qlen 1000

link/ether f2:d9:f0:d5:48:c8 brd ff:ff:ff:ff:ff:ff

18:

tap591d8cc4-df: mtu 1500 qdisc

pfifo_fast master qbr591d8cc4-df state UNKNOWN qlen 500

link/ether fe:16:3e:6e:ba:d0 brd ff:ff:ff:ff:ff:ff

如果我們按照ovs-vsctl show的網(wǎng)卡橋接關(guān)系,便可以畫出下面的圖

圖3:GRE網(wǎng)絡(luò)

GRE網(wǎng)絡(luò)原理:

假設(shè)虛擬機VM0網(wǎng)卡eth0有網(wǎng)絡(luò)數(shù)據(jù)包向外網(wǎng)發(fā)送,那么數(shù)據(jù)會依次經(jīng)過qbrLinux Bridge設(shè)備,qvbqvo虛擬網(wǎng)絡(luò)設(shè)備,到達OVS網(wǎng)橋br-int上,br-int將數(shù)據(jù)包attach到OVS網(wǎng)橋br-tun上,數(shù)據(jù)包再從compute節(jié)點OVS網(wǎng)橋的br-tun和network節(jié)點OVS網(wǎng)橋br-tun構(gòu)成的GRE隧道穿過,交付到Network節(jié)點的OVS網(wǎng)橋br-int上;網(wǎng)絡(luò)節(jié)點的br-int通過qr設(shè)備借助Linux命名空間qrouter連通到br-ex上的qg設(shè)備,將數(shù)據(jù)包交付到OVS網(wǎng)橋br-ex上,最后br-ex通過網(wǎng)絡(luò)節(jié)點的外部武力端口eth1把數(shù)據(jù)包傳送到外部路由器的網(wǎng)關(guān)。

五、通過例子理解GRE網(wǎng)絡(luò)

openstack為什么要創(chuàng)建這么多的虛擬網(wǎng)卡?

這些網(wǎng)卡看起來復(fù)雜,卻是各有用處,這種虛擬網(wǎng)絡(luò)拓撲,正是我們經(jīng)常使用的物理網(wǎng)絡(luò)的拓撲結(jié)構(gòu)。

下面通過一個非常容易理解的例子來逐步分析gre網(wǎng)絡(luò)。

我們先來回到一個最最熟悉不過的場景,我們的大學寢室,當時我們還買不起路由器,所以一般采取的方法如下圖所示:

寢室長的機器上弄兩張網(wǎng)卡,寢室買一個HUB,其他人的電腦都接到HUB上,寢室長的電腦的兩張網(wǎng)卡一張對外連接網(wǎng)絡(luò),一張對內(nèi)連接HUB。寢室長的電腦其實充當?shù)谋闶锹酚善鞯淖饔谩?/p>

后來條件好了,路由器也便宜了,所以很多家庭也是類似的拓撲結(jié)構(gòu),只不過將Computer1和switch合起來,變成了一個路由器,路由器也是有多個口一個連接WLAN,一個連接LAN。

圖4

現(xiàn)在我們想象一個寢室變成了一臺Hypervisor,所有的電腦都變成了虛擬機,就變成了下面的樣子:

圖5:單節(jié)點的openstack的網(wǎng)絡(luò)結(jié)構(gòu)

我們先忽略qbr和DHCP Server,以及namespace。

br-int就是寢室里的HUB,所有虛擬機都會連接到這個switch上,虛擬機之間的相互通信就是通過br-int來的。

Router就是寢室長的電腦,一邊連接在br-int上,一邊連接在對外的網(wǎng)口上,br-ex/eth0外面就是我們的物理網(wǎng)絡(luò)。

圖5其實就是單節(jié)點的openstack的網(wǎng)絡(luò)結(jié)構(gòu),雖然復(fù)雜,但是就是把我們家里的,或者寢室里面的物理機搬到一個Hypervisor上了,其結(jié)構(gòu)就不難理解了。

當然單節(jié)點的openstack不過是個測試環(huán)境,compute節(jié)點和network節(jié)點也是要分開的,如圖3,每個機器上都有了自己的br-int。

六、GRE網(wǎng)絡(luò)原理進一步理解

以下內(nèi)容可對比圖3來理解

(1)DHCP

為什么會有個DHCP Server呢,是同一個private network里的虛擬機得到IP都是通過這個DHCP Server來的,這個DHCP Server也是連接到br-int上和虛擬機進行通信的。

(2)qbr

既然qbr和br-int都是網(wǎng)橋,為什么不直接連到br-int,還要通過qbr,qvb,qvo豈不是多余,為什么會有qbr呢?這是和security group的概念有關(guān)。簡單說就是OVS網(wǎng)橋br-int沒有設(shè)置iptables規(guī)則的功能,但openstack又要提供安全組服務(wù),就借助了Linux bridge(qbr)的功能,雖然OVS的br-int和linux bridge (qbr)都是二層網(wǎng)橋,但是為了功能互補就同時出現(xiàn)了。具體了解,openstack中的security group開通哪些端口,屏蔽哪些端口是用iptables來實現(xiàn)的,然而br-int這些虛擬bridge都是openvswitch創(chuàng)建的,openstack的Kernel mode和netfilter的kernel mode不兼容。一個IP包進來要么走iptables規(guī)則進行處理,要么走openvswitch的規(guī)則進行處理,br-int上有很多openvswitch的規(guī)則,比如vlan tag等,所以iptables必須要另外建立一個linux bridge(qbr)來做,因而就有了qbr,在了解拓撲結(jié)構(gòu)的時候,可以將qbr忽略,看到VM直接連接到br-int上就可以了。

(3)namespace

為什么會有namespace呢,java的namespace是為了在不同namespace下有相同類名,openstack也想做到這一點。不同Tenant都創(chuàng)建自己的router和private

network,彼此不知道別人指定了哪些網(wǎng)段,很有可能兩個tenant都指定了192.168.0.0/24,這樣不同的private

network的路由表,DHCP Server就需要隔離,不然就亂了,因而就有了namespace。

(4)OVS一體化網(wǎng)橋br-int

每個機器上都有了自己的br-int,但是對于虛擬機和虛擬router來說,它們?nèi)匀挥X得自己連接到了一個大的L2的br-int上,通過這個br-int相互通信的,它們感受不到br-int下面的虛擬網(wǎng)卡br-tun。所以對于多節(jié)點結(jié)構(gòu),我們可以想象br-int是一個大的,橫跨所有compute和network節(jié)點的二層switch,虛擬機之間的通信以及虛擬機和Router的通信,就像在一個寢室一樣的。這是一種很重要的抽象思維,好像openstack環(huán)境中所有虛擬機都連接到了一個巨型的虛擬交換機上。

然而br-int畢竟被物理的割開了,需要有一種方式將他們串聯(lián)起來,openstack提供了多種方式,可以用GRE tunnel將不同機器的br-int連接起來,也可以通過VLAN將br-int連接起來,當然還可以使用vxlan。

這就是為什么openstack有了br-int這個bridge,但是不把所有的openvswitch的規(guī)則都在它上面實現(xiàn)。就是為了提供這種靈活,對于虛擬機來講,看到的是一大整個br-int,不同機器的br-int可以有多種方式連接,這在br-int下面的網(wǎng)卡上面實現(xiàn)。

(5)OVS通道網(wǎng)橋br-tun

br-tun也是OVS創(chuàng)建的虛擬網(wǎng)橋,它是一個中間層,接收br-int的網(wǎng)絡(luò)數(shù)據(jù),然后在通過特定網(wǎng)絡(luò)協(xié)議與各個節(jié)點的br-tun相連構(gòu)成一個通道層。如果所有的br-int構(gòu)成的抽象層定義為虛擬二層網(wǎng)絡(luò),那么所有的br-tun構(gòu)成的抽象層邊上虛擬三層網(wǎng)絡(luò)了。

(6)網(wǎng)絡(luò)數(shù)據(jù)包隔離

如果有不同的Tenant,創(chuàng)建了不同的private network,為了在data network上對包進行隔離,創(chuàng)建private network的時候,需要指定vlanid或者segmentid。

從ovs-vsctl show我們可以看到,不同的tenant的private network上創(chuàng)建的虛擬機,連接到br-int上的時候是帶tag的,所以不同tenant的虛擬機,即便連接到同一個br-int上,因為tag不同,也是不能相互通信的。然而同一個機器上的tag的計數(shù)是僅在本機有效的,并不使用我們創(chuàng)建private network的時候指定的全局唯一的vlanid或者segmentid,一個compute節(jié)點上的br-int上的tag 1和另一臺compute節(jié)點上的br-int的tag1很可能是兩碼事。全局的vlanid和segmentid僅僅在br-int以下的虛擬網(wǎng)卡和物理網(wǎng)絡(luò)中使用,虛擬機所有能看到的東西,到br-int為止,看不到打通br-int所要使用的vlanid和segmentid

從局部有效的taging到全局有效的vlanid或者segmentid的轉(zhuǎn)換,都是通過openvswitch的規(guī)則,在br-tun或者br-eth1上實現(xiàn)。

?本文參考下文并做修改方便自己理解:

http://www.cnblogs.com/popsuper1982/p/3800233.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 當搭建完openstack之后,在創(chuàng)建instance之前,第一件事情就是創(chuàng)建network,一個經(jīng)典的流程如下:...
    ximitc閱讀 1,275評論 0 0
  • 武曉敏 焦點網(wǎng)絡(luò)初級九期 堅持分享第113天 駐馬店西平 20180617 早上時候打掃衛(wèi)生,正好家里兩個小孩在,...
    恍然如夢閱讀 129評論 0 0
  • 冰島導演撲出梅西的點數(shù)-14億的中國怎么比不過人口30萬的冰島 世界杯進行的如火如荼,梅西、C羅這些大牌球...
    辣椒學長008閱讀 351評論 1 2
  • 一張紙幣 向我張口問自己的身世 我該不該告訴他 他來自蔚藍的蘇祿海 密密的橡膠樹是它的故鄉(xiāng) 一個旅人收納了它 搭上...
    足下阿蒙閱讀 234評論 0 3
  • 農(nóng)村人處于某種循環(huán)之中,城市人也在某種循環(huán)之中……我們每個人都難以超越自己的時代,自己的經(jīng)濟階層,難道我們就這樣任...
    終愛妳壹生閱讀 363評論 0 0

友情鏈接更多精彩內(nèi)容