国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SDN多播的分布式共享內(nèi)存研究

2018-08-17 00:26:46,
計(jì)算機(jī)工程 2018年8期
關(guān)鍵詞:多播全網(wǎng)以太網(wǎng)

張 ,

(上海大學(xué) 計(jì)算機(jī)工程與科學(xué)學(xué)院,上海 200436)

0 概述

分布式共享內(nèi)存(Distributed Shared Memory,DSM)是分布式系統(tǒng)節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)共享與交換的一種快速、有效的機(jī)制,它能將不同節(jié)點(diǎn)的物理內(nèi)存映射成一個邏輯上統(tǒng)一的虛擬地址空間,任意進(jìn)程都可以訪問該空間內(nèi)的任意地址,進(jìn)程間的消息傳遞對程序員而言是透明的。因此,DSM系統(tǒng)的編程較簡單,且其具有較好的擴(kuò)展性。

由于分布式系統(tǒng)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信延遲較大,具體實(shí)現(xiàn)時需要考慮在保證數(shù)據(jù)一致性的同時降低總訪問延遲。文獻(xiàn)[1-2]較早對DSM的具體實(shí)現(xiàn)方式進(jìn)行細(xì)致分析,并提出一種以共享頁面方式實(shí)現(xiàn)的DSM系統(tǒng)Ivy。但I(xiàn)vy存在數(shù)據(jù)顛簸和假共享的問題,性能較差。隨著科技的進(jìn)步,研究人員對DSM的實(shí)現(xiàn)形式進(jìn)行改進(jìn),提出基于變量的共享方式,其代表系統(tǒng)是Midway[3]。而目前,DSM的普遍實(shí)現(xiàn)方式是采用基于對象的共享方式,如X10、Grace等[4-7]。

傳統(tǒng)DSM系統(tǒng)采用基于以太網(wǎng)的點(diǎn)對點(diǎn)、廣播或多播的方式進(jìn)行節(jié)點(diǎn)間數(shù)據(jù)傳輸。其中,多播是一種效果較好的傳輸形式[8]。多播是一對多的通信方式,其可以只向特定多播組內(nèi)的節(jié)點(diǎn)發(fā)送消息,能夠有效節(jié)省通信開銷,提高網(wǎng)絡(luò)帶寬利用率。傳統(tǒng)多播是基于以太網(wǎng)的,但以太網(wǎng)只能提供不保證帶寬與延遲的盡力而為的服務(wù)。因此,基于以太網(wǎng)的多播在帶寬與延遲方面具有不可控性,需要使用額外策略為多播提供性能保障。目前常用方法是由路由器根據(jù)相應(yīng)路由算法構(gòu)造一棵覆蓋源節(jié)點(diǎn)和目的節(jié)點(diǎn)的多播樹。在傳統(tǒng)以太網(wǎng)的多播樹計(jì)算中,路由器只維護(hù)局部網(wǎng)絡(luò)信息,由其計(jì)算出來的多播路徑容易發(fā)生部分鏈路通信過載而部分鏈路卻通信空閑的狀況,且路由器節(jié)點(diǎn)之間需要頻繁交換信息,導(dǎo)致算法復(fù)雜度高、網(wǎng)絡(luò)負(fù)載大。

軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)的提出,為解決多播的不可控性問題提供了一種新途徑。SDN是一種數(shù)據(jù)控制分離、軟件可編程的新型網(wǎng)絡(luò)體系架構(gòu),其采用集中式的控制平面和分布式的轉(zhuǎn)發(fā)平面,2個平面相互分離,控制平面利用控制-轉(zhuǎn)發(fā)通信接口對轉(zhuǎn)發(fā)平面上的網(wǎng)絡(luò)設(shè)備進(jìn)行集中控制,并提供靈活的可編程功能。與傳統(tǒng)以太網(wǎng)相比,基于SDN網(wǎng)絡(luò)的多播由SDN控制器維護(hù)全網(wǎng)拓?fù)湫畔?并根據(jù)全網(wǎng)拓?fù)湫畔⒂?jì)算路由路徑,SDN交換機(jī)只負(fù)責(zé)轉(zhuǎn)發(fā)而無需參與網(wǎng)絡(luò)信息的維護(hù)或計(jì)算。

基于以上分析,本文建立一種基于多播的DSM框架,將其實(shí)施于SDN網(wǎng)絡(luò)中,并使用基于SDN的多播為系統(tǒng)提供可控的性能保障。最后通過實(shí)驗(yàn)驗(yàn)證該框架的可行性與高效性。

1 基于多播的DSM基本架構(gòu)

DSM系統(tǒng)由一組節(jié)點(diǎn)通過網(wǎng)絡(luò)互連而形成,其目的是提供一個邏輯上統(tǒng)一的編程空間。由于節(jié)點(diǎn)之間網(wǎng)絡(luò)通信延遲較大,DSM系統(tǒng)在具體實(shí)現(xiàn)時會遇到許多問題,如維持?jǐn)?shù)據(jù)與副本之間的一致性、減少訪問時的延遲等。

目前,DSM的實(shí)現(xiàn)方式主要有基于頁面的共享方式、基于變量的共享方式以及基于對象的共享方式等。其中,基于對象的共享方式因抽象、封裝、靈活和自治等特點(diǎn)而備受研究人員的青睞,且其更易于編程。一個對象是一組狀態(tài)及其上一組方法的封裝體,對象的屬性表示對象的狀態(tài),只有對象方法可以對對象屬性進(jìn)行操作修改并保證信息安全。方法與數(shù)據(jù)的封裝有助于程序的模塊化,且對象具有并行性。因此,基于對象的共享方式非常適合DSM,目前在中、小型系統(tǒng)中應(yīng)用較廣泛[9-11]。

結(jié)合基于對象的共享方式和多播通信機(jī)制,本文設(shè)計(jì)一種DSM系統(tǒng)并將其運(yùn)行于Linux平臺。

1.1 DSM中的共享對象模型

在DSM系統(tǒng)中,用戶節(jié)點(diǎn)之間共享的是不同類型的對象,共享數(shù)據(jù)封裝在對象中,用戶通過對象成員函數(shù)訪問封裝在其中的共享數(shù)據(jù)。系統(tǒng)提供4種基本類型的共享對象:shareInt,shareChar,shareFloat,shareDouble。對象經(jīng)過運(yùn)算符重載后,用戶可在創(chuàng)建共享對象后直接使用對象進(jìn)行運(yùn)算。共享對象在本地節(jié)點(diǎn)創(chuàng)建,所有的共享對象構(gòu)成一個抽象的共享空間,該共享空間由所有節(jié)點(diǎn)共享。任意節(jié)點(diǎn)都可以訪問任何共享對象而無需考慮他們的具體物理位置,對象的定位和管理由DSM系統(tǒng)完成。圖1所示為基于對象的共享方式示意圖。

圖1 基于對象的共享方式示意圖

在DSM系統(tǒng)中每個共享對象都需要一個唯一索引號,這是共享對象在分布式系統(tǒng)中的唯一身份象征。索引號由2個部分組成:1)系統(tǒng)事先確定好的表示對象類型的一個對象類型號;2)用戶提供的一個整數(shù)ID號。系統(tǒng)將這2個號碼組合生成一個唯一索引號。不同類型對象之間的ID號可以相同,同一類型對象內(nèi)的ID號不可重復(fù)。任意節(jié)點(diǎn)都可在聲明對象類型并給定ID號后將共享空間中相應(yīng)類型的對象鏈接到本地,并通過調(diào)用對象成員函數(shù)來進(jìn)行對象的訪問。這種方式能完成不同類型對象的共享,并有效保護(hù)對象中的共享數(shù)據(jù)。

1.2 基于多播的DSM讀寫策略

DSM讀寫策略用于保證共享對象在節(jié)點(diǎn)間的靜態(tài)與動態(tài)分布,并降低訪問延遲。不同的DSM讀寫算法適用于不同的應(yīng)用需求,DSM讀寫策略主要有單讀單寫策略、多讀單寫策略和多讀多寫策略[12]。多讀單寫策略能在提高訪問效率的同時維持較小的通信開銷。本文將多讀單寫策略與多播機(jī)制相結(jié)合并應(yīng)用于DSM系統(tǒng)中,具體過程為:系統(tǒng)中對象具有固定的擁有關(guān)系,即對象只能被它的創(chuàng)建節(jié)點(diǎn)固定擁有,該節(jié)點(diǎn)稱為對象擁有節(jié)點(diǎn),具有對象全部的讀寫權(quán)利。其他遠(yuǎn)程節(jié)點(diǎn)若想讀取對象,首先要通過多播發(fā)送讀請求命令以查找對象擁有節(jié)點(diǎn),對象擁有節(jié)點(diǎn)響應(yīng)命令,將對象的只讀副本發(fā)送給請求節(jié)點(diǎn),請求節(jié)點(diǎn)讀取對象只讀副本并保存在本地進(jìn)程,下次可直接讀取只讀副本。其他遠(yuǎn)程節(jié)點(diǎn)若想寫對象,首先要通過多播發(fā)送寫請求命令并查找對象擁有節(jié)點(diǎn),由對象擁有節(jié)點(diǎn)完成寫對象命令并通過多播更新其他節(jié)點(diǎn)中的對象的只讀副本。對象擁有節(jié)點(diǎn)可直接讀或?qū)懰鶕碛械膶ο?寫對象后同樣要通過多播來更新其他節(jié)點(diǎn)中的對象只讀副本。

系統(tǒng)中每個節(jié)點(diǎn)需要維護(hù)2個鏈表:本地鏈表和副本鏈表。系統(tǒng)運(yùn)行時本地節(jié)點(diǎn)通過維護(hù)的本地鏈表管理和查找由本地節(jié)點(diǎn)創(chuàng)建的共享對象,通過副本鏈表管理和查找在本地節(jié)點(diǎn)保留的遠(yuǎn)程節(jié)點(diǎn)對象的只讀副本。

1.3 DSM中數(shù)據(jù)傳輸基本形式

DSM系統(tǒng)通過socket套接字編程來實(shí)現(xiàn)多播通信。根據(jù)需求,系統(tǒng)需要傳輸?shù)臄?shù)據(jù)主要有對象類型、對象ID號、操作請求、共享對象內(nèi)容,這些數(shù)據(jù)需要綁定在一起同時進(jìn)行傳輸并解析。因此,系統(tǒng)中數(shù)據(jù)的傳輸以一個結(jié)構(gòu)體為基本單位,如圖2所示。其中,操作請求可以是對共享對象的讀請求、寫請求或?qū)懜抡埱蟮?給定其不同整數(shù)值以表示不同的操作請求類型。

圖2 傳輸整型數(shù)據(jù)所用結(jié)構(gòu)體

1.4 多節(jié)點(diǎn)請求與數(shù)據(jù)保護(hù)

DSM節(jié)點(diǎn)不僅需要處理單一請求,也需要處理多個并發(fā)請求。因此,有必要采用多線程編程,每次在端口接收到來自多播組的命令后都創(chuàng)建一個線程專門處理該命令。此外,為防止多線程對緩沖區(qū)數(shù)據(jù)的競爭訪問,采用互斥鎖對緩沖區(qū)數(shù)據(jù)進(jìn)行保護(hù),線程每次訪問緩沖區(qū)數(shù)據(jù)時都需要查詢鎖的狀態(tài),如果鎖是釋放的,則可以訪問緩沖區(qū)數(shù)據(jù),否則,需要等待直至鎖釋放。

2 DSM架構(gòu)在SDN網(wǎng)絡(luò)中的實(shí)施

在Linux平臺中,依據(jù)上文所述,基于多播的DSM框架可以實(shí)現(xiàn)一個DSM系統(tǒng),該DSM系統(tǒng)需要運(yùn)行于支持多播的網(wǎng)絡(luò)中。SDN網(wǎng)絡(luò)由SDN控制器、SDN交換機(jī)和Linux終端組成。將DSM系統(tǒng)實(shí)施于SDN網(wǎng)絡(luò)中時,直接在Linux終端運(yùn)行DSM系統(tǒng),但此時SDN網(wǎng)絡(luò)不具備任何轉(zhuǎn)發(fā)功能,更不支持多播,其接收到DSM多播請求后無法作出處理。而SDN網(wǎng)絡(luò)中SDN控制器負(fù)責(zé)全網(wǎng)轉(zhuǎn)發(fā)控制,SDN交換機(jī)只根據(jù)SDN控制器的命令轉(zhuǎn)發(fā)數(shù)據(jù)。因此,需要對SDN控制器進(jìn)行編程以使其能夠支持DSM的多播,進(jìn)而完成DSM中的數(shù)據(jù)傳輸。

目前,已經(jīng)有許多研究人員提出不同的基于SDN網(wǎng)絡(luò)的多播實(shí)現(xiàn)方法[13-15],且均已取得較好的效果[16-17]。本文選擇使用開源控制器ryu作為SDN控制器,對ryu控制器進(jìn)行編程以實(shí)現(xiàn)多播。SDN多播需要支持DSM系統(tǒng),并能為DSM提供可控的延遲、帶寬等性能保障。因此,ryu控制器需要具有網(wǎng)絡(luò)狀態(tài)感知、DSM多播組以及用戶節(jié)點(diǎn)的管理、DSM多播組路由計(jì)算等功能。網(wǎng)絡(luò)狀態(tài)感知主要負(fù)責(zé)收集全網(wǎng)鏈路狀態(tài)信息,DSM多播組以及用戶節(jié)點(diǎn)的管理功能負(fù)責(zé)處理節(jié)點(diǎn)的多播請求并管理多播組,多播組路由計(jì)算功能主要負(fù)責(zé)根據(jù)全網(wǎng)狀態(tài)信息為多播成員計(jì)算最佳路徑,并下發(fā)流表。各功能具體實(shí)現(xiàn)方式如下文所述。

2.1 網(wǎng)絡(luò)狀態(tài)感知

SDN控制器需要感知全網(wǎng)狀態(tài)信息,用于DSM用戶節(jié)點(diǎn)之間多播路由路徑的計(jì)算。為充分利用網(wǎng)絡(luò)帶寬來降低網(wǎng)絡(luò)延遲,系統(tǒng)中網(wǎng)絡(luò)狀態(tài)的感知分為全網(wǎng)拓?fù)涓兄c全網(wǎng)鏈路帶寬感知2個部分。

SDN控制器使用鏈路層發(fā)現(xiàn)協(xié)議(Link Layer Discovery Protocol,LLDP)進(jìn)行全網(wǎng)拓?fù)涓兄?。SDN控制器針對每個SDN交換機(jī)發(fā)送包含LLDP協(xié)議的Packet-out報(bào)文,SDN交換機(jī)將接收到的報(bào)文轉(zhuǎn)發(fā)到所有活動接口,與活動接口連接的交換機(jī)接收到報(bào)文后識別LLDP協(xié)議,并通過Packet-in發(fā)送給SDN控制器,控制器解析數(shù)據(jù)包,并創(chuàng)建此SDN交換機(jī)與鄰接SDN交換機(jī)的連接記錄,最終完成全網(wǎng)拓?fù)溆涗洝DN控制器定時發(fā)送LLDP協(xié)議以刷新網(wǎng)絡(luò)拓?fù)湫畔?LLDP報(bào)文只消耗極少帶寬,且SDN控制器和SDN交換機(jī)通過安全通道交換信息,因此,該過程對網(wǎng)絡(luò)產(chǎn)生的負(fù)載極小。

除拓?fù)湫畔⑼?還需要獲取全網(wǎng)鏈路帶寬信息,本文使用基于OpenFlow協(xié)議的方法獲取鏈路帶寬。ryu控制器具有封裝好的端口流量信息統(tǒng)計(jì)應(yīng)用程序編程接口(Application Programming Interface,API),調(diào)用該API后,ryu控制器通過安全通道周期性地下發(fā)port statistics消息以獲得SDN交換機(jī)端口的統(tǒng)計(jì)信息,通過統(tǒng)計(jì)端口流量信息可獲取SDN交換機(jī)端口的當(dāng)前流量帶寬,用端口最大帶寬減去當(dāng)前流量帶寬則得到可用剩余帶寬,將其保存在SDN控制器中。

網(wǎng)絡(luò)狀態(tài)感知模塊將獲取到的全網(wǎng)狀態(tài)信息封裝成一個API接口,SDN控制器進(jìn)行DSM用戶節(jié)點(diǎn)間多播路由路徑計(jì)算時會調(diào)用該API接口,以獲取全網(wǎng)狀態(tài)信息。

2.2 DSM多播組與用戶節(jié)點(diǎn)管理

同一個DSM系統(tǒng)中的用戶節(jié)點(diǎn)共享一個多播組,用戶節(jié)點(diǎn)使用DSM時會首先申請加入特定多播組,以及時接收到來自該DSM多播組的消息。在本文DSM系統(tǒng)中,多播使用IGMP v2協(xié)議。

用戶節(jié)點(diǎn)加入DSM多播組包括2個過程:節(jié)點(diǎn)本地socket服務(wù)端的綁定,SDN控制器中節(jié)點(diǎn)mac地址的注冊。

節(jié)點(diǎn)本地socket服務(wù)端的綁定由DSM系統(tǒng)完成。節(jié)點(diǎn)的一個本地端口與DSM多播地址multi_addr通過socket套接字綁定在一起,節(jié)點(diǎn)通過綁定的本地端口監(jiān)聽來自DSM多播組的消息。

節(jié)點(diǎn)在SDN控制器中進(jìn)行mac地址注冊的目的在于將節(jié)點(diǎn)mac地址添加到SDN控制器所維護(hù)的相應(yīng)DSM多播組中,節(jié)點(diǎn)mac地址用源地址src_addr來表示。注冊時,節(jié)點(diǎn)通過綁定的socket向與節(jié)點(diǎn)相鄰的SDN交換機(jī)發(fā)送包含IGMP協(xié)議的Report報(bào)文。初始時SDN交換機(jī)無法匹配該報(bào)文,便將報(bào)文以Packet_in的形式轉(zhuǎn)發(fā)給SDN控制器。Packet_in是SDN網(wǎng)絡(luò)中一種特殊的報(bào)文,當(dāng)SDN交換機(jī)無法匹配某條消息時,便會將該消息以Packet_in報(bào)文的形式轉(zhuǎn)發(fā)給SDN控制器,然后由SDN控制器處理該消息。SDN控制器通過解析Packet_in報(bào)文可以獲得用戶節(jié)點(diǎn)源地址src_addr,通過解析IGMP協(xié)議可以獲得請求加入的DSM多播組地址multi_addr,將源地址src_addr添加到相應(yīng)的DSM多播組中,從而完成用戶節(jié)點(diǎn)mac地址的注冊。注冊完成后,源地址src_addr就成為相應(yīng)DSM多播組的成員。SDN控制器通過維護(hù)Multicast_Group_Recods(multi_addr,src_addr1,src_addr2,…)來保存多個DSM多播組信息。

用戶節(jié)點(diǎn)退出DSM多播組時,發(fā)送一個包含IGMP協(xié)議的Leave報(bào)文,SDN控制器解析該報(bào)文獲取源地址src_addr和多播組地址multi_addr,然后在維護(hù)的相應(yīng)多播組中刪除源地址src_addr并更新多播成員。

2.3 DSM多播組路由計(jì)算

SDN控制器利用由網(wǎng)絡(luò)狀態(tài)感知模塊提供的全網(wǎng)狀態(tài)信息為多播用戶選擇最佳的多播路徑。

SDN控制器通過調(diào)用網(wǎng)絡(luò)狀態(tài)感知模塊的API來獲取SDN交換機(jī)的連接記錄,并生成全網(wǎng)有向拓?fù)鋱D。拓?fù)鋱D中的節(jié)點(diǎn)是SDN交換機(jī),節(jié)點(diǎn)之間的邊是SDN交換機(jī)之間的連接端口,權(quán)重是端口可用剩余帶寬。需要注意的是,此時調(diào)用API所建立的拓?fù)鋱D僅為SDN交換機(jī)之間的連接圖,不包含DSM終端節(jié)點(diǎn)。在DSM終端節(jié)點(diǎn)加入或退出多播組后,需要在拓?fù)鋱D中添加或刪除相應(yīng)的終端節(jié)點(diǎn)和邊。

最佳路徑的選擇原則是:首先基于最小跳數(shù)確定k條路徑;然后從中選擇具有最大可用剩余帶寬的路徑作為最佳路徑。使用Dijkstra算法為多播計(jì)算基于跳數(shù)的最短路徑。Dijkstra算法的主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直至擴(kuò)展到終點(diǎn)。每次迭代時選擇的下一個頂點(diǎn)是除標(biāo)記點(diǎn)之外離源點(diǎn)最近的頂點(diǎn),可以保證源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路徑最短,以此方法確定k條最短路徑;然后,在確定的k條最短路徑中,依據(jù)節(jié)點(diǎn)之間可用剩余帶寬求出鏈路平均可用剩余帶寬,選擇平均可用剩余帶寬最大的路徑為最佳路徑。

當(dāng)某一節(jié)點(diǎn)向DSM多播組內(nèi)其他成員發(fā)送消息時,初始時SDN交換機(jī)無法處理該消息,便將該消息以Packet_in的形式轉(zhuǎn)發(fā)給SDN控制器,SDN控制器解析報(bào)文以獲取源地址src_addr和目的多播地址multi_addr,并通過多播路由計(jì)算功能計(jì)算源地址src_addr到目的多播地址multi_addr所有成員節(jié)點(diǎn)的最佳多播路徑。然后,SDN控制器下發(fā)流表到路徑上的SDN交換機(jī),SDN網(wǎng)絡(luò)中流表用于指示SDN交換機(jī)如何轉(zhuǎn)發(fā)數(shù)據(jù),SDN交換機(jī)根據(jù)流表內(nèi)容將來自入端口的數(shù)據(jù)轉(zhuǎn)發(fā)到不同出端口。流表下發(fā)完成后,來自源地址src_addr的消息直接經(jīng)過SDN交換機(jī)轉(zhuǎn)發(fā)到其他多播成員節(jié)點(diǎn),而無需再轉(zhuǎn)發(fā)給SDN控制器。

3 基于SDN多播的DSM寫更新流程

DSM中所有用戶節(jié)點(diǎn)首先在SDN控制器中進(jìn)行注冊。注冊完成后,用戶通過調(diào)用API接口并提供特定類型對象ID號將共享空間中共享對象鏈接到本地進(jìn)程,然后執(zhí)行寫命令,該過程無需關(guān)心共享對象在網(wǎng)絡(luò)中的具體分布。

系統(tǒng)根據(jù)用戶提供的特定類型對象ID號查詢本地鏈表,判斷所要訪問的對象是否為本地節(jié)點(diǎn)所擁有,如果本地節(jié)點(diǎn)不擁有,系統(tǒng)會向多播組多播一個包含對象類型、對象ID號和寫操作請求的消息。如圖3所示,該消息會首先發(fā)送到與節(jié)點(diǎn)相連的SDN交換機(jī),若SDN交換機(jī)沒有匹配的流表項(xiàng),則將消息轉(zhuǎn)發(fā)給SDN控制器。SDN控制器接收到消息后解析報(bào)文,獲取節(jié)點(diǎn)源地址src_addr和多播組地址multi_addr,并查詢維護(hù)的多播組中DSM成員節(jié)點(diǎn)的mac地址,根據(jù)節(jié)點(diǎn)源地址src_addr和多播成員節(jié)點(diǎn)目的mac地址,通過路由算法為節(jié)點(diǎn)生成到其他DSM多播成員的最佳路徑,然后下發(fā)流表到路徑上的SDN交換機(jī),SDN交換機(jī)開始轉(zhuǎn)發(fā)DSM多播組消息。下次該節(jié)點(diǎn)多播消息時直接按照SDN交換機(jī)中流表項(xiàng)配置內(nèi)容進(jìn)行轉(zhuǎn)發(fā)而無需請求SDN控制器。DSM多播組內(nèi)其他節(jié)點(diǎn)成員每次接收到多播命令后,都創(chuàng)建一個新線程,并查詢本地進(jìn)程是否擁有此對象,如果擁有,則執(zhí)行寫操作命令,并將更新后的對象副本通過SDN多播發(fā)送出去,以更新其他DSM成員節(jié)點(diǎn)中的對象只讀副本。如果所寫對象是本地節(jié)點(diǎn)所擁有,則直接寫對象并通過SDN多播更新DSM中的對象只讀副本。

圖3 DSM寫更新流程

4 系統(tǒng)性能測試與分析

為驗(yàn)證本文系統(tǒng)的實(shí)際性能,使用網(wǎng)絡(luò)仿真工具mininet(內(nèi)置協(xié)議為OpenFlow v1.3)搭建一個SDN網(wǎng)絡(luò),并將其連接到一個ryu控制器。網(wǎng)絡(luò)選擇經(jīng)典的“胖樹”拓?fù)?它是數(shù)據(jù)中心的常用拓?fù)?具有足夠的路徑多樣性,可以驗(yàn)證系統(tǒng)性能。如圖4所示,本次實(shí)驗(yàn)拓?fù)浒?2個終端節(jié)點(diǎn)和14個SDN交換機(jī)節(jié)點(diǎn)。

圖4 實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)?/p>

拓?fù)渲忻織l鏈路帶寬設(shè)為15 Mb/s。為了與基于傳統(tǒng)多播的DSM系統(tǒng)進(jìn)行比較,使用支持IGMP協(xié)議的路由器搭建相同拓?fù)涞囊蕴W(wǎng)絡(luò),傳統(tǒng)多播使用最短路徑樹(Shortest Path Tree,SPT)算法。測試分2個部分:1)測試DSM中SDN多播的延遲、丟包率性能;2)測試同時寫更新多個對象時DSM的平均執(zhí)行耗時。

4.1 平均網(wǎng)絡(luò)延遲與丟包率

本次實(shí)驗(yàn)測試多播流量遞增時SDN多播的平均網(wǎng)絡(luò)延遲和丟包率,測試工具為iperf[18]。使用客戶端-服務(wù)端模式,選取一個終端作為iperf客戶端,不斷發(fā)送特定流量的UDP數(shù)據(jù)包,并選取4個終端作為iperf服務(wù)端來接收數(shù)據(jù)流量包。每次測試中帶寬流量從1 Mb/s~10 Mb/s逐級增加,共測試10次,每次測試時間為60 s。iperf工具會得出當(dāng)前的網(wǎng)絡(luò)延時、丟包率數(shù)據(jù),每次測試網(wǎng)絡(luò)共運(yùn)行4個多播組,在測試完成后記錄多播組每個終端所得延遲、丟包率,并取平均值作為最終結(jié)果。每個多播組的終端分配情況如表1所示。

表1 多播組終端分配情況

網(wǎng)絡(luò)延遲性能測試結(jié)果如圖5所示。由圖5可以看出,相比以太網(wǎng),SDN網(wǎng)絡(luò)中DSM多播具有更小的傳輸延遲,且在多播流量遞增時,SDN網(wǎng)絡(luò)中DSM多播延遲具有更好的穩(wěn)定性。丟包率性能測試結(jié)果如圖6所示。由圖6可以看出,以太網(wǎng)多播在流量為2 MB時開始丟包,而SDN多播直到4 MB時才開始丟包,其丟包率一直低于前者,且流量越大,SDN多播的性能優(yōu)勢越明顯。因此,相對傳統(tǒng)SPT算法,DSM中的SDN多播具有更好的性能,在流量較大、網(wǎng)絡(luò)較擁擠時,其能將延遲、丟包率等維持在較低水平,從而為DSM提供性能保障。

圖5 2種網(wǎng)絡(luò)平均延遲對比情況

圖6 2種網(wǎng)絡(luò)平均丟包率對比情況

4.2 DSM寫更新平均耗時

DSM中共享對象和對象副本在節(jié)點(diǎn)中的不同分布會產(chǎn)生不同的通信次數(shù)。為測試DSM系統(tǒng)性能,需要盡可能地最大化寫更新命令中的通信次數(shù),因此,本文選擇測量寫更新遠(yuǎn)程節(jié)點(diǎn)對象并完成副本更新的平均耗時,即從寫命令發(fā)起到待更新節(jié)點(diǎn)接收到副本更新命令所需要的時間,以此評估DSM系統(tǒng)性能。

實(shí)驗(yàn)中每次運(yùn)行不同數(shù)量的DSM系統(tǒng),最多同時運(yùn)行9個DSM系統(tǒng),每個DSM系統(tǒng)同時更新5個對象。選取其中5個DSM系統(tǒng)展示寫更新時節(jié)點(diǎn)分配情況,結(jié)果如表2所示。每個系統(tǒng)包含5個節(jié)點(diǎn),為了最大化通信次數(shù),寫命令發(fā)起節(jié)點(diǎn)、寫命令執(zhí)行節(jié)點(diǎn)和待更新節(jié)點(diǎn)均是不同節(jié)點(diǎn)。本文使用Linux命令行工具tcpdump監(jiān)聽DSM系統(tǒng)每個節(jié)點(diǎn)的端口,并抓取端口發(fā)送與接收的數(shù)據(jù)包。DSM中每個節(jié)點(diǎn)都分配一個IP地址以方便解析數(shù)據(jù)包。

表2 DSM節(jié)點(diǎn)分配情況

寫命令發(fā)起節(jié)點(diǎn)發(fā)起寫命令時,會發(fā)送一個多播消息,該多播消息表示寫命令起始時間,寫命令執(zhí)行完成后,待更新節(jié)點(diǎn)會接收到包含更新命令的多播消息,本文將該消息視為寫命令完成時間。通過解析多播數(shù)據(jù)包的目的地址以識別不同消息并獲取時間戳。寫命令起始、完成的時間戳差值就是執(zhí)行一次寫更新命令的耗時。DSM系統(tǒng)執(zhí)行一次寫更新操作的時間較短,實(shí)驗(yàn)中不容易捕捉該時間差。因此,讓每個DSM系統(tǒng)連續(xù)寫更新50次,得到50次操作的總時間,然后除以50以得到每次寫更新的操作時間。

寫更新平均耗時測試結(jié)果如圖7所示。由圖7可以看出,初始時寫更新的DSM數(shù)量較少,2種網(wǎng)絡(luò)耗時相差不大,曲線較吻合。當(dāng)同時運(yùn)行的DSM數(shù)量增多時,以太網(wǎng)中的平均耗時產(chǎn)生較大幅度的增加。尤其是DSM數(shù)量大于5后,以太網(wǎng)寫更新耗時曲線更陡峭,增幅更大,最終耗時達(dá)到60 ms,系統(tǒng)性能較差。而SDN網(wǎng)絡(luò)中DSM的平均耗時比以太網(wǎng)少,且在DSM數(shù)量增多過程中,其曲線增長始終較平緩,耗時增加幅度較小,系統(tǒng)穩(wěn)定性較強(qiáng)。在DSM數(shù)量為9時,SDN網(wǎng)絡(luò)平均耗時約30 ms。因此,SDN網(wǎng)絡(luò)相比傳統(tǒng)以太網(wǎng)具有更好的性能。

圖7 2種網(wǎng)絡(luò)寫更新平均耗時對比情況

由上述實(shí)驗(yàn)結(jié)果可以看出,與傳統(tǒng)以太網(wǎng)相比,基于SDN實(shí)現(xiàn)的多播具有更好的傳輸性能,將SDN多播應(yīng)用于DSM系統(tǒng)中,能有效降低DSM命令執(zhí)行平均耗時,提高系統(tǒng)穩(wěn)定性。產(chǎn)生該結(jié)果的原因主要在于:

1)當(dāng)網(wǎng)絡(luò)中存在多條可用路徑時,SDN控制器能根據(jù)全網(wǎng)鏈路狀態(tài)信息為DSM選擇有較大剩余帶寬和較小跳數(shù)的最佳路徑,從而有效避免擁塞鏈路并充分利用全網(wǎng)資源。

2)SDN網(wǎng)絡(luò)控制與轉(zhuǎn)發(fā)分離。由SDN控制器維持全網(wǎng)信息并為DSM節(jié)點(diǎn)選擇最佳路徑,SDN交換機(jī)只負(fù)責(zé)轉(zhuǎn)發(fā),這能夠極大提高轉(zhuǎn)發(fā)效率。

因此,將基于SDN實(shí)現(xiàn)的多播應(yīng)用于DSM系統(tǒng),可以在網(wǎng)絡(luò)流量較大時有效降低系統(tǒng)平均延遲和命令平均執(zhí)行時間,從而為DSM提供良好的性能保障。

5 結(jié)束語

SDN網(wǎng)絡(luò)具有集中控制與分布式轉(zhuǎn)發(fā)相分離、全網(wǎng)狀態(tài)感知等優(yōu)勢,將基于SDN網(wǎng)絡(luò)實(shí)現(xiàn)的多播應(yīng)用于DSM系統(tǒng),可以大幅提升傳輸效率?;诖?本文設(shè)計(jì)一個DSM系統(tǒng),并將其與基于SDN的多播進(jìn)行結(jié)合。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)以太網(wǎng)相比,基于SDN多播的DSM可以有效降低平均網(wǎng)絡(luò)延遲,減少命令響應(yīng)時間,提高系統(tǒng)性能。下一步考慮使用基于SDN的多播來優(yōu)化大數(shù)據(jù)應(yīng)用。

猜你喜歡
多播全網(wǎng)以太網(wǎng)
胖樹拓?fù)渲懈咝?shí)用的定制多播路由算法
用于超大Infiniband網(wǎng)絡(luò)的負(fù)載均衡多播路由
InfiniBand中面向有限多播表?xiàng)l目數(shù)的多播路由算法
《唐宮夜宴》火遍全網(wǎng)的背后
基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
雙十一帶貨6500萬,他憑什么?——靠一句“把價格打下來”,牛肉哥火遍全網(wǎng)
電力系統(tǒng)全網(wǎng)一體化暫態(tài)仿真接口技術(shù)
電子制作(2018年14期)2018-08-21 01:38:28
王天戈首支中文單曲《心安理得》全網(wǎng)首發(fā)
青年歌聲(2017年6期)2017-03-13 00:58:48
談實(shí)時以太網(wǎng)EtherCAT技術(shù)在變電站自動化中的應(yīng)用
電子制作(2017年24期)2017-02-02 07:14:44
一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計(jì)
江门市| 巫山县| 惠来县| 灵璧县| 宜兴市| 堆龙德庆县| 黎平县| 延津县| 清水县| 靖宇县| 项城市| 哈密市| 镶黄旗| 密山市| 济南市| 会理县| 宝兴县| 南宁市| 海阳市| 乐清市| 怀来县| 海伦市| 黄大仙区| 达拉特旗| 刚察县| 桂林市| 滨海县| 申扎县| 亳州市| 望谟县| 内丘县| 西丰县| 广东省| 黔西县| 景宁| 高碑店市| 确山县| 寿宁县| 吕梁市| 岳普湖县| 台北市|