APP下载

多核网络处理器iSCSI发起端研究与实现

2014-08-05查奇文曾学文

计算机工程 2014年5期
关键词:数据流异构处理器

查奇文,张 武,曾学文,宋 毅

(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协议栈;网络处理操作系统

1 概述

互联网小型计算机系统接口(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 已有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 i SCSI发起端研究与实现

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)数据包数据层面的处理在网络处理操作系统上进行,实时性高,处理延时低。

4 实验与分析

基于本文提出的多核网络处理器异构操作系统的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操作系统的实现方式有了改进。

5 结束语

通用的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

猜你喜欢

数据流异构处理器
试论同课异构之“同”与“异”
汽车维修数据流基础(下)
一种提高TCP与UDP数据流公平性的拥塞控制机制
异构醇醚在超浓缩洗衣液中的应用探索
overlay SDN实现异构兼容的关键技术
LTE异构网技术与组网研究
基于数据流聚类的多目标跟踪算法
Imagination的ClearCallTM VoIP应用现可支持Cavium的OCTEON® Ⅲ多核处理器
北医三院 数据流疏通就诊量
ADI推出新一代SigmaDSP处理器