Neutron 理解 (2): 使用 Open vSwitch + VLAN 組網 [Netruon Open vSwitch + VLAN Virutal Network]

1. L2 基礎知識

1.1 VLAN 基礎知識

1.1.1 VLAN 的含義

   LAN 表示 Local Area Network,本地局域網,通常使用 Hub 和 Switch 來連接LAN 中的計算機。一般來說,當你將兩臺計算機連入同一個 Hub 或者 Switch 時,它們就在同一個 LAN 中。同樣地,你連接兩個 Switch 的話,它們也在一個 LAN 中。一個 LAN 表示一個廣播域,它的意思是,LAN 中的所有成員都會收到 LAN 中一個成員發出的廣播包。可見,LAN 的邊界在路由器或者類似的3層設備。

   VLAN 表示 Virutal LAN。一個帶有 VLAN 功能的switch 能夠同時處於多個 LAN 中。最簡單地說,VLAN 是一種將一個交換機分成多個交換機的一種方法。比方說,你有兩組機器,group A 和 B,你想配置成組 A 中的機器可以相互訪問,B 中的機器也可以相互訪問,但是A組中的機器不能訪問B組中的機器。你可以使用兩個交換機,兩個組分別接到一個交換機。如果你只有一個交換機,你可以使用 VLAN 達到同樣的效果。你在交換機上分配配置連接組A和B的機器的端口爲 VLAN access ports。這個交換機就會只在同一個 VLAN 的端口之間轉發包。

(圖1)

    IEEE 802.1Q 標準定義了 VLAN Header 的格式。它在普通以太網幀結構的 SA (src addr)之後加入了 4bytes 的 VLAN Tag/Header 數據,其中包括 12-bits 的 VLAN ID。VLAN ID 最大值爲4096,但是有效值範圍是 1 - 4094。

(圖2)

    帶 VLAN 的交換機的端口分爲兩類:

  • Access port:這些端口被打上了 VLAN Tag。離開交換機的 Access port 進入計算機的以太幀中沒有 VLAN Tag,這意味着連接到 access ports 的機器不會覺察到 VLAN 的存在。離開計算機進入這些端口的數據幀被打上了 VLAN Tag。
  • Trunk port: 有多個交換機時,組A中的部分機器連接到 switch 1,另一部分機器連接到 switch 2。要使得這些機器能夠相互訪問,你需要連接兩臺交換機。 要避免使用一根電纜連接每個 VLAN 的兩個端口,我們可以在每個交換機上配置一個 VLAN trunk port。Trunk port 發出和收到的數據包都帶有 VLAN header,該 header 表明了該數據包屬於那個 VLAN。因此,只需要分別連接兩個交換機的一個 trunk port 就可以轉發所有的數據包了。通常來講,只使用 trunk port 連接兩個交換機,而不是用來連接機器和交換機,因爲機器不想看到它們收到的數據包帶有 VLAN Header。

   (圖3) 

1.1.2 VLAN 的類型

(1)基於端口的 VLAN (untagged VLAN - 端口屬於一個VLAN,數據幀中沒有VLAN tag)

    這種模式中,在交換機上創建若干個VLAN,在將若干端口放在每個VLAN 中。每個端口在某一時刻只能屬於一個VLAN。一個 VLAN 可以包含所有端口,或者部分端口。每個端口有個PVID (port VLAN identifier)。這種模式下,一個端口上收到的 frame 是 untagged frame,因此它不包含任何有關 VLAN 的信息。VLAN 的關係只能從端口的 PVID 上看出來。交換機在轉發 frame 時,只將它轉發到相同 PVID 的端口。

 

如上圖所示,連接兩個交換機的同一個 VLAN 中的兩個計算機需要通信的話,需要在兩個交換機之間連兩根線:

  • 一根從 Switch A 端口4 到 Switch B 端口 4 (VLAN 1)
  • 一根從 Switch A 端口8 到 Switch B 端口 8 (VLAN 2)

(2)Tagged VLANs (數據幀中帶有 VLAN tag)

這種模式下,frame 的VLAN 關係是它自己攜帶的信息中保存的,這種信息叫 a tag or tagged header。當交換機收到一個帶 VLAN tag 的幀,它只將它轉發給具有同樣 VID 的端口。一個能夠接收或者轉發 tagged frame 的端口被稱爲 a tagged port。所有連接到這種端口的網絡設備必須是 802.1Q 協議兼容的。這種設備必須能處理 tagged frame,以及添加 tag 到其轉發的 frame。

上圖中,兩個交換機上的端口8 支持 VLAN 1 和 2, 因此一根線就可以了實現跨交換機的同VLAN 內的計算機互相通信了。 

在實際的VLAN 配置中的各種情況:

  • 交換機的所有端口,部分是 tagged port,部分被添加到 VLAN 中。
  • 一個 untagged port,不管它是一個基於端口的VLAN 的一個成員還是一個 tagged VLAN 中的一個成員,一個時刻只能在一個 VLAN 中。
  • 一個 tagged port,可以是多個 VLAN 的成員。
  • 一個 port,可以同時是一個 VLAN 的 untagged member,以及不同 VLAN 中的 tagged member。

1.1.3 交換機端口類型

    以太網端口有三種鏈路類型:Access、Hybrid和Trunk。

  • Access類型的端口只能屬於1個VLAN,一般用於連接計算機的端口

這種類型的端口允許接收沒有打標籤的幀,再發出去時將會被打上標籤。

圖片來源

 

  • Trunk類型的端口可以屬於多個VLAN,可以接收和發送多個VLAN的報文,一般用於交換機之間連接的端口

圖片來源

在配置 trunk 口時,可以指定允許接收的VLAN 的 ID 區間,還可以配置一個 Native VLAN (缺省VID,也稱爲 PVID)。當設置了 PVID 時,沒有打標籤的進來的幀將被打上PVID 的 tag再被發出去。

  • Hybrid類型的端口可以屬於多個VLAN,可以接收和發送多個VLAN的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機。Hybrid端口和Trunk端口的不同之處在於Hybrid端口可以允許多個VLAN的報文發送時不打標籤,而Trunk端口只允許缺省VLAN的報文發送時不打標籤。

各種類型:

  • Access (接收) Tagged = PVID 不接收 注:部分高端產品可能接收。
  • Access (接收) Tagged =/ PVID 不接收 注:部分高端產品可能接收。
  • Access (接收) Untagged 接收 增加tag=PVID 從PC
  • Access (發送) Tagged = PVID 轉發 刪除tag 
  • Access (發送) Tagged =/ PVID 不轉發 不處理 
  • Access (發送) Untagged 無此情況
  • Trunk (接收) Tagged = PVID 接收 不修改tag 
  • Trunk (接收) Tagged =/ PVID 接收 不修改tag 
  • Trunk (接收) Untagged 接收 增加tag=PVID 
  • Trunk (發送) Tagged = PVID If Passing then 轉發 刪除tag 
  • Trunk (發送) Tagged =/ PVID If Passing then 轉發 不修改tag 
  • Trunk (發送) Untagged 無此情況
  • Hybrid (接收) Tagged = PVID 接收 不修改tag 對端是trunk
  • Hybrid (接收) Tagged =/ PVID 接收 不修改tag 對端是trunk
  • Hybrid (接收) Untagged 接收 增加tag=PVID 類Trunk
  • Hybrid (發送) Tagged = PVID Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項 
  • Hybrid (發送) Tagged =/ PVID Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項 
  • Hybrid (發送) Untagged 無此情況

解釋:

  • 主機只能處理標準以太幀(沒打標籤的),交換機內部的幀都是打了標籤的。
  • 收報文:Acess端口1 收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則直接丟棄(缺省)
  • 發報文:Acess端口1 將報文的VLAN信息剝離,直接發送出去
  • 收報文:trunk端口: 1、收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄
  • 發報文:trunk端口: 1、比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送
  • 收報文: hybrid端口: 1、收到一個報文 2、判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄
  • 發報文:hybrid端口:1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag)2、如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送
  tagged (進) untagged(進) 出 (交換機在做交換時,只會把幀發給包含其 VID 的端口)
Access 端口 丟棄 打上 PVID 剝離 VID,此時的幀爲標準以太網幀
Trunk 端口 如果是允許的,則不變;否則丟棄 打上 PVID 如果 VID 與 PVID 不同,則透傳;如果 VID 與 PVID 相同,則剝離 VID

 

1.1.4 VLAN 的不足

  1. VLAN 使用 12-bit 的 VLAN ID,所以 VLAN 的第一個不足之處就是它最多隻支持 4096 個 VLAN 網絡(當然這還要除去幾個預留的),對於大型數據中心的來說,這個數量是遠遠不夠的。
  2. VLAN 是基於 L2 的,所以很難跨越 L2 的邊界,在很大程度上限制了網絡的靈活性。
  3. VLAN 操作需手工介入較多,這對於管理成千上萬臺機器的管理員來說是難以接受的。

1.2   二層交換的基礎知識

1.2.1 二層交換機最基本的功能

二層交換機最基本的功能包括:

  • MAC 地址學習:當交換機從它的某個端口收到數據幀時,它將端口的 ID 和幀的源 MAC 地址保存到它的內部MAC表中。這樣,當將來它收到一個要轉發到該 MAC 地址的幀時,它就知道直接從該端口轉發出去了。
  • 數據幀轉發:交換機在將從某個端口收到數據幀,再將其從某個端口轉發出去之前,它會做一些邏輯判斷:
    • 如果幀的目的 MAC 地址是廣播或者多播地址的話,將其從交換機的所有端口(除了傳入端口)上轉發。
    • 如果幀的目的MAC地址在它的內部MAC表中能找到對應的輸出端口的話(MAC 地址學習過程中保存的),將其從該端口上轉發出去。
    • 對其它情況,將其從交換機的所有端口(除了傳入端口)上轉發。
  • 加 VLAN 標籤/去 VLAN 標籤:
    • 幀接收:從 trunk port 上收到的數據幀必須是加了標籤的。從 access port 上收到的數據幀必須是沒有加標籤的,否則該幀將會被拋棄。
    • 幀處理:根據上述轉發流程決定其發出的端口。
    • 幀發出:從 trunk port 發出的幀是加了標籤的。從 access port 上發出的幀必須是沒加標籤的。

 默認情況下,交換機的所有端口都處於VLAN 1 中,也就相當於沒有配置 VLAN。該機制說明如下:

 (圖4)

  1. PC A 發一個幀到交換機的 1 端口,其目的MAC地址爲 PC B 的 MAC。
  2. 交換機比較其目的 MAC 地址和它的內部 MAC Table,發現它不存在(此時表爲空)。在決定泛洪之前,它把端口 1 和 PC A 的 MAC 地址存進它的 MAC Table。
  3. 交換機將幀拷貝多份,分別從2和3端口發出。
  4. PC B 收到該幀以後,發現其目的 MAC 地址和他自己的 MAC 地址相同。它發出一個回覆幀進入端口3。
  5. 交換機將 PC B 的 MAC地址和端口3 存在它的 MAC 表中。
  6. 因爲該幀的目的地址爲PC A 的 MAC 地址它已經在 MAC 表中,交換機直接將它轉發到端口1,達到PC A。

配置了 VLAN 的交換機的該機制類似,只不過:

(1)MAC 表格中每一行有不同的 VLAN ID。做比較的時候,拿傳入幀的目的 MAC 地址和 VLAN ID 和此表中的行數據相比較。如果都相同,則選擇其 Ports 作爲轉發出口端口。

 (圖5)

(2)如果沒有吻合的表項,則將此幀從所有有同樣 VLAN ID 的 Access ports 和 Trunk ports 轉發出去。

1.2.2 Address Resolution Protocol (ARP) 原理

二層網絡使用 MAC (media access control address)地址作爲硬件的唯一標識。基於 TCP/IP 協議的軟件使用 ARP 來將 IP 地址轉化爲 MAC 地址。

1. 目的 IP 地址在同一網段的話

How ARP resolves media access control addresses(圖6)

    該示例中,Host A 和 B 在同一個網段中。A 的 IP 地址是 10.0.0.99,B 的 IP 地址是 10.0.0.100。當 A 要和 B 通信時,A 需要知道 B 的 MAC 地址。該過程經過以下步驟:
(1)A 上的 IP 協議棧知道通過B 的 IP 地址可以直接到達 B。A 檢查它的本地 ARP 緩存來看B 的 MAC 地址是否已經存在。
(2)如果A 沒有發現B 的 MAC 地址,它發出一個 ARP 廣播請求,來詢問“10.0.0.100 的 MAC 地址是什麼?”,該數據包:
SRC MAC: A 的 MAC
DST MAC:FF:FF:FF:FF:FF:FF
SRA IP: A 的 IP
DST IP: B 的 IP
(3)該網段中所有的電腦都將收到該包,並且會檢查 DST IP 和自己的IP 是否相同。如果不同,則丟棄該包。Host B 發現其IP 地址和 DST IP 相同,它將 A 的 IP/MAP 地址加入到自己的ARP 緩存中。
(4)B 發出一個 ARP 回覆消息
SRC MAC: B 的 MAC
DST MAC:A 的 MAC
SRA IP: B 的 IP
DST IP: A 的 IP
(5)交換機直接將該包交給 host A。A 收到後,將 B 的 MAC/IP 地址緩存到 ARP 緩存中。
(6)A 使用 B 的 MAC 作爲目的 MAC 地址發出 IP 包。
 
2. 目的IP 地址不在同一個網段的話
How ARP resolves media access control addresses(圖7)
 
本例子中,A 的地址是 10.0.0.99, B 的地址是 192.168.0.99。Router 的 interface 1 和 A 在同一個網段,其IP 地址爲10.0.0.1;interface 2 和 B 在同一個網段,其IP地址爲 192.168.0.1。 
A 使用下面的步驟來獲取 Router 的 interface 1 的 MAC 地址。
(1)根據其路由表,A 上的 IP 協議知道需要通過它上面配置的 gateway 10.0.0.1 才能到達到 B。經過上面例子中的步驟,A 會得到 10.0.0.1 的 MAC 地址。
(2)當 A 收到 Router interface 1 的 MAC 地址後,A 發出了給B 的數據包:
SRC MAC: A 的 MAC
DST MAC:Router 的 interface 1 的 MAC 地址
SRA IP: A 的 IP
DST IP: B 的 IP
(3)路由器的 interface1 收到該數據包後,根據其路由表,首先經過同樣的ARP 過程,路由器根據 B 的 IP 地址通過 ARP 獲得其 MAC 地址,然後將包發給它。
SRC MAC: Router interface 2 的 MAC
DST MAC:B 的 MAC
SRA IP: A 的 IP
DST IP: B 的 IP

2. 使用 Open vSwitch (OVS)+ VLAN 組網

Neutron 基於 VLAN 模式的 tenant network 同 provider network 一樣,都必須使用物理的 VLAN 網絡。

2.1 物理 VLAN 網絡配置

本例子中,交換機上劃分了三個 VLAN 區域:

  1. 管理網絡,用於 OpenStack 節點之間的通信,假設 VLAN ID 範圍爲 50 - 99.
  2. 數據網絡,用於虛擬機之間的通訊。由於Vlan模式下,租戶建立的網絡都具有獨立的 Vlan ID,故需要將連接虛機的服務器的交換機端口設置爲 Trunk 模式,並且設置所允許的 VLAN ID 範圍,比如 100~300。
  3. 外部網絡,用於連接外部網絡。加上 VLAN ID 範圍爲 1000-1010。

(圖8)

關於網段之間的路由:

  • 如果該物理交換機接到一個物理路由器並做相應的配置,則數據網絡可以使用這個物理路由器,而不需要使用 Neutron 的虛擬路由器。
  • 如果不使用物理的路由器,可以在網絡節點上配置虛擬路由器。

2.2 Neutron 配置

2.2.1 配置進行

控制節點上:
複製代碼
# 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
複製代碼

網絡節點上:

複製代碼
#爲連接物理交換機的網卡 eth2 和 eth3 建立 OVS physical bridge,其中,eth2 用於數據網絡,eth3 用於外部網絡
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
複製代碼

計算節點上:

複製代碼
#爲連接物理交換機的網卡 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 必須和物理交換機上的 VLAN ID 區間一致。
  • bridge_mappings 中所指定的 bridge 需要和在個節點上手工創建的 OVS bridge 一致。

然後重啓相應的 Neutron 服務。

2.2.2 配置生效過程

當 Neutron L2 Agent (OVS Agent 或者 Linux Bridge agent)在計算和網絡節點上啓動時,它會根據各種配置在節點上創建各種 bridge。以 OVS Agent 爲例,

(1)創建 intergration brige(默認是 br-int);如果 enable_tunneling = true 的話,創建 tunnel bridge (默認是 br-tun)。

(2)根據 bridge_mappings,配置每一個 VLAN 和 Flat 網絡使用的 physical network interface 對應的預先創建的 OVS bridge。

(3)所有虛機的 VIF 都是連接到 integration bridge。同一個虛擬網絡上的 VM VIF 共享一個本地 VLAN (local VLAN)。Local VLAN ID 被映射到虛擬網絡對應的物理網絡的 segmentation_id。

(4)對於 GRE 類型的虛擬網絡,使用 LSI (Logical Switch identifier)來區分隧道(tunnel)內的租戶網絡流量(tenant traffic)。這個隧道的兩端都是每個物理服務器上的 tunneling bridge。使用 Patch port 來將 br-int 和 br-tun 連接起來。

(5)對於每一個 VLAN 或者 Flat 類型的網絡,使用一個 veth 或者一個 patch port 對來連接 br-int 和物理網橋,以及增加 flow rules等。

(6)最後,Neutron L2 Agent 啓動後會運行一個RPC循環任務來處理 端口添加、刪除和修改。管理員可以通過配置項 polling_interval 指定該 RPC 循環任務的執行間隔,默認爲2秒。

2.3 創建虛擬網絡和子網

2.3.1 創建命令

複製代碼
s1@controller:~$ neutron net-create net1 (或者 Admin 用戶運行 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 代碼實現

做完以上的步驟之後,用戶就可以在 subnet 上 boot 虛機了。

boot 虛機的過程中,Nova 依次會:

(1)調用 Neutron REST API 申請一個或者多個 port。Neutron 會根據數據庫中的配置來進行分配。

(2)在計算節點上,Nova 調用 ovs-vsctl 命令將虛機的 VIF 被 plug 到 br-int 上。

(3)啓動虛機。

Neutron L2 Agent 的循環任務每隔兩秒會依次:

(1)調用 ”ovs-vsctl list-ports“ 命令獲取到 br-int 上的 port,再根據上次保存的歷史數據,生成所有變更端口的列表(包括添加的、更新的、刪除的端口)。比如:

{'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)爲每一個待處理端口,根據其 ID 從 DB 中取得其詳細信息。比如:

{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)針對每一個增加或者變更的 port,設置 local VLAN Tag;調用 ”ovs-ofctl mod-flows “ 命令來設置 br-tun 或者 物理 bridge 的 flow rules;並設置 db 中其狀態爲 up。

(4)針對每一個被刪除的 port,設置 db 中其狀態爲 down。

2.4 Neutron 虛擬網絡

(1)一個計算節點上的網絡實例

它反映的網絡配置如下:

  1. Neutron 使用 Open vSiwtch。
  2. 一臺物理服務器,網卡 eth1 接入物理交換機,預先配置了網橋 br-eth1。
  3. 創建了兩個 neutron VLAN network,分別使用 VLAN ID 101 和 102。
  4. 該服務器上運行三個虛機,虛機1 和 2 分別有一個網卡接入 network 1;虛機2 和 3 分別有一個網卡接入 network 2.

(圖9)

Neutron 在該計算節點上做的事情:

  • 創建了 OVS Integration bridge br-int。它的四個 Access 端口中,兩個打上了內部 Tag 1,連接接入 network 1 的兩個網卡;另兩個端口的 VLAN Tag 爲 2。
  • 創建了一對 patch port,連接 br-int 和 br-eth1。
  • 設置 br-int 中的 flow rules。對從 access ports 進入的數據幀,加上相應的 VLAN Tag,轉發到 patch port;從 patch port 進入的數據幀,將 VLAN ID 101 修改爲 1, 102 修改爲 2,再轉發到相應的 Access ports。
  • 設置 br-eth1 中的 flow rules。從 patch port 進入的數據幀,將內部 VLAN ID 1 修改爲 101,內部 VLAN ID 2 修改爲 102,再從 eth1 端口發出。對從 eth1 進入的數據幀做相反的處理。

(2)再加上另一個連接到同一個物理交換機的服務器(加上 neutron 網絡使用的 VLAN ID 爲 100,物理 brige 爲 br-eth0):

(圖10)

Neutron 實現了基於物理 VLAN 交換機的跨物理服務器二層虛擬網絡。

(3)連接到同一物理交換機的網絡節點的情況

(圖11)

(4)網絡流向

  • 不同物理服務器上的虛機,如果 VM1 和 VM2 屬於同一個 tenant network 的同一個subnet,那麼兩者的通信直接經過 物理交換機 進行,不需要做到網絡節點。如圖10 所示。
  • 相同物理服務器上的虛機,如果 VM1 和 VM2 屬於同一個 tenant network 的同一個subnet,那麼兩者的通信直接經過 br-int 進行。
  • 對其他虛機之間數據交換情形,都算作跨子網的數據流向,都需要經過網絡節點中的 Router 進行 IP 包的路由。(也可以直接使用連接物理交換機的物理路由器)。

原文出處: http://www.cnblogs.com/sammyliu/p/4626419.html
發佈了18 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章