云集技術(shù)學(xué)社|一文看懂軟件SDN技術(shù)原理

11月25日,深信服云計(jì)算架構(gòu)師Eason在信服云《云集技術(shù)學(xué)社》系列直播課上進(jìn)行了《軟件SDN技術(shù)原理》的分享,繼上周介紹了SDN技術(shù)發(fā)展與應(yīng)用后,Eason本周又詳細(xì)介紹了SDN架構(gòu)、OpenFlow相關(guān)技術(shù)和網(wǎng)絡(luò)虛擬化相關(guān)技術(shù)。以下是他分享內(nèi)容摘要,想要了解更多可以關(guān)注“深信服科技”公眾號觀看直播回放。

看點(diǎn)一:SDN架構(gòu)

SDN的整體架構(gòu)是一個比較清晰的層次結(jié)構(gòu)。一個SDN架構(gòu)通常分成三個平面。

第一個是管理平面,它的作用是負(fù)責(zé)處理來自用戶的請求,并轉(zhuǎn)換為內(nèi)部網(wǎng)絡(luò)配置,通過北向接口(NBI)下發(fā)到控制平面。常見的云管理平面有OpenStack、NSX、Sangfor Cloud Platform等。另外,管理平面也可以基于開放平臺構(gòu)建用戶自己的云管理平臺。

第二個是控制平面,由SDN控制軟件構(gòu)成,負(fù)責(zé)將內(nèi)部網(wǎng)絡(luò)配置轉(zhuǎn)換成數(shù)據(jù)平面可理解的語義??刂破矫姹毕蛲ㄟ^NBI和應(yīng)用層對接,南向可通過標(biāo)準(zhǔn)化協(xié)議(例如OpenFlow的一些協(xié)議)與數(shù)據(jù)平面通信。

第三個是數(shù)據(jù)平面,主要為轉(zhuǎn)發(fā)設(shè)備,根據(jù)控制平面的控制邏輯進(jìn)行轉(zhuǎn)發(fā)和處理數(shù)據(jù)。

這三個平面之間通過兩種類型的接口進(jìn)行通信,一個是北向接口,負(fù)責(zé)管理平面和控制平面之間的通信,一個是南向接口,負(fù)責(zé)數(shù)據(jù)平面和控制平面之間的通信。

通過這樣的分層結(jié)構(gòu),用戶就可以將一些用戶請求轉(zhuǎn)化成數(shù)據(jù)平面可以實(shí)現(xiàn)的數(shù)據(jù)轉(zhuǎn)發(fā)邏輯,從而通過軟件的方式來集中式的管理數(shù)據(jù)平面的網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備。通過這些接口,數(shù)據(jù)平面也同樣可以把統(tǒng)計(jì)數(shù)據(jù)、行為數(shù)據(jù)等上報(bào)給控制平面或者上報(bào)給管理平面,讓管理平面或者用戶可以拿到這些數(shù)據(jù)做更多的處理。

看點(diǎn)二:OpenFlow相關(guān)技術(shù)

談到SDN就不得不談OpenFlow相關(guān)技術(shù),因?yàn)镺penFlow是SDN誕生后的第一個開源協(xié)議。數(shù)據(jù)平面有一個比較著名的實(shí)現(xiàn)叫做OVS。OVS包括3個主要模塊:運(yùn)行在內(nèi)核態(tài)的datapath,以及運(yùn)行在用戶態(tài)的vswitchd和ovsdb-server。

第一個是Datapath,是負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)的內(nèi)核模塊,屬于快路(fast path)轉(zhuǎn)發(fā)。該模塊從網(wǎng)絡(luò)接口收取數(shù)據(jù)報(bào)文,并根據(jù)報(bào)文頭部匹配流表(Flow table)中的流表項(xiàng),如果成功則直接轉(zhuǎn)發(fā),否則將報(bào)文遞交到vswitchd處理。內(nèi)核模塊在初始化和端口綁定的時(shí)候會注冊回調(diào)函數(shù),從而接管端口的報(bào)文處理。

第二個是vswitchd,vswitchd是一個用戶態(tài)守護(hù)進(jìn)程,是本地OVS的管理和控制服務(wù),屬于慢路(slowpath)轉(zhuǎn)發(fā),可以處理內(nèi)核模塊未匹配的報(bào)文。vswitchd通過unix socket和ovsdb交互,并通過netlink和內(nèi)核模塊交互。vswitchd北向通過OpenFlow協(xié)議與控制平面對接。

第三個模塊是ovsdb-server,ovsdb是OVS的數(shù)據(jù)庫,用于保存OVS的配置信息。ovsdb-server對外提供RPC接口。

OVS工作依賴的核心數(shù)據(jù)結(jié)構(gòu)是Flow table。Flow table是存儲Flow的數(shù)據(jù)結(jié)構(gòu),Datapath根據(jù)Flowtable進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。Flow Table里面有一些字段,OVS通過將這些字段與數(shù)據(jù)報(bào)文進(jìn)行匹配,并執(zhí)行相應(yīng)的動作就實(shí)現(xiàn)了報(bào)文轉(zhuǎn)發(fā)。

在OVS里面,流表的核心處理流程是報(bào)文依次匹配多張表,并執(zhí)行相應(yīng)的指令。其中的單表也有對應(yīng)的匹配流程。當(dāng)一個報(bào)文進(jìn)來的時(shí)候,它就會找到滿足匹配條件的優(yōu)先級最高的表項(xiàng),接下來會執(zhí)行指令動作,然后發(fā)送匹配數(shù)據(jù)和動作指令到下一張表。下一張表收到報(bào)文和指令后,會緊接著做后續(xù)的處理,直到整個流水線都運(yùn)行完畢后,就會將報(bào)文從某一個端口輸出或者是丟棄。通過這樣的一個流程,OVS就完成了一次報(bào)文轉(zhuǎn)發(fā)。

而在控制平面,也有一個開源實(shí)現(xiàn)叫做OVN(Open Virtual Network)。通常情況下,OVN分為四個模塊。

第一個是Northbound DB,它接收并存儲來自云管平臺(CMS,Cloud Management System)的邏輯網(wǎng)絡(luò)配置(邏輯交換機(jī)、路由器、ACL等)信息,目前基于ovsdb-server實(shí)現(xiàn)。它有兩個客戶端:OVN/CMS插件,ovn-northd。

第二個是ovn-northd,它是集中式控制器,同時(shí)連接Northbound DB和SouthboundDB,并負(fù)責(zé)把云管平臺寫入Northbound DB的基于傳統(tǒng)網(wǎng)絡(luò)概念的邏輯網(wǎng)絡(luò)配置轉(zhuǎn)換成Southbound DB的數(shù)據(jù)表。

第三個是Southbound DB,它也是基于ovsdb-server,包含三類數(shù)據(jù):物理網(wǎng)絡(luò)信息(PhysicalNetwork),它包括了所有overlay封裝的必要信息,如IP地址,支持的封裝類型等;邏輯網(wǎng)絡(luò)信息(Logical Network),比如邏輯交換機(jī)、路由器的拓?fù)?、ACL、防火墻規(guī)則等;物理網(wǎng)絡(luò)和邏輯網(wǎng)絡(luò)的綁定關(guān)系信息(Binding)。這些數(shù)據(jù)由各個ovn-controller消費(fèi)。

第四個是ovn-controller,它是OVN的本地控制進(jìn)程,是運(yùn)行在每臺主機(jī)上的本地SDN控制器。它北向通過ovsdb協(xié)議與OVN SouthboundDB通信,南向通過ovsdb協(xié)議與本地ovsdb-server通信,以及通過OpenFlow協(xié)議與ovs-vswitchd通信。

看點(diǎn)三:網(wǎng)絡(luò)虛擬化技術(shù)

了解網(wǎng)絡(luò)虛擬化技術(shù)首先要理解什么是虛擬網(wǎng)絡(luò)或者什么是Overlay。Overlay網(wǎng)絡(luò)是一種建立在另一個網(wǎng)絡(luò)之上的計(jì)算機(jī)網(wǎng)絡(luò)。Overlay網(wǎng)絡(luò)節(jié)點(diǎn)可以被認(rèn)為是通過虛擬或邏輯鏈接相連。節(jié)點(diǎn)之間通過下層網(wǎng)絡(luò)(Underlay)中的多個物理連接實(shí)現(xiàn)相連。通過Overlay網(wǎng)絡(luò)可以實(shí)現(xiàn)網(wǎng)絡(luò)虛擬化,從而將虛擬網(wǎng)絡(luò)與物理網(wǎng)絡(luò)解耦。

虛擬網(wǎng)絡(luò)實(shí)現(xiàn)有幾種比較常見的方式:

第一個是VLAN(802.1Q),通過在物理交換機(jī)上劃分VLAN實(shí)現(xiàn)多個虛擬的交換機(jī)。VLAN的限制是最大只支持4096個劃分,并且Underlay網(wǎng)絡(luò)不支持跨三層。

第二個是VPN(虛擬專用網(wǎng)絡(luò)),通過隧道協(xié)議將分支或個人與總部網(wǎng)絡(luò)連通的技術(shù)。Underlay網(wǎng)絡(luò)一般用于在互聯(lián)網(wǎng)上分支與總部間的點(diǎn)對點(diǎn)的連接。

第三個是VXLAN,可以在三層連通的Underlay網(wǎng)絡(luò)上實(shí)現(xiàn)虛擬的二層連通性。這個二層連通性是在分布式虛擬交換機(jī)上實(shí)現(xiàn)的。

報(bào)文轉(zhuǎn)發(fā)流程首先是虛擬機(jī)VM1發(fā)送ARP請求虛擬機(jī)VM2(IP=192.168.5.22)的MAC地址;其次VTEP1封裝ARP請求為多播報(bào)文,并且將VNI設(shè)置為121;VTEP2收到報(bào)文后,將VTEP1和虛擬機(jī)VM1的映射關(guān)系加入VXLAN表格;VTEP2解封裝報(bào)文,提取VNI信息,并把ARP請求發(fā)送到虛擬機(jī)VM2;虛擬機(jī)VM2回復(fù)ARP請求;VTEP2根據(jù)之前學(xué)習(xí)到VTEP1和VM1的映射關(guān)系和VNI信息封裝VM2回復(fù)的ARP請求,并以單播方式發(fā)送給VTEP1;VTEP1收到來自VTEP2的報(bào)文,解封裝,提取VNI信息,并把解封后的來自VM2回復(fù)ARP請求發(fā)送給VM1。

理解網(wǎng)絡(luò)虛擬化技術(shù)的另一個重要的方面了解控制面的工作原理。在由控制面的情況下,主機(jī)1會將VTEP1和虛擬機(jī)VM1的映射關(guān)系上送控制器(VNI=121,VM MAC = 00:AC:AA:55:20:C1,VTEP IP = 10.0.0.163),同時(shí)主機(jī)2也會將VTEP2和虛擬機(jī)VM2的映射關(guān)系上送控制器(VNI=121,VM MAC = 00:AC:BB:77:44:C2,VTEP IP = 10.0.0.192)??刂破髟诰酆细髦鳈C(jī)信息后會將完整的映射關(guān)系分別同步到主機(jī)1和主機(jī)2。

通過網(wǎng)絡(luò)虛擬化技術(shù),可以實(shí)現(xiàn)虛擬路由器。虛擬路由器實(shí)現(xiàn)上有兩種形態(tài):分布式虛擬路由和集中式虛擬路由。這樣實(shí)現(xiàn)的好處是虛擬路由器既有分布式路由性能和擴(kuò)展性方面的優(yōu)勢,也有集中式路由功能服務(wù)方面的優(yōu)點(diǎn)。

分布式虛擬路由器主要處理東西向流量,它可以在源端完成路由計(jì)算,實(shí)現(xiàn)物理上的一跳轉(zhuǎn)發(fā);集中式虛擬路由器主要處理南北向流量,負(fù)責(zé)與物理網(wǎng)絡(luò)連通,實(shí)現(xiàn)集中式服務(wù)(NAT、DHCP、DNS、集中式防火墻、負(fù)載均衡)。

最后,通過網(wǎng)絡(luò)虛擬化技術(shù),可以實(shí)現(xiàn)軟件定義防火墻。

軟件定義防火墻分成兩種,集中式防火墻和分布式防火墻。

集中式的防火墻有四個特點(diǎn):第一個是中心化的管理;第二是集中式的防火墻部署在邊界節(jié)點(diǎn);第三是它主要用來防護(hù)的是南北向的流量;第四是通過集中式的防火墻,可以很容易集成第三方的服務(wù)。

分布式防火墻同樣也是中心化管理,但分布式防火墻直接部署在虛擬機(jī)的網(wǎng)絡(luò)接口上,它主要防護(hù)東西向流量,易于水平擴(kuò)展。

來自外部或者互聯(lián)網(wǎng)上的流量,通常會經(jīng)過集中式路由或集中式的防火墻,進(jìn)入內(nèi)部網(wǎng)絡(luò)。來自內(nèi)部的流量在沒有分布式防火墻之前也是通過集中式的防火墻來控制,有了分布式防火墻之后,就可以在虛擬機(jī)之間或者在主機(jī)之間直接進(jìn)行防護(hù),而不用再繞行到集中式防火墻的節(jié)點(diǎn)上,性能和安全性上會有很大的提升。

以上就是本期直播的主要內(nèi)容,還想了解更多有關(guān)云計(jì)算相關(guān)的知識與應(yīng)用嗎?敬請關(guān)注云集技術(shù)學(xué)社,信服云還將邀請更多行業(yè)大咖來分享云計(jì)算干貨。

?

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )