iSCSI封包的数据解析方法

文档序号:7717328阅读:449来源:国知局
专利名称:iSCSI封包的数据解析方法
技术领域
本发明公开了一种数据解析方法,特别有关于一种iSCSI封包的数据解析方法。
背景技术
因特网小型计算机系统接口(internet Small Computer Systems hterface,简 称iSCSI)为工程任务编组(Internet Engineering Task Force, IETF)提出的通信协议 标准。iSCSI通过TCP/TP通信协议连接网络的多台计算机主机,以串联多个分散于因特网 的储存设备成为虚拟的网络储存设备。使用者存取此网络储存设备,就如同存取本机硬盘 装置。相较于传统小型计算机系统接口(Small Computer Systems hterface,简称SCSI) 及冗余磁盘阵列(Redundant Array of Independent Disks, RAID)技术,iSCSI 技术兼具 SCSI的高速传输能力,却又不受限于储存设备的扩充/备分能力,可无限制扩充虚拟储存 设备的容量。此虚拟储存设备称为储存局域网络(Storage Area Network,SAN),主要由发 起端anitiator)及目标端(target)构成。发起端传送存取请求与目标端建立通话联机 (Session)0在因特网小型计算机系统接口协议中定义了很多种封装数据的格式,其中大部是 用于协议管理和错误恢复使用。但真正涉及到因特网小型计算机系统接口的数据传输只有 SCSI 指令负载单元(SCSI CMD PDU)、负载单元的数据(Data In PDU)、Data Out PDU, R2T PDU的格式。所以为能加速因特网小型计算机系统接口的存取速度,可以对目标端所传送的 负载单元的数据着手,藉以加速发起端的存取。但是经过每一层的封包解析需要耗费许多 的时间。因此如何加快封包的解析处理,将有效的提高整体的存取效率。

发明内容
鉴于以上的问题,本发明的主要目的在于提供一种iSCSI封包的数据解析方法, 用于加速解析iSCSI封包所传递的异步讯息封包。为达上述目的,本发明公开了一种iSCSI封包的数据解析方法,其用以加速解析 于一 iSCSI封包所传递的一异步讯息封包,该数据解析方法包括以下步骤建立一发起端与一目标端的通信,并将该异步讯息封包发送至该发起端;通过该发起端的一区段重组引擎将该异步讯号封包解析出一发起端任务标签;由该发起端任务标签中提取出该发起端的一主机缓冲地址信息;以及发出一直接存取内存命令,用以将该iSCSI封包的一负载内容直接写入相应该主 机缓冲地址信息的内存地址。于建立该发起端与该目标端的通信步骤前还包括由该目标端在该发起端任务标 签中记录一区段重组信息,该区段重组信息具有一区块数量值与一区块容量值。该发起端任务标签为32位长度,将该发起端任务标签的0 15位记录一工作种 类(task)且该发起端任务标签的16 31位记录该区块数量值与该区块容量值。该发起端任务标签为32位长度,将该发起端任务标签的0 15位记录一 task种类且该发起端任务标签的16 31位记录该区块数量值与一区块位置偏移量。将该发起端任务标签记录于该异步讯息封包的标头中。本发明提供了一种iSCSI封包的数据解析方法。本发明对目标端所传送的数据封 包的内容进行调整,藉以加速整体的存取速度。有关本发明的特征与实作,兹配合图示作最佳实施例详细说明如下。


图1为本发明的架构示意图;图2为本发明的运作流程示意图;图3为本发明的发起端任务标签的封包格式示意图;图4为本发明的解析运作示意图。其中,附图标记发起端110主机总线配接器111目标端120储存设备130
具体实施例方式为能加速iSCSI的封包解析处理,因此本发明从发起端来看当进行读取操作时, 真正从目标端携带数据的只有负载单元中的数据(Data In PDU)。所以如果想对发起端进 行读取操作的加速,则需要对负载单元中的数据进行修改。请参考图1所示,其为本发明的 架构示意图。在因特网小型计算机接口的网络封包的处理系统包括有发起端110、目标端 120与储存设备130。发起端110用以向目标端120发出存取请求。在发起端110中另包括一主机总线 配接器111 (Host Bus Adapter,简称HBA)。主机总线配接器111的主要作用是用来对TCP/ IP封包与iSCSI封包进行封包解析的动作。储存设备130用以储存目标信息。目标端120 接收来自发起端110的存取请求,目标端120根据存取请求用以存取储存设备130中的目 标信息并将目标信息传送至发起端110。其中,目标端120、发起端110与储存设备130间 系利用因特网相互传递网络封包。请参考图2所示,其为本发明的运作流程示意图。本发明的解析方法包括以下步 骤步骤S210 建立发起端与目标端的通信,并将异步讯息封包(asynchronous message PDU)发送至发起端;步骤S220 通过发起端的区段重组引擎Segment Reassemble Engine)将异步讯 号封包解析出发起端任务标签(Initiator Task Tag,简称ITT);步骤S230 由发起端任务标签中提取出发起端的主机缓冲地址信息;以及步骤S240 发出直接存取内存命令,用以将iSCSI封包的负载内容直接写入相应 主机缓冲地址信息的内存地址。首先,建立发起端110与目标端120的通信(对应步骤S210)。当两端建立通信后,目标端120会发出异步讯息封包发送至发起端110。在本发明中对异步讯息封包的负 载单元的数据(Data In PDU)、发起端110任务标签字段、发起端110与韧体的内存地址传 递方式及硬件对iSCSI协议做出了下述修改,并请同时配合图3。发起端110任务标签具 有32位的字段的封包,可以使用高位的16位来存放SCSI生成区块(SG-Block)中的位置 信息,以便定位地址信息;低位的16位存放task的下标。在目标端120的驱动器(Driver)负责把主机缓冲区(host buffer)地址以讯息 的形式(message)传递给韧体,而讯息的格式定义如下sg_addr0-主机的搜索清单(sg list)的基本地址sg_dma_start -搜索清单的第一区块的索引定位sg_dma_len-搜索清单的连续定位数量sg_cnt-搜索清单中地址长度的总数量Sg_add0中记录搜索清单的起始地址,sg_Cnt标识所有搜索清单的数量。通过 sg_add0把搜索清单的地址传递给韧体。韧体就可以通过直接存取内存(Direct Memory Access, DMA)的方式把这些搜索清单的地址信息放到相应的区块中,使得底层的数据操作 考已从区块中取出相应的SCSI生成信息,用直接存取内存去拿主机上的数据。韧体上的区 块不需由驱动器分配,驱动器只需要知道总共有多少个区块、每个区块的大小与这些区块 的状态。驱动器就可以通过区块当前的使用状态知道下一个命令的搜索清单该占用从第几 个开始的多少个区块,韧体得到这些信息后会进行处理。存放搜索清单的缓冲区应该由驱动器来进行分配,以iSCSi_taSk_Sg_t的形式存 在,先把搜索清单转成下述的结构形式。在本发明的此一实施态样中这个结构是12个字 节,知道搜索清单的个数就可以算出需要多少空间及需要占用韧体上多少个区块。typedef struct iscsi—task—sg—s {—uint32_t addr—high; 一uint32_t addr—low; —uint32_t Ien;} iscsi一task一sg一t;发起端110的区段重组引擎将异步讯号封包解析出发起端110任务标签(对应步 骤S220),在本发明的解析过程通过主机总线配接器111来进行的。请配合图4所述,其为本 发明的解析运作示意图。发起端110任务标签在iSCSI协议中的作用是区分不同的iSCSI 任务(iSCSI Task),本发明用以实现发起端110的任务和收到的iSCSI负载单元(iSCSI PDU)。由发起端110将其填充在iSCSI负载单元的文件头(iSCSI PDU Header)中。接着, 目标端120返回的所有针对该任务的iSCSI负载单元的文件头中都会携带相同的发起端 110任务标签进行标识。所以我们可以在搜寻清单的SCSI生成区块字段中存放SCSI指令 (SCSI CMD)相关地址的位置信息封装进发起端110任务标签。这样当收到目标端120返 回的数据时,就能从发起端110任务标签中直接拿到SCSI生成区块中的位置信息。同时还 要保证通过发起端110任务标签能够找到对应的任务所以可以用两部分来组成发起端110任务标签。如前文所述,发起端Iio任务标签高端的16位来存放SCSI生成区块中的位置 信息,以便定位地址信息;低端的16位存放任务的下标,以便在发起端110的任务池(task pool)中找到对应的任务。换言之,发起端110任务标签的0 15位记录任务种类且发起 端110任务标签的16 31位记录区块数量值与区块容量值。最后,由发起端110发出直接存取内存命令,将iSCSI封包的负载内容直接写入相 应主机缓冲地址信息的内存地址。区段重组引擎从网络卡接收到网络包后进行解析。iSCSI 层只在快速路径(fast path)中处理负载单元的数据。这是因为负载单元的数据才有携带 数据,而其它的负载单元的数据只是进行基本协议检测。所以具体的解析和错误处理动作 都由软件在慢路径(slow path)中完成。当区段重组引擎解析到负载单元的数据时就可以 从发起端110任务标签中提取出SCSI生成区块的位置信息,然后再从相应的SCSI生成区 块中取出主机缓冲区的地址信息,之后就可以针对该地址发送直接存取内存的请求将封包 中的数据写到主机(意即发起端110)缓冲区中(对应步骤S230 步骤S240)。本发明提供了一种iSCSI封包的数据解析方法。本发明对目标端120所传送的数 据封包的内容进行调整,藉以加速整体的存取速度。
权利要求
1.一种iSCSI封包的数据解析方法,其用以加速解析于一 iSCSI封包所传递的一异步 讯息封包,其特征在于,该数据解析方法包括以下步骤建立一发起端与一目标端的通信,并将该异步讯息封包发送至该发起端;通过该发起端的一区段重组引擎将该异步讯号封包解析出一发起端任务标签;由该发起端任务标签中提取出该发起端的一主机缓冲地址信息;以及发出一直接存取内存命令,用以将该iSCSI封包的一负载内容直接写入相应该主机缓 冲地址信息的内存地址。
2.如权利要求1所述的iSCSI封包的数据解析方法,其特征在于,于建立该发起端与该 目标端的通信步骤前还包括由该目标端在该发起端任务标签中记录一区段重组信息,该区段重组信息具有一区块 数量值与一区块容量值。
3.如权利要求2所述的iSCSI封包的数据解析方法,其特征在于,该发起端任务标签为 32位长度,将该发起端任务标签的0 15位记录一工作种类(task)且该发起端任务标签 的16 31位记录该区块数量值与该区块容量值。
4.如权利要求2所述的iSCSI封包的数据解析方法,其特征在于,该发起端任务标签为 32位长度,将该发起端任务标签的0 15位记录一 task种类且该发起端任务标签的16 31位记录该区块数量值与一区块位置偏移量。
5.如权利要求1所述的iSCSI封包的数据解析方法,其特征在于,将该发起端任务标签 记录于该异步讯息封包的标头中。
全文摘要
本发明公开了一种iSCSI封包的数据解析方法,用于加速解析iSCSI封包所传递的异步讯息封包。数据解析方法包括下列步骤建立发起端与目标端的通信,并将异步讯息封包发送至发起端;通过发起端的区段重组引擎将异步讯号封包解析出发起端任务标签;由发起端任务标签中提取出发起端的主机缓冲地址信息;发出直接存取内存命令,将iSCSI封包的负载内容直接写入相应主机缓冲地址信息的内存地址。
文档编号H04L12/56GK102055729SQ20091020794
公开日2011年5月11日 申请日期2009年11月2日 优先权日2009年11月2日
发明者朱明胜, 陈玄同 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1