vswitch0eth0
1. 如何在ubuntu14.04中安裝openvswitch
最近在研究學習Open vSwitch,准備在本地Ubuntu14.04機器上安裝一下,並基於其創建一些KVM虛擬機,下面就簡要記錄下在Ubuntu14.04系統上安裝Open vSwitch的過程。
1、由於之前安裝過KVM,其在本機生成了一個名為virbr0的bridge,這里我們需要事先將其刪除,否則可能會與Open vSwitch產生不兼容的問題,命令如下:
virsh net-destroy default
Network default destroyed
virsh net-autostart --disable default
Network default unmarked as autostarted
2、這里我們同樣也不需要bridge模塊:
sudo aptitude purge ebtables
The following packages will be REMOVED:
ebtables{p}
0 packages upgraded, 0 newly installed, 1 to remove and 37 not upgraded.
Need to get 0 B of archives. After unpacking 379 kB will be freed.
Do you want to continue? [Y/n/?] y
(Reading database ... 230918 files and directories currently installed.)
Removing ebtables (2.0.10.4-3ubuntu1) ...
* Clearing ebtables rulesets[ OK ]
Purging configuration files for ebtables (2.0.10.4-3ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
3、下面開始安裝openvswitch相關包:
sudo apt-get install openvswitch-switch
4、查看下ovs的運行狀況:
ps -ea | grep ovs
10637 ? 00:00:00 ovsdb-server
10647 ? 00:00:00 ovs-vswitchd
5、查看下安裝的ovs的版本:
ovs-appctl --version
ovs-appctl (Open vSwitch) 2.0.2
Compiled May 13 2015
6、查看下當前ovs支持的OpenFlow協議的版本:
ovs-ofctl --version
ovs-ofctl (Open vSwitch) 2.0.2
Compiled May 13 2015 18:49:53
OpenFlow versions 0x1:0x4
7、通過ovs創建一個網橋 br0,供kvm虛擬機使用:
sudo ovs-vsctl add-br br0
ifconfig
br0 Link encap:Ethernet HWaddr 12:72:fd:75:e5:4b
inet6 addr: fe80::4c0a:7bff:fec6:98d7/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:578 (578.0 B)
通過ifconfig命令,我們發現多了一個br0網橋。
8、將物理網卡eth0添加到br0上:
sudo ovs-vsctl add-port br0 eth0
這步執行後,發現無法再訪問外網,不過沒關系,我們可以按照如下步驟解決:
1)先清除eth0的配置:
sudo ifconfig eth0 0
2)讓br0自動獲取ip地址:
sudo dhclient br0
3)此時就又可以通外網了:
ping www..com
PING www.a.shifen.com (119.75.217.109) 56(84) bytes of data.
64 bytes from 119.75.217.109: icmp_seq=1 ttl=54 time=30.9 ms
64 bytes from 119.75.217.109: icmp_seq=2 ttl=54 time=31.9 ms
9、最後查看下目前br0和eth0的情況:
sudo ovs-vsctl show
1e6548a9-956e-4b86-b743-f8da0aa2b922
Bridge "br0"
Port "br0"
Interface "br0"
type: internal
Port "eth0"
Interface "eth0"
ovs_version: "2.0.2"
Linux有問必答:如何啟用Open vSwitch的日誌功能以便調試和排障:http://www.linuxdiyf.com/linux/13701.html
CentOS7安裝Openvswitch 2.3.0 LTS:http://www.linuxdiyf.com/linux/10288.html
CentOS 6.5下安裝Open vSwitch:http://www.linuxdiyf.com/linux/6891.html
OpenvSwitch 2.1.2安裝完成後啟動與停止shell腳本:http://www.linuxdiyf.com/linux/2498.html
2. 一對虛擬網橋發包為什麼會影響另一對網橋上的伺服器的訪問速度
本文詳細介紹了Openstack的網路原理和實現,主要內容包括:Neutron的網路架構及網路模型還有neutron虛擬化的實現和對二三層網橋的理解。
一、Neutron概述
Neutron是一個用Python寫的分布式軟體項目,用來實現OpenStack中的虛擬網路服務,實現軟體定義網路。Neutron北向有自己的REST API,中間有自己的業務邏輯層,有自己的DB和進程之間通訊的消息機制。同時Neutron常見的進程包括Neutron-server和Neutron-agent,分布式部署在不同的操作系統。
OpenStack發展至今,已經經歷了20個版本。雖然版本一直在更替,發展的項目也越來越多,但是Neutron作為OpenStack三大核心之一,它的地位是不會動搖的。只不過當初的Neutron也只是Nova項目的一個模塊而已,到F版本正式從中剝離,成為一個正式的項目。
從Nova-Network起步,經過Quantum,多年的積累Neutron在網路各個方面都取得了長足的發展。其主要的功能為:
(1)支持多租戶隔離
(2)支持多種網路類型同時使用
(3)支持隧道技術(VXLAN、GRE)
(4)支持路由轉發、SNAT、DNAT技術
(5)支持Floating IP和安全組
多平面租戶私有網路
圖中同時有VXLAN和VLAN兩種網路,兩種網路之間互相隔離。租戶A和B各自獨佔一個網路,並且通過自己的路由器連接到了外部網路。路由器為租戶的每個虛擬機提供了Float IP,完成vm和外網之間的互相訪問。
二、Neutron架構及網路模型
1、Neutron架構
Neutron-sever可以理解為類似於nova-api那樣的一個專門用來接收API調用的組件,負責將不同的api發送到不同Neutron plugin。
Neutron-plugin可以理解為不同網路功能實現的入口,接收server發來的API,向database完成一些注冊信息。然後將具體要執行的業務操作和參數通知給對應的agent來執行。
Agent就是plugin在設備上的代理,接受相應的plugin通知的業務操作和參數,並轉換為具體的命令行操作。
總得來說,server負責交互接收請求,plugin操作資料庫,agent負責具體的網路創建。
2、Neutron架構之Neutron-Server
(1)Neutron-server的本質是一個Python Web Server Gateway Interface(WSGI),是一個Web框架。
(2)Neutron-server接收兩種請求:
REST API請求:接收REST API請求,並將REST API分發到對應的Plugin(L3RouterPlugin)。
RPC請求:接收Plugin agent請求,分發到對應的Plugin(NeutronL3agent)。
3、Neutron架構之Neutron-Plugin
Neutron-plugin分為Core-plugin和Service-plugin。
Core-plugin:ML2負責管理二層網路,ML2主要包括Network、Subnet、Port三類核心資源,對三類資源進行操作的REST API是原生支持的。
Service-plugin:實現L3-L7網路,包括Router、Firewall、VPN。
4、Neutron架構之Neutron-Agent
(1)Neutron-agent配置的業務對象是部署在每一個網路節點或者計算節點的網元。
(2)網元區分為PNF和VNF:
PNF:物理網路功能,指傳統的路由器、交換機等硬體設備
VNF:虛擬網路功能,通過軟體實現的網路功能(二層交換、三層路由等)
(3)Neutron-agent三層架構如下圖:
Neutron-agent架構分為三層,北向為Neutron-server提供RPC介面,供Neutron server調用,南向通過CLI協議棧對Neutron VNF進行配置。在中間會進行兩種模型的轉換,從RPC模型轉換為CLI模型。
5、Neutron架構之通信原理
(1)Neutron是OpenStack的核心組件,官網給出Neutron的定義是NaaS。
(2)Naas有兩層含義:
對外介面:Neutron為Network等網路資源提供了RESTful API、CLI、GUI等模型。
內部實現:利用Linux原生或者開源的虛擬網路功能,加上硬體網路,構建網路。
Neutron接收到API請求後,交由模塊WSGI進行初步的處理,然後這個模塊通過Python API調用neutron的Plugin。Plugin做了相應的處理後,通過RPC調用Neutron的Agent組件,agent再通過某種協議對虛擬網路功能進行配置。其中承載RPC通信的是AMQP server,在部署中常用的開源軟體就是RabbitMQ
6、Neutron架構之控制節點網路模型
控制節點沒有實現具體的網路功能,它對各種虛擬設備做管理配合的工作。
(1)Neutron:Neutron-server核心組件。
(2)API/CLI:Neutron進程通過API/CLI介面接收請求。
(3)OVS Agent:Neutron通過RPC協議與agent通信。
控制節點部署著各種服務和Neutron-server,Neutron-server通過api/cli介面接收請求信息,通過RPC和Agent進行交互。Agent再調用ovs/linuxbridge等網路設備創建網路。
7、Neutron架構之計算節點網路模型
(1)qbr:Linux Bridge網橋
(2)br-int:OVS網橋
(3)br-tun:OVS隧道網橋
(4)VXLAN封裝:網路類型的轉變
8、Neutron架構之網路節點網路模型
網路節點部署了Router、DHCP Server服務,網橋連接物理網卡。
(1)Router:路由轉發
(2)DHCP: 提供DNS、DHCP等服務。
(3)br-ex: 連接物理網口,連接外網
三、Neutron虛擬化實現功能及設備介紹
1、Neutron虛擬化實現功能
Neutron提供的網路虛擬化能力包括:
(1)二層到七層網路的虛擬化:L2(virtual Switch)、L3(virtual Router 和 LB)、L47(virtual Firewall )等
(2)網路連通性:二層網路和三層網路
(3)租戶隔離性
(4)網路安全性
(5)網路拓展性
(6)REST API
(7)更高級的服務,包括 LBaaS,FWaaS,VPNaaS 等
2、Neutron虛擬化功能之二層網路
(1)按照用戶許可權創建網路:
Provider network:管理員創建,映射租戶網路到物理網路
Tenant network:租戶創建的普通網路
External network:物理網路
(2)按照網路類型:
Flat network:所有租戶網路在一個網路中
Local network:只允許在伺服器內通信,不通外網
VLAN network:基於物理VLAN實現的虛擬網路
VXLAN network:基於VXLAN實現的虛擬網路
3、Neutron虛擬化實現功能之租戶隔離
Neutron是一個支持多租戶的系統,所以租戶隔離是Neutron必須要支持的特性。
(1)租戶隔離三種含義:管理面隔離、數據面的隔離、故障面的隔離。
(2)不同層次租戶網路的隔離性
租戶與租戶之間三層隔離
同一租戶不同網路之間二層隔離
同一租戶同一網路不同子網二層隔離
(3)計算節點的 br-int 上,Neutron 為每個虛機連接 OVS 的 access port 分配了內部的 VLAN Tag。這種 Tag 限制了網路流量只能在 Tenant Network 之內。
(4)計算節點的 br-tun 上,Neutron 將內部的 VLAN Tag 轉化為 VXLAN Tunnel ID,然後轉發到網路節點。
(5)網路節點的 br-tun 上,Neutron 將 VXLAN Tunnel ID 轉發了一一對應的 內部 VLAN Tag,使得 網路流被不同的服務處理。
(6)網路節點的 br-int 上連接的 DHCP 和 L3 agent 使用 Linux Network Namespace 進行隔離。
4、Neutron虛擬化實現功能之租戶網路安全
除了租戶隔離以外 Neutron還提供數據網路與外部網路的隔離性。
(1)默認情況下,所有虛擬機通過外網的流量全部走網路節點的L3 agent。在這里,內部的固定IP被轉化為外部的浮動IP地址
(1)Neutron還利用Linux iptables特性,實現其Security Group特性,從而保證訪問虛機的安全性
(3)Neutron利用網路控制節點上的Network Namespace中的iptables,實現了進出租戶網路的網路防火牆,從而保證了進出租戶網路的安全性。
5、Neutron虛擬化設備
(1)埠:Port代表虛擬網路交換機上的一個虛擬交換機埠
虛擬機的網卡連接到Port上就會擁有MAC地址和IP地址
(2)虛擬交換機:Neutron默認採用開源的Openvswitch,
同時還支持Linux Bridge
(3)虛擬路由器VR:
路由功能
一個VR只屬於一個租戶,租戶可以有多個VR
一個VR可以有若干個子網
VR之間採用Namespace隔離
Linux Bridge直接與物聯網卡相連
每個Flat獨佔一個物理網卡
配置文件添加響應mapping
四、Neutron網橋及二三層網路理解
1、Neutron-Local-Bridge
僅用於測試;網橋沒有與物理網卡相連VM不通外網。
圖中創建了兩個local network,分別有其對應的qbr網橋。Vm123的虛擬網卡通過tap連接到qbr網橋上。其中2和3屬於同一個network可以通信,1屬於另一個網路不能和23進行通信。並且qbr網橋不連物理網卡,所以說local網路虛擬機只能同網路通信,不能連通外網。
2、Neutron-Flat-Bridge
Flat網路是在local網路的基礎上實現不同宿主機之間的二層互聯,但是每個flat network都會佔用一個宿主機的物理介面。其中qbr1對應的flatnetwork 連接 eth1 qbr2,兩個網路的虛機在物理二層可以互聯。其它跟local network類似。
3、Neutron-VLAN-Bridge
在基於linux bridge的vlan網路中,eht1物理網卡上創建了兩個vlan介面,1.1連接到qbr1網橋,1.2連接到了qbr2網橋。在這種情況下vm通過eth1.1或者eth1.2發送到eth1的包會被打上各自的vlan id。此時vm2和vm3屬於同一個network所以是互通的,vm與vm2和vm3不通。
4、Neutron-VXLAN-Bridge
這個是以Linux bridge作agent的Vxlan網路:
Vxlan網路比Vxlan網路多了個VXLAN隧道,在Openstack中創建好內部網路和實例後,agent就會在計算節點和網路節點創建一對vxlan vtep.組成隧道的兩個端點。
Vxlan連接在eth0網口。在網路節點多了兩個組件dhcp 和router,他們分別通過一對veth與qbr網橋連接在一起,多個dhcp和路由之間使用namesapce隔離,當vm產生ping包時,發往linux 網橋qbr1,通過網橋在vxlan12上封裝數據包,數據通過eth0網卡出計算節點到網路節點的eth0,在vxlan12解包。到達路由器之後經過nat地址轉換,從eth1出去訪問外網,由租戶網路到運營商網路再到外部網路。
5、Neutron-VLAN-OVS
與Linux bridge不同,openvswitch 不是通過eth1.1 eth1.2這樣的vlan介面來隔離不同的vlan,而是通過openvswitch的流表規則來指定如何對進出br-int的數據進行轉發,實現不同vlan的隔離。
圖中計算節點的所有虛擬機都連接在int網橋上,虛擬機分為兩個網路。Int網橋會對到來的數據包根據network的不同打上vlan id號,然後轉發到eth網橋,eth網橋直連物理網路。這時候流量就從計算節點到了網路節點。
網路節點的ehx int網橋的功能相似,多了一個ex網橋,這個網橋是管理提前創建好的,和物理網卡相連,ex網橋和int網橋之間通過一對patch-port相連,虛擬機的流量到達int網橋後經過路由到ex網橋。
6、Neutron-VXLAN-OVS
Vxlan的模型和vlan的模型十分相似,從表面上來看,他倆相比只有一個不同,vlan對應的是ethx網橋,而vxlan對應的是tun網橋。
在這里ethx和tun都是ovs網橋,所以說兩者的差別不是實現組件的差別而是組件所執行功能的差別,ethx執行的是普通二層交換機的功能,tun執行的是vxlan中的vtep的功能,圖中倆tun對應的介面ip就是vxlan的隧道終結點ip。所以說虛機的數據包在到達tun網橋之前是打的是vlan tag,而到達tun之後會發生網路類型的轉換,從vlan封裝為vxlan然後到達網路節點。而之前的vlan類型的網路,虛機數據包的類型一直都是vlan。
7、物理的二層與虛擬的二層(VLAN模式)
(1)物理的二層指的是:物理網路是二層網路,基於乙太網協議的廣播方式進行通信。
(2)虛擬的二層指的是:Neutron實現的虛擬網路也是二層網路(openstack的vm機所用的網路必須是大二層),也是基於乙太網協議的廣播方式進行通信,但毫無疑問的是該虛擬網路是依賴於物理的二層網路。
(3)物理二層+虛擬二層的典型代表:VLAN網路模式。
8、物理的三層與虛擬的二層(GRE模式與VXLAN模式)
(1)物理三層指的是:物理網路是三層網路,基於IP路由的方式進行通信。
(2)虛擬的二層指的是:Neutron實現的虛擬網路仍然是二層網路(openstack的vm機所用的網路必須是大二層),仍然是基於乙太網的廣播方式進行通信,但毫無疑問的是該虛擬機網路是依賴於物理的三層網路,這點有點類似於VPN的概念,根本原理就是將私網的包封裝起來,最終打上隧道的ip地址傳輸。
(3)物理三層+虛擬二層的典型代表:GRE模式與VXLAN模式。
3. 什麼是OpenStack
本文詳細介紹了Openstack的網路原理和實現,主要內容包括:Neutron的網路架構及網路模型還有neutron虛擬化的實現和對二三層網橋的理解。
一、Neutron概述
Neutron是一個用Python寫的分布式軟體項目,用來實現OpenStack中的虛擬網路服務,實現軟體定義網路。Neutron北向有自己的REST API,中間有自己的業務邏輯層,有自己的DB和進程之間通訊的消息機制。同時Neutron常見的進程包括Neutron-server和Neutron-agent,分布式部署在不同的操作系統。
OpenStack發展至今,已經經歷了20個版本。雖然版本一直在更替,發展的項目也越來越多,但是Neutron作為OpenStack三大核心之一,它的地位是不會動搖的。只不過當初的Neutron也只是Nova項目的一個模塊而已,到F版本正式從中剝離,成為一個正式的項目。
從Nova-Network起步,經過Quantum,多年的積累Neutron在網路各個方面都取得了長足的發展。其主要的功能為:
(1)支持多租戶隔離
(2)支持多種網路類型同時使用
(3)支持隧道技術(VXLAN、GRE)
(4)支持路由轉發、SNAT、DNAT技術
(5)支持Floating IP和安全組
多平面租戶私有網路
圖中同時有VXLAN和VLAN兩種網路,兩種網路之間互相隔離。租戶A和B各自獨佔一個網路,並且通過自己的路由器連接到了外部網路。路由器為租戶的每個虛擬機提供了Float IP,完成vm和外網之間的互相訪問。
二、Neutron架構及網路模型
1、Neutron架構
Neutron-sever可以理解為類似於nova-api那樣的一個專門用來接收API調用的組件,負責將不同的api發送到不同Neutron plugin。
Neutron-plugin可以理解為不同網路功能實現的入口,接收server發來的API,向database完成一些注冊信息。然後將具體要執行的業務操作和參數通知給對應的agent來執行。
Agent就是plugin在設備上的代理,接受相應的plugin通知的業務操作和參數,並轉換為具體的命令行操作。
總得來說,server負責交互接收請求,plugin操作資料庫,agent負責具體的網路創建。
2、Neutron架構之Neutron-Server
(1)Neutron-server的本質是一個Python Web Server Gateway Interface(WSGI),是一個Web框架。
(2)Neutron-server接收兩種請求:
REST API請求:接收REST API請求,並將REST API分發到對應的Plugin(L3RouterPlugin)。
RPC請求:接收Plugin agent請求,分發到對應的Plugin(NeutronL3agent)。
3、Neutron架構之Neutron-Plugin
Neutron-plugin分為Core-plugin和Service-plugin。
Core-plugin:ML2負責管理二層網路,ML2主要包括Network、Subnet、Port三類核心資源,對三類資源進行操作的REST API是原生支持的。
Service-plugin:實現L3-L7網路,包括Router、Firewall、VPN。
4、Neutron架構之Neutron-Agent
(1)Neutron-agent配置的業務對象是部署在每一個網路節點或者計算節點的網元。
(2)網元區分為PNF和VNF:
PNF:物理網路功能,指傳統的路由器、交換機等硬體設備
VNF:虛擬網路功能,通過軟體實現的網路功能(二層交換、三層路由等)
(3)Neutron-agent三層架構如下圖:
Neutron-agent架構分為三層,北向為Neutron-server提供RPC介面,供Neutron server調用,南向通過CLI協議棧對Neutron VNF進行配置。在中間會進行兩種模型的轉換,從RPC模型轉換為CLI模型。
5、Neutron架構之通信原理
(1)Neutron是OpenStack的核心組件,官網給出Neutron的定義是NaaS。
(2)Naas有兩層含義:
對外介面:Neutron為Network等網路資源提供了RESTful API、CLI、GUI等模型。
內部實現:利用Linux原生或者開源的虛擬網路功能,加上硬體網路,構建網路。
Neutron接收到API請求後,交由模塊WSGI進行初步的處理,然後這個模塊通過Python API調用neutron的Plugin。Plugin做了相應的處理後,通過RPC調用Neutron的Agent組件,agent再通過某種協議對虛擬網路功能進行配置。其中承載RPC通信的是AMQP server,在部署中常用的開源軟體就是RabbitMQ
6、Neutron架構之控制節點網路模型
控制節點沒有實現具體的網路功能,它對各種虛擬設備做管理配合的工作。
(1)Neutron:Neutron-server核心組件。
(2)API/CLI:Neutron進程通過API/CLI介面接收請求。
(3)OVS Agent:Neutron通過RPC協議與agent通信。
控制節點部署著各種服務和Neutron-server,Neutron-server通過api/cli介面接收請求信息,通過RPC和Agent進行交互。Agent再調用ovs/linuxbridge等網路設備創建網路。
7、Neutron架構之計算節點網路模型
(1)qbr:Linux Bridge網橋
(2)br-int:OVS網橋
(3)br-tun:OVS隧道網橋
(4)VXLAN封裝:網路類型的轉變
8、Neutron架構之網路節點網路模型
網路節點部署了Router、DHCP Server服務,網橋連接物理網卡。
(1)Router:路由轉發
(2)DHCP: 提供DNS、DHCP等服務。
(3)br-ex: 連接物理網口,連接外網
三、Neutron虛擬化實現功能及設備介紹
1、Neutron虛擬化實現功能
Neutron提供的網路虛擬化能力包括:
(1)二層到七層網路的虛擬化:L2(virtual Switch)、L3(virtual Router 和 LB)、L47(virtual Firewall )等
(2)網路連通性:二層網路和三層網路
(3)租戶隔離性
(4)網路安全性
(5)網路拓展性
(6)REST API
(7)更高級的服務,包括 LBaaS,FWaaS,VPNaaS 等
2、Neutron虛擬化功能之二層網路
(1)按照用戶許可權創建網路:
Provider network:管理員創建,映射租戶網路到物理網路
Tenant network:租戶創建的普通網路
External network:物理網路
(2)按照網路類型:
Flat network:所有租戶網路在一個網路中
Local network:只允許在伺服器內通信,不通外網
VLAN network:基於物理VLAN實現的虛擬網路
VXLAN network:基於VXLAN實現的虛擬網路
3、Neutron虛擬化實現功能之租戶隔離
Neutron是一個支持多租戶的系統,所以租戶隔離是Neutron必須要支持的特性。
(1)租戶隔離三種含義:管理面隔離、數據面的隔離、故障面的隔離。
(2)不同層次租戶網路的隔離性
租戶與租戶之間三層隔離
同一租戶不同網路之間二層隔離
同一租戶同一網路不同子網二層隔離
(3)計算節點的 br-int 上,Neutron 為每個虛機連接 OVS 的 access port 分配了內部的 VLAN Tag。這種 Tag 限制了網路流量只能在 Tenant Network 之內。
(4)計算節點的 br-tun 上,Neutron 將內部的 VLAN Tag 轉化為 VXLAN Tunnel ID,然後轉發到網路節點。
(5)網路節點的 br-tun 上,Neutron 將 VXLAN Tunnel ID 轉發了一一對應的 內部 VLAN Tag,使得 網路流被不同的服務處理。
(6)網路節點的 br-int 上連接的 DHCP 和 L3 agent 使用 Linux Network Namespace 進行隔離。
4、Neutron虛擬化實現功能之租戶網路安全
除了租戶隔離以外 Neutron還提供數據網路與外部網路的隔離性。
(1)默認情況下,所有虛擬機通過外網的流量全部走網路節點的L3 agent。在這里,內部的固定IP被轉化為外部的浮動IP地址
(1)Neutron還利用Linux iptables特性,實現其Security Group特性,從而保證訪問虛機的安全性
(3)Neutron利用網路控制節點上的Network Namespace中的iptables,實現了進出租戶網路的網路防火牆,從而保證了進出租戶網路的安全性。
5、Neutron虛擬化設備
(1)埠:Port代表虛擬網路交換機上的一個虛擬交換機埠
虛擬機的網卡連接到Port上就會擁有MAC地址和IP地址
(2)虛擬交換機:Neutron默認採用開源的Openvswitch,
同時還支持Linux Bridge
(3)虛擬路由器VR:
- 路由功能
- 一個VR只屬於一個租戶,租戶可以有多個VR
- 一個VR可以有若干個子網
- VR之間採用Namespace隔離
四、Neutron網橋及二三層網路理解
1、Neutron-Local-Bridge
僅用於測試;網橋沒有與物理網卡相連VM不通外網。
圖中創建了兩個local network,分別有其對應的qbr網橋。Vm123的虛擬網卡通過tap連接到qbr網橋上。其中2和3屬於同一個network可以通信,1屬於另一個網路不能和23進行通信。並且qbr網橋不連物理網卡,所以說local網路虛擬機只能同網路通信,不能連通外網。
2、Neutron-Flat-Bridge
- Linux Bridge直接與物聯網卡相連
- 每個Flat獨佔一個物理網卡
- 配置文件添加響應mapping
Flat網路是在local網路的基礎上實現不同宿主機之間的二層互聯,但是每個flat network都會佔用一個宿主機的物理介面。其中qbr1對應的flatnetwork 連接 eth1 qbr2,兩個網路的虛機在物理二層可以互聯。其它跟local network類似。
3、Neutron-VLAN-Bridge
在基於linux bridge的vlan網路中,eht1物理網卡上創建了兩個vlan介面,1.1連接到qbr1網橋,1.2連接到了qbr2網橋。在這種情況下vm通過eth1.1或者eth1.2發送到eth1的包會被打上各自的vlan id。此時vm2和vm3屬於同一個network所以是互通的,vm與vm2和vm3不通。
4、Neutron-VXLAN-Bridge
這個是以Linux bridge作agent的Vxlan網路:
Vxlan網路比Vxlan網路多了個VXLAN隧道,在Openstack中創建好內部網路和實例後,agent就會在計算節點和網路節點創建一對vxlan vtep.組成隧道的兩個端點。
Vxlan連接在eth0網口。在網路節點多了兩個組件dhcp 和router,他們分別通過一對veth與qbr網橋連接在一起,多個dhcp和路由之間使用namesapce隔離,當vm產生ping包時,發往linux 網橋qbr1,通過網橋在vxlan12上封裝數據包,數據通過eth0網卡出計算節點到網路節點的eth0,在vxlan12解包。到達路由器之後經過nat地址轉換,從eth1出去訪問外網,由租戶網路到運營商網路再到外部網路。
5、Neutron-VLAN-OVS
與Linux bridge不同,openvswitch 不是通過eth1.1 eth1.2這樣的vlan介面來隔離不同的vlan,而是通過openvswitch的流表規則來指定如何對進出br-int的數據進行轉發,實現不同vlan的隔離。
圖中計算節點的所有虛擬機都連接在int網橋上,虛擬機分為兩個網路。Int網橋會對到來的數據包根據network的不同打上vlan id號,然後轉發到eth網橋,eth網橋直連物理網路。這時候流量就從計算節點到了網路節點。
網路節點的ehx int網橋的功能相似,多了一個ex網橋,這個網橋是管理提前創建好的,和物理網卡相連,ex網橋和int網橋之間通過一對patch-port相連,虛擬機的流量到達int網橋後經過路由到ex網橋。
6、Neutron-VXLAN-OVS
Vxlan的模型和vlan的模型十分相似,從表面上來看,他倆相比只有一個不同,vlan對應的是ethx網橋,而vxlan對應的是tun網橋。
在這里ethx和tun都是ovs網橋,所以說兩者的差別不是實現組件的差別而是組件所執行功能的差別,ethx執行的是普通二層交換機的功能,tun執行的是vxlan中的vtep的功能,圖中倆tun對應的介面ip就是vxlan的隧道終結點ip。所以說虛機的數據包在到達tun網橋之前是打的是vlan tag,而到達tun之後會發生網路類型的轉換,從vlan封裝為vxlan然後到達網路節點。而之前的vlan類型的網路,虛機數據包的類型一直都是vlan。
7、物理的二層與虛擬的二層(VLAN模式)
(1)物理的二層指的是:物理網路是二層網路,基於乙太網協議的廣播方式進行通信。
(2)虛擬的二層指的是:Neutron實現的虛擬網路也是二層網路(openstack的vm機所用的網路必須是大二層),也是基於乙太網協議的廣播方式進行通信,但毫無疑問的是該虛擬網路是依賴於物理的二層網路。
(3)物理二層+虛擬二層的典型代表:VLAN網路模式。
8、物理的三層與虛擬的二層(GRE模式與VXLAN模式)
(1)物理三層指的是:物理網路是三層網路,基於IP路由的方式進行通信。
(2)虛擬的二層指的是:Neutron實現的虛擬網路仍然是二層網路(openstack的vm機所用的網路必須是大二層),仍然是基於乙太網的廣播方式進行通信,但毫無疑問的是該虛擬機網路是依賴於物理的三層網路,這點有點類似於VPN的概念,根本原理就是將私網的包封裝起來,最終打上隧道的ip地址傳輸。
(3)物理三層+虛擬二層的典型代表:GRE模式與VXLAN模式。