CN102291408B - 对iSCSI协议报文的处理方法及装置 - Google Patents

对iSCSI协议报文的处理方法及装置 Download PDF

Info

Publication number
CN102291408B
CN102291408B CN201110233317.6A CN201110233317A CN102291408B CN 102291408 B CN102291408 B CN 102291408B CN 201110233317 A CN201110233317 A CN 201110233317A CN 102291408 B CN102291408 B CN 102291408B
Authority
CN
China
Prior art keywords
verification
pdu
calculated value
protocol massages
iscsi protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110233317.6A
Other languages
English (en)
Other versions
CN102291408A (zh
Inventor
刘洋
杨成勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN201110233317.6A priority Critical patent/CN102291408B/zh
Publication of CN102291408A publication Critical patent/CN102291408A/zh
Application granted granted Critical
Publication of CN102291408B publication Critical patent/CN102291408B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明实施例提供一种对iSCSI协议报文的处理方法及装置,包括:接收因特网小型计算机系统接口iSCSI协议报文;对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取iSCSI协议报文的每个PDU的第一校验计算值的偏移量,所述第一校验计算值是疑似正确的校验计算值;对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;将所述校验计算位置与所述第一校验计算值的偏移量进行匹配,如匹配,则确定所述iSCSI协议报文的PDU传输正确。本发明实施例首先获取第一校验计算值的偏移量,然后对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,可以简化对iSCSI协议报文的PDU校验计算的控制,降低硬件设计的复杂度。

Description

对iSCSI协议报文的处理方法及装置
技术领域
本发明涉及数据存储技术,特别涉及一种对iSCSI协议报文的处理方法及装置。
背景技术
因特网小型计算机系统接口(Internet Small Computer System Interface,iSCSI)通过Internet的传输控制协议(Transmission Control Protocol,TCP)/互联网协议(Internet Protocol,IP来传输SCSI的命令和数据,是一种广泛应用的存储区域网技术。iSCSI可以利用非常成熟的网络技术和相对廉价、广泛铺设的以太网线路来快速构建物美价廉的存储网络,并且其性能随着以太网带宽的提高而提高,具备了校验计算机网络良好的可扩展性,可以实现远程数据复制和灾难恢复。
iSCSI的协议数据单元(Protocol Data Unit,PDU)一般比较大,在经过TCP/IP进行发送时,由于受线路最大传输单元(Maximum TransmissionUnit,,MTU)的限制,往往需要将PDU拆分为多个TCP片段(Segment)进行发送,为了保障iSCSI命令和数据的可靠传输,iSCSI协议提供了一种可选的保护机制,即对iSCSI协议报文的PDU的头字段(Header Segment)和数据字段(Data Segment)进行校验计算,分别称为头摘要(Header Digest)和数据摘要(Data Digest)。
循环冗余校验(Cyclical Redundancy Check,CRC)的校验计算是重复而固定的运算,如果让主机CPU来对所有iSCSI协议报文的PDU进行CRC校验计算,需要耗费大量的CPU资源和处理时间,因此可以用具有iSCSI校验计算功能的芯片来进行CRC的校验计算,在发送iSCSI协议报文的PDU时,可以立即给具有iSCSI校验计算功能的芯片提供足够的信息,例如同步指示PDU的头开始、头长度、数据开始、数据长度,从而进行CRC的生成。在iSCSI协议报文的PDU接收时,需要对所有iSCSI协议报文的PDU进行解析,带来了一定的复杂度和处理上的延时。并且,如果发送端将多个iSCSI协议报文的PDU附加在一起发送时,解析就变得更为复杂。
发明内容
针对现有技术的上述缺陷,本发明实施例提供一种对iSCSI协议报文处理方法及装置,以便于降低具有iSCSI校验计算功能的芯片设计的复杂度;
本发明实施例提供了一种对iSCSI协议报文处理方法,包括:
接收因特网小型计算机系统接口iSCSI协议报文;
对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取iSCSI协议报文的每个PDU的第一校验计算值的偏移量,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;
将所述校验计算位置与所述第一校验计算值的偏移量进行匹配,如匹配,则确定所述iSCSI协议报文的PDU传输正确。
本发明实施例提供了一种对iSCSI协议报文处理装置,包括:
接收模块,用于接收数据流中的因特网小型计算机系统接口iSCSI协议报文;
校验计算模块,用于对接收到的每个iSCSI协议报文的协议数据单元PDU进行校验计算,以获取所述第一校验计算值的偏移量,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;;
解析模块,对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;
匹配处理模块,将所述校验计算位置与第一校验计算值的偏移量进行匹配,如果所述匹配结果为正确,则确定所述iSCSI协议报文传输正确。
本发明实施例的iSCSI协议报文的处理方法和装置,首先获取iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值的偏移量为疑似正确的校验计算值的位置,然后对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取到正确的校验计算位置,通过上述操作,仅对有可能正确的校验计算位置进行解析,可以避免对所有的iSCSI协议报文的PDU进行直接解析,可以简化对iSCSI协议报文的PDU的校验计算的控制,降低具有iSCSI校验计算功能的芯片设计的复杂度、较少具有iSCSI校验计算功能的芯片资源,减少处理延时。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的iSCSI协议报文的处理方法流程示意图;
图2为本发明一实施例提供的iSCSI协议报文的处理装置的结构示意图;
图3为本发明一实施例提供的iSCSI协议报文的处理装置的结构示意图;
图4为本发明一实施例提供的iSCSI协议报文的处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有的其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的对iSCSI协议报文的处理方法的流程示意图,如图1所示,本实施例的对iSCSI协议报文处理方法包括:
101、接收iSCSI协议报文;
在本实施例中,需要接收数据流中的iSCSI协议报文,首先生成校验计算模块的初始值控制信号、校验计算模块的重启信号,在确定所述iSCSI协议报文携带有数据段时,在iSCSI协议报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的PDU的头部。
具体的,当主机应用程序发出数据读写请求后,操作系统会生成相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成iSCSI消息包并通过TCP/IP协议传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应消息,经过设备侧iSCSI target层时被封装成iSCSI响应PDU,通过TCP/IP网络传送给主机的iSCSI initiator层,iSCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。
可选的,设备侧接收对端发送的iSCSI协议报文,为了保障iSCSI协议报文的可靠传输,需要对iSCSI协议报文的PDU的头字段或数据字段进行校验计算,校验计算的对象分别为PDU的头摘要Header Digest或数据摘要DataDigest。
表一示出了iSCSI协议报文的PDU的报文格式,其中,基本头字段BHS包含了PDU的基本信息,BHS之后是附加头字段AHSTotalAHSLength;
表一:iSCSI协议报文的PDU的格式
其中,BHS和AHS共同构成了PDU的头字段,头字段之后的PDU的头摘要Header Digest是对头字段的校验计算结果;数据字段之后的数据摘要Data Digest是对数据字段的校验计算结果。
可选的,本实施例中,首先,根据iSCSI协议处理结果进行系统复位,如果有数据要递交给iSCSI层,则产生内部控制信号,生成待发送的iSCSI协议报文,进行iSCSI协议报文的PDU的校验计算。在iSCSI协议报文的数据段(DataSegment)开始处插入一个PDU的头部(DATA HEADER),PDU的头部之后插入一个用于对PDU的头部进行校验计算、以在接收端保证所述PDU的头部正确性的PDU的头摘要Header Digest,最后,再输出处理后的含有PDU的头部和PDU的头摘要的ISCSI协议报文。
102、对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取iSCSI协议报文的每个PDU的第一校验计算值的偏移量,所述第一校验计算值的偏移量是疑似正确的校验计算值的位置;
本实施例中,对接收到的iSCSI协议报文的PDU进行校验计算,具体为循环冗余校验计算;
其中,需要说明的是,获取第一校验计算值的偏移量的同时,可选的,需要获取所述第一校验计算值,将所述第一校验计算值附加在PDU的头字段的摘要中或附加在PDU的数据字段的摘要中。
需要说明的是,所述第一校验计算值的偏移量,在校验计算的过程中,是从一个PDU的起始边界开始,顺序进行统计的。
可选的,所述对接收到的iSCSI协议报文的PDU进行校验计算,可以是在所述PDU的头摘要对所述PDU的头部进行的校验计算,也可以是在所述PDU的数据摘要对iSCSI协议报文的数据字段进行校验计算,以获取到的第一校验计算值为初步确定为正确的校验计算值的位置;在校验计算的过程中,首先并不区分第一校验计算值的位置是PDU的头部的校验计算位置,或者是PDU数据的校验计算位置,只要当对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算所获取的校验计算值与预期的魔方数相等时,则确定所述校验计算值为第一校验计算值,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;输出该第一校验计算值相对于起始地址的偏移量,复位第一校验计算值为初始值,重启所述校验计算,重复上述的校验计算操作,直到获取数据流中所有的iSCSI协议报文的PDU第一校验计算值的偏移量。
在本实施例中,所述执行主体可选的,是具有iSCSI校验计算功能的芯片是;具有iSCSI校验计算功能的芯片在对接收到的iSCSI协议报文的PDU进行校验计算中,并不需要解析PDU中头字段的校验计算位置或者PDU中数据字段的校验计算位置,只要第一校验计算值与预期的魔方数相等时,具有iSCSI校验计算功能的芯片则初步确定该第一校验计算值所对应的位置为正确的校验计算值所对应的偏移量,需要说明的是第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值,该第一校验计算值所对应的偏移量为疑似正确的校验计算值所对应的位置。
可选的,本实施例中,所述预期的魔方数可以设置为0x1c2d19ed,当然在这里并不作为限制,也可以根据实际需要设定为其他的自定义值,如果所述校验计算值与预期的魔方数相等,则表明找到了第一校验计算值所对应的位置,输出该第一校验计算值相对应于该PDU的起始地址的偏移量,如果输入数据有效,对接收到的iSCSI协议报文的PDU进行校验计算时,还需要进行字节的起始偏移计数。
此时,第一校验计算值的初始值设定为0xffffffff,循环执行下一次的校验计算,偏移量计数器继续保持计数,直到对整个iSCSI协议报文序列校验计算结束,或者是iSCSI协议报文序列中的部分iSCSI协议报文校验计算结束,从而找到iSCSI协议报文序列中所有的第一校验计算值的偏移量,或者是找到iSCSI协议报文序列中的部分iSCSI协议报文的第一校验计算值的偏移量。
本实施例中,对接收到的iSCSI协议报文的PDU进行校验计算还可以包括步骤1021:
可选的,所述具有iSCSI校验计算功能的芯片可以是在实现TCP功能的TOE网卡上添加至少一个iSCSI的摘要卸载引擎,从而对接收到的iSCSI协议报文的PDU进行校验计算,以获取第一校验计算值;
103、对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;其中,所述对PDU的基本头字段进行解析,获取校验计算位置,包括:
可选的,在本发明实施例中,如果解析到所述PDU的头摘要,对PDU的基本头字段中的附加段总长度字段进行解析,获取PDU的头的校验计算位置,所述校验计算位置为头摘要位置;如果解析到所述PDU的数据摘要,对PDU的基本头字段中的数据字段长度进行解析,获取数据的校验计算位置,所述校验计算位置为数据摘要位置。
在解析PDU时,是按照数据流中的协议报文的PDU的顺序进行解析的,所以获知到PDU的头的校验计算位置和数据的校验计算位置后,可以确定出该PDU的头的校验计算位置和数据的校验计算位置需要与哪一个所述第一校验计算值的偏移量进行匹配;
具体的,在本发明实施例中,iSCSI协议报文的PDU的数据位宽可以为一个DW(即32比特);如表二所示,是iSCSI协议报文基本头字段BHS的格式。
表二:BHS的格式介绍
Figure BDA0000083350810000081
在本发明实施例中,其中,BHS的长度是固定的,为48Byte(字节),其中包括12个DW(4字节)。
数据段开始标识(Initiator Task Tag),用于指示所述iSCSI协议报文数据段开始;
数据段开始标识(Tag)可由用户根据实际应用需要设置为任何值,只要保证不是有效的iSCSI协议报文的头4个字节就可以,例如设定数据段开始标识=0xffffffff;
数据段长度指示(Data Segment Length),用于表示所述iSCSI协议报文中数据段长度;
数据段长度指示(Data Segment Length)和数据段开始标识(Tag)的插入位置也可由用户根据个人习惯灵活设定,例如将数据段开始标识(Tag)置于数据段长度指示(Data Segment Length)之前、或者将数据段长度指示(DataSegment Length)置于数据段开始标识(Tag)之前。
表三是对步骤103的解析操作的说明:
Figure BDA0000083350810000091
由于iSCSI协议报文的PDU总长度是4字节的整数倍,因此要根据需要在Data Segment中实际的有效数据后面填充1~3个Byte的0来凑成DW的整数倍;Data Segment开始后的[DataSegmentLength/4]取上限值的下一个DW的位置就是Data Digest的位置。
本发明实施例中,表三中的Total AHS Length字段指示的是AHS字段的长度,以DW(双字,4字节)为单位,BHS中的Data Segment Length指的是PDU中是否含有数据字段Data Segment;
如果Data Segment Length=0,则表明头字段后面没有Data Segment和Data Digest;
如果Data Segment Length非零则表示的是头字段后面Data Segment的有效长度(不包含填充的Byte数),以Byte为单位;
例如,如果一个PDU的BHS中,TotalAHSLength=0,即不含有AHS字段,如果支持digest,则在BHS之后就应该是Header Digest的位置,也即PDU开始的第13个DW就是Header Digest。
例如,在另一种情况下,一个PDU的BHS中,TotalAHSLength=2,如果支持digest,则在AHS之后就应该是Header Digest的位置,BHS+AHS的总长度为12+2=14DW,也即PDU开始的第15个DW就是Header Digest。
可选的,本实施例中,在另一种情况下,如果一个PDU的BHS中,DataSegmentLength=16,[16/4]=4,则Data Segment字段后的第5个DW就是Data Digest。
可选的,本实施例中,需要将所述校验计算位置与第一校验计算值的偏移量进行匹配,如匹配,不对PDU的摘要进行校验计算;如不匹配,对PDU的摘要进行校验计算,以获取第二校验计算值。
104、将所述校验计算位置与所述第一校验计算值的偏移量进行匹配,如匹配,则确定所述iSCSI协议报文的PDU传输正确。
如匹配,则表明iSCSI协议报文的PDU在传输过程中没有发生误码,不需要进行PDU的校验计算;反之,确定出第二校验计算值错误,iSCSI协议报文的PDU在传输过程中发生了误码,或者是在校验计算获取第一校验计算值时,恰好算得了一个校验计算值等于魔方数,但该第一校验计算值实际的位置并非是PDU的校验计算位置,需要进一步对PDU的摘要进行校验计算。
可选的,在本发明实施例中,当所述校验计算位置与第一校验计算值的偏移量不匹配时,则执行步骤1041、对所述PDU进行第二校验计算,获取第二校验计算值,判断所述第二校验计算值是否正确;
所述判断第二校验计算值是否正确,是将第一校验计算值和第二校验计算值进行比较,如相同,则确定所述第二校验计算值正确。
如所述第二校验计算值错误,则执行步骤1042,
1043、对所述PDU进行错误恢复处理。
可选的,在本实施例中,具体的,可以进一步对PDU的摘要进行校验计算,获取第二校验计算值,如果确定出第二校验计算值错误,则说明PDU在传输过程中发生了误码,需要对PDU进行错误恢复处理。
可选的,在本发明实施例中,对PDU进行错误恢复处理,可以通过发送对接收到的PDU的状态响应消息,以通知发送端进行PDU的重传操作,或者是接收端直接进行PDU的错误修复操作。
本发明实施例的对iSCSI协议报文的处理方法,首先获取iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值的偏移量为疑似正确的校验计算位置,然后对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取到正确的校验计算位置,通过上述操作,仅对有可能正确的校验计算位置进行解析,可以避免对所有的iSCSI协议报文的PDU进行直接解析,可以简化对iSCSI协议报文的PDU的校验计算的控制偏移量降低具有iSCSI校验计算功能的芯片设计的复杂度、较少具有iSCSI校验计算功能的芯片资源,减少处理延时。
图2为本发明实施例提供的一种对iSCSI协议报文的处理装置示意图,
在本发明实施例中,iSCSI协议报文处理装置,包括:
接收模块10,用于接收iSCSI协议报文;
第一校验计算模块20,用于对接收到的每个iSCSI协议报文的协议数据单元PDU进行校验计算,以获取所述第一校验计算值的偏移量,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;
需要说明的是,第一校验计算模块20可以是具有iSCSI校验计算功能的芯片,在获取第一校验计算值的偏移量的同时,第一校验计算模块20同时也获取到所述第一校验计算值,将所述第一校验计算值附加在PDU的头字段的摘要中,或附加在PDU的数据字段的摘要中。
解析模块30,对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;
在本发明实施例中,可选的,如果解析模块30解析到所述PDU的头摘要,对PDU的基本头字段中的附加段总长度字段进行解析,获取PDU的头的校验计算位置,所述校验计算位置为头摘要位置;如果解析模块30解析到所述PDU的数据摘要,对PDU的基本头字段中的数据字段长度进行解析,获取数据的校验计算位置,所述校验计算位置为数据摘要位置。
匹配处理模块40,将所述校验计算位置与第一校验计算值的偏移量进行匹配,如果所述匹配结果为正确,则确定所述iSCSI协议报文传输正确。
本发明实施例的iSCSI协议报文的处理装置,首先获取iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值的偏移量为疑似正确的校验计算位置,然后对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取到正确的校验计算位置,通过上述操作,仅对有可能正确的校验计算位置进行解析,可以避免对所有的iSCSI协议报文的PDU进行直接解析,可以简化对iSCSI协议报文的PDU的校验计算的控制偏移量降低具有iSCSI校验计算功能的芯片设计的复杂度、较少具有iSCSI校验计算功能的芯片资源,减少处理延时。
如图3所示,为本发明实施例提供的一种对iSCSI协议报文的处理装置示意图,
在本实施例中,可选的,所述装置还包括:
第二校验计算模块50,用于当所述校验计算位置与所述第一校验计算值的偏移量不匹配时,对PDU的摘要进行校验计算,以获取所述PDU的第二校验计算值,所述第二校验计算值用于与第一校验计算值进行比较,以确定所述iSCSI协议报文的PDU的传输是否正确;
比较模块60,用于将所述PDU的第一校验计算值和第二校验计算值进行比较,如相同,则确定所述第二校验计算值正确,校验计算结束,反之,则确定第二校验计算值错误;
错误处理模块70,用于当第二校验计算值是错误,对所述PDU进行错误恢复处理。
本发明实施例中,可选的,所述错误处理模块70具体用于:发送对接收到的PDU的状态响应消息,以通知发送端进行PDU的重传操作,或者是直接进行PDU的错误修复操作。
本发明实施例的iSCSI协议报文的处理装置,首先获取iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值的偏移量为疑似正确的校验计算位置,然后对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取到正确的校验计算位置,通过上述操作,仅对有可能正确的校验计算位置进行解析,可以避免对所有的iSCSI协议报文的PDU进行直接解析,可以简化对iSCSI协议报文的PDU的校验计算的控制偏移量降低具有iSCSI校验计算功能的芯片设计的复杂度、较少具有iSCSI校验计算功能的芯片资源,减少处理延时。
图4为本发明实施例提供的一种对iSCSI协议报文的处理装置示意图,
在本发明实施例中,可选的,具有iSCSI校验计算功能的芯片具体可以是在支持TCP功能的TOE网卡上添加的iSCSI的摘要卸载引擎,从而对接收到的iSCSI协议报文的PDU进行校验计算。
本发明实施例中,接收模块10用于产生第一校验计算值的初始值控制信号,以及第一校验计算值的偏移量的重启信号,其中,具体可以采用crc check controler模块;
第一校验计算模块20,具体用于当对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算所获取的校验计算值与预期的魔方数相等时,则确定所述校验计算值为第一校验计算值;
输出所述第一校验计算值的偏移量,重启所述校验计算,直到获取数据流中所有的iSCSI协议报文的PDU第一校验计算值的偏移量;
可选的,第一校验计算模块20包括:
CRC32C Function(CRC32C多项式的运算模块),用于计算iSCSI协议报文的PDU的第一校验计算值;
Magic Number Compare(比较模块),用于将校验计算值与Magic Number(魔方数)进行比较;
offset count(偏移量校验计算模块),用于输出第一校验计算值的偏移量。
解析模块30可以是主机应用程序的一种,用于根据数据段开始标识和数据段长度指示信息对PDU的基本头字段中的附加段总长度字段进行解析,如果解析到所述PDU的头摘要,则获取PDU的头的校验计算位置,如果解析到所述PDU的数据摘要,则获取PDU的数据的校验计算位置;
匹配处理模块40,将所述校验计算位置与第一校验计算值的偏移量进行匹配,如匹配,不对PDU的摘要进行校验计算;如不匹配,匹配处理模块40反馈中央处理单元CPU对PDU的摘要进行校验计算,以获取第二校验计算值。
本发明实施例的iSCSI协议报文处理装置可以使用于iSCSI设备,例如,可以是iSCSI适配卡、iSCSI交换机、iSCSI存储服务器、iSCSI存储设备、iSCSI桥接器等;例如,该设备可以是基于控制器架构、iSCSI连接桥架构、PC架构、PC+NIC架构等,具体的iSCSI设备的物理形态在此不做限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个校验计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该校验计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台校验计算机设备(可以是个人校验计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种对iSCSI协议报文的处理方法,其特征在于,包括:
接收因特网小型计算机系统接口iSCSI协议报文;
对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;
对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;
将所述校验计算位置与所述第一校验计算值的偏移量进行匹配,如匹配,则确定所述iSCSI协议报文的PDU传输正确。
2.根据权利要求1所述的方法,将所述校验计算位置与所述第一校验计算值的偏移量进行匹配之后,还包括:
如不匹配,对PDU的摘要进行校验计算,获取所述PDU的第二校验计算值,将所述PDU的第一校验计算值与所述PDU的第二校验计算值进行比较,以确定所述iSCSI协议报文的PDU的传输是否正确。
3.如权利要求1或2所述的方法,其特征在于,对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取iSCSI协议报文的PDU的第一校验计算值的偏移量,包括:
当对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算所获取的校验计算值与预期的魔方数相等时,则确定所述校验计算值为第一校验计算值;
输出第一校验计算值相对于起始地址的所述偏移量,重启所述校验计算,直到获取数据流中所有的iSCSI协议报文的PDU的第一校验计算值的所述偏移量。
4.根据权利要求1或2所述的方法,其特征在于,对PDU的基本头字段进行解析,以获取校验计算位置,包括:
如果解析到所述PDU的头摘要,对PDU的基本头字段中的附加段总长度字段进行解析,获取PDU的头的校验计算位置,所述校验计算位置为头摘要位置;如果解析到所述PDU的数据摘要,对PDU的基本头字段中的数据字段长度进行解析,获取数据的校验计算位置,所述校验计算位置为数据摘要位置。
5.根据权利要求1或2所述的方法,其特征在于,如不匹配,对PDU进行校验计算,以获取第二校验计算值,还包括:
将所述PDU的第一校验值与所述PDU的第二校验值进行比较,如果不相同,则确定所述第二校验计算值是错误,对所述PDU进行错误恢复处理;
如果相同,则确定所述iSCSI协议报文传输正确。
6.一种对iSCSI协议报文的处理装置,包括:
接收模块,用于接收数据流中的因特网小型计算机系统接口iSCSI协议报文;
校验计算模块,用于对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算,以获取所述iSCSI协议报文的PDU的第一校验计算值的偏移量,所述第一校验计算值是iSCSI协议报文中确定出错的校验计算值以外的其他校验计算值;
解析模块,对获取到第一校验计算值的偏移量所对应的PDU的基本头字段进行解析,以获取校验计算位置;
匹配处理模块,将所述校验计算位置与第一校验计算值的偏移量进行匹配,如果匹配,则确定所述iSCSI协议报文传输正确。
7.如权利要求6所述的装置,其特征在于,所述装置还包括,
第二校验计算模块,所述第二校验计算模块用于当所述校验计算位置与所述第一校验计算值的偏移量不匹配时,对PDU的摘要进行校验计算,以获取所述PDU的第二校验计算值,所述第二校验计算值用于与第一校验计算值进行比较,以确定所述iSCSI协议报文的PDU的传输是否正确。
8.如权利要求6或7所述的装置,其特征在于,所述第一校验计算模块,具体用于:
当对接收到的iSCSI协议报文的协议数据单元PDU进行校验计算所获取的校验计算值与预期的魔方数相等时,则确定所述校验计算值为第一校验计算值;
输出所述第一校验计算值的偏移量,重启所述校验计算,直到获取数据流中所有的iSCSI协议报文的PDU第一校验计算值的偏移量。
9.如权利要求6或7所述的装置,其特征在于,所述解析模块,具体用于:
如果解析到所述PDU的头摘要,对PDU的基本头字段中的附加段总长度字段进行解析,获取PDU的头的校验计算位置,所述校验计算位置为头摘要位置;或,
如果解析到所述PDU的数据摘要,对PDU的基本头字段中的数据字段长度进行解析,获取数据的校验计算位置,所述校验计算位置为数据摘要位置。
10.如权利要求6或7所述的装置,其特征在于,所述装置还包括:
比较模块,用于将所述PDU的第一校验计算值和第二校验计算值进行比较,如相同,则确定所述第二校验计算值正确,校验计算结束,反之,则确定第二校验计算值错误;
错误处理模块,用于当确定所第二校验计算值是错误,对所述PDU进行错误恢复处理。
CN201110233317.6A 2011-08-15 2011-08-15 对iSCSI协议报文的处理方法及装置 Active CN102291408B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110233317.6A CN102291408B (zh) 2011-08-15 2011-08-15 对iSCSI协议报文的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110233317.6A CN102291408B (zh) 2011-08-15 2011-08-15 对iSCSI协议报文的处理方法及装置

Publications (2)

Publication Number Publication Date
CN102291408A CN102291408A (zh) 2011-12-21
CN102291408B true CN102291408B (zh) 2014-03-26

Family

ID=45337516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110233317.6A Active CN102291408B (zh) 2011-08-15 2011-08-15 对iSCSI协议报文的处理方法及装置

Country Status (1)

Country Link
CN (1) CN102291408B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102447637B (zh) * 2012-01-09 2014-07-30 福建星网锐捷网络有限公司 报文处理方法、系统和网络设备
CN107273213B (zh) * 2017-06-27 2024-04-19 联想(北京)有限公司 一种计算控制方法、网卡及电子设备
CN109981382B (zh) * 2017-12-27 2022-08-26 华为技术有限公司 一种检测误码的方法及装置
CN110177087B (zh) * 2019-05-05 2021-06-01 方一信息科技(上海)有限公司 一种基于TOE网卡的Target端协议硬件解析方法
CN112436972B (zh) * 2019-08-26 2022-08-05 丰鸟航空科技有限公司 数据处理方法、装置、网络设备及计算机可读存储介质
CN112073434B (zh) * 2020-09-28 2022-06-07 山东产研集成电路产业研究院有限公司 降低基于toe的高频交易终端接收通道传输延迟的方法
CN112491651B (zh) * 2020-11-17 2022-07-12 北京天融信网络安全技术有限公司 一种报文匹配方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1818890A (zh) * 2005-01-21 2006-08-16 国际商业机器公司 用于实现卸载发起方功能的方法和系统
CN1961540A (zh) * 2004-06-28 2007-05-09 英特尔公司 处理接收协议数据单元
CN101123485A (zh) * 2007-09-20 2008-02-13 杭州华三通信技术有限公司 iSCSI报文处理方法和装置、错误恢复方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921240B2 (en) * 2004-03-10 2011-04-05 Broadcom Corporation Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1961540A (zh) * 2004-06-28 2007-05-09 英特尔公司 处理接收协议数据单元
CN1818890A (zh) * 2005-01-21 2006-08-16 国际商业机器公司 用于实现卸载发起方功能的方法和系统
CN101123485A (zh) * 2007-09-20 2008-02-13 杭州华三通信技术有限公司 iSCSI报文处理方法和装置、错误恢复方法和装置

Also Published As

Publication number Publication date
CN102291408A (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
CN102291408B (zh) 对iSCSI协议报文的处理方法及装置
EP3542276B1 (en) Flow control in remote direct memory access data communications with mirroring of ring buffers
CN101123485B (zh) iSCSI报文处理方法和装置、错误恢复方法和装置
TW201015291A (en) Cyclical redundancy code for use in a high-speed serial link
EP1861944A1 (en) Protecting data transactions on an integrated circuit bus
CN105528325A (zh) 一种标准spi协议高速传输的保护方法及系统
CN113489570B (zh) 一种PCIe链路的数据传输方法、装置及设备
JP3996928B2 (ja) 破損データを処理する方法
TWI705682B (zh) 嵌入式系統及其方法
US7436777B2 (en) Failed link training
US7502991B2 (en) Redundant 3-wire communication system
CN104579605B (zh) 一种数据传输方法及装置
US7178054B2 (en) Frame validation
US7363402B2 (en) Data communications architecture employing parallel SERDES channels
US20130326106A1 (en) Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices
US7606253B2 (en) Successful transactions
CN115129509A (zh) 一种数据传输方法、装置、介质
US20060268724A1 (en) Using Open Vera Assertions to verify designs
US7672222B2 (en) Link failures
US7310762B2 (en) Detection of errors
US7613958B2 (en) Error detection in a system having coupled channels
CN112346665A (zh) 一种固态硬盘的通信方法、装置、设备、系统及存储介质
US11876629B1 (en) Data transmission method, device, electronic equipment, and storage medium
US7454514B2 (en) Processing data with uncertain arrival time
US9830220B1 (en) Enhanced error recovery for data storage drives

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: High tech Park No. 88 University of Electronic Science and technology of Sichuan province in 611721 Chengdu city high tech Zone West Park area Qingshui River Tianchen Road No. 5 building D

Applicant after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: High tech Park No. 88 University of Electronic Science and technology of Sichuan province in 611721 Chengdu city high tech Zone West Park area Qingshui River Tianchen Road No. 5 building D

Applicant before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD. TO: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220922

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611721 Area D, Building 5, High-tech Park, University of Electronic Science and Technology of China, No. 88 Tianchen Road, Qingshuihe Area, Western Park, High-tech Zone, Chengdu, Sichuan Province

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.