iSCSI系统中的报文长度协商方法、装置和系统的制作方法

文档序号:7661286阅读:229来源:国知局
专利名称:iSCSI系统中的报文长度协商方法、装置和系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种iSCSI系统中的报文长度协商方 法、装置和系统。
背景技术
SCSI ( Small Computer System Interface,小型计算机系统接口 )标准体系 定义了应用主机和外部设备之间读写操作的过程,外部设备包括磁盘、磁带、 光盘、打印机、扫描仪等。SCSI标准体系的参考模型是一个典型的客户端-服务器模型, 在SCSI体系结构中,通常把客户端称为Initiator (发起端), Initiator发送服务请求,如应用主机;把服务器称为Target (目标端),Target 接收、响应服务请求,如外部设备。Initiator和Target之间可以使用不同的物 理连4妻方式来通ifL。iSCSI (Internet SCSI,互联网小型计算机系统接口 )是一种基于TCP (Transmission Control Protocol,传l俞控制十办i义)/IP (Internet Procotol,因特 网协议)的SCSI传输协议,即Initiator和Target利用因特网来传输SCSI命 令和数据。目前,iSCSI协议主要用于应用主机和存储系统的数据传输,典型 应用环境如下图1所示。应用主机集成一个iSCSI Initiator模块,存储系统中集成一个iSCSI Target 模块。客户端把SCSI命令和/或数据封装在iSCSI报文中,通过IP网络发送 给存储系统,存储系统对每个iSCSI报文进行处理,取出其中的数据并写入到 存储介质中。数据传输的过程中iSCSI报文的大小通常是开始协商好的一个固定值,这 个值通常用户都不会去设置,而是使用默认值,每个iSCSI数据才艮文的最大值 通常默认是8192 + 48 ( +8)字节。通常一个以太网报文的大小是1500字节,这时大于该大小的报文都将分
片,所以通常一个iSCSI报文需要做许多分片才能完成,如果一个MTU (Maximum Transmission Unit,最大传输单位)比较'J、的网络路径,那么分片 将更多,分片和组装报文都需要消耗时间来完成,而且分片的一个最大的缺 点是一个分片丟失是整个数据报文都需要重传。对于特殊应用,需要PDU ( Protocol Data Unit,协议数据单元)报文最好 一次就能发送一个10 (Input/Output,输入输出)报文,协议栈逻辑处理简单, 网络部分处理也比较简单,遇到传输错误直接重发这个请求对别的请求的处 理没有影响,当前为了兼顾效率在MTU允许大于1500字节的时候可以考虑 使用。而对于一个局域网内部, 一个IP报文可以达到一个很大值(理论上为 65536字节),因此小的报文也不能完全发挥大MTU报文的网络优势。发明内容本发明提供一种iSCSI系统中的报文长度协商方法、装置和系统,以根据 实现iSCSI系统中报文大小的自动选择报文长度,提高iSCSI系统的处理性能。为达到上述目的,本发明提供一种iSCSI系统中的报文长度协商方法,包 括至少一个本端设备和一个对端设备,包括以下步骤获取网络中的最大输出单位MTU值和输入输出IO报文长度;根据预先的设置以及获取到的所述MTU值和IO报文长度,与对端设备进 行报文长度的协商。其中,所述预先的设置具体包括本端设备与所述对端设备预先协商是 否根据MTU值进行报文长度自适应、和/或是否根据IO报文长度进行报文长 度自适应。其中,只允许根据MTU值进行报文长度自适应时,所述根据预先的设置 以及获取到的所述MTU值和IO报文长度,与对端设备进行报文长度的协商 的步骤具体为协商最大可接收报文长度值为所述MTU值减去报文头部大小。 其中,允许根据MTU值和IO报文长度进行报文长度自适应时,所述根 据预先的设置以及获取到的所述MTU值和IO报文长度,与对端设备进行报
文长度的协商的步骤具体为当所述MTU值小于或等于传输使用的报文的长度时,协商最大可接收报 文长度值为所述MTU值减去报文头部大小;当所述MTU值大于传输使用的报文的长度,且IO报文长度小于或等于 传输使用的报文的长度时时,协商最大可接收报文长度值为所述MTU值减去 4艮文头部大小;当所述MTU值大于传输使用的报文的长度,且IO报文长度大于传输使 用的报文的长度时,协商最大可接收报文长度值为所述MTU值和所述IO报文长度中的较小值减去报文头部大小。其中,所述与对端设备进行报文长度的协商的步骤后,还包括将待发送的报文根据需要按照协商后的报文长度进行分片或压缩发送。 其中,所述将待发送的报文根据需要进行压缩的步骤具体为 在l良文头部添加压缩的标志; 删除报文中的保留字段;对所有的计数域,用16位取代32位进行表示。 其中,所述与对端设备进行报文长度的协商的步骤后,还包括 将接收到的报文根据需要按照协商后的报文长度进行组合和/或解压缩。 本发明还提供一种报文长度协商装置,用于iSCSI系统中的报文长度协 商,包括MTU检测单元,用于检测网络中MTU值的变化,并在监测到MTU值的变 化时,通知处理单元;协商设置单元,用于设置是否根据MTU值进行报文长度自适应、和/或是 否根据IO报文长度进行报文长度自适应;处理单元,用于进行根据网络中MTU的值、IO报文的长度以及所述协商 设置单元的设置,与对端设备进行最大可接收报文长度的协商。其中,所述协商设置单元进一步包括MTU自适应设置子单元,用于设置是否根据MTU值进行报文长度自适应; IO自适应设置子单元,用于设置是否根据IO报文长度进行报文长度自适应。其中,所述处理单元进一步包括第一比较子单元,用于比较网络中的MTU值与一般报文的长度,当一般 报文的长度大于MTU的值时,通知第二比4交子单元,否则通知4艮文长度协商单元;第二比较子单元,用于在所述协商设置单元设置为可以根据IO报文长度 进行报文长度自适应时,比较IO报文长度与MTU值,并将比较结果通知报文 长度协商子单元;报文长度协商子单元,用于根据所述第一比较单元及所述第二比较单元 的比较结果,与对端设备进行最大可接收报文长度的协商。 其中,所述报文协商装置还包括报文发送单元,用于根据所述处理单元与对端设备协商的最大可接收报 文长度,进行报文的发送。其中,所述报文发送单元进一步包括分片子单元,用于根据最大可接收报文长度,将不能一次发送的报文进 行分片处理;压缩子单元,用于将需要发送报文的报文头进行压缩。 其中,所述报文协商装置还包括报文接收单元,用于根据所述处理单元与对端设备协商的最大可接收报 文长度,进行报文的接收。其中,所述4艮文接收单元进一步包括组合子单元,用于根据最大可接收报文长度,将对端设备分片发送的报 文进4于纟且合处理;解压缩子单元,用于将接收到的压缩报文进行解压缩。 本发明还提供一种报文长度协商系统,用于iSCSI系统中的报文长度协 商,包括至少一个Initiator端设备和Target端设备,其特征在于,所述Initiator 端设备和Target端设备根据预先的设置以及获取到的所述MTU值和IO报文
长度,与对端设备进行报文长度的协商。
其中,所述Initiator端设备和Target端设备包括报文长度协商装置,所述 报文协商装置进一步包括MTU检测单元,用于检测网络中MTU值的变化,并在监测到MTU值的变 化时,通知处理单元;协商设置单元,用于设置是否根据MTU值进行报文长度自适应、和/或是 否根据IO报文长度进行报文长度自适应;处理单元,用于进行根据网络中MTU的值、IO报文的长度以及所述协商 设置单元的设置,与对端设备进行最大可接收报文长度的协商。
与现有技术相比,本发明具有以下优点根据网络质量和MTU值来自动选择合适的iSCSI报文长度,使处理的性 能得到适当的提升,不需要进行IP分片和组包的相关处理。


图1是现有技术中iSCSI协议应用环境的示意图;图2是本发明中iSCSI系统中的报文长度协商方法流程图;图3是本发明中iSCSI系统中的报文长度协商方法的另一流程图;图4是本发明中报文长度协商装置的结构示意图。
具体实施例方式
本发明一种iSCSI系统中的报文长度协商方法如图2所示,包括以下步骤 步骤s201 、获取网络中的最大输出单位MTU值以及输入输出IO报文长度; 步骤s202、根据预先设置以及获取到的MTU值和IO报文长度,与对端进 行报文长度的协商。
具体的,在iSCSI发送的request报文中添加两个自定义的KEY-VALUE字 段,分别定为x-h3c_ismtuautosize (根据MTU进行长度自适应)和 x-h3c—isioautosize (根据IO进行长度自适应),其协商值是YES和NO两种。当 x-h3c一ismtuautosize设置为YES的时候,若Initiator或Target发现MTU值'j、于 1500字节的时候则触发重新协商发送报文的长度值,MTU值大于1500字节的 时候需要判断x-h3c—isioautosize协商值,并在x-h3c—isioautosize设置为YES的时 候对IO的长度进行协商。以下首先以Initiator端进行描述。Initiator端监视网络的MTU值,当MTU 值与传输使用的一般报文的大小(1500字节)相等时,不进行任何操作,按 照现有4支术进行才艮文的传递。发现MTU值小于1500字节时,协商出Target和 Initiator的新的MaxRecvDataSegmentLength (最大可孑妻收净艮文长度)值,该值 等于MTU值减去报文头部大小(包括IP报文头部大小、TCP报文头部大小和 iSCSI报文头部大小)。此时仍需要对一般的长度为1500字节的报文进行分片 处理。当MTU值大于1500字节时,若x-h3c一isioautosize协商为YES ,则报文根据 IO报文的大小进行再协商(1)若IO报文的大小大于MTU,则协商最大可接 收报文长度为MTU的值减去报文头部大小,以最大限度的可能传递IO报文, 例如,MTU的值为1600字节,1O报文的大小为1700字节,则协商最大可接收 报文长度为1600字节减去报文头部大小。(2 )若IO报文的大小小于MTU的值, 且IO报文的长度大于1500字节,则将最大可接收报文长度协商为IO报文的大 小减去报文头部大小,例如,MTU的值为1700字节,1O报文的大小为1600字 节,则将最大可接收报文长度协商为IO报文的大小1600字节减去报文头部大 小,这样可以一次传递IO报文以及其他一般的大小为1500字节的报文。(3 ) 若IO报文的大小小于MTU的值,且IO报文的长度小于1500字节,则协商最大 可接收报文长度为MTU的值减去报文头部大小即可,这样可以一次传递IO报 文和其他^J:,例如,MTU的值为1700字节,IC^艮文的大小为1300字节,则 协商最大可接收报文长度为1700字节减去报文头部大小。当MTU值大于1500字节时,若协商x-h3c—isioautosize协商为NO,则保持 MTU的值的设置,协商最大可接收报文长度为MTU的值减去报文头部大小, 使得最大可接收报文长度尽可能的大。上述Initiator端主动向Target端发起的协商,可以通过FFP (Full Future Phase)阶段的text进行
上述描述的Initiator端发起的最大可接收报文长度协商流程如图3所示,包 括如下步骤步骤s301 、 Initiator发现MTU的值发生改变。步骤s302, Initiator和Target初始协商允许根据MTU进行长度自适应时, Initiator判断MTU是否小于1500字节;当MTU小于1500字节时进行步骤s303 , 大于1500字节时进行步骤s304。步骤s303, Initiator发起再协商,根据MTU的值协商出新的最大可接收报 文长度值后结束。该最大可接收报文长度值等于MTU值减去报文头部大小。步骤s304, Initiator判断是否已经协商允许根据IO进行长度自适应,如果 允许则进行步骤s305,否则进行步骤s306。步骤s305,按照MTU值的大小,协商最大可接收报文长度为MTU的值减 去报文头部大小并结束。步骤s306,判断当前业务的IO报文大小是否基本恒定在一个范围内,且 最大的IO大小大于1500字节,如果不是则进行步骤s307;否则进行步骤s308。步骤s307,协商最大可接收报文长度为MTU值减去报文头部大小并结束。步骤s308,判断MTU的值是否小于IC^艮文的最大值,是则进行步骤s309, 否则进行步骤s310。步骤s309,将最大可接收报文长度协商为MTU的值减去报文头部大小并 结束。步骤s310,将最大可接收报文长度协商为IO报文的大小减去报文头部大 小并结束。上述流程是以Initiator端主动向Target端发起的协商为例,描述了 iSCSI系 统中的4良文长度协商方法,在具体实施时,也可以由Target端对MTU进行监控 并主动向Initiator端发起最大可接收报文长度的协商,该协商的过程与上述步 骤s301 ~步骤s310中描述的流程相似,不同之处在于,Target端通过 Asynchronous Message PDU给Initiator进行最大可接收才艮文长度的值协商,协 商出合适的iSCSI报文大小;其具体过程在此不进行重复描述。 最大可接收报文长度变化时,报文不需要进行分片发送,对于不分片的报文,报文需要携带一个新的IP头部(通常20字节),新的TCP头部(通常20 字节)以及一个iSCSI报文的头部(48字节,假设没有digest);而现有技术中 的分片报文需要添加一个新的IP头部20字节。因此比较起来不分片的网络开销 比分片的方式多68字节。为了节约网络资源,这里需要对报文进行压缩处理。需要做分片的报文一般都是携带数据的报文,以DATA IN/DATA OUT报 文据多(一般占一次数据存储总报文量的99%以上),所以只需要考虑DATA IN/DATAOUT的报文头的压缩即可。首先,在第一个字节的标志位中添加一 个才艮文头部是否压缩的标志;其次,去除掉所有reserved域,可以节约18-23 字节;再次,对所有的计数域用16位代替32位(不包括数据长度域),可以 节约8字节,Buffer Offset和Residual Count域不做压缩。综合考虑,压缩后就 节约26-31个字节。整个系统的计数值的范围都从232减小到216 , ITT和TTT 的值也从32位减小到16位,整个系统需要考虑归零的处理,使用循环不进位 计算的处理方式可以解决这个问题,比较大小和范围值时考虑到溢出即可。通过使用本发明提出的iSCSI系统中的报文长度协商方法,由Initiator端和 Target端根据网络质量和MTU值来自动选择合适的iSCSI报文长度,使网络的 处理性能得到提升,不需要进行IP分片和组包的相关处理。本发明还提供了一种iSCSI系统中的装置,用于报文长度的协商。其结构 如图4所示,包括MTU检测单元IO,用于检测网络中MTU值的变化,并在监测到MTU值的 变4b时,通知处理单元30。协商设置单元20,用于设置是否根据MTU值进行报文长度自适应、和/或 是否根据IO报文长度进行报文长度自适应。该单元进一步包括MTU自适应设 置子单元21以及IO自适应设置子单元22,单元的设置值可以为Yes或No,表示 可以进行自适应或不可进行自适应。处理单元30,用于进行根据网络中MTU的值、IO报文的长度以及协商设 置单元20的设置,与对端进行最大可接收报文长度的协商。其中,其进一步 包括第一比较子单元31,用于比较网络中的MTU值与传输使用的一般报文
的长度,当一般报文的长度大于MTU的值时,通知第二比较子单元32,否则 通知报文长度协商单元33;第二比较子单元32,用于在协商设置单元20设置 为可以根据IO报文长度进行报文长度自适应时,比较IO报文长度与MTU值, 并将比较结果通知报文长度协商子单元33;报文长度协商子单元33,用于根 据第一比较单元31及第二比较单元32的比较结果,与对端进行最大可接收报 文长度的协商。该装置还包括报文发送单元40,用于根据处理单元30与对端协商的最大可接收报文长 度,进行报文的发送。其进一步包括分片子单元41,用于根据最大可接收 报文长度,将不能一次发送的报文进行分片处理;压缩子单元42,用于将需 要发送报文的报文头进行压缩。该装置还包括报文接收单元50,用于根据处理单元30与对端协商的最大可接收报文长 度,进行报文的接收。其进一步包括组合子单元51,用于根据最大可接收 报文长度,将对端分片发送的报文进行组合处理;解压缩子单元52,用于将 接收到的压缩报文进行解压缩。本发明还提供了一种iSCSI系统中的系统,包括Initiator端和Target端,用 于报文长度的协商,其中Initiator端和Target端分别具有图4所示的用于报文长 度协商的装置,对于该装置的结构,在此不进行重复描述。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件, 但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案该获取机软件产品存储在一个存储介质中,包括若干指令用以使得一台 iSCSCI系统中的设备执行本发明各个实施例所述的方法。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种iSCSI系统中的报文长度协商方法,包括至少一个本端设备和一个对端设备,其特征在于,包括如下步骤获取网络中的最大输出单位MTU值和输入输出IO报文长度;根据预先的设置以及获取到的所述MTU值和IO报文长度,与对端设备进行报文长度的协商。
2、 如权利要求1所述iSCSI系统中的报文长度协商方法,其特征在于, 所述预先的设置具体包括本端设备与所述对端设备预先协商是否根据MTU 值进行报文长度自适应、和/或是否根据IO报文长度进行报文长度自适应。
3、 如权利要求2所述iSCSI系统中的报文长度协商方法,其特征在于, 只允许根据MTU值进行报文长度自适应时,所述根据预先的设置以及获取到 的所述MTU值和IO报文长度,与对端设备进行报文长度的协商的步骤具体 为协商最大可接收报文长度值为所述MTU值减去报文头部大小。
4、 如权利要求2所述iSCSI系统中的报文长度协商方法,其特征在于,置以及获取到的所述MTU值和IO报文长度,与对端设备进行报文长度的协 商的步骤具体为当所述MTU值小于或等于传输使用的报文的长度时,协商最大可接收报 文长度值为所述MTU值减去报文头部大小;当所述MTU值大于传输使用的报文的长度,且IO报文长度小于或等于 传输使用的报文的长度时时,协商最大可接收报文长度值为所述MTU值减去 报文头部大小;当所述MTU值大于传输使用的报文的长度,且IO报文长度大于传输使 用的报文的长度时,协商最大可接收报文长度值为所述MTU值和所述IO报 文长度中的较小值减去报文头部大小。
5、 如权利要求1所述iSCSI系统中的报文长度协商方法,其特征在于, 所述与对端设备进行报文长度的协商的步骤后,还包括将待发送的报文根据需要按照协商后的报文长度进行分片或压缩发送。
6、 如权利要求5所述iSCSI系统中的报文长度协商方法,其特征在于, 所述将待发送的报文根据需要进行压缩的步骤具体为在才艮文头部添加压缩的标志; 删除报文中的保留字段;对所有的计数域,用16位取代32位进行表示。
7、 如权利要求1所述iSCSI系统中的报文长度协商方法,其特征在于, 所述与对端设备进行报文长度的协商的步骤后,还包括将接收到的报文根据需要按照协商后的报文长度进行组合和/或解压缩。
8、 一种报文长度协商装置,用于iSCSI系统中的报文长度协商,其特征 在于,包括MTU检测单元,用于检测网络中MTU值的变化,并在监测到MTU值的变 化时,通知处理单元;协商设置单元,用于设置是否根据MTU值进行报文长度自适应、和/或是 否根据IO报文长度进行报文长度自适应;处理单元,用于进行根据网络中MTU的值、IO报文的长度以及所述协商 设置单元的设置,与对端设备进行最大可接收报文长度的协商。
9、 如权利要求8所述报文长度协商装置,其特征在于,所述协商设置单 元进一步包括MTU自适应设置子单元,用于设置是否根据MTU值进行报文长度自适应;IO自适应设置子单元,用于设置是否根据IO报文长度进行报文长度自适应。
10、 如权利要求8所述报文长度协商装置,其特征在于,所述处理单元进 一步包括第一比较子单元,用于比较网络中的MTU值与一般报文的长度,当一般 报文的长度大于MTU的值时,通知第二比较子单元,否则通知报文长度协商 单元;第二比较子单元,用于在所述协商设置单元设置为可以根据IO报文长度进行报文长度自适应时,比较IO报文长度与MTU值,并将比较结果通知报文 长度协商子单元;报文长度协商子单元,用于根据所述第一比较单元及所述第二比较单元 的比较结果,与对端设备进行最大可接收报文长度的协商。
11、 如权利要求8所述报文长度协商装置,其特征在于,所述报文协商装 置还包括报文发送单元,用于根据所述处理单元与对端设备协商的最大可接收报 文长度,进行报文的发送。
12、 如权利要求8所述报文长度协商装置,其特征在于,所述报文发送单 元进一步包括分片子单元,用于根据最大可接收报文长度,将不能一次发送的报文进 行分片处理;压缩子单元,用于将需要发送报文的报文头进行压缩。
13、 如权利要求8所述报文长度协商装置,其特征在于,所述报文协商装 置还包括报文接收单元,用于根据所述处理单元与对端设备协商的最大可接收报 文长度,进行报文的接收。
14、 如权利要求13所述报文长度协商装置,其特征在于,所述报文接收 单元进一步包括组合子单元,用于根据最大可接收报文长度,将对端设备分片发送的报 文进行组合处理;解压缩子单元,用于将接收到的压缩报文进行解压缩。
15、 一种报文长度协商系统,用于iSCSI系统中的报文长度协商,包括至 少一个Initiator端设备和Target端设备,其特征在于,所述Initiator端设备和 Target端设备根据预先的设置以及获取到的所述MTU值和IO报文长度,与 对端设备进行报文长度的协商。
16、 如权利要求15所述报文长度协商系统,其特征在于,所述Initiator 端设备和Target端设备包括报文长度协商装置,所述报文协商装置进一步包括MTU检测单元,用于检测网络中MTU值的变化,并在监测到MTU值的变 化时,通知处理单元;协商设置单元,用于设置是否根据MTU值进行报文长度自适应、和/或是 否根据IO报文长度进行报文长度自适应;处理单元,用于进行根据网络中MTU的值、IO报文的长度以及所述协商 设置单元的设置,与对端设备进行最大可接收报文长度的协商。
全文摘要
本发明公开了一种iSCSI系统中的报文长度协商方法,包括如下步骤获取网络中的最大输出单位MTU值以及输入输出IO报文长度;根据预先的设置以及获取到的所述MTU值和IO报文长度,与对端进行报文长度的协商。本发明还提供了一种iSCSI系统中的报文长度协商装置和系统。通过使用本发明,由Initiator端和Target端根据网络质量和MTU值来自动选择合适的iSCSI报文长度,使网络的处理性能得到提升,不需要进行IP分片和组包的相关处理。
文档编号H04L12/56GK101132412SQ20071015167
公开日2008年2月27日 申请日期2007年9月26日 优先权日2007年9月26日
发明者景冬生 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1