1. 程式人生 > >淺談openstack中使用linux_bridge實現vxlan網絡

淺談openstack中使用linux_bridge實現vxlan網絡

strong 實現 9.png oar 一個 14. tab 組成 路由

openstack環境:

1 版本:ocata

2 系統:ubuntu16.04.2

3 控制節點 1個 + 計算節點 1個

4 控制節點網卡為ens33,ip = 172.171.5.200 ens34 manual模式 無IP

技術分享圖片

(為什麽外網網卡ens34沒有IP地址?這是另一個故事,後面有專門章節講解。)

計算節點網卡 ens33 ,ip = 172.171.5.201

技術分享圖片

一 vxlan配置

1 控制節點:

編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件

配置tenant_network_types = vxlan。該配置意義是項目中創建的內部網絡為vxlan類型。

技術分享圖片

配置flat外部網絡的標簽為provider,在創建外部網絡時使用。

技術分享圖片

編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

配置物理網卡的映射,通俗講即指定外網網卡。ens34為本環境中出外網網卡。

技術分享圖片

指定vxlan的封裝IP,即外層IP。

技術分享圖片

2 計算節點

同理配置計算節點,標簽label要和控制節點一致

技術分享圖片

隧道的封裝IP為ens33的IP地址

技術分享圖片

重啟網絡服務。

?
1 2 service neutron-server restart service neutron-linuxbridge-agent restart

二 在dashboard上創建網絡過程

1 admin用戶創建公網

技術分享圖片

這裏首先創建的是外網。外網的類型有兩種:falt和vlan。當指定為flat類型時,物理網絡中填寫的就是上面配置的label。指明該flat網絡使用label所綁定的網卡出外網。

一定要區分創建外部網絡和非外部網絡。如下圖,勾選了外部網絡一定是創建公網,是所有VM出公網的網絡。admin用戶也可以為某個項目創建內網,不勾選外部網絡。

技術分享圖片

flat網絡創建子網。子網網段是能夠出外網的網段。比如這裏填寫的172.171.5.0/24網段,該網段中每一個IP地址都能出外網。

技術分享圖片

填寫地址池,DNS服務器。外網到這裏創建結束。接下來創建本環境中的項目demo項目的內網。

技術分享圖片

當創建好外部網絡之後,對應的控制節點底層網橋發生變化。由於寫博文截圖不夠及時,這裏已經是創建好網絡,實例之後的截圖。

當創建好外部網絡之後,會出現紅框中的網橋信息。其中,該網橋連接了ens34網卡和dhcp節點tap543aa81e。

技術分享圖片

如下圖所示(畫功一般,見諒)

技術分享圖片

以demo用戶登錄

技術分享圖片

創建內部網絡。使用demo用戶登錄demo項目中,創建的內部網絡類型是由tenant_network_types中指定,為vxlan。

該配置能指定內部網絡類型,如flat,vlan,gre等。

技術分享圖片

分配內網的ip地址。內網地址指定網段為任意網段,因為該網段的地址要經過路由器的轉換,轉換到外網的IP地址出外網。

推薦使用私網地址。本環境使用192.168.0.0/24。

技術分享圖片

配置地址池,不配置即可使用全部。

技術分享圖片

配置內網之後創建路由器,連接內網和外網。如下創建router,外部網絡選擇上面創建的外部網絡名稱。本環境為out_side_net。

技術分享圖片

再添加接口為內部網絡。子網是指上面創建的內部網絡。

技術分享圖片

最後開啟一個實例。創建實例時選擇的網絡是內部網絡。

技術分享圖片

創建好內部網絡和實例之後,vxlan隧道就建立起來。系統會在控制節點創建一個vxlan 的VTEP,在計算節點創建一個vxlan的VTEP。

如下圖,第一張為控制節點,創建vxlan12;第二張為計算節點創建也為vxlan12。這兩個VTEP設備組成了vxlan隧道的兩個端點。

技術分享圖片

技術分享圖片

通過查看計算節點上vxlan12的詳細信息可以看到其連接ens33網卡。

技術分享圖片

此時隧道的網絡如下圖所示

技術分享圖片

如下圖所示為創建好外部網絡,內部網絡,以及路由器之後的網絡拓撲。

技術分享圖片

內部網絡的情況大概如下圖所示。

技術分享圖片

登陸實例,ping外網,通。此時的除外網的網絡流量過程如下:

1. VM產生ICMP包,發往網橋。數據包源IP為192.168.0.X。
2.通過網橋在vxlan12上封裝外層數據包。
3.數據通過ens33網卡出計算節點,到控制節點,即網絡節點。
4.在控制節點的vxlan12處解開外層封裝,還原VM的ICMP包。
5.數據流到達router路由器,經過路由器NAT地址轉換。從192.168.0.X轉換成外網地址172.171.5.230~240中一個。
6.數據流經過網橋,從ens34出去到達公網。

回包過程大概是反過來的,不再累敘。

技術分享圖片

openstsack網絡復雜,自身知識能力也有限,難免出現理解錯誤的地方。歡迎指正和交流。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

淺談openstack中使用linux_bridge實現vxlan網絡