您好,登錄后才能下訂單哦!
openstack的網(wǎng)絡(luò)服務(wù)組件為neutron,它的設(shè)計目標(biāo)是實現(xiàn)“網(wǎng)絡(luò)即服務(wù)”。
設(shè)計上:遵循基于“軟件定義網(wǎng)絡(luò)(SDN)"的靈活和自動化原則
實現(xiàn)上:充分利用linux中各種網(wǎng)絡(luò)相關(guān)的技術(shù)
Neutron最為核心的工作是對二層物理網(wǎng)絡(luò)的抽象與管理,物理服務(wù)器虛擬化后,虛擬機的網(wǎng)絡(luò)功能由虛擬機網(wǎng)卡(vnic)提供,物理交換機也被虛擬化為虛擬交換機(vswitch),各個vnic連接再vswitch的端口上,最后這些vswitch通過物理服務(wù)器的物理網(wǎng)卡訪問外部的物理網(wǎng)絡(luò)。
網(wǎng)絡(luò)虛擬化主要由分為三個部分:
網(wǎng)卡虛擬化:TAP,TUN,VETH
交換機虛擬化:linux bridge,open vswitch
網(wǎng)絡(luò)隔離:network-namespace
TAP設(shè)備:模擬一個二層的網(wǎng)絡(luò)設(shè)備,可以接收和發(fā)送二層網(wǎng)絡(luò)數(shù)據(jù)包
TUN設(shè)備:模擬一個三層的網(wǎng)絡(luò)設(shè)備,可以接收和發(fā)送三層網(wǎng)絡(luò)數(shù)據(jù)包
VETH:虛擬ethernet接口,通常以pair的方式出現(xiàn),一端發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包會被另一端接收,可以形成兩個網(wǎng)橋之間的通道
TAP/TUN提供了一臺主機內(nèi)用戶空間的數(shù)據(jù)傳輸機制,它虛擬機了一套網(wǎng)絡(luò)接口,這套接口和物理的接口無任何區(qū)別,可以配置IP,可以路由流量,不同的是它流量只在主機內(nèi)流通
veth-pari,是成對出現(xiàn)的網(wǎng)絡(luò)設(shè)備,一端連接協(xié)議棧,一端連接彼此,數(shù)據(jù)從一端出,一端進。它的特性常常用來連接不同的虛擬網(wǎng)絡(luò)組件,構(gòu)建大規(guī)模的虛擬網(wǎng)絡(luò)拓撲,比如連接linux bridge,ovs等,用于neutron,可以構(gòu)建非常復(fù)雜的網(wǎng)絡(luò)形態(tài)。
linux brigde:工作于二層的網(wǎng)絡(luò)設(shè)備,功能類似物理交換機
brigde可以綁定linux上其他網(wǎng)絡(luò)設(shè)備,并將這些設(shè)備虛擬化為端口
當(dāng)一個網(wǎng)絡(luò)設(shè)備被綁定到bridge上,就相當(dāng)于物理交換機端口插入了一條連接終端的網(wǎng)線。
使用brctl命令配置linux brige
相比linux bridge的小規(guī)模的主機內(nèi)部通信場景,open vswitch更適合大規(guī)模的多主機通信場景
network namespace能創(chuàng)建多個隔離的網(wǎng)絡(luò)空間,他們有獨立的網(wǎng)絡(luò)配置信息,例如網(wǎng)絡(luò)設(shè)備,路由表,iptables等。
不同的網(wǎng)絡(luò)空間中的虛擬機運行的時候仿佛就在自己的獨立網(wǎng)絡(luò)中。
network namespace通常于vrf(virtual routing fowarding虛擬路由轉(zhuǎn)發(fā))一起工作,vrf是一種ip技術(shù),允許路由表的多個實例同時在同一個路由器上共存。
使用veth可以連接兩個不同的網(wǎng)絡(luò)命名空間,使用bridge可以連接多個不同的網(wǎng)絡(luò)命名空間。
作為一種虛擬網(wǎng)絡(luò)服務(wù),為openstack計算提供網(wǎng)絡(luò)連通和尋址服務(wù)。
neutron對網(wǎng)絡(luò)進行了抽象,如下所示:
neutron支持多種類型的Network,包括local,flat,vlan,vxlan和gre
就是子網(wǎng),每個子網(wǎng)在neutron中需要定義ip地址和范圍
subnet必須與network關(guān)聯(lián),可以附加dns,網(wǎng)關(guān)ip,靜態(tài)路由
端口
邏輯網(wǎng)絡(luò)交換機上的虛擬交換端口
虛擬機通過port附著到network上
port可以分配ip地址和mac地址
連接租戶內(nèi)同一個network或者不同network之間的子網(wǎng),以及連接內(nèi)外網(wǎng)
固定ip,分配到每個端口上的ip,類似于物理環(huán)境中配置到網(wǎng)卡上的ip
floating ip(浮動ip)是external network創(chuàng)建的一種特殊的port,可以將floating ip綁定到任意network中的port上,底層會進行nat轉(zhuǎn)發(fā),將發(fā)送的浮動ip流量轉(zhuǎn)發(fā)到該port上的對應(yīng)固定ip上,外界可以通過浮動ip訪問虛擬機,虛擬機也可以通過浮動ip訪問外界
pytsical network,物理網(wǎng)絡(luò)。
在物理網(wǎng)絡(luò)環(huán)境中連接到openstack不同節(jié)點的網(wǎng)絡(luò),每個物理網(wǎng)絡(luò)可以支持neutron中的一個或者多個虛擬網(wǎng)絡(luò)。
openstack必須通過physical network才能和真實物理網(wǎng)絡(luò)通信
由openstack管理員創(chuàng)建,直接對應(yīng)數(shù)據(jù)中心現(xiàn)有物理網(wǎng)絡(luò)的一個網(wǎng)段
providr network通常使用vlan或者flat模式,可以在多個租戶之間共享
自助服務(wù)網(wǎng)絡(luò),也叫租戶網(wǎng)絡(luò)或項目網(wǎng)絡(luò),它是由openstack租戶創(chuàng)建的,完全虛擬的,只在本網(wǎng)絡(luò)內(nèi)部連通,不能在租戶之間共享
self-servcie network通常使用vxlan或者gre模式,可以通過virtual router的snat與provider network通信
不同的self-service network中的網(wǎng)段可以相同,類似于物理環(huán)境中不同公司的內(nèi)部網(wǎng)絡(luò)
self-service network如果需要和外部網(wǎng)絡(luò)通信,需要通過router,類似于物理環(huán)境中公司上網(wǎng)需要通過路由器或者防火墻。
外部網(wǎng)絡(luò),也叫公共網(wǎng)絡(luò)
它是一種特殊的provider network,連接的物理網(wǎng)絡(luò)與數(shù)據(jù)中心或者internet相通,網(wǎng)絡(luò)中的port可以訪問外網(wǎng)
一般將租戶的virtual router連接到該網(wǎng)絡(luò),并創(chuàng)建floating ip綁定虛擬機,實現(xiàn)虛擬機與外網(wǎng)通信
Exernal netwok類似于物理環(huán)境中直接使用公網(wǎng)ip網(wǎng)段,不同的是,openstack中external network對應(yīng)的物理網(wǎng)絡(luò)不一定能直連internet,有可能只是數(shù)據(jù)中心的一個內(nèi)部私有網(wǎng)絡(luò)。
安全組,他的作用是在neutron port上的一組策略,規(guī)定了虛擬機入口和出口流量的規(guī)則
安全組基于linux iptables實現(xiàn),默認(rèn)拒絕所有流量,只有添加了放行規(guī)則的流量才允許通過
每個openstack項目中都有一個default默認(rèn)安全組,默認(rèn)包含如下規(guī)則-拒絕所有入口流量,允許所有出口流量
架構(gòu)圖
neutron架構(gòu)原則
message queue:neutron-sever通過消息列隊與其他的neutron agents進行交換消息,但是這個消息列隊不會用于neutron-server與其他openstack組件(如nova)進行交換消息
l2 agent:負責(zé)連接端口(ports)和設(shè)備,使他們處于共享的廣播域,通常運行在hypervisor上
l3 agent:負責(zé)連接tenant網(wǎng)絡(luò)到數(shù)據(jù)中心,或者連接到internet.在真實的部署環(huán)境中,一般都需要多個l3 agent同時運行。
dhcp agent:用于自動配置虛擬機網(wǎng)絡(luò)
advance service:提供lb(負載均衡),防火墻等服務(wù)
neutron的架構(gòu)是基于插件的,不同的插件提供不同的網(wǎng)絡(luò)服務(wù),主要包含如下組件
neutron server=apis+plugins,通過這種方式,可以自由對接不同網(wǎng)絡(luò)后端能力
core plugin,主要是指ml2(modular layer 2) plugin,是一個開放架構(gòu),在plugin下,可以集成各個廠家,各種后端技術(shù)支持的layer 2網(wǎng)絡(luò)服務(wù)。
ml2 plugin的drivers主要分為以下兩種:
typer driver:定義了網(wǎng)絡(luò)類型,每種網(wǎng)絡(luò)類型對應(yīng)一個type driver
mechanism driver:對接各種二層網(wǎng)絡(luò)技術(shù)和物理交換機設(shè)備,如ovs,linux bridge等,從typer driver獲取相關(guān)的底層網(wǎng)絡(luò)信息,確保對應(yīng)的底層技術(shù)能夠根據(jù)這些信息正確配置二層網(wǎng)絡(luò)。
serivce plugin用于實現(xiàn)高階網(wǎng)絡(luò)服務(wù),如路由,負載均衡,防火墻和***服務(wù)等
l3 service plugin主要提供路由,浮動ip服務(wù)等。
neutron agent向虛擬機提供二層和三層的網(wǎng)絡(luò)連接,完成虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)之間的轉(zhuǎn)換,提供擴展服務(wù)等
neutron支持多種網(wǎng)絡(luò)技術(shù)和類型,可以自由組合各種網(wǎng)絡(luò)模型。
生產(chǎn)中,openstack主要使用如下兩種網(wǎng)絡(luò)模型
flat網(wǎng)絡(luò)類似于使用網(wǎng)線直接連接物理網(wǎng)絡(luò),openstack不負責(zé)網(wǎng)絡(luò)隔離
interface 2不帶vlan tag
interface 2需要多個vlan,連接的物理交換機一般配置trunk模式,并允許這些vlan通過
使用linux bridge+vlan實現(xiàn) provider network,網(wǎng)絡(luò)流量可以分為如下幾種:
南北向流量:虛擬機和外部網(wǎng)絡(luò)通信的流量
東西向流量:虛擬機之間的流量
provider network和外部網(wǎng)絡(luò)之間的流量,由物理網(wǎng)絡(luò)設(shè)備負責(zé)交換和路由
以下涉及計算節(jié)點1:
以下涉及物理網(wǎng)絡(luò)設(shè)備
計算節(jié)點1:
物理設(shè)備
計算節(jié)點2
計算節(jié)點1
物理設(shè)備
以下涉及計算節(jié)點1
vxlan是虛擬可擴展的局域網(wǎng),是一種oeverlay技術(shù),通過三層網(wǎng)絡(luò)來搭建虛擬的二層網(wǎng)絡(luò)。
虛擬機運行在計算節(jié)點1上,使用self-service network 1,將數(shù)據(jù)包發(fā)送給internet上的主機
計算節(jié)點1
網(wǎng)絡(luò)節(jié)點
(直接放圖吧。。。。。)
頭大。。頭大。。
網(wǎng)絡(luò)看來真的是要學(xué)一輩子的
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。