查奇文,張 武,曾學文,宋 毅
(1. 中國科學院聲學研究所國家網絡新媒體工程技術研究中心,北京 100 190;2. 中國科學院大學,北京 10004 9)
多核網絡處理器iSCSI發起端研究與實現
查奇文1,2,張 武1,曾學文1,宋 毅1,2
(1. 中國科學院聲學研究所國家網絡新媒體工程技術研究中心,北京 100 190;2. 中國科學院大學,北京 10004 9)
針對已有的互聯網小型計算機系統接口(iSCSI)發起端實現方式在面向多核網絡處理器時存在的性能和擴展性不佳等問題,研究多核網絡處理器的網絡處理軟件框架,提出基于多核網絡處理器異構操作系統的網絡處理軟件框架。采用軟件框架和P-SPL數據層面編程模型,給出一種iSCSI發起端實現方式。實驗結果證明,相比基于Linux操作系統的iSCSI發起端實現,基于多核網絡處理器異構操作系統的iSCSI發起端實現在吞吐率和響應時間上都有明顯的性能提升。在6個千兆網口的測試環境中,讀寫吞吐率最高可達到180 MB/s,響應時間最多減少1.6 ms。
互聯網小型計算機系統接口;iSCSI發起端;多核網絡處理器;Linux操作系統;TCP/IP協議棧;網絡處理操作系統
互聯網小型計算機系統接口(Internet S mall Computer System Interface, iSCSI)是由IETF批準的一種基于存儲網絡的新的協議[1]。隨著千兆以太網技術的普及、萬兆以太網技術的逐步成熟,iSCSI技術成為最具有發展前景的SAN (Storage Area Network)技術和協議。iSCSI的原理是將SCSI命令通過IP網絡傳輸,這樣就可以使在網絡上傳送數據更加便利,而且可以實現遠程存儲管理。基于iSCSI的網絡存儲系統由于其大容量、部署靈活、低成本、擴展性好等特點,使得iSCSI的產品化和普及化進程非常迅速,獲得了業界軟硬件方面的廣泛支持。
iSCSI分為發起端和目標端。應用程序通過發起端訪問存儲設備,目標端通常為磁盤陣列等存儲服務器。iSCSI發起端負責將用戶發來的SCSI命令和數據封裝為iSCSI網絡數據報發送到目標端;目標端存儲設備收到后會將其解包成原始的SCSI命令和數據進行處理,并將得到的數據訪問結果再次封裝成iSCSI包發回至發起端,這樣就實現了遠程存儲操作。iSCSI發起端的性能直接影響用戶的存儲性能,最終決定了客戶應用的性能。
多核處理器技術被廣泛采用以提高系統的整體性能。多核處理器可以很好地控制處理器的功耗問題,也能減少與內存、I/O之間的訪問延遲,而且多核處理器技術增加了處理器同時執行的硬件線程數,極大地提升了處理器的并行處理能力。網絡處理器是為處理網絡應用而設計的專用處理器,其體系結構和指令集對網絡數據流的處理和轉發都做了具有針對性的優化,并增加了一些用于網絡加速的協處理器,可以加速系統處理網絡數據流的效率。多核網絡處理器兼有多核處理器和網絡處理器的優點,使得越來越多的網絡應用和業務采用多核網絡處理器作為解決方案。所以,基于多核網絡處理器的iSCSI發起端研究有著重要意義。本文對基于多核網絡處理器的iSCSI發起端進行研究,并提出一種新的實現方式。
2.1 iS CSI發起端的系統結構與實現方式
iSCSI發起端的系統結構模型如圖1所示。

圖1 iS CSI發起端系統結構模型
iSCSI發起端的實現主要有以下3種方式[2]:
(1)純軟件方式
采用普通以太網卡進行網絡連接,通過運行上層軟件實現iSCSI和TCP/IP協議棧功能層。這種方式無需添加任何額外設備,因此,硬件成本最低,靈活性也較強。但是在這種方式中,應用主機在完成應用程序處理的同時,還需要兼顧iSCSI的處理和TCP/IP協議棧的處理,造成主機運行時間加長,系統性能下降。
(2)智能TOE(TCP Offload Engine)網卡實現方式
在這種方式中,服務器采用特定的TOE網卡連接網絡,TCP/IP協議棧功能由TOE網卡完成,而 iS CSI層的功能仍然由主機完成。這種方式較第1種方式部分提高了服務器的性能。但是由于需要額外的網卡,擴展性和靈活性較差。
(3)iSCSI HBA(Host Bus Adapter)卡實現方式
使用HBA存儲適配器完成iSCSI層和TCP/IP協議棧的功能。該方式性能最好,但是HBA卡較為昂貴,同時由于需要額外的HBA卡,擴展性和靈活性較差。
2.2 Lin ux操作系統的iSCSI實現方式
在iSCSI發起端的實現方式中,基于Linux操作系統的純軟件實現方式是最常見、最簡單的一種Linux操作系統下軟件方式實現發起端的系統軟件結構,如圖2所示[3-4]。

圖2 L inux iSCSI發起端軟件結構
TCP/IP協議棧使用Linux操作系統TCP/IP協議棧,以軟件形式運行于Linux操作系統內核空間。iSCSI發起端的實現則采用開源軟件Open-iSCSI或者基于Open-iSCSI的修改版本。Open-iSCSI是一個開源的項目,也是Linux下使用最廣泛的iSCSI發起端軟件。Open-iSCSI軟件包括2個部分,一部分是運行于Linux操作系統用戶空間的配置管理工具,包括應用程序iscsiadm和守護進程iscsid;另一部分運行于Linux操作系統內核空間的內核模塊。
在基于Linux操作系統的iSCSI發起端全軟件實現方式中,應用程序運行于Linux操作系統的用戶空間,通過Linux標準API調用文件系統,而Linux內核空間的文件系統通過調用Linux塊設備驅動將文件請求轉化為塊請求,然后通過Linux SCSI子系統封裝成SCSI命令,最后通過OpeniSCSI內核模塊,將SCSI命令通過TCP/IP封裝,與iSCSI目標端進行交互。
Open-iSCSI配置管理工具也是運行于Linux用戶空間,通過NetLink機制,與Open-iSCSI內核模塊交互,主要包括目標端的發現、目標端的登錄、iSCSI會話的建立與銷毀、TCP連接的建立與銷毀以及多連接管理等。
3.1 基于多核網絡處理器異構操作系統的軟件框架
目前基于多核網絡處理器的網絡應用已經形成了成熟的系統結構,即由管理層面、控制層面和數據層面構成的分層系統結構[5-7]。
(1)管理層面:對用戶和上層應用程序提供交互接口,管理底層的硬件資源、組織網絡處理功能模塊和多核拓撲結構。
(2)控制層面:協助數據層面的數據流處理,提供操作系統與數據層面的交互通道,維護路由表、ARP信息等非實時信息。
(3)數據層面:通過多核網絡處理器上的處理核心以及協處理器搭建網絡數據流的處理通道,結合網絡處理器的優勢對網絡數據流進行加速處理,實現快速的數據包分類與查找、TCP/IP協議棧、深度包檢測、數據包加/解密、流量整形等功能。
基于以上分層體系結構,本文提出了一種基于異構操作系統的多核網絡處理器軟件框架。如圖3所示,將一顆多核網絡處理器的處理核心分成2個部分,一部分處理核心運行通用操作系統,另一部分處理核心運行網絡處理操作系統(Network Processing Operating System, NPOS)[8]。適用于多核網絡處理器的通用操作系統主要是Linux操作系統。網絡處理操作系統主要有實時操作系統、嵌入式執行環境,以及一些廠商特有的加速執行環境,如Cavium公司的SE執行環境。

圖3 多核網絡處理器系統結構
網絡處理的控制層面通常邏輯較復雜,要求開發環境相對簡單,但對數據的處理性能要求不高。管理層面通常要求平臺無關性、接口豐富、便于交互等特點。所以本文將控制層面和管理層面運行于通用操作系統之上,通過操作系統屏蔽底層的硬件信息,為用戶提供通用的執行環境。同時,基于通用操作系統的各種編程接口、系統調用,簡化應用的開發難度,同時具有較好的移植性和擴展性。
數據層面負責對網絡數據進行高速實時處理,對性能有著較高的要求,通常需要做到高吞吐、低延時以及高并發等。所以數據層面運行于網絡處理操作系統,直接操作底層的處理核心、內存、協處理器等硬件資源,以充分發揮多核網絡處理器的性能。
管理層面需要對整個系統的運行情況和參數進行管理,管理各種軟硬件資源等;控制層面需要對數據層面進行控制,提供運行信息、交互數據等。管理層面和控制層面通過異構操作系統間的通信機制和數據交互機制與數據平面進行信令交互和數據交互。通信機制主要包括網絡信令交互、多核核間通信機制等;數據交互機制主要有網絡數據交互、共享內存等。
3.2 iS CSI發起端實現
本文采用純軟件的iSCSI發起端實現方案,所有的iSCSI和網絡處理都由軟件實現。同時借鑒TOE網卡實現方式和HBA卡實現方式的思想,充分利用多核網絡處理器的特點,對iSCSI層和TCP/IP協議棧進行加速處理。基于多核網絡處理器異構操作系統的iSCSI發起端實現的軟件結構如圖4所示。

圖4 iS CSI發起端軟件結構
采用基于多核網絡處理器異構操作系統的軟件框架,在一顆多核網絡處理器上同時運行Linux操作系統和網絡處理操作系統。應用程序和iSCSI配置管理工具運行于Linux用戶空間,屬于控制層面和管理層面;iSCSI層和TCP/ IP協議棧則以iSCSI加速引擎和TCP/IP加速引擎運行于網絡處理操作系統,屬于數據層面。在Linux內核中運行iSCSI卸載驅動,其主要功能為提供iSCSI對于Linux SC SI子系統和iSCSI配置管理工具的完成調用接口,并通過多核核間通信機制和共享內存與網絡操作系統上的iSCSI加速引擎進行信令交互和數據交互。例如,將一個SCSI寫命令封裝為多核核間消息,將寫的數據填到共享物理內存。
數據層面是整個網絡數據流處理器的核心部分,數據層面編程模型需要解決開發效率和運行效率問題,對數據層面軟件進行合理的組織、映射和調度,對提高整個系統性能起著關鍵作用。根據每個處理核心上部署任務的關系,處理核心之間構成了多種多核拓撲結構,主要的結構有以下3種[9-10]:
(1)RTC(Run to Complete)結構:各個處理核心之間相互獨立、并行工作,每個處理核心都可以完成數據流處理的全部子任務。
(2)S-SPL(Single Software PipeLine):各個處理核心之間逐級互聯形成流水線,每一級的處理核心實現數據流處理分解為多級子任務,然后與流水線上的處理核心一一對應。
(3)P-SPL(Parallel S oftware P ipeLine):結合了RTC和S-SPL,采用并行結構擴展S-SPL模型上各個階段的處理核心數量,縮短每個階段的處理開銷。通過P-SPL模型可以有效地提高流水線結構的處理速度,消除流水線結構的處理瓶頸。
研究發現,P-SPL模型在網絡數據流處理上,兼顧處理性能和擴展性,能較好地利用多核網絡處理器的并行處理優勢,適用于網絡數據處理[11-12]。本文采用P-SPL編程模型設計數據層面的系統模型,充分利用多核處理器的并行性,同時兼顧軟件的模塊化和擴展性。基于P-SPL編程模型設計的多核網絡處理器iSCSI發起端數據層面系統結構如圖5所示。

圖5 iS CSI發起端數據層面系統結構
對比基于Linux操作系統的iSCSI發起端實現方式[13],基于多核網絡處理異構操作系統的iSCSI發起端實現主要有以下優點:
(1)TCP/IP協議棧與iSCSI層以加速引擎的軟件模塊運行于數據平面,可以充分利用多核處理的協處理器進行網絡加速處理,協議處理以及校驗計算等是消耗處理器資源的重要因素之一[14]。
(2)數據層面可以充分利用多核處理器的并行性,進行P-SPL模型的編程,優化軟件結構。
(3)數據層面的數據包處理采用輪詢模式,面向高速網絡時,減少了大量的中斷處理。而研究表明,在Linux操作中,網絡處理中最影響性能的因素之一就是中斷[15]。
(4)對Linux應用程序和iSCSI配置管理工具完全透明。應用的開發和iSCSI配置管理無需做任何改變。
(5)內存的零拷貝。研究表明,基于Linux的iSCSI實現方式中,內存拷貝也是影響性能的重要因素之一。基于多核網絡處理器的iSCSI發起端軟件架構中,數據包的處理在Linux SCSI子系統之前都基于物理地址和指針偏移實現,無需內存拷貝[16]。
(6)數據包數據層面的處理在網絡處理操作系統上進行,實時性高,處理延時低。
基于本文提出的多核網絡處理器異構操作系統的iSCSI發起端實現方式,在高性能嵌入式邊緣服務器ATCA-8000R上實現了iSCSI發起端。iSCSI目標端使用新一代網絡存儲產品藍鯨BW2000。具體的硬件參數如表1所示。

表1 實驗硬件參數
在ATCA-8000R上分別運行基于Linux操作系統的iSCSI發起端實現和本文提出的基于多核網絡處理器異構操作系統的iSCSI發起端實現。通過千兆交換機連接ATCA-8000R的6個千兆網口和藍鯨BW2000的6個千兆網口進行測試。具體的運行參數如表2所示。

表2 實驗運行參數
基于多核網絡處理器的異構操作系統中,網絡處理操作系統使用Cavium公司的SE執行環境。數據層面的6個處理核心的具體分配如圖5所示。分別對2種iSCSI發起端實現方式的讀寫吞吐率和響應時間進行對比測試,測試結果如圖6和圖7所示。

圖6 吞吐率測試結果

圖7 響應時間測試結果
從測試結果可以看出,基于多核網絡處理器異構操作系統的iSCSI發起端實現在吞吐率和響應時間上的性能都要優于基于Linux操作系統的實現方式,在512 KB的塊請求中,達到了180 MB/s的性能優勢,而平均響應時間最好情況下減少了1.6 ms。從第3節的分析可知,主要原因是基于多核網絡處理器異構操作系統的iSCSI發起端軟件架構在處理效率和實時性方面,都與Linux操作系統的實現方式有了改進。
通用的iSCSI發起端實現方式不能充分利用多核網絡處理器的特點。本文提出了一種基于異構操作系統的多核網絡處理器軟件框架,在一顆多核網絡處理器上同時運行通用操作系統和網絡處理操作系統。網絡處理的管理層面和控制層面運行于通用操作系統;數據層面運行于網絡處理操作系統,直接操作底層的處理核心、內存、協處理器等硬件資源,以充分發揮多核網絡處理器的性能。基于多核網絡處理器異構操作系統軟件框架,提出了一種多核網絡處理器iSCSI發起端實現方式,應用程序與iSCSI配置管理工具運行于Linux用戶空間,在Linux內核空間運行iSCSI卸載驅動,保證對上接口不變,實現對應用程序和iSCSI配置管理工具的透明。iSCSI層和TCP/IP協議棧以P-SPL編程模型在網絡處理操作系統實現,實現加速處理。實驗證明,基于多核網絡處理器異構操作系統的iSCSI發起端實現比基于Linux操作系統的iSCSI發起端實現方式有更好的性能。
在本文提出的iSCSI發起端實現方式中,異構操作系統的硬件資源分配和數據層面的子任務劃分與資源分配都是根據經驗值靜態分配的,不能更好地適應業務負載的變化。在后續研究中,將繼續研究異構操作系統硬件資源的動態分配問題,以及數據層面的子任務劃分與資源動態分配問題。
[1] Satran J, Meth K, S apuntzakis C, et al. Internet Small Computer Systems Interface(iSCSI)[S]. RFC 3720, 2004.
[2] 韓紅根. 基于iSCSI的存儲系統設計與實現[D]. 武漢:華中科技大學, 2012.
[3] Zhou Jingli, Xu Feng, YU Shengsheng. Implementation and Performance Analysis of iSCSI Based Storage Systems Under Linux[J]. Computer Engineering & Science, 2004, 26(6): 1-3, 6.
[4] 任 勁, 謝長生, 李 為. iSCSI協議及其Linux下的實現[J].小型微型計算機系統, 2003, 24(7): 1183-1186.
[5] 蔣漢平. 面向多核網絡處理器軟件框架的研究與實現[D].武漢: 武漢理工大學, 2008.
[6] 郭秀巖. 面向多核的多層次實時網絡數據流調度技術研究[D]. 合肥: 中國科學技術大學, 2011.
[7] Wolf T, Weng Ning. Runtime Support for Multicore Packet Processing Systems[J]. IEEE Network, 2007, 21(4): 29-37.
[8] Zha Qi wen, W u Zhang, Zeng Xu ewen, et al. A High Performance Multi-core Network Processing System[C]//Proc. of the 3rd International Conference on Computer Technology and Development. Chengdu, China: [s. n.], 2012.
[9] Verdú J, Nemirovsky M, Valero M. Multilayer Processing——An Execution Model for Parallel Stateful Packet Processing[C]//Proc. of the 4th ACM/IEEE Sym posium on Architectures for Networking and Communications Systems. [S. l.]: ACM Press, 2008: 79-88.
[10] Jiang Haiya ng, Yang Jianhu a, Xie Gaogang. Ex ploring and Enhancing the Performance of Parallel ID S on Multi-core Processors[C]//Proc. of the 10th I nternational Conference on Trust, Security and Privacy in Computing and Communications. [S. l.]: IEEE Press, 2011: 673-680.
[11] 郭秀巖, 張 武, 王勁林, 等. 用于視頻點播系統中實時數據流發送的多核結構[J]. 小型微型計算機系統, 2011, 32(7): 1310-1316.
[12] 賀鵬程, 王勁林, 鄧浩江, 等. 多核分組處理系統軟件結構研究[J]. 微計算機應用, 2010, 31(9): 12-20.
[13] 羅 剛. i SCSI協議研究及其性能優化[D]. 武漢: 中南民族大學, 2009.
[14] Akagic A, Amano H. Performance Analysis of Fully-adaptable CRC Accelerators on an FP GA[C]//Proc. of the 22nd International Co nference o n Field Programmable Lo gic an d Applications. [S. l.]: IEEE Press, 2012: 575-578.
[15] 譚志虎, 萬繼光. i SCSI性能優化方法綜述[J]. 計算機科學, 2009, 36(1): 16-18.
[16] Chiang Meiling, Li Yunchen. LyraNET: A Zero-copy TCP/IP Protocol Stack for Embedded Systems[C]//Proc. of the 1 1th IEEE International C onference on Embedded and Real-time Computing Syste ms and Applicat ions. [S. l.]: IE EE Press, 2005: 123-128.
編輯 顧逸斐
Research and Implementation of iSCSI Initiator on Multi-core Network Processor
ZHA Qi-wen1,2, ZHANG Wu1, ZENG Xue-wen1, SONG Yi1,2
(1. National Network New Media Engineering Research Center, Institute of Acoustics, Chinese Academy of Sciences, Beijing 100190, China; 2. University of Chinese Academy of Sciences, Beijing 100049, China)
For the performance and scalability problems of the existi ng implementation of Internet Small Computer System Interface(iSCSI) initiator, this paper studies the network processing software framework of multi-core network processor and proposes the multi-core network processor heterogeneous operating system soft ware framework. Based on the pro posed multi-core network processor heterogeneous operating system software framework and P-SPL data plane programming model, this paper proposes an implementation of iSCSI initiator. Experimental result proves that the implementation based on the multi-core network processor heterogeneous ope rating system software framework has better performance on throughput and response time than the implementation based on Linux. In 6 GE ports experiment environment, the n ew implementation gets a maximum of 180 MB/s re ad and write throughput improvement and 1.6 ms of response time reduce.
Internet Small Computer System Interface(iSCSI); iSCSI initiator; multi-core network processor; Linux operating system; TCP/IP protocol stack; Network Processing Operating System(NPOS)
10.3969/j.issn.1000-3428.2014.05.063
國家“863”計劃基金資助重大項目“融合網絡業務體系的開發”(2011AA01A102);國家科技支撐計劃基金資助項目“數字家庭服務媒體設備集成技術研究”(2011BAH16B03);中國科學院戰略性先導科技專項基金資助項目“未來網絡架構研究與邊緣設備研制”(XDA06010302)。
查奇文(1986-),男,博士研究生,主研發向:網絡新媒體技術,高性能嵌入式服務器;張 武,副研究員、博士;曾學文,研究員、博士生導師;宋 毅,博士研究生。
2013-04-16
2013-05-10E-mail:zhaqw@dsp.ac.cn
1000-3428(2014)05-0304-05
A
TP309