計(jì)算機(jī)網(wǎng)絡(luò)VLAN模式

一 二層基礎(chǔ)知識
1.1 vlan介紹
1.1.1:vlan的含義
1.1.2:vlan的類型
1.1.3:vlan的不足
1.2 : 二層交換的基礎(chǔ)知識
1.2.1:二層交換機(jī)最基本的功能
1.2.2:ARP協(xié)議
二 使用OpenvSwitch(OVS)+VLAN組網(wǎng)
2.1 物理VLAN網(wǎng)絡(luò)配置
2.2 Neutron配置
2.2.1 配置進(jìn)行
2.2.2 配置生效過程
2.3:創(chuàng)建虛擬網(wǎng)絡(luò)和子網(wǎng)
2.3.1 創(chuàng)建命令
2.3.2 Neutron代碼實(shí)現(xiàn)
2.4:Neturon虛擬網(wǎng)絡(luò)
一 二層基礎(chǔ)知識
1.1 vlan介紹
本小節(jié)重點(diǎn):

vlan的含義
vlan的類型
交換機(jī)端口類型
vlan的不足
1.1.1:vlan的含義
  局域網(wǎng)LAN的發(fā)展是VLAN產(chǎn)生的基礎(chǔ)惨奕,因而先介紹一下局域網(wǎng)LAN

由Hub车荔、網(wǎng)橋或交換機(jī)等網(wǎng)絡(luò)設(shè)備連接同一網(wǎng)段內(nèi)的所有節(jié)點(diǎn)形成局域網(wǎng)(LAN)颂碘,通常是一個(gè)單獨(dú)的廣播域。

處于同一個(gè)局域網(wǎng)LAN之內(nèi)的網(wǎng)絡(luò)節(jié)點(diǎn)之間可以直接通信

處于不同局域網(wǎng)段的設(shè)備之間的通信則必須經(jīng)過路由器才能通信处渣。

上述傳統(tǒng)拓?fù)浣Y(jié)構(gòu)的關(guān)鍵在于用三層設(shè)備球散,即路由器蒜胖,來隔離不同的LAN环葵,在網(wǎng)絡(luò)規(guī)模增大的情況下存在兩個(gè)缺陷:
  1. 路由器數(shù)量需要增多,網(wǎng)絡(luò)時(shí)延隨之加長嗜愈,進(jìn)而導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)傳輸速度的下降旧蛾。這主要是因?yàn)閿?shù)據(jù)在從一個(gè)局域網(wǎng)傳遞到另一個(gè)局域網(wǎng)時(shí),必須經(jīng)過路由器的路由操作: 路由器根據(jù)數(shù)據(jù)包中的相應(yīng)信息確定數(shù)據(jù)包的目標(biāo)地址蠕嫁,然后再選擇合適的路徑轉(zhuǎn)發(fā)出去锨天。
  
  2. 用戶是按照它們的物理連接被自然地劃分到不同的用戶組(廣播域)中。這種分割方式并不是根據(jù)工作組中所有用戶的共同需要和帶寬的需求來進(jìn)行的剃毒。因此病袄,盡管不同的工作組或部門對帶寬的需求有很大的差異,但它們卻被機(jī)械地劃分到同一個(gè)廣播域中爭用相同的帶寬赘阀。

綜上兩點(diǎn)益缠,必須選出一種隔離廣播域的方式,兼?zhèn)湎率鰞牲c(diǎn)

1.可以不用通過路由器來隔離不同廣播域

2.可以突破地理位置的限制基公,在邏輯上劃分出不同的廣播域

這就是VLAN幅慌,IEEE 802.1Q 標(biāo)準(zhǔn)定義了 VLAN Header 的格式。它在普通以太網(wǎng)幀結(jié)構(gòu)的 SA (src addr)之后加入了 4bytes 的 VLAN Tag/Header 數(shù)據(jù)轰豆,其中包括 12-bits 的 VLAN ID胰伍。VLAN ID 最大值為4096,但是有效值范圍是 1 - 4094秒咨。



帶 VLAN 的交換機(jī)的端口分為兩類:

  • Access port:這些端口被打上了 VLAN Tag喇辽。離開交換機(jī)的 Access port 進(jìn)入計(jì)算機(jī)的以太幀中沒有 VLAN Tag掌挚,這意味著連接到 access ports 的機(jī)器不會覺察到 VLAN 的存在雨席。離開計(jì)算機(jī)進(jìn)入這些端口的數(shù)據(jù)幀被打上了 VLAN Tag。
  • Trunk port: 有多個(gè)交換機(jī)時(shí)吠式,組A中的部分機(jī)器連接到 switch 1陡厘,另一部分機(jī)器連接到 switch 2。要使得這些機(jī)器能夠相互訪問特占,你需要連接兩臺交換機(jī)糙置。 要避免使用一根電纜連接每個(gè) VLAN 的兩個(gè)端口,我們可以在每個(gè)交換機(jī)上配置一個(gè) VLAN trunk port是目。Trunk port 發(fā)出和收到的數(shù)據(jù)包都帶有 VLAN header谤饭,該 header 表明了該數(shù)據(jù)包屬于那個(gè) VLAN。因此,只需要分別連接兩個(gè)交換機(jī)的一個(gè) trunk port 就可以轉(zhuǎn)發(fā)所有的數(shù)據(jù)包了揉抵。通常來講亡容,只使用 trunk port 連接兩個(gè)交換機(jī),而不是用來連接機(jī)器和交換機(jī)冤今,因?yàn)闄C(jī)器不想看到它們收到的數(shù)據(jù)包帶有 VLAN Header闺兢。

單臺交換機(jī)上劃分VLAN




多臺交換機(jī)上劃分VLAN



1.1.2:vlan的類型

(1)基于端口的 VLAN (untagged VLAN - 端口屬于一個(gè)VLAN,數(shù)據(jù)幀中沒有VLAN tag)

這種模式中戏罢,在交換機(jī)上創(chuàng)建若干個(gè)VLAN屋谭,在將若干端口放在每個(gè)VLAN 中。每個(gè)端口在某一時(shí)刻只能屬于一個(gè)VLAN龟糕。一個(gè) VLAN 可以包含所有端口桐磁,或者部分端口。每個(gè)端口有個(gè)PVID (port VLAN identifier)翩蘸。這種模式下所意,一個(gè)端口上收到的 frame 是 untagged frame,因此它不包含任何有關(guān) VLAN 的信息催首。VLAN 的關(guān)系只能從端口的 PVID 上看出來扶踊。交換機(jī)在轉(zhuǎn)發(fā) frame 時(shí),只將它轉(zhuǎn)發(fā)到相同 PVID 的端口郎任。



如上圖所示秧耗,連接兩個(gè)交換機(jī)的同一個(gè) VLAN 中的兩個(gè)計(jì)算機(jī)需要通信的話,需要在兩個(gè)交換機(jī)之間連兩根線:

  • 一根從 Switch A 端口4 到 Switch B 端口 4 (VLAN 1)
  • 一根從 Switch A 端口8 到 Switch B 端口 8 (VLAN 2)
    (2)Tagged VLANs (數(shù)據(jù)幀中帶有 VLAN tag)

這種模式下舶治,frame 的VLAN 關(guān)系是它自己攜帶的信息中保存的分井,這種信息叫 a tag or tagged header。當(dāng)交換機(jī)收到一個(gè)帶 VLAN tag 的幀霉猛,它只將它轉(zhuǎn)發(fā)給具有同樣 VID 的端口尺锚。一個(gè)能夠接收或者轉(zhuǎn)發(fā) tagged frame 的端口被稱為 a tagged port。所有連接到這種端口的網(wǎng)絡(luò)設(shè)備必須是 802.1Q 協(xié)議兼容的惜浅。這種設(shè)備必須能處理 tagged frame瘫辩,以及添加 tag 到其轉(zhuǎn)發(fā)的 frame。


上圖中坛悉,兩個(gè)交換機(jī)上的端口8 支持 VLAN 1 和 2伐厌, 因此一根線就可以了實(shí)現(xiàn)跨交換機(jī)的同VLAN 內(nèi)的計(jì)算機(jī)互相通信了。

1.1.3:vlan的不足

  1. VLAN 使用 12-bit 的 VLAN ID裸影,所以 VLAN 的第一個(gè)不足之處就是它最多只支持 4096 個(gè) VLAN 網(wǎng)絡(luò)(當(dāng)然這還要除去幾個(gè)預(yù)留的)挣轨,對于大型數(shù)據(jù)中心的來說,這個(gè)數(shù)量是遠(yuǎn)遠(yuǎn)不夠的轩猩。
  2. VLAN 是基于 L2 的卷扮,所以很難跨越 L2 的邊界荡澎,在很大程度上限制了網(wǎng)絡(luò)的靈活性。
  3. VLAN 操作需手工介入較多晤锹,這對于管理成千上萬臺機(jī)器的管理員來說是難以接受的衔瓮。

1.2 : 二層交換的基礎(chǔ)知識

1.2.1:二層交換機(jī)最基本的功能
二層交換機(jī)最基本的功能包括:

  • MAC 地址學(xué)習(xí):當(dāng)交換機(jī)從它的某個(gè)端口收到數(shù)據(jù)幀時(shí),它將端口的 ID 和幀的源 MAC 地址保存到它的內(nèi)部MAC表中抖甘。這樣热鞍,當(dāng)將來它收到一個(gè)要轉(zhuǎn)發(fā)到該 MAC 地址的幀時(shí),它就知道直接從該端口轉(zhuǎn)發(fā)出去了衔彻。
  • 數(shù)據(jù)幀轉(zhuǎn)發(fā):交換機(jī)在將從某個(gè)端口收到數(shù)據(jù)幀薇宠,再將其從某個(gè)端口轉(zhuǎn)發(fā)出去之前,它會做一些邏輯判斷:
    如果幀的目的 MAC 地址是廣播或者多播地址的話艰额,將其從交換機(jī)的所有端口(除了傳入端口)上轉(zhuǎn)發(fā)澄港。
    如果幀的目的MAC地址在它的內(nèi)部MAC表中能找到對應(yīng)的輸出端口的話(MAC 地址學(xué)習(xí)過程中保存的),將其從該端口上轉(zhuǎn)發(fā)出去柄沮。
    對其它情況回梧,將其從交換機(jī)的所有端口(除了傳入端口)上轉(zhuǎn)發(fā)。
  • 加 VLAN 標(biāo)簽/去 VLAN 標(biāo)簽:
    幀接收:從 trunk port 上收到的數(shù)據(jù)幀必須是加了標(biāo)簽的祖搓。從 access port 上收到的數(shù)據(jù)幀必須是沒有加標(biāo)簽的狱意,否則該幀將會被拋棄。
    幀處理:根據(jù)上述轉(zhuǎn)發(fā)流程決定其發(fā)出的端口拯欧。
    幀發(fā)出:從 trunk port 發(fā)出的幀是加了標(biāo)簽的详囤。從 access port 上發(fā)出的幀必須是沒加標(biāo)簽的。
    默認(rèn)情況下镐作,交換機(jī)的所有端口都處于VLAN 1 中藏姐,也就相當(dāng)于沒有配置 VLAN。該機(jī)制說明如下:


1.PC A 發(fā)一個(gè)幀到交換機(jī)的 1 端口该贾,其目的MAC地址為 PC B 的 MAC羔杨。
2.交換機(jī)比較其目的 MAC 地址和它的內(nèi)部 MAC Table,發(fā)現(xiàn)它不存在(此時(shí)表為空)杨蛋。在決定泛洪之前兜材,它把端口 1 和 PC A 的 MAC 地址存進(jìn)它的 MAC Table。
3.交換機(jī)將幀拷貝多份六荒,分別從2和3端口發(fā)出护姆。
4.PC B 收到該幀以后矾端,發(fā)現(xiàn)其目的 MAC 地址和他自己的 MAC 地址相同掏击。它發(fā)出一個(gè)回復(fù)幀進(jìn)入端口3。
5.交換機(jī)將 PC B 的 MAC地址和端口3 存在它的 MAC 表中秩铆。
6.因?yàn)樵搸哪康牡刂窞镻C A 的 MAC 地址它已經(jīng)在 MAC 表中砚亭,交換機(jī)直接將它轉(zhuǎn)發(fā)到端口1灯变,達(dá)到PC A。
配置了 VLAN 的交換機(jī)的該機(jī)制類似捅膘,只不過:

(1)MAC 表格中每一行有不同的 VLAN ID添祸。做比較的時(shí)候,拿傳入幀的目的 MAC 地址和 VLAN ID 和此表中的行數(shù)據(jù)相比較寻仗。如果都相同刃泌,則選擇其 Ports 作為轉(zhuǎn)發(fā)出口端口。


(2)如果沒有吻合的表項(xiàng)署尤,則將此幀從所有有同樣 VLAN ID 的 Access ports 和 Trunk ports 轉(zhuǎn)發(fā)出去耙替。

1.2.2:ARP協(xié)議
二層網(wǎng)絡(luò)使用 MAC (media access control address)地址作為硬件的唯一標(biāo)識〔芴澹基于 TCP/IP 協(xié)議的軟件使用 ARP 來將 IP 地址轉(zhuǎn)化為 MAC 地址俗扇。

  1. 目的 IP 地址在同一網(wǎng)段的話


該示例中,Host A 和 B 在同一個(gè)網(wǎng)段中箕别。A 的 IP 地址是 10.0.0.99铜幽,B 的 IP 地址是 10.0.0.100。當(dāng) A 要和 B 通信時(shí)串稀,A 需要知道 B 的 MAC 地址除抛。該過程經(jīng)過以下步驟:
(1)A 上的 IP 協(xié)議棧知道通過B 的 IP 地址可以直接到達(dá) B。A 檢查它的本地 ARP 緩存來看B 的 MAC 地址是否已經(jīng)存在母截。
(2)如果A 沒有發(fā)現(xiàn)B 的 MAC 地址镶殷,它發(fā)出一個(gè) ARP 廣播請求,來詢問“10.0.0.100 的 MAC 地址是什么微酬?”绘趋,該數(shù)據(jù)包:
SRC MAC: A 的 MAC
DST MAC:FF:FF:FF:FF:FF:FF
SRA IP: A 的 IP
DST IP: B 的 IP
(3)該網(wǎng)段中所有的電腦都將收到該包,并且會檢查 DST IP 和自己的IP 是否相同颗管。如果不同陷遮,則丟棄該包。Host B 發(fā)現(xiàn)其IP 地址和 DST IP 相同垦江,它將 A 的 IP/MAP 地址加入到自己的ARP 緩存中帽馋。
(4)B 發(fā)出一個(gè) ARP 回復(fù)消息
SRC MAC: B 的 MAC
DST MAC:A 的 MAC
SRA IP: B 的 IP
DST IP: A 的 IP
(5)交換機(jī)直接將該包交給 host A。A 收到后比吭,將 B 的 MAC/IP 地址緩存到 ARP 緩存中绽族。
(6)A 使用 B 的 MAC 作為目的 MAC 地址發(fā)出 IP 包。

  1. 目的IP 地址不在同一個(gè)網(wǎng)段的話


本例子中衩藤,A 的地址是 10.0.0.99吧慢, B 的地址是 192.168.0.99。Router 的 interface 1 和 A 在同一個(gè)網(wǎng)段赏表,其IP 地址為10.0.0.1检诗;interface 2 和 B 在同一個(gè)網(wǎng)段匈仗,其IP地址為 192.168.0.1。
A 使用下面的步驟來獲取 Router 的 interface 1 的 MAC 地址逢慌。
(1)根據(jù)其路由表悠轩,A 上的 IP 協(xié)議知道需要通過它上面配置的 gateway 10.0.0.1 才能到達(dá)到 B。經(jīng)過上面例子中的步驟攻泼,A 會得到 10.0.0.1 的 MAC 地址火架。
(2)當(dāng) A 收到 Router interface 1 的 MAC 地址后,A 發(fā)出了給B 的數(shù)據(jù)包:
SRC MAC: A 的 MAC
DST MAC:Router 的 interface 1 的 MAC 地址
SRA IP: A 的 IP
DST IP: B 的 IP
(3)路由器的 interface1 收到該數(shù)據(jù)包后忙菠,根據(jù)其路由表距潘,首先經(jīng)過同樣的ARP 過程,路由器根據(jù) B 的 IP 地址通過 ARP 獲得其 MAC 地址只搁,然后將包發(fā)給它音比。
SRC MAC: Router interface 2 的 MAC
DST MAC:B 的 MAC
SRA IP: A 的 IP
DST IP: B 的 IP
二 使用OpenvSwitch(OVS)+VLAN組網(wǎng)
Neutron 基于 VLAN 模式的 tenant network 同 provider network 一樣,都必須使用物理的 VLAN 網(wǎng)絡(luò)氢惋。

2.1 物理VLAN網(wǎng)絡(luò)配置
本例子中洞翩,交換機(jī)上劃分了三個(gè) VLAN 區(qū)域:

  1. 管理網(wǎng)絡(luò),用于 OpenStack 節(jié)點(diǎn)之間的通信焰望,假設(shè) VLAN ID 范圍為 50 - 99.
  2. 數(shù)據(jù)網(wǎng)絡(luò)骚亿,用于虛擬機(jī)之間的通訊。由于Vlan模式下熊赖,租戶建立的網(wǎng)絡(luò)都具有獨(dú)立的 Vlan ID来屠,故需要將連接虛機(jī)的服務(wù)器的交換機(jī)端口設(shè)置為 Trunk 模式,并且設(shè)置所允許的 VLAN ID 范圍震鹉,比如 100~300俱笛。
  3. 外部網(wǎng)絡(luò),用于連接外部網(wǎng)絡(luò)传趾。加上 VLAN ID 范圍為 1000-1010迎膜。


關(guān)于網(wǎng)段之間的路由:

  • 如果該物理交換機(jī)接到一個(gè)物理路由器并做相應(yīng)的配置,則數(shù)據(jù)網(wǎng)絡(luò)可以使用這個(gè)物理路由器浆兰,而不需要使用 Neutron 的虛擬路由器磕仅。
  • 如果不使用物理的路由器,可以在網(wǎng)絡(luò)節(jié)點(diǎn)上配置虛擬路由器簸呈。

2.2 Neutron配置
2.2.1 配置進(jìn)行
控制節(jié)點(diǎn)上:

# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2] 
type_drivers = flat,vlan 
tenant_network_types = vlan
mechanism_drivers = openvswitch
[ml2_type_flat]
flat_networks = external
[ml2_type_vlan] 
network_vlan_ranges = physnet1:100:300

網(wǎng)絡(luò)節(jié)點(diǎn)上:

#為連接物理交換機(jī)的網(wǎng)卡 eth2 和 eth3 建立 OVS physical bridge榕订,其中,eth2 用于數(shù)據(jù)網(wǎng)絡(luò)蜕便,eth3 用于外部網(wǎng)絡(luò)
ovs-vsctl add-br br-eth2
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-eth2 eth2
ovs-vsctl add-port br-ex eth3

# vim /etc/neutron/plugins/ml2/ml2_conf.ini 
[m12]
type_drivers = flat,vlan
tenant_network_types = vlan
mechanism_drivers = openvswitch

[ml2_type_flat]
flat_networks = external
[ml2_type_vlan] 
network_vlan_ranges = physnet1:100:300,external:1000:1010 

[ovs] 
bridge_mappings = physnet1:br-eth2,external:br-ex

計(jì)算節(jié)點(diǎn)上:

#為連接物理交換機(jī)的網(wǎng)卡 eth2 建立 OVS physical bridge
ovs-vsctl add-br br-eth2
ovs-vsctl add-port br-eth2 eth2

# vim /etc/neutron/plugins/ml2/ml2_conf.ini 
[m12]
type_drivers = vlan
tenant_network_types = vlan
mechanism_drivers = openvswitch
[ml2_type_vlan] 
network_vlan_ranges = physnet1:100:300 

[ovs] 
bridge_mappings = physnet1:br-eth2 

注意:

  • network_vlan_ranges 中的 VLAN ID 必須和物理交換機(jī)上的 VLAN ID 區(qū)間一致劫恒。
  • bridge_mappings 中所指定的 bridge 需要和在個(gè)節(jié)點(diǎn)上手工創(chuàng)建的 OVS bridge 一致。
    然后重啟相應(yīng)的 Neutron 服務(wù)玩裙。

2.2.2 配置生效過程
當(dāng) Neutron L2 Agent (OVS Agent 或者 Linux Bridge agent)在計(jì)算和網(wǎng)絡(luò)節(jié)點(diǎn)上啟動時(shí)兼贸,它會根據(jù)各種配置在節(jié)點(diǎn)上創(chuàng)建各種 bridge。以 OVS Agent 為例吃溅,

(1)創(chuàng)建 intergration brige(默認(rèn)是 br-int)溶诞;如果 enable_tunneling = true 的話,創(chuàng)建 tunnel bridge (默認(rèn)是 br-tun)决侈。

(2)根據(jù) bridge_mappings螺垢,配置每一個(gè) VLAN 和 Flat 網(wǎng)絡(luò)使用的 physical network interface 對應(yīng)的預(yù)先創(chuàng)建的 OVS bridge。

(3)所有虛機(jī)的 VIF 都是連接到 integration bridge赖歌。同一個(gè)虛擬網(wǎng)絡(luò)上的 VM VIF 共享一個(gè)本地 VLAN (local VLAN)枉圃。Local VLAN ID 被映射到虛擬網(wǎng)絡(luò)對應(yīng)的物理網(wǎng)絡(luò)的 segmentation_id。

(4)對于 GRE 類型的虛擬網(wǎng)絡(luò)庐冯,使用 LSI (Logical Switch identifier)來區(qū)分隧道(tunnel)內(nèi)的租戶網(wǎng)絡(luò)流量(tenant traffic)孽亲。這個(gè)隧道的兩端都是每個(gè)物理服務(wù)器上的 tunneling bridge。使用 Patch port 來將 br-int 和 br-tun 連接起來展父。

(5)對于每一個(gè) VLAN 或者 Flat 類型的網(wǎng)絡(luò)返劲,使用一個(gè) veth 或者一個(gè) patch port 對來連接 br-int 和物理網(wǎng)橋,以及增加 flow rules等栖茉。

(6)最后篮绿,Neutron L2 Agent 啟動后會運(yùn)行一個(gè)RPC循環(huán)任務(wù)來處理 端口添加、刪除和修改吕漂。管理員可以通過配置項(xiàng) polling_interval 指定該 RPC 循環(huán)任務(wù)的執(zhí)行間隔亲配,默認(rèn)為2秒。

2.3:創(chuàng)建虛擬網(wǎng)絡(luò)和子網(wǎng)
2.3.1 創(chuàng)建命令

s1@controller:~$ neutron net-create net1 (或者 Admin 用戶運(yùn)行 neutron net-create net1 --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 101惶凝。效果相同)
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | dfc74f44-a9f2-4497-a53d-1723804a49a8 |
| name                      | net1                                  |
| provider:network_type     | vlan                                 |
| provider:physical_network | physnet1                             |
| provider:segmentation_id  | 101                                  |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 74c8ada23a3449f888d9e19b76d13aab     |
+---------------------------+--------------------------------------+   
s1@controller:~$ neutron subnet-create subnet1 10.0.0.0/24 --name net1

2.3.2 Neutron代碼實(shí)現(xiàn)
做完以上的步驟之后吼虎,用戶就可以在 subnet 上 boot 虛機(jī)了。

boot 虛機(jī)的過程中苍鲜,Nova 依次會:

(1)調(diào)用 Neutron REST API 申請一個(gè)或者多個(gè) port鲸睛。Neutron 會根據(jù)數(shù)據(jù)庫中的配置來進(jìn)行分配。

(2)在計(jì)算節(jié)點(diǎn)上坡贺,Nova 調(diào)用 ovs-vsctl 命令將虛機(jī)的 VIF 被 plug 到 br-int 上官辈。

(3)啟動虛機(jī)。

Neutron L2 Agent 的循環(huán)任務(wù)每隔兩秒會依次:

(1)調(diào)用 ”ovs-vsctl list-ports“ 命令獲取到 br-int 上的 port遍坟,再根據(jù)上次保存的歷史數(shù)據(jù)拳亿,生成所有變更端口的列表(包括添加的、更新的愿伴、刪除的端口)肺魁。比如:

{'current': set([u'04646b21-78a0-429e-85be-3167042b77be', u'592740b0-0768-4e57-870d-6495e6c22135']), 'removed': set([]), 'added': set([u'04646b21-78a0-429e-85be-3167042b77be', u'592740b0-0768-4e57-870d-6495e6c22135'])}

(2)為每一個(gè)待處理端口,根據(jù)其 ID 從 DB 中取得其詳細(xì)信息隔节。比如:

{u'profile': {}, u'admin_state_up': True, u'network_id': u'e2022937-ec2a-467a-8cf1-f642a3f777b6', u'segmentation_id': 4, u'device_owner': u'compute:nova', u'physical_network': phynet1, u'mac_address': u'fa:16:3e:fd:ed:22', u'device': u'592740b0-0768-4e57-870d-6495e6c22135', u'port_id': u'592740b0-0768-4e57-870d-6495e6c22135', u'fixed_ips': [{u'subnet_id': u'13888749-12b3-462e-9afe-c527bd0a297e', u'ip_address': u'91.1.180.4'}], u'network_type': u'vlan'}

(3)針對每一個(gè)增加或者變更的 port鹅经,設(shè)置 local VLAN Tag寂呛;調(diào)用 ”ovs-ofctl mod-flows “ 命令來設(shè)置 br-tun 或者 物理 bridge 的 flow rules;并設(shè)置 db 中其狀態(tài)為 up瘾晃。

(4)針對每一個(gè)被刪除的 port贷痪,設(shè)置 db 中其狀態(tài)為 down。



2.4:Neturon虛擬網(wǎng)絡(luò)
(1)一個(gè)計(jì)算節(jié)點(diǎn)上的網(wǎng)絡(luò)實(shí)例

它反映的網(wǎng)絡(luò)配置如下:

Neutron 使用 Open vSiwtch蹦误。
一臺物理服務(wù)器劫拢,網(wǎng)卡 eth1 接入物理交換機(jī),預(yù)先配置了網(wǎng)橋 br-eth1强胰。
創(chuàng)建了兩個(gè) neutron VLAN network舱沧,分別使用 VLAN ID 101 和 102。
該服務(wù)器上運(yùn)行三個(gè)虛機(jī)偶洋,虛機(jī)1 和 2 分別有一個(gè)網(wǎng)卡接入 network 1熟吏;虛機(jī)2 和 3 分別有一個(gè)網(wǎng)卡接入 network 2.

Neutron在該計(jì)算節(jié)點(diǎn)上做的事情:

創(chuàng)建了OVS Integration bridge br-int。它的四個(gè)Access口中玄窝,兩個(gè)打上了內(nèi)部vlan Tag1分俯,連接接入network1的兩個(gè)網(wǎng)卡;另外兩個(gè)端口打上的是vlan tag 2

創(chuàng)建一對patch port連接br-int和br-eth1

設(shè)置br-int中的flow rules哆料。對從access ports進(jìn)入的數(shù)據(jù)幀缸剪,加上相應(yīng)的vlan tag,轉(zhuǎn)發(fā)到patch port东亦;從patch port進(jìn)入的數(shù)據(jù)幀杏节,將vlan id 101修改為1,102修改為2,再轉(zhuǎn)發(fā)到相應(yīng)的access ports

設(shè)置br-eth1中的flow rules典阵。從patch port進(jìn)入的數(shù)據(jù)幀奋渔,將內(nèi)部vlan id 1修改為101,內(nèi)部vlan id 2修改為102壮啊,再從eth1端口發(fā)出嫉鲸。對從eht1進(jìn)入的數(shù)據(jù)幀做相反的處理

(2)再加上另一個(gè)連接到同一個(gè)物理交換機(jī)的服務(wù)器(加上 neutron 網(wǎng)絡(luò)使用的 VLAN ID 為 100,物理 brige 為 br-eth0):

Neutron 實(shí)現(xiàn)了基于物理 VLAN 交換機(jī)的跨物理服務(wù)器二層虛擬網(wǎng)絡(luò)歹啼。

(3)連接到同一物理交換機(jī)的網(wǎng)絡(luò)節(jié)點(diǎn)的情況


(4)網(wǎng)絡(luò)流向

  • 不同物理服務(wù)器上的虛機(jī)玄渗,如果 VM1 和 VM2 屬于同一個(gè) tenant network 的同一個(gè)subnet,那么兩者的通信直接經(jīng)過 物理交換機(jī) 進(jìn)行狸眼,不需要做到網(wǎng)絡(luò)節(jié)點(diǎn)藤树。如圖10 所示。
  • 相同物理服務(wù)器上的虛機(jī)拓萌,如果 VM1 和 VM2 屬于同一個(gè) tenant network 的同一個(gè)subnet岁钓,那么兩者的通信直接經(jīng)過 br-int 進(jìn)行。


對其他虛機(jī)之間數(shù)據(jù)交換情形,都算作跨子網(wǎng)的數(shù)據(jù)流向屡限,都需要經(jīng)過網(wǎng)絡(luò)節(jié)點(diǎn)中的 Router 進(jìn)行 IP 包的路由品嚣。(也可以直接使用連接物理交換機(jī)的物理路由器)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钧大,一起剝皮案震驚了整個(gè)濱河市翰撑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拓型,老刑警劉巖额嘿,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘸恼,死亡現(xiàn)場離奇詭異劣挫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)东帅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門压固,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人靠闭,你說我怎么就攤上這事帐我。” “怎么了愧膀?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵拦键,是天一觀的道長。 經(jīng)常有香客問我檩淋,道長芬为,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任蟀悦,我火速辦了婚禮媚朦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘日戈。我一直安慰自己询张,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布浙炼。 她就那樣靜靜地躺著份氧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弯屈。 梳的紋絲不亂的頭發(fā)上半火,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音季俩,去河邊找鬼钮糖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的店归。 我是一名探鬼主播阎抒,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼消痛!你這毒婦竟也來了且叁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秩伞,失蹤者是張志新(化名)和其女友劉穎逞带,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纱新,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡展氓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脸爱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遇汞。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖簿废,靈堂內(nèi)的尸體忽然破棺而出空入,到底是詐尸還是另有隱情,我是刑警寧澤族檬,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布歪赢,位于F島的核電站,受9級特大地震影響单料,放射性物質(zhì)發(fā)生泄漏埋凯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一看尼、第九天 我趴在偏房一處隱蔽的房頂上張望递鹉。 院中可真熱鬧,春花似錦藏斩、人聲如沸躏结。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媳拴。三九已至,卻和暖如春兆览,著一層夾襖步出監(jiān)牢的瞬間屈溉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工抬探, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留子巾,地道東北人帆赢。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像线梗,于是被迫代替她去往敵國和親椰于。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容