施佺,劉德靖
(南通大學電子信息學院,江蘇 南通 226019)
面向開源路由設(shè)備的I2RS加速技術(shù)設(shè)計與實現(xiàn)
施佺,劉德靖
(南通大學電子信息學院,江蘇 南通 226019)
南向協(xié)議接口標準I2RS(路由系統(tǒng)接口)是傳統(tǒng)網(wǎng)絡(luò)向SDN(軟件定義網(wǎng)絡(luò))過渡過程中出現(xiàn)的一種新標準。基于該標準,提出了一種直接利用地址訪問內(nèi)核空間數(shù)據(jù)的方法,從而能夠使南向接口以更高效率獲取單點路由設(shè)備狀態(tài)和各類統(tǒng)計信息的方法,給出了方法的實現(xiàn)過程,并對采用本方法提取數(shù)據(jù)的速度、訪問數(shù)據(jù)出錯次數(shù)以及從異常中恢復(fù)的時間進行了大量、長時間的測試。實驗測試結(jié)果表明,與現(xiàn)有技術(shù)相比,本方法提取信息的速率明顯提高,并且在提取信息出現(xiàn)異常時能夠快速從異常中恢復(fù)。在實際網(wǎng)絡(luò)環(huán)境中的應(yīng)用表明,該方法發(fā)揮了快速可靠提取信息的作用。
軟件定義網(wǎng)絡(luò);路由系統(tǒng)接口;南向接口;路由設(shè)備;操作系統(tǒng)
軟件定義網(wǎng)絡(luò)(software defined networking,SDN)的南向協(xié)議接口有多種標準[1],比較 典型的有 ForCES[2]、OpenFlow[3]等,而針對實際應(yīng)用中非SDN設(shè)備數(shù)量仍占多數(shù)的情況,IETF制定了另一套南向接口標準I2RS(路由系統(tǒng)接口)[4]。I2RS的主要思想是復(fù)用現(xiàn)有路由設(shè)備,在現(xiàn)有路由設(shè)備上開發(fā)出一套能夠獲取其路由信息、狀態(tài)信息和各種統(tǒng)計信息的監(jiān)控接口,并根據(jù)監(jiān)控接口獲取的各種信息對各個路由設(shè)備的路由策略進行動態(tài)調(diào)整。在現(xiàn)有技術(shù)中,實現(xiàn)I2RS監(jiān)測最常見的方法是在路由設(shè)備所安裝的操作系統(tǒng)(以下簡稱路由操作系統(tǒng))的用戶空間實現(xiàn)一個代理,由代理收集路由操作系統(tǒng)內(nèi)用戶空間和內(nèi)核空間的各種信息,并且將其轉(zhuǎn)發(fā)給外部的SDN控制器。
在路由操作系統(tǒng)內(nèi),對于用戶空間,代理一般通過共享內(nèi)存的方式來獲得各種信息;對于內(nèi)核空間,代理獲取信息的方法有多種,常見的有 Sysctl方式[5]、Mmap 方式[6]、Proc 文件系統(tǒng)方式[7]和UNIX domain socket方式[8]。上述幾種通信方式雖然都能在路由操作系統(tǒng)內(nèi)完成內(nèi)核空間和用戶空間的數(shù)據(jù)交互工作,但不同通信方式適合的應(yīng)用場景不同,開銷也不同。例如,Sysctl方式通常被設(shè)計用來供用戶在用戶空間動態(tài)調(diào)整一些內(nèi)核可配置信息,典型應(yīng)用場景是一些通信量較小的用戶空間和內(nèi)核空間的交互;Mmap方式用來將一段連續(xù)的內(nèi)存映射到用戶空間,其只適合像數(shù)組一樣的占用連續(xù)一大段內(nèi)存的數(shù)據(jù)結(jié)構(gòu),但不能很好地支持鏈式存儲結(jié)構(gòu),典型的應(yīng)用場景是磁盤文件的讀寫;Proc文件系統(tǒng)方式是一種類似于Mmap的方式,適合于讀取內(nèi)核的一些參數(shù)或者發(fā)送簡單開關(guān)指令給內(nèi)核模塊;UNIX domain socket方式則是一種全雙工的內(nèi)核和用戶空間通信方式,適合于用戶空間和內(nèi)核空間大數(shù)據(jù)量數(shù)據(jù)的交互,然而傳輸?shù)氖菬o結(jié)構(gòu)的信息,并且數(shù)據(jù)交互過程需要進行多次復(fù)制操作。
當前,在SDN實際應(yīng)用中存在這樣一種特殊需求的I2RS監(jiān)測接口,需要大量地從路由操作系統(tǒng)內(nèi)核空間中提取狀態(tài)、統(tǒng)計等各類信息,并且這些信息是有結(jié)構(gòu)的。此時,上述幾種內(nèi)核空間通信方式都不能很好地滿足提取這種類型數(shù)據(jù)的要求。本文針對這種特殊需求的應(yīng)用,提出了一種直接利用地址訪問路由操作系統(tǒng)內(nèi)核空間數(shù)據(jù)的方法,并對所提方法的效率以及頑健性進行了測試。下面給出具體分析與設(shè)計過程。
路由操作系統(tǒng)有軟件路由操作系統(tǒng)和硬件路由操作系統(tǒng),例如,參考文獻[9]提出了基于NetBSD改寫的軟件路由操作系統(tǒng),參考文獻[10]提出了基于FPGA技術(shù)的硬件路由操作系統(tǒng),本文的路由操作系統(tǒng)是基于FreeBSD 10.0操作系統(tǒng)改寫而成的軟件路由操作系統(tǒng),因此與FreeBSD 10.0操作系統(tǒng)相同,在操作系統(tǒng)的用戶空間不能直接通過地址訪問內(nèi)核空間的數(shù)據(jù)。在FreeBSD 10.0操作系統(tǒng)中,設(shè)計這一策略的目的是限制用戶程序的訪問權(quán)限,避免用戶程序?qū)?nèi)核空間數(shù)據(jù)錯誤的修改而導(dǎo)致整個系統(tǒng)運行崩潰。雖然,用戶空間不能直接利用地址訪問內(nèi)核空間數(shù)據(jù),但操作系統(tǒng)也添加了多種用戶空間和內(nèi)核空間數(shù)據(jù)交互方式。然而,禁止直接用地址訪問內(nèi)核空間的數(shù)據(jù),第1節(jié)所述方法就需要一些額外的開銷供用戶空間和內(nèi)核空間進行數(shù)據(jù)通信,在本文中,代理只會讀取信息,不會對內(nèi)核空間的數(shù)據(jù)進行寫操作。因此,從用戶空間直接利用地址訪問內(nèi)核空間數(shù)據(jù)成為減小開銷的一個安全可行方案。
在路由操作系統(tǒng)中,程序用虛擬地址訪問數(shù)據(jù),虛擬地址經(jīng)過地址轉(zhuǎn)換映射到物理地址,最終程序通過物理地址訪問到實際的數(shù)據(jù)[11]。而對用戶空間或者內(nèi)核空間地址的判斷工作,就發(fā)生在虛擬地址轉(zhuǎn)換成物理地址的過程中。轉(zhuǎn)換過程中,MMU(內(nèi)存管理單元)發(fā)現(xiàn)地址不合法,產(chǎn)生一個異常,在異常中,具體判斷出現(xiàn)地址的不合法屬于哪一種類型,通過修改內(nèi)核源碼,在對用戶空間直接利用地址訪問這一異常處理分支中,去掉其對內(nèi)核空間地址的保護措施,最終能夠從用戶空間利用地址直接訪問內(nèi)核空間的數(shù)據(jù)。
本文設(shè)計的系統(tǒng)拓撲如圖1所示,整個拓撲網(wǎng)絡(luò)由SDN控制器和路由設(shè)備組成。SDN控制器通過I2RS接口獲取路由操作系統(tǒng)狀態(tài)、統(tǒng)計等各類信息,圖1中虛框部分為路由設(shè)備的內(nèi)部結(jié)構(gòu)示意。一臺路由設(shè)備主要由路由設(shè)備硬件和路由操作系統(tǒng)兩部分組成,路由操作系統(tǒng)進一步可以分為用戶空間和內(nèi)核空間。代理就運行在路由操作系統(tǒng)的用戶空間中,而需要獲取的路由設(shè)備的大部分狀態(tài)、統(tǒng)計等各類信息則存在于內(nèi)核空間。
現(xiàn)有技術(shù)中路由操作系統(tǒng)內(nèi)用戶空間和內(nèi)核空間通信的方式主要有兩類:一是通過內(nèi)存映射將內(nèi)核空間的一段內(nèi)存映射到用戶空間,用戶空間訪問內(nèi)核空間映射在用戶空間的地址,實現(xiàn)用戶空間與內(nèi)核空間的通信;二是通過系統(tǒng)中斷方式進入內(nèi)核空間,由于內(nèi)核空間具有最高權(quán)限,可以利用復(fù)制的方式將數(shù)據(jù)從用戶空間復(fù)制到內(nèi)核空間或從內(nèi)核空間復(fù)制到用戶空間,從而實現(xiàn)用戶空間和內(nèi)核空間的通信。本文提出了一種在用戶空間直接利用地址訪問內(nèi)核空間數(shù)據(jù)的方法,即圖1虛線框中,通過運行在用戶空間的代理直接用地址獲取存儲在內(nèi)核空間的數(shù)據(jù)。
圖1 系統(tǒng)總體拓撲
在實際路由操作系統(tǒng)中,各種狀態(tài)、統(tǒng)計等信息零星分布在內(nèi)存的不同功能模塊內(nèi),而不是集中在圖1所示的數(shù)據(jù)模塊中,并且各條記錄的地址會動態(tài)變化。例如,反應(yīng)路由接口與反應(yīng)路由表信息的數(shù)據(jù)在內(nèi)存中存放的地址是不同的。路由表添加了一條記錄,新記錄會被分配到一個新的存儲空間中,其擁有了一個新的內(nèi)存地址。因此,為了方便代理利用地址直接訪問,能正確獲取內(nèi)核收集來的各種信息,本設(shè)計在內(nèi)核空間中添加了一個線程,用來定時收集存儲在內(nèi)核空間零散分布的狀態(tài)、統(tǒng)計等信息,并且設(shè)計了一套數(shù)據(jù)結(jié)構(gòu)以規(guī)范內(nèi)核空間線程收集的數(shù)據(jù)存儲,使其結(jié)構(gòu)化。同時,為了保證代理訪問內(nèi)核空間數(shù)據(jù)的可靠性,設(shè)計了一套用戶空間和內(nèi)核空間的訪問同步機制以及訪問超時檢查機制以確保所設(shè)計方案的可靠性和實用性。
通過對內(nèi)核空間中需要進行收集的信息進行詳細分析,內(nèi)核空間中的存儲結(jié)構(gòu)可以用模型—實例的模式進行統(tǒng)一描述?!澳P汀笔菍λ芯哂邢嗤Y(jié)構(gòu)信息的統(tǒng)稱,是一個抽象概念,例如,用模型的概念對路由器內(nèi)核空間中的信息進行描述,路由器接口信息用接口模型描述,靜態(tài)路由信息用靜態(tài)路由模型描述。一種路由器內(nèi)核空間中的數(shù)據(jù)需要多種模型來描述,由于一種路由設(shè)備內(nèi)模型的種類是固定的,所以不同的模型可以通過散列表組織起來;“實例”是對某一模型下具體存儲的某一條記錄的代稱,以接口模型為例,路由操作系統(tǒng)內(nèi)核空間中通常存儲著該路由設(shè)備各網(wǎng)絡(luò)接口的信息,例如某網(wǎng)絡(luò)接口所允許發(fā)送最大數(shù)據(jù)分組的大小、網(wǎng)口轉(zhuǎn)發(fā)分組的數(shù)量、網(wǎng)口轉(zhuǎn)發(fā)數(shù)據(jù)量的總和等,所有關(guān)于一個網(wǎng)絡(luò)接口描述信息的集合就是一個實例。對于一臺路由設(shè)備而言,它一般具有多個網(wǎng)絡(luò)接口,因此,路由操作系統(tǒng)的內(nèi)核空間內(nèi)存在著多個接口模型的實例,并且這些模型的實例是可以隨著網(wǎng)絡(luò)接口的添加或減少而動態(tài)添加或刪除的,因此不同的實例通過鏈表連接起來,能夠滿足動態(tài)變化的要求。圖2給出了存儲結(jié)構(gòu)總體設(shè)計示意。
由于接口模型中有接口名稱、接口轉(zhuǎn)發(fā)分組數(shù)量兩個字段,而靜態(tài)路由模型有靜態(tài)路由命中次數(shù)1個字段,因此兩個模型實例的數(shù)據(jù)結(jié)構(gòu)是不相同的。為了能夠以一種統(tǒng)一的方式管理各種模型實例,采用了圖2所示的數(shù)據(jù)結(jié)構(gòu),以達到不同的數(shù)據(jù)結(jié)構(gòu)用同一存儲結(jié)構(gòu)進行管理的目的。在圖2的結(jié)構(gòu)中,存儲每一個模型實例的數(shù)據(jù)時,每個實例并不是在實例內(nèi)部存放統(tǒng)計信息數(shù)據(jù),而是通過指針指向一塊單獨的內(nèi)存區(qū)域。這樣的存儲結(jié)構(gòu),對于每一個模型,其模型和實例部分的結(jié)構(gòu)是完全相同的,不同的僅是其數(shù)據(jù)部分。因此,在這套存儲結(jié)構(gòu)上尋找模型及實例可以用相同的方法,不同的僅僅是取每一個模型數(shù)據(jù)的方法。
圖2 內(nèi)核存儲結(jié)構(gòu)
路由操作系統(tǒng)用戶空間進程通過存儲結(jié)構(gòu)首地址去獲取內(nèi)核空間各模型的數(shù)據(jù),內(nèi)核空間線程通過存儲結(jié)構(gòu)首地址對各模型數(shù)據(jù)進行更新。然而,由于路由設(shè)備內(nèi)操作系統(tǒng)進程調(diào)度以及處理器多核等原因,對同一塊區(qū)域的讀寫,會出現(xiàn)數(shù)據(jù)不一致的情況。為了保證數(shù)據(jù)的一致性,必須對路由操作系統(tǒng)內(nèi)用戶空間的讀進程和內(nèi)核空間的寫線程進行同步操作。本文所面對的同步問題,并不是路由操作系統(tǒng)中用戶空間的臨界資源同步讀寫,或者內(nèi)核空間臨界資源同步讀寫,上述兩種同步方案在路由操作系統(tǒng)中已經(jīng)有實現(xiàn)的接口。本文涉及的臨界資源同步是關(guān)于用戶空間進程和內(nèi)核空間線程的同步,由于原路由操作系統(tǒng)不提供在用戶空間直接用地址訪問內(nèi)核空間數(shù)據(jù)的方法,即用戶空間進程不能從用戶空間訪問內(nèi)核空間的數(shù)據(jù),造成現(xiàn)有路由操作系統(tǒng)不提供用戶空間和內(nèi)核空間的同步方法。為了實現(xiàn)用戶空間進程和內(nèi)核空間線程的同步操作來保證數(shù)據(jù)的一致性,本文設(shè)計了如圖3所示的同步訪問方案。
圖3 用戶進程及內(nèi)核線程的同步
圖3所示的臨界資源即各模型實例的統(tǒng)計數(shù)據(jù),為了能夠?qū)υL問臨界資源的用戶空間進程和內(nèi)核空間線程進行同步操作,本設(shè)計給位于內(nèi)核空間的臨界資源加了一把鎖。當用戶空間進程準備讀取臨界資源時,該進程首先觸發(fā)內(nèi)核的一段程序執(zhí)行,該段被觸發(fā)的程序給臨界資源加上鎖并返回一個操作結(jié)果。若返回的操作結(jié)果表示獲取鎖成功,則用戶空間進程開始讀取臨界資源中的信息;否則等待,直到獲取鎖進行讀取數(shù)據(jù)。內(nèi)核空間線程的寫操作與用戶空間的進程讀操作類似。
正確工作狀態(tài)下,用戶空間進程和內(nèi)核空間線程的工作流程是:首先,用戶空間進程每隔5 s申請一次讀鎖,申請成功后讀取臨界區(qū)的數(shù)據(jù)并釋放讀鎖,然后內(nèi)核空間線程每隔5 s申請一次寫鎖,申請成功后更新數(shù)據(jù)并釋放寫鎖。然而,在實際的運行測試中,出現(xiàn)了兩種特殊情況:一是用戶空間某個進程異常退出,沒有釋放讀鎖,導(dǎo)致內(nèi)核空間線程長時間不能獲取寫鎖,如圖4所示;二是用戶空間有太多的進程讀取臨界區(qū)數(shù)據(jù),導(dǎo)致內(nèi)核空間長時間不能獲取寫鎖,其示意如圖5所示。
圖4 用戶進程異常終止
上述兩種情況無論哪一種發(fā)生,都會導(dǎo)致內(nèi)核空間線程不能及時獲取寫鎖,從而不能更新臨界區(qū)的數(shù)據(jù)。為了解決上述的異常問題,本文在內(nèi)核空間中設(shè)計了超時檢查功能。超時檢查功能的主要思想是設(shè)計一個計數(shù)器,當內(nèi)核空間線程獲取寫鎖失敗時,計數(shù)器開始計時,在計數(shù)器計時開始后的一段固定時間內(nèi),如果內(nèi)核空間線程一直不能獲取寫鎖,則說明用戶空間訪問的進程發(fā)生異常,需要在內(nèi)核空間強制釋放所有讀鎖。在上述強制釋放讀鎖的過程中,很有可能釋放掉用戶空間正常進程的讀鎖,若此時內(nèi)核空間線程又立刻獲取寫鎖進行更新數(shù)據(jù),則仍然存在著讀寫沖突問題。為了解決這個問題,本文為鎖設(shè)置了一個特殊狀態(tài):“等待態(tài)”。在“等待態(tài)”下,有兩個特點,一是內(nèi)核空間線程不再每隔5 s獲取一次寫鎖,而是不斷嘗試獲取寫鎖,直到獲取寫鎖為止;二是內(nèi)核空間線程能夠在讀鎖全部釋放的情況下,獲取寫鎖,但是用戶空間進程申請讀鎖會失敗。在引入“等待態(tài)”后,內(nèi)核線程更新數(shù)據(jù)時間應(yīng)該是:
圖5 多進程同時訪問
其總體工作流程如圖6所示。
在圖6中,內(nèi)核空間線程需要對臨界資源的信息進行更新,它首先申請寫鎖,若此時上述兩種異常情況的一種發(fā)生或兩者同時發(fā)生,內(nèi)核空間線程申請寫鎖時會失敗。在上述異常情況下,會設(shè)置鎖的狀態(tài)為“等待態(tài)”,并且計算距離第一次發(fā)生異常所經(jīng)過的時間,如果時間超過了指定值(這個值與具體應(yīng)用有關(guān),本文目前設(shè)置為15 s),則內(nèi)核空間的寫線程會強制釋放所有的讀鎖。釋放完之后,內(nèi)核開始申請寫鎖,由于此時鎖的狀態(tài)為“等待態(tài)”,并且讀鎖的計數(shù)已經(jīng)恢復(fù)到0,所以寫鎖申請成功,然后更新數(shù)據(jù)并設(shè)置鎖的狀態(tài)為正常態(tài),釋放寫鎖。
本文從時間提取的數(shù)據(jù)發(fā)生錯誤次數(shù)、異常狀況下恢復(fù)時間等角度對本設(shè)計方法的性能及可靠性進行了評估。使用的測試平臺為AMD64 3.7 GHz處理器、內(nèi)存4 GB的通用型計算機,路由操作系統(tǒng)為基于Freebsd 10.0內(nèi)核修改的測試系統(tǒng)。
圖6 超時檢查機制
本文提到多種內(nèi)核空間與用戶空間通信方式,例如Sysctl、Mmap、Proc、UNIX domain socket等。在設(shè)計測試方案時,由于Mmap與Proc方式適用于從內(nèi)核空間與用戶空間傳遞一整塊信息,而本文所傳輸?shù)男畔⑹擎準降?,因此Mmap與Proc不適合本文所設(shè)計的方案。Sysctl能夠用來將一小段內(nèi)存?zhèn)鬟f到用戶空間,對于本文的鏈式方案也不適用。UNIX domain socket是一種常用的內(nèi)核空間和用戶空間通信的方式,能夠?qū)?nèi)核中的鏈式信息傳遞到用戶空間,因此在系統(tǒng)測試時,將本文的設(shè)計方案與UNIX domain socket通信方案進行對比。圖7給出了獲取相同的內(nèi)核空間信息時,兩種程序所需要的時間。圖7的測試結(jié)果表明,直接用地址訪問方式獲取數(shù)據(jù),其獲取內(nèi)核靜態(tài)路由統(tǒng)計信息的時間比用UNIX domain socket方式少,說明本方案在提取內(nèi)核空間信息效率方面比UNIX domain socket方式要高。
圖7 獲取數(shù)據(jù)時間測試比較曲線
(1)同步方案有效性的驗證
路由操作系統(tǒng)中,由于進程調(diào)度以及多核等原因,訪問臨界區(qū)進程越多,訪問數(shù)據(jù)越容易出現(xiàn)數(shù)據(jù)不一致問題(即本文所說的錯誤數(shù)據(jù)),圖8給出了在未使用同步方案的情況下,隨著時間的變化,不同數(shù)目進程訪問臨界區(qū)時,所產(chǎn)生的錯誤次數(shù)變化;而圖9則給出了在使用不同方案的情況下,產(chǎn)生錯誤次數(shù)的變化。
圖8 未使用同步方案時的數(shù)據(jù)出錯次數(shù)
圖9 使用同步方案時的數(shù)據(jù)出錯次數(shù)
在圖8中,由于未使用同步方案,可以看出,不管同時測試的進程數(shù)目有多少,錯誤次數(shù)都會隨著時間的變化不斷增多;而隨著同時運行的進程數(shù)目的增多,其數(shù)據(jù)錯誤也會明顯增多,說明并發(fā)進程數(shù)目越多,的確會增加數(shù)據(jù)的不一致問題。圖9中使用同步方案后,相比于圖8可以看出,隨著時間的變化,錯誤的次數(shù)始終為0;即使并發(fā)進程數(shù)目增多,其次數(shù)仍然為0。因此,說明了盡管在進程增多不確定性增大的情況下,本文同步方案都能夠解決數(shù)據(jù)不一致的問題,證明了同步方案的有效性。
(2)超時檢查機制有效性驗證
為了驗證本文設(shè)計的讀寫機制超時檢查方案是否能夠保證數(shù)據(jù)的及時更新,設(shè)計了圖4和圖5出現(xiàn)的兩種異常情況。
首先,模擬圖4所示的用戶進程異常終止情況,在用戶空間同時開啟5個進程,此時內(nèi)核空間鎖的計數(shù)為5,人為終止其中任意一個進程,若沒有超時檢查,內(nèi)核空間鎖的計數(shù)應(yīng)該始終大于或等于1;引入超時檢查功能后,內(nèi)核空間鎖的計數(shù)能夠回歸到0,說明超時檢查機制起了作用。
其次,模擬圖5所示情況,表1給出了在進程數(shù)為10的情況下,數(shù)據(jù)的平均更新時間與內(nèi)核設(shè)置的更新時間之間的關(guān)系,從表1中可以看出,隨著內(nèi)核設(shè)置的更新時間的變化,數(shù)據(jù)的平均更新時間都是等于“內(nèi)核設(shè)置的更新時間+比較短的時間”,與第3.3節(jié)分析的“更新數(shù)據(jù)時間=5 s(內(nèi)核設(shè)置的更新時間)+嘗試獲取鎖的時間”一致。表2給出了隨著進程數(shù)目的變化,內(nèi)核空間數(shù)據(jù)在使用與不使用同步情況下的平均更新時間。結(jié)果表明,采用超時檢查方案后,進程數(shù)目從5個調(diào)整到20個,其數(shù)據(jù)平均更新時間為5.02 s,而未使用超時檢查的程序時,在5個進程時,時間也為5.02 s,分析其原因,是由于5個用戶空間進程不是很多,在5 s時間段內(nèi)能夠訪問完所有數(shù)據(jù),不會影響內(nèi)核空間線程獲取寫鎖,而從開啟到10個線程時,其平均更新時間不確定,這里不確定的意思是指更新時間沒規(guī)律且跳躍性很大,例如會呈現(xiàn)5 s、40 s、15 s這樣變化很大的時間,分析其原因,由于沒有超時檢查機制,其與用戶空間進程是通過競爭關(guān)系獲取鎖,隨著用戶空間進程數(shù)目的增多,雖然它獲取鎖的概率越來越小,但是也有獲得到鎖的概率,什么時候能夠成功獲取鎖,是一個隨機事件,所以其時間呈現(xiàn)這種跳躍性的變化。
表1、表2的結(jié)果相互對比說明,使用超時檢查機制后,能夠使更新時間維持在一個穩(wěn)定的時間段內(nèi),證明了超時檢查機制所設(shè)計的有效性。
表1 數(shù)據(jù)平均更新時間與內(nèi)核更新間隔時間關(guān)系
表2 數(shù)據(jù)平均更新時間與進程數(shù)的關(guān)系
本文針對SDN控制器需要提取路由設(shè)備統(tǒng)計信息這一要求,通過對I2RS接口的研究,設(shè)計了一套利用地址直接獲取內(nèi)核空間信息的方法。與UNIX domain socket方法相比,本設(shè)計在提取相同數(shù)量的內(nèi)核信息時所需的時間更少。本文還設(shè)計了一種用戶空間和內(nèi)核空間訪問臨界資源的同步方案,實現(xiàn)了對臨界資源的可靠訪問,在實際應(yīng)用中發(fā)揮了穩(wěn)定提取信息的作用。然而,在SDN南向接口獲取數(shù)據(jù)的過程中,影響其獲取信息效率的因素往往不只一個,本文所設(shè)計的方案只是針對控制器需要提取路由設(shè)備信息時,優(yōu)化了數(shù)據(jù)從內(nèi)核空間到用戶空間的路徑,但是由路由設(shè)備發(fā)往控制器這條路徑并沒有得到優(yōu)化,因此,在這條路徑上的優(yōu)化嘗試將是進一步研究的內(nèi)容。
[1]Stanford university clean slate program [EB/OL]. [2015-02-12].http://clean slate.stanford.edu/.
[2]IETF.Forwarding and control elementseparation (ForCES)forwarding element model:RFC5812[S].2010.
[3]MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et all.OpenFlow:enabling innovation in campus networks [J].ACM Communications Review,2008,38(2):69-74.
[4]HARESS,WHITE R.Software-definednetworksandthe interface to the routing system (I2RS)[J].IEEE Internet Computing,2013,17(4):84-88.
[5] Sysctl [EB/OL]. [2016-01-11].http:/www.freebsd.org/cgi/man.cgi?query=sysctl&sektion=3.
[6]IEEE standard for information technology-portable operating system interface (POSIX(R)[EB/OL]. [2016-01-11].http://standards.ieee.org/findstds/standard/1003.1-2008.html2001.
[7] Proc file system [EB/OL]. [2016-01-11].https:/www.kernel.org/doc/Documentation/filesystems/proc.txt.
[8]GREG A.Woods [EB/OL]. [2016-01-11].http:/archives.neohapsis.com/archives/postfix/2000-09/1476.html.
[9]徐恪,吳建平,江勇,等.通用路由器軟件體系結(jié)構(gòu)研究綜述[J].小型微型計算機系統(tǒng),2001,22(4):385-392.XU K,WU J P,JIANG Y,et al.Research on software architecture of general-purpose routers:a survey[J].?Mini-micro Systems,2001,22(4):385-392.
[10]鐘雪燕.基于 FPGA的 SpaceWire路由器的設(shè)計與驗證[D].南京:南京航空航天大學,2013.ZHONG X Y.Design and verification of SpaceWire router based on the FPGA [D].Nanjing:Nanjing University of Aeronautics and Astronautics,2013.
[11]JACOB B,MUDGE T.Software-managed address translation[C]//The 3rd International Symposium on High Performance Computer Architecture,F(xiàn)eb 1-5,1997,San Antonio,Texas,USA.New Jersey:IEEE Press,1997:156-167.
A quickly accessed method for I2RS in open-source router
SHI Quan,LIU Dejing
School of Electronic Information,Nantong University,Nantong 226019,China
Southbound interface protocol specification I2RS (interface to routing system)appears in the transitional period of traditional network to SDN (software defined networking).Based on the protocol specification,a method which could get the state and statistics information of network’s equipments in a more efficient way was put forward.The design was detailed and adequately testing was performed,which included the speed of getting information about equipments’ state and statistics,the numbers of the wrong information as well as the recovery time from exception.The experiment results show that the proposed method improves the speed of getting the information about equipments’ state and statistics,which is better than the existed method and when some exceptions happen,the proposed method can recover the situation quickly.The application of the real network environment shows that the proposed method can get the wanted information quickly and stably.
SDN,I2RS,south bound interface,routing equipment,operating system
s:The National Natural Science Foundation of China(No.61171132),The Natural Science Foundation of Jiangsu(No.BK20151272),The “333” Program Talents of Jiangsu Province(No.BRA2015356),The Six Top Talents of Jiangsu Province Grant(No.2014-WLW-029),Nantong Science and Technology Platform (No.CP2013001,No.HL2014006,No.BK2014054)
TP393
A
10.11959/j.issn.1000-0801.2016137
2016-03-03;
2016-05-02
施佺,sq@ntu.edu.cn
國家自然科學基金資助項目(No.61171132);江蘇省自然科學基金資助項目(No.BK20151272);江蘇省“六大人才高峰”項目(No.2014-WLW-029);江蘇省“333 工程”資助項目(No.BRA2015356);南通市科技項目(No.CP2013001,No.HL2014006,No.BK2014054)
施佺(1973-),男,博士,南通大學電子信息學院教授,主要研究方向為智能信息處理。
劉德靖(1990-),男,南通大學電子信息學院碩士生,主要研究方向為智能信息處理、計算機網(wǎng)絡(luò)。