我們的服務符合學術規范和道德
專業 高端讓您使用時沒有后顧之憂
來源:期刊VIP網所屬分類:免費文獻發布時間:2021-03-22瀏覽:次
摘要:為了解決雙控系統間通信模塊效率低、成本高的問題,提出使用非透明橋技術進行系統間數據傳輸。本文設計并實現了一套通信框架和中間件,在通信框架中實現對緩沖區的組織管理,在中間件中實現了流量控制以及socket通信接口。文中介紹了非透明橋技術,詳細描述了通信框架和中間件的設計思路,并對框架進行了測試。測試表明,該通信框架傳輸比較穩定,在國產化平臺中傳輸的最大帶寬可以達到1400MB/s,相較于萬兆以太網卡提高了16.67%,并且成本降低了15.91%。
關鍵詞:國產化;雙控存儲;非透明橋;socket
Abstract: In order to solve the problems of low efficiency and high cost of communication modules between dual-control systems, it is proposed to use nontransparent bridge technology for data transmission between systems. A set of communication framework and middleware is designed and implemented. In the communication framework, organization and management of the buffers are realized. Flow control and socket communication interfaces are implemented in the middleware. The paper introduces the nontransparent bridge technology, details the design ideas of the communication framework and middleware and tests the framework. Tests show that the transmission of the communication framework is relatively stable, and the maximum bandwidth transmitted in the localized platform can reach 1400MB/s, which is an increase of 16.67% compared to 10 Gigabit Ethernet cards, and the cost is reduced by 15.91%.
Key words: localization; dual -control storage; Non-transparent Bridge; socke
0 引言
隨著我國信息化建設的不斷進步,數據量快速增長,對存儲系統的性能和可靠性提出很高的要求,發展國產化雙控存儲系統勢在必行"-2。傳統的雙控系統使用以太網進行系統間傳輸,以太網結構簡單、易管理,但是帶寬利用率低、延遲較高,在國產服務器上,受限于CPU頻率的影響,以太網卡具有極大的性能損失。為了提高通信帶寬、降低使用成本,本文提出使用PCle技術進行數據傳輸。PCle提供非透明橋技術(Non-transparent Bridge)用以連接兩個不同的主機域B-7,解決了多主機域之間地址沖突的問題,使用NTB可以有效提高系統間數據傳輸的效率。然而,NTB技術仍存在以下問題:ONTB只提供了系統間內存映射的功能,缺少完善的數據傳輸機制;
②現有的應用絕大部分都不支持NTB接口,應用的范圍很小。
綜上所述,本文提出使用NTB作為雙控系統間的傳輸通路,并進行如下工作:
①設計并實現一種高效的通信框架,提高數據傳輸的效率;
②在上層應用與通信框架之間抽象出中間件對通信框架進行封裝,并在中間件中實現socket接口。
1非透明橋技術
非透明橋常用于連接兩個獨立的主機域,解決了多處理器系統中的地址域沖突問題。多處理器之間互相隔離,非透明橋一側的主機將看不到橋另一側完整的內存空間或1/0空間,而是將其看作一個端點,并把它映射到自己的地址空間-
1.1 通信方式
非透明橋提供了兩種主機域之間通信的方式。
通過非透明橋中的特殊寄存器進行處理器間的狀態信息的傳遞,通過地址映射進行10數據通信[
非透明橋的兩側通常含有門鈴(Doorbell)寄存器和便箋(Scratchpad)寄存器。門鈴寄存器用于將中斷從非透明橋的一側發送到另一側。便箋寄存器可以從非透明橋的兩側進行訪問,常被用來在兩個主機域之間傳遞一些狀態信息和控制信息,也可以作為通用的讀寫寄存器用來傳遞一些簡短的消息。
非透明橋還提供地址映射的方式進行通信。每個NTB設備都會抽象出兩個端點,分別是虛擬端端點(virtual side)和鏈路端端點(link side)。虛擬端與本地主機域相連,鏈路端與遠程主機域相連。為了跨非透明網橋通信,鏈路端會將一塊BAR地址空間映射到遠程主機域。本地主機域通過對BAR地址空間進行讀寫操作將通過地址翻譯功能傳輸到遠程系統的內存上。
1.2 地址翻譯
在非透明橋環境中,數據從一個內存地址空間穿越到另一個地址空間時要進行地址翻譯。非透明橋鏈路端基地址寄存器中包含一個setup寄存器,用來定義地址翻譯窗口的大小并分配地址翻譯寄存器。在地址翻譯寄存器中定義了一個掩碼,該掩碼將地址分為高位基本字段和低位偏移字段。然后,將地址基址寄存器位替換為相應的地址轉換寄存器位,即可得到正確的內存地址。如圖1所示。非透明橋技術的使用要借助PCle交換機
(swith),PCle Switch具有上行端口和下行端口,可以擴展系統中的PCle通道數。上行端口連接主設備,下行端口連接端節點設備或者通過NTB連接其他主機域11,如圖2所示。經過大量調研發現,Pk公司的Px8749型號switch產品支持NTB技術,每個NTB端口擁有4條PCle鏈路。因此本文基于Pk8749型號的Switch進行開發。
本文設計的通信框架還使用了直接內存訪問
(DMA)技術,DMA有效地解決了在進行數據交換時CPU為適應外部設備的工作頻率而花費大量的周期等待數據與中斷導致CPU在獲取數據過程中的低效率的問題。使用DMA技術可以有效減輕CPU的壓力,間接提升CPU的工作處理能力[12通信模塊架構
非透明橋技術提供了兩塊可以在雙系統間共享的地址空間,實現了基本的通信功能。本文提出的通信模塊就是基于非透明橋的內存映射,在其之上作出如下工作:
①實現非透明橋的初始化工作,設置合理的地址空間大小;
②設計一個通信框架對映射出的內存進行組織管理,提供針對內存空間的快速訪問機制,提高內存空間的利用率進而提高通信的效率;
③在應用層與通信框架之間封裝一層中間件,用來對通信框架進行完善,實現流量控制,保證模塊使用的安全性,并對上層應用提供socket通信接口,具體如圖3所示。
2.1 非透明橋的初始化
非透明橋的初始化工作包括寄存器的配置、通路的建立以及內存的映射三個部分。要使用PCle Switch中的NTB功能,必須配置swich基地址寄存器中的0x360-0x364位,使能NT端口,并分配下行端口號(本型號產品中對外端口號為8和9),NT設備中的每個端點都有一套基地址寄存器。使用時要配置鏈路端的OxE8 ~OxEC位,使能BAR2地址空間并設置BAR2類型和大小。初始化時,在本地申請一塊物理內存并將內存的起始地址和大小通過便箋寄存器發送給遠程系統,遠程系統將獲取到的內存信息寫入鏈路端的地址翻譯寄存器中,反之亦然。最后還要向NT端口分配DMA通路以實現DMA的傳輸功能。
2.2通信框架
非透明橋初始化完成后即實現了雙控系統中內存映射的功能,本地系統向本地申請的物理內存中寫入數據即可通過地址翻譯功能傳輸到遠程系統。但是這只是基本的傳輸通道的實現,想要得到一條高效快速的數據通路,還需要一個高效的通信框架保證數據傳輸效率。
本文設計一套通信框架,將BAR地址空間作為數據的發送緩沖區,本地申請的物理內存作為數據接收緩沖區,這種設計可以保證當設備出現突發故障時數據不會丟失。為了提高數據傳輸的效率,防止緩沖區溢出,將兩塊內存區域以數組的形式組織成環形隊列。在地址空間的最前方劃分兩塊 4 字節大小的內存區域用來維護兩個偏移量: 入口偏移和出口偏移。入口偏移是指下一次入隊列時的位置,出口偏移是指下一次出隊列時的位置。環形隊列中單個元素以結構體nt-data的形式進行劃分,每一個nt_data就是一個傳輸時的數據包,如圖4所示。使用這種設計可以有效提高內存空間的利用率、隊列讀寫和查詢的效率,防止內存溢出等錯誤發生,具體使用規則如下:
①當入口偏移和出口偏移的值相同時,表示隊列為空,此時數據讀取操作阻塞,直到有新的數據進入隊列:
②當出口偏移比入口偏移小并相差1時,表示隊列已滿,此時數據寫入操作阻塞,直到有數據被取出:
③寫入數據時,直接將元素添加到入口偏移指向的位置,然后將入口偏移加1,如果超出隊列長度則從0開始:
④讀取數據時,直接讀取出口偏移指向的位置存放的數據,然后將出口偏移加1,如果超出隊列長度則從0開始。
考慮到要實現socket通信接口,從底層向上層傳輸時,為了提高傳輸效率,防止IP層對數據進行分片,單個nt_data包大小應該不超過IP層的MTU大小1500字節。從上層向底層傳輸時,為了減少數據分片,同時盡量避免內存浪費,單個nt_data的大小應該在MTU的1/3-1/2之間。綜合考慮,將單個ntdata包大小設為750字節。這樣可以保證數據分片至多進行一次,同時內存浪費現象不會過于嚴重。
ntdata數據包中,包含一個2字節的包頭以及748字節的數據存放區,如圖5所示。包頭前兩位是標志位,首位為1表示數據進行過分片,為0表示沒有經過分片。第二位為0表示此包為最后分片,為1表示為首分片。其余30位記錄最后分片在隊列中的位置。在讀取的時候只會讀取首分片,根據首分片中記錄的最后分片的位置主動發起一次讀取請求,獲得完整的數據。
2.3中間件
盡管設計了一個通信框架對數據傳輸進行約束,提高了通信的效率,但是該框架仍有很大的局限性。首先框架中缺少流量控制的功能,當讀寫速率有差異時很容易造成緩沖區溢出導致數據丟失。其次框架不具有通用性,現階段所有的應用都不支持對此框架接口的調用。因此本文設計一層中間件對通信框架的接口進行封裝,實現流量控制。考慮到大部分應用都支持網絡通信,于是在中間件中實現socket通信接口。
為了防止緩沖區溢出,發送數據時,首先檢查發送緩沖隊列,如果隊列剩余元素個數小于要發送的包的個數,那么發送函數會被阻塞,關閉上層的發送隊列,通知上層網絡協議棧停止發送數據,直到緩沖區中的數據被讀取,釋放出足夠的空間才喚醒發送隊列和發送函數繼續寫入數據。
網絡系統基于socket機制,由內核中的網絡子系統驅動,負責接收和發送網絡數據。因此實現socket機制的一種方法就是實現國產化平臺下的網絡驅動。網絡驅動使用net-device結構體描述一個具體的網絡設備的信息,實現不同硬件的統[13-3],系統和驅動程序之間定義有專門的數據結構(sk-buff)進行數據的傳遞。因此只需要在系統中初始化并注冊net_device,實現其收發函數即可。發送數據時,通過發送函數ndo-start-mit接收上層以sk-uff形式傳來的數據包,對其進行解析,根據數據長度進行分片處理,然后使用DMA的方式將處理后的nt-data包搬運到緩沖隊列中。
讀取數據時,使用輪詢的方式讀取緩沖隊列,根據nt_data包中分片情況將數據恢復成sk_buff的形式,然后調用netifx函數將數據包發送給上層應用。
3實驗測試
本文設計并實現的通信框架以及中間件最終以系統中網絡設備的形式呈現,系統可以對此設備設置IP地址以及激活等操作,上層應用可以通過此網絡設備實現非透明橋傳輸的調用。為了驗證通信框架和中間件的正確性和穩定性,將實驗測試分為功能性測試、可靠性測試和性能測試。實驗環境為兩臺國產飛騰服務器+麒麟操作系統+Plx8749型號PCle Switch,并使用兩塊intel x520型號的萬兆以太網卡作性能測試的對比。
3.1功能性測試
系統部署成功后,測試本文實現的網絡設備是否與正常網絡設備具有同樣的功能。通過ifconfig命令查看系統中的網絡設備,可以看到一塊特殊的網卡。然后使用ifconfig命令對其設置IP地址并激活。經測試,此網絡設備實現了與正常網絡設備相同的功能,支持設置IP以及激活等操作。
3.2可靠性測試
將兩塊網卡的IP地址分別為192.168.137.17和192.168.137.18,使用ping命令以及iperf網絡測試工具進行長時間的穩定性測試。測試結果表明,在超過1小時的長時間ping包以及ipert測試中,網絡連接十分穩定,沒有出現連接斷開或者丟包的現象。
3.3性能測試
使用ipef網絡測試工具對本文實現的網卡以及intel x520型號的萬兆以太網卡進行性能測試。
測試時,調整iperf參數緩沖區大小以及NT緩沖區大小為8kB.16kB-2MB,觀察帶寬隨緩沖區大小變化的規律,對比兩者的帶寬性能,測試結果如圖6所示。
圖6中可以看到當緩沖區大小達到32kB時,萬兆以太網卡的帶寬達到峰值1200MB/s左右。而NT網卡在緩沖區大小為1MB時達到峰值1400MB/s左右,相較于萬兆網卡,最大帶寬提高了16.67%。
4結束語
在國產化雙控存儲系統中,網絡通信模塊的效率低下、成本高昂一直是非常嚴重的問題。本文提出使用PCle互聯網路中的非透明橋技術實現雙控系統中的數據傳輸功能,設計并實現了一套通信框架,提高系統間通信的效率,一個中間件,提供通用的socket接口,提高了框架應用的廣泛性。最后文章對模塊的穩定性和性能進行了測試。測試結果表明,使用本文設計的通信模塊在國產化雙控存儲系統中數據傳輸的帶寬超過了萬兆以太網卡16.67%,同時根據網絡上的報價顯示成本降低了15.91%。
參考文獻:
[1]李瑞東,雙控存儲系統的設計與實現[D].濟南:山東大學,2017.
[2]姚遠,雙控制器磁盤陣列中PCL-e同步通道的優化技術研究[D].武漢:華中科技大學,2012.
[3]祝樹生,解春雷,仇公望,等.以太網、PCle和Rapid 10高速總線比較分析[].電子測試,2016(11):100-102.
[4]王聰,王彬,薛潔,等,基于PCle總線協議的設備驅動開發UJ].信息技術,2013(3):32-35.
[5]陳曉磊,董延軍.CPCI總線在某數據處理機中的應用D].計算機光盤軟件與應用,2014(10):69-72.
[6]代琛,傅華明,基于PCI Express技術實現智能適配器D].網絡安全技術與應用,2007(1):64-65.
[7]Shim C,Cha K H,Choi M.Design and implementation of initial OpenSHMEM on PCle NTB hased cloud computing[J].Cluster Computing,2019,22(1):1815-1826.
[8]王樂,馬春江,馮曉東,等.PCItoPCI非透明橋的設計和應用D].微電子學與計算機,2007(7):160-162.
[9]李才華.PCIExpress非透明橋在智能系統中的應用設計D].電子元器件應用,2009(8):64-66.
[10]徐健,張建泉,張健,基于PCIE非透明橋的嵌入式異構平臺設計t[].微電子學與計算機,2018(1):26-30.
[11]鄭橋,韓力,邢同鶴,等·基于PCle Switch的存儲陣列D].電子設計工程,2019(14):126-129.
[12]柴磊·基于PCle總線的高速數據傳輸技術研究[D].西安:西安電子科技大學,2018.
[13]韓夢江基于PCIE總線的加密網卡驅動及應用程序設計[D].哈爾濱:黑龍江大學,2017.
[14]項濤,基于EP9315處理器的網卡驅動設計D].信息與電腦:理論版,2018(11):89-90.
[15]張霖,周維芹,張偉功.UM-BUS總線網卡的驅動程序設計與實現[].電子技術應用,2020,46(5):83-87.
期刊VIP網,您身邊的高端學術顧問
文章名稱: 非透明橋在國產化平臺上的應用
文章地址: http://www.kg120.com/mianfeiwx/56596.html
* 填寫需求信息,或選擇平臺現有SCI/SSCI選題(如下)。