CN101123485A - iSCSI报文处理方法和装置、错误恢复方法和装置 - Google Patents

iSCSI报文处理方法和装置、错误恢复方法和装置 Download PDF

Info

Publication number
CN101123485A
CN101123485A CNA2007101518304A CN200710151830A CN101123485A CN 101123485 A CN101123485 A CN 101123485A CN A2007101518304 A CNA2007101518304 A CN A2007101518304A CN 200710151830 A CN200710151830 A CN 200710151830A CN 101123485 A CN101123485 A CN 101123485A
Authority
CN
China
Prior art keywords
iscsi
data segment
iscsi message
data
data head
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.)
Granted
Application number
CNA2007101518304A
Other languages
English (en)
Other versions
CN101123485B (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.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C 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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2007101518304A priority Critical patent/CN101123485B/zh
Publication of CN101123485A publication Critical patent/CN101123485A/zh
Application granted granted Critical
Publication of CN101123485B publication Critical patent/CN101123485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种iSCSI报文处理方法和装置,以及相应的iSCSI错误恢复方法和装置。所述iSCSI报文处理方法具体为:根据iSCSI协议处理结果生成iSCSI报文之后,首先在所述iSCSI报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的数据头部,然后再紧随所述数据头部插入一个用于对所述数据头部进行校验的数据头摘要。相应地,所述iSCSI错误恢复方法具体为:在iSCSI报文的报头摘要校验失败后,继续根据所述数据头摘要对所述数据头部进行校验;如果所述数据头摘要校验成功,则根据所述数据段长度指示丢弃所述iSCSI报文,从而有效缩短报头摘要校验失败的错误恢复时间。

Description

iSCSI报文处理方法和装置、错误恢复方法和装置
技术领域
本发明涉及iSCSI技术,尤其涉及一种iSCSI报文处理方法和相应的iSCSI报文产生装置,以及一种iSCSI错误恢复方法和相应的iSCSI错误恢复装置。
背景技术
SCSI(Small Computer System Interface,小型计算机系统接口)协议定义了应用主机和外部设备(包括磁盘、磁带、光盘、打印机、扫描仪等)之间读写操作的过程。iSCSI(Internet SCSI,互联网小型计算机系统接口)是一种基于TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,互联网协议)的SCSI传输协议,也即发起端(initiator)和目标端(target)之间通过IP网传输SCSI命令和数据。
目前,iSCSI协议常用于在应用主机和存储系统之间进行数据传输,且其典型应用环境如图1所示。应用主机110作为iSCSI连接的发起端,其中通过安装iSCSI发起软件、或装配iSCSI HBA(Host Bus Adaptor,主机总线适配卡)卡的方式集成有一个iSCSI发起模块。存储系统120作为iSCSI连接的目标端,其中集成有一个iSCSI目标模块,并创建有多个存储资源以供不同的应用主机110访问。
而iSCSI连接的访问过程包括:首先,应用主机110把SCSI命令/数据封装在iSCSI报文中,通过IP网络130发送给存储系统120;随后,存储系统120对每个iSCSI报文进行处理,并将其中的数据取出并写入到相应的存储空间。
为了增强传输数据的可靠性,如图2所示,在iSCSI协议的协商中提供有DATA DIGEST(数据摘要)和HEADER DIGEST(报头摘要)两种错误检测选项。其中DATA DIGEST是对iSCSI报文中的数据段进行CRC(Cyclical Redundancy Check,循环冗余校验)校验,而HEADERDIGEST则对iSCSI报文中的报文头部进行CRC校验。
同时,RFC3270中还描述了iSCSI支持多种错误恢复级别。其中:错误恢复级别0通过关闭会话(session)后再重建的方式来完成错误恢复,错误恢复级别1通过重发命令或数据等报文的方式来完成错误恢复,而错误恢复级别2则通过恢复链接的方式来完成错误恢复。
根据协议说明,在DATA DIGEST校验失败时,可直接丢弃这个报文等待重发,也即应用错误恢复级别1就能完成错误恢复。然而,在HEADER DIGEST校验失败时,问题就比较复杂。如图2所示,iSCSI报文的数据段长度(DataSegmentLength)是处于报头中的,从而使得如果HEADER DIGEST校验失败,则该报文的数据段长度就不可知了。也就将由于数据段长度未知而直接导致下一iSCSI报文的开始位置未知,进而使得无法利用错误恢复级别1(丢弃报文等待重发)的简单方式来完成错误恢复。
通过上述介绍可知,根据iSCSI协议说明,只能利用错误恢复级别0(关闭会话后重建)来完成HEADER DIGEST错误恢复。
为了使错误恢复级别1(丢弃报文等待重发)能够用来完成HEADERDIGEST错误恢复,现有技术中提出了TCP ULP(Upper-Level-Protocol,上层协议)和FIM(Fixed-Interval Markers,定长间隔标记)等技术方案。
其中,TCP ULP技术需要修改TCP协议栈,以保证每次数据发送都是从iSCSI报文头部开始。
而FIM技术是在TCP流中插入2个相同的FIM指针来指示下一个PDU(Protocol Data Unit,协议数据单元)的开始,并通过TCP报文长度来计算FIM指针的位置。也就是说,FIM技术要求在基于TCP/IP完成iSCSI报文封装、但将报文发送出去之前插入FIM指针,这不仅具有实现难度高、与现有系统不兼容的缺点,同时还只能应用在HEADERDIGEST校验失败、但TCP数据正确的情况下,否则FIM指针错误将引发更大问题。
综上所述,现有的iSCSI错误恢复技术,尤其是其中的HEADERDIGEST错误恢复技术,仍有待改善。
发明内容
有鉴于此,本发明目的在于提供一种iSCSI报文处理方法,其通过在iSCSI报文的数据段中添加本报文的数据长度指示,使得相应接收端应用错误恢复级别1完成由HEADER DIGEST校验失败导致的错误恢复成为可能。
此外,本发明另一目的在于提供一种iSCSI错误恢复方法及装置,其能够应用错误恢复级别1完成HEADER DIGEST校验失败的错误恢复,而无需修改TCP协议栈,并可以与现有系统兼容。
为了达到上述目的,本发明公开了一种iSCSI报文处理方法。该方法主要包括有:
步骤G1,在根据iSCSI协议处理结果生成一个待发送的iSCSI报文之后,判断所述iSCSI报文是否携带数据段,且如果所述判断结果为是则继续执行下列步骤G2;
步骤G2,在所述iSCSI报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的数据头部,其中所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;以及
步骤G3,紧随所述数据头部插入一个数据头摘要,其中所述数据头摘要用于对所述数据头部进行校验,之后再输出包含所述数据头部和所述数据头摘要的iSCSI报文。
对于上述iSCSI报文处理方法,优选地,在所述步骤G2之前还包括有步骤G4:判断所述iSCSI报文是否携带报头摘要;并且,如果所述判断结果为是,则继续执行所述步骤G2;或者,如果所述判断结果为否,则直接输出所述iSCSI报文。
对于上述iSCSI报文处理方法,进一步优选地,所述数据头摘要对所述数据头部进行的校验具体为CRC(Cyclical Redundancy Check,循环冗余检查)校验;同时,所述数据段开始标识可由用户根据需要设置为任何值,只要保证不是有效的iSCSI报文的头4个字节就可以;此外,所述数据段长度指示和所述数据段开始标识的位置也可由用户灵活设定,比如所述数据段长度指示位于所述数据段开始标识之前、或者所述数据段开始标识位于所述数据段长度指示之前。
同时,本发明还公开了一种iSCSI报文产生装置,以支持上述iSCSI报文处理方法的实施。该iSCSI报文产生装置主要包括有iSCSI协议单元,数据段检测单元,数据头部添加单元,以及数据头摘要加载单元。其中:
所述iSCSI协议单元用于根据iSCSI协议处理结果生成相应的待发送iSCSI报文。
所述数据段检测单元与所述iSCSI协议单元相连,用于判断所述iSCSI报文是否携带有数据段,并在所述判断结果为是时触发所述数据头部添加单元、或者在所述判断结果为否时直接输出所述iSCSI报文。
所述数据头部添加单元与所述数据段检测单元相连,在所述数据段检测单元确定所述iSCSI报文携带有数据段时被触发,主要用于在所述iSCSI报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的数据头部。其中,所述数据段开始标识用于指示所述iSCSI报文数据段的开始,而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度。
所述数据头摘要加载单元与所述数据头部添加单元相连,用于紧随所述数据头部之后插入一个数据头摘要,并相应输出包含所述数据头部和所述数据头摘要的iSCSI报文。其中,所述数据头摘要用于对所述数据头部进行校验。
对于上述iSCSI报文产生装置,优选地,其还包括有报头摘要检测单元。所述报头摘要检测单元插入在所述数据段检测单元和所述数据头部添加单元之间,在所述数据段检测单元确定所述iSCSI报文携带有数据段时被触发,主要用于检测所述iSCSI报文是否携带报头摘要;并在确定所述iSCSI报文携带报头摘要时触发所述数据头部添加单元,从而使得所述数据头部添加单元能够相应进行插入所述数据头部的操作;或者在确定所述iSCSI报文不携带报头摘要时直接输出所述iSCSI报文。
对于上述iSCSI报文产生装置,进一步优选地,所述数据头摘要对所述数据头部进行的校验具体为CRC校验;同时,所述数据段开始标识可由用户根据需要设置为任何值,只要保证不是有效的iSCSI报文的头4个字节就可以;此外,所述数据段长度指示和所述数据段开始标识的位置也可由用户灵活设定,比如所述数据段长度指示位于所述数据段开始标识之前、或者所述数据段开始标识位于所述数据段长度指示之前。
为了达到上述另一目的,本发明公开了一种iSCSI错误恢复方法,适用于相应iSCSI报文发送端实施了上述iSCSI报文处理方法的情形。该方法主要包括有:
步骤R1,在接收到某一iSCSI报文之后,根据所述iSCSI报文中的报头摘要对所述iSCSI报文的报文头部进行校验;并且如果所述根据报头摘要进行的校验失败,则继续执行下列步骤R2;
步骤R2,根据iSCSI报文中数据段内紧随数据头部之后的数据头摘要对所述数据头部进行校验,其中所述数据头部加载在所述iSCSI报文的数据段开始处且至少包含数据段开始标识和数据段长度指示、所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;
步骤R3,如果根据所述数据头摘要进行的校验成功,则根据所述数据段长度指示的具体值丢弃所述iSCSI报文;或者
步骤R4,如果根据所述数据头摘要进行的校验失败,则关闭所述iSCSI报文对应的会话并相应进行会话重建。
对于上述iSCSI错误恢复方法,优选地,根据所述数据头摘要对所述数据头部进行的校验具体为CRC校验。
同时,本发明还公开了一种iSCSI错误恢复装置,以支持上述iSCSI错误恢复方法的实施。该iSCSI错误恢复装置主要包括有iSCSI报文接收单元,报头摘要校验单元,数据头摘要校验单元,报文丢弃单元,和/或会话关闭重建单元。其中:
所述iSCSI报文接收单元用于接收来自外部的iSCSI报文。
所述报头摘要校验单元与所述iSCSI报文接收单元和所述数据头摘要校验单元相连,用于根据所述iSCSI报文中的报头摘要对所述iSCSI报文的报文头部进行校验,并在所述根据报头摘要进行的校验失败时触发所述数据头摘要校验单元。
所述数据头摘要校验单元与所述报头摘要校验单元、所述报文丢弃单元、和/或所述会话关闭重建单元相连,在所述报头摘要单元进行的校验失败时被触发,主要用于根据所述iSCSI报文中数据段内紧随数据头部之后的数据头摘要对所述数据头部进行校验。其中,所述数据头部加载在所述iSCSI报文的数据段开始处且至少包含数据段开始标识和数据段长度指示,并且所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度。
所述报文丢弃单元与所述数据头摘要校验单元相连,在所述数据头摘要校验单元校验成功时被触发,用于根据所述数据段长度指示的具体值丢弃所述iSCSI报文。
所述会话关闭重建单元也与所述数据头摘要校验单元相连,在所述数据头摘要校验单元校验失败时被触发,用于关闭所述iSCSI报文对应的会话并相应进行会话重建。
对于上述iSCSI错误恢复装置,优选地,根据所述数据头摘要对所述数据头部进行的校验具体为CRC校验。
本发明提供的iSCSI报文产生技术,通过在iSCSI报文的数据段内添加包含数据段长度指示的数据头部以及可校验所述数据段长度指示正确性的数据头摘要,使得相应接收端在报头摘要校验失败之后可以继续进行数据头摘要校验。并在数据头摘要校验成功时,由于能够根据数据段长度指示准确获知该iSCSI报文的数据段长度,从而可以相应通过丢弃该iSCSI报文并等待重发的方式来完成该报头摘要错误恢复。
相应地,本发明提供的应用错误恢复级别1完成报头摘要错误恢复的技术,与现有技术相比,不仅能够有效缩短报头摘要错误恢复所需的时间,同时还因不会反复重建会话而可以保证存储的高吞吐量,尤其是对网络环境比较差、或者系统特别繁忙的应用来说。
此外,本发明无需修改TCP协议栈,并可以与现有系统兼容,因此具有简单易实施的特点。
附图说明
图1为现有技术中iSCSI协议运用的组网示意图;
图2为现有技术中iSCSI报文的结构示意图;
图3为本发明iSCSI报文处理方法第一实施例的流程图;
图4为本发明iSCSI报文处理方法所产生iSCSI报文的结构示意图;
图5为本发明iSCSI报文处理方法第二实施例的流程图;
图6为本发明iSCSI报文产生装置优选实施例之一的结构框图;
图7为本发明iSCSI错误恢复方法优选实施例之一的流程图;
图8为本发明iSCSI错误恢复装置优选实施例之一的结构框图。
具体实施方式
本发明的上述及其他技术特征和有益效果,将通过参照附图进行的优选实施例介绍得到更充分的阐述。
首先,请参阅图3,其为本发明所公开一种iSCSI报文处理方法的第一实施例的流程图。
如图3所示,根据iSCSI协议处理结果生成一个待发送的iSCSI报文(步骤G0)之后,首先执行步骤G1,也即判断所述iSCSI报文是否携带有数据段;并且,如果确定所述iSCSI报文携带有数据段,则将继续执行下列步骤G2,否则直接输出该iSCSI报文。
所谓步骤G2,即在所述iSCSI报文的数据段(DataSegment)开始处插入一个数据头部(DATA HEADER)。随后执行步骤G3,也即紧跟在所述数据头部(DATA HEADER)之后插入一个用于对所述数据头部(DATA HEADER)进行校验、以在相应接收端保证所述数据头部(DATAHEADER)正确性的数据头摘要(DATA HEADER DIGEST)。最后,再输出所述经由步骤G2和G3加工后包含有数据头部(DATA HEADER)和数据头摘要(DATA HEADER DIGEST)的iSCSI报文。
这样,利用图3所示本发明iSCSI报文处理方法第一实施例产生的iSCSI报文的数据结构将如图4所示。并且,插入在iSCSI报文数据段开始处的数据头部(DATA HEADER)包括但不限于:一个数据段开始标识(Tag),用于指示所述iSCSI报文数据段开始;以及一个数据段长度指示(DataSegmentLength),用于表示所述iSCSI报文中数据段长度。
其中,数据段开始标识(Tag)可由用户根据实际应用需要设置为任何值,只要保证不是有效的iSCSI报文的头4个字节就可以,比如设定Tag=0xffffffff。同时,数据段长度指示(DataSegmentLength)和数据段开始标识(Tag)的插入位置也可由用户根据个人习惯灵活设定,比如将数据段开始标识(Tag)置于数据段长度指示(DataSegmentLength)之前、或者将数据段长度指示(DataSegmentLength)置于数据段开始标识(Tag)之前。
此外,利用数据头摘要(DATA HEADER DIGEST)对数据头部(DATA HEADER)进行的校验优选为CRC(Cyclical Redundancy Check,循环冗余检查)校验。
通过在iSCSI报文的数据段内添加至少包含数据段长度指示(DataSegmentLength)的数据头部(DATA HEADER)以及可用于校验所述数据段长度指示(DataSegmentLength)正确性的数据头摘要(DATAHEADER DIGEST),具有图4所示数据结构的iSCSI报文使得相应的报文接收端可以利用丢弃报文并等待重发(也即错误恢复级别1)的方式来完成报头摘要错误恢复。并且,相应的错误恢复处理机制将在下述iSCSI错误恢复方法和装置中详细介绍。
如上所述,添加数据头部(DATA HEADER)和数据头摘要(DATAHEADER DIGEST)的主要目的在于使应用错误恢复级别1完成报头摘要错误恢复成为可能。换句话说,iSCSI报文携带有报头摘要,在某种意义上可作为添加数据头部(DATA HEADER)和数据头摘要(DATAHEADER DIGEST)的必要条件。
因此,图3所示的iSCSI报文处理方法的第一实施例可进一步优化为如图5所示:在执行步骤G2之前,还优选地执行步骤G4,即判断待发送的iSCSI报文是否携带有报头摘要。并且,如果所述步骤G4的判断结果为是,则认为有必要在该待发送的iSCSI报文中添加数据头部(DATA HEADER)和数据头摘要(DATA HEADER DIGEST),并相应继续执行步骤G2和G3等。然而,如果所述步骤G4的判断结果为否,则认为没有必要添加数据头部(DATA HEADER)和数据头摘要(DATAHEADER DIGEST),并相应直接输出该待发送的iSCSI报文。
同时,本发明还公开了一种iSCSI报文产生装置,以支持上述iSCSI报文处理方法的实施,且图6给出了该iSCSI报文产生装置的优选实施例之一的结构框图。
如图6所示,该iSCSI报文产生装置600主要包括有iSCSI协议单元610,数据段检测单元620,报头摘要检测单元630,数据头部添加单元640,以及数据头摘要加载单元650。其中:
iSCSI协议单元610与数据段检测单元620相连,主要用于根据iSCSI协议处理结果生成相应的待发送iSCSI报文①,并将该iSCSI报文输出至数据段检测单元620。
数据段检测单元620与iSCSI协议单元610和报头摘要检测单元630相连,主要用于检测iSCSI报文①中是否携带有数据段。并且,如果数据段检测单元620确定iSCSI报文①携带有数据段,则触发报头摘要检测单元630以进行判断是否携带报头摘要的操作;如果数据段检测单元620确定iSCSI报文①不携带数据段,则直接输出该iSCSI报文①。
报头摘要检测单元630与数据段检测单元620和数据头部添加单元640相连,在数据段检测单元620确定iSCSI报文①携带有数据段时被触发,主要用于检测iSCSI报文①中是否携带有用于对报文头部进行校验的报头摘要。并且,如果报头摘要检测单元630确定iSCSI报文①携带有报头摘要,则触发数据头部添加单元640以进行插入相应数据头部的操作;如果报文摘要检测单元630确定iSCSI报文①不携带报头摘要,则直接输出该iSCSI报文①。
数据头部添加单元640与报头摘要检测单元630和数据头摘要加载单元650相连,主要用于在iSCSI报文①的数据段开始处插入一个至少包含数据段开始标识(Tag)和数据段长度指示(DataSegmentLength)的数据头部(DATA HEADER),并将相应加载有数据头部(DATAHEADER)的iSCSI报文②输出至数据头摘要加载单元650。
其中,数据段开始标识(Tag)用于指示iSCSI报文①数据段的开始,而数据段长度指示(DataSegmentLength)用于表示iSCSI报文①中数据段的长度。同时,与前述类似,数据段开始标识(Tag)可由用户根据实际应用需要设置为任何值,只要保证不是有效的iSCSI报文的头4个字节就可以,比如设定Tag=0xffffffff;此外,数据段长度指示(DataSegmentLength)和数据段开始标识(Tag)的插入位置也可由用户根据个人习惯灵活设定,比如将数据段开始标识(Tag)置于数据段长度指示(DataSegmentLength)之前、或者将数据段长度指示(DataSegmentLength)置于数据段开始标识(Tag)之前。
数据头摘要加载单元650与数据头部添加单元640相连,主要用于在加载有数据头部的iSCSI报文②中加载一个用于对数据头部(DATAHEADER)进行校验的数据头摘要(DATA HEADER DIGEST),并将相应加载有数据头部(DATA HEADER)和数据头摘要(DATA HEADERDIGEST)的iSCSI报文③输出。其中,数据头摘要(DATA HEADERDIGEST)也插入在iSCSI报文①的数据段中,且紧跟在相应的数据头部(DATA HEADER)之后。
需要说明的是,与前述iSCSI报文处理方法类似,图6所示iSCSI报文产生装置600中的报头摘要检测单元630(图中用虚线突出)并非必要组件。并且,在报头摘要检测单元630不出现的情况下,数据头部添加单元640将直接与数据段检测单元620相连;这样,对于由iSCSI协议单元610产生的任一待发送iSCSI报文来说,只要携带有数据段就将被添加上相应的数据头部(DATA HEADER)和数据头摘要(DATAHEADER DIGEST),而无论其是否携带报头摘要(HEADER DIGEST)。换句话说,携带报头摘要(HEADER DIGEST)并非必然地用作添加数据头部(DATA HEADER)和数据头摘要(DATA HEADER DIGEST)的必要条件。
继续,请参阅图7,其为本发明所公开一种iSCSI错误恢复方法的优选实施例之一的流程图,其中所述iSCSI错误恢复方法尤其适用于相应iSCSI报文发送端实施了上述本发明所公开iSCSI报文处理方法的情形。
如图7所示,在接收到某一iSCSI报文之后,首先执行步骤R1,也即根据所述iSCSI报文中的报头摘要(HEADER DIGEST)对所述iSCSI报文的报文头部进行校验。并且,如果所述根据报头摘要(HEADERDIGEST)进行的校验失败,则继续执行下列步骤R2。
需要说明的是,如果所述根据报头摘要(HEADER DIGEST)进行的校验成功,则接下来的后续处理流程为本领域技术人员公知。同时,由于该后续处理流程并非本发明关注的重点,故在此就不赘述了。
随后,执行步骤R2,也即根据iSCSI报文中数据段内紧随数据头部(DATA HEADER)之后的数据头摘要(DATA HEADER DIGEST)对所述数据头部(DATA HEADER)进行校验。其中,数据头部(DATAHEADER)和数据头摘要(DATA HEADER DIGEST)的详细介绍请参与前述相关部分,在此不再重复。
如果步骤R2中的数据头摘要(DATA HEADER DIGEST)校验成功,则说明所述数据头部(DATA HEADER)的正确性得到了保证。这时,由于通过包含在所述数据头部(DATA HEADER)中的数据段长度指示(DataSegmentLength)能够准确获知所述iSCSI报文的数据段长度,从而可以相应根据该数据段长度丢弃该iSCSI报文并等待对端重发(步骤R3),也即应用错误恢复级别1来完成报头摘要(HEADER DIGEST)错误恢复。
然而,如果步骤R2中的数据头摘要(DATA HEADER DIGEST)校验失败,则说明所述数据头部(DATA HEADER)的正确性无法得到保证。这时,由于仍然无法确知所述iSCSI报文的数据段长度,从而与现有技术类似,仍只能关闭会话并进行相应的会话重建(步骤R4),也即应用错误恢复级别0来完成报头摘要(HEADER DIGEST)错误恢复。
同时,本发明还公开了一种iSCSI错误恢复装置,以支持上述iSCSI错误恢复方法的实施,且图8给出了该iSCSI错误恢复装置的优选实施例之一的结构框图。
如图8所示,该iSCSI错误恢复装置800主要包括有iSCSI报文接收单元810,报头摘要校验单元820,数据头摘要校验单元830,报文丢弃单元840,和/或会话关闭重建单元850。其中:
iSCSI报文接收单元810与报头摘要校验单元820相连,主要用于接收来自外部的iSCSI报文③。其中,所述iSCSI报文③优选地具有图4所示数据结构,也即携带有报头摘要(HEADER DIGEST)、数据头部(DATA HEADER)、以及数据头摘要(DATA HEADER DIGEST)。同时,数据头部(DATA HEADER)和数据头摘要(DATA HEADER DIGEST)的详细介绍请参与前述相关部分,在此不再重复。
报头摘要校验单元820与iSCSI报文接收单元810和数据头摘要校验单元830相连,主要用于根据iSCSI报文③中的报头摘要(HEADERDIGEST)对该iSCSI报文③的报文头部进行校验。并且,如果所述报头摘要(HEADER DIGEST)校验失败,则触发数据头摘要校验单元830,以进行后续的数据头摘要(DATA HEADER DIGEST)校验。同时,与前述对应方法中介绍类似,此处对报头摘要(HEADER DIGEST)校验成功的情形也不加以赘述。
数据头摘要校验单元830与报头摘要校验单元820、报文丢弃单元840、和/或会话关闭重建单元850相连,在报头摘要单元820的报头摘要(HEADER DIGEST)校验失败时被触发,主要用于根据iSCSI报文③中的数据头摘要(DATA HEADER DIGEST)对相应的数据头部(DATAHEADER)进行校验。
并且,如果所述数据头摘要(DATA HEADER DIGEST)校验成功,则说明包含iSCSI报文③数据段长度信息的数据头部(DATA HEADER)的正确性得到了保证,从而可以触发报文丢弃单元840,以通过丢弃报文并等待重发的方式完成报头摘要(HEADER DIGEST)错误恢复。
然而,如果所述数据头摘要(DATA HEADER DIGEST)校验失败,则说明包含iSCSI报文③数据段长度信息的数据头部(DATA HEADER)的正确性无法得到保证,从而需要触发会话关闭重建单元850,以通过关闭会话并进行相应会话重建的方式完成报头摘要(HEADER DIGEST)错误恢复。
需要声明的是,上述发明内容及具体实施方式意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理内,当可作各种修改、等同替换、或改进。本发明的保护范围以所附权利要求书为准。

Claims (14)

1.一种iSCSI报文处理方法,其特征在于,包括有:
步骤G1,在根据iSCSI协议处理结果生成一个待发送的iSCSI报文之后,判断所述iSCSI报文是否携带数据段,且如果所述判断结果为是则继续执行下列步骤G2;
步骤G2,在所述iSCSI报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的数据头部,其中所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;以及
步骤G3,紧随所述数据头部插入一个数据头摘要,其中所述数据头摘要用于对所述数据头部进行校验,之后再输出包含所述数据头部和所述数据头摘要的iSCSI报文。
2.如权利要求1所述的iSCSI报文处理方法,其特征在于,在所述步骤G2之前还包括有步骤G4:判断所述iSCSI报文是否携带报头摘要;并且如果所述判断结果为是则继续执行所述步骤G2、或者如果所述判断结果为否则直接输出所述iSCSI报文。
3.如权利要求1或2所述的iSCSI报文处理方法,其特征在于,所述数据头摘要对所述数据头部进行的校验具体为循环冗余检查。
4.如权利要求3所述的iSCSI报文处理方法,其特征在于,在所述数据头部之内,所述数据段开始标识位于所述数据段长度指示之前、或位于所述数据段长度指示之后。
5.如权利要求4所述的iSCSI报文处理方法,其特征在于,所述数据段开始标识不等于有效的iSCSI报文头4个字节。
6.一种iSCSI报文产生装置,其特征在于,包括有:
iSCSI协议单元,用于根据iSCSI协议处理结果生成一个待发送的iSCSI报文;
数据段检测单元,与所述iSCSI协议单元相连,用于判断所述iSCSI报文是否携带有数据段;
数据头部添加单元,与所述数据段检测单元相连,在所述数据段检测单元确定所述iSCSI报文携带有数据段时被触发,用于在所述iSCSI报文的数据段开始处插入一个至少包含数据段开始标识和数据段长度指示的数据头部,其中所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;以及
数据头摘要加载单元,与所述数据头部添加单元相连,用于紧随所述数据头部插入一个数据头摘要,并相应输出包含所述数据头部和所述数据头摘要的iSCSI报文,其中所述数据头摘要用于对所述数据头部进行校验。
7.如权利要求4所述的iSCSI报文产生装置,其特征在于,还包括有报头摘要检测单元:所述报头摘要检测单元插入在所述数据段检测单元和所述数据头部添加单元之间,在所述数据段检测单元确定所述iSCSI报文携带有数据段时被触发,用于检测所述iSCSI报文是否携带报头摘要,并在确定所述iSCSI报文携带报头摘要时触发所述数据头部添加单元以进行插入所述数据头部的操作,或者在确定所述iSCSI报文不携带报文摘要时直接输出所述iSCSI报文。
8.如权利要求6或7所述的iSCSI报文产生装置,其特征在于,所述数据头摘要对所述数据头部进行的校验具体为循环冗余检查。
9.如权利要求8所述的iSCSI报文产生装置,其特征在于,在所述数据头部之内,所述数据段开始标识位于所述数据段长度指示之前、或位于所述数据段长度指示之后。
10.如权利要求9所述的iSCSI报文产生装置,其特征在于,所述数据段开始标识不等于有效的iSCSI报文头4个字节。
11.一种iSCSI错误恢复方法,适用于相应iSCSI报文发送端实施了如权利要求1至5任一所述iSCSI报文处理方法的情形;其特征在于,包括有:
步骤R1:在接收到某一iSCSI报文之后,根据所述iSCSI报文中的报头摘要对所述iSCSI报文的报文头部进行校验,并且如果所述根据报头摘要进行的校验失败则继续执行下列步骤R2;
步骤R2,根据iSCSI报文中数据段内紧随数据头部之后的数据头摘要对所述数据头部进行校验,其中所述数据头部加载在所述iSCSI报文的数据段开始处且至少包含数据段开始标识和数据段长度指示、所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;
步骤R3,如果根据所述数据头摘要进行的校验成功,则根据所述数据段长度指示的具体值丢弃所述iSCSI报文;或者
步骤R4,如果根据所述数据头摘要进行的校验失败,则关闭所述iSCSI报文对应的会话并相应进行会话重建。
12.如权利要求11所述的iSCSI错误恢复方法,其特征在于,根据所述数据头摘要对所述数据头部进行的校验具体为循环冗余检查。
13.一种iSCSI错误恢复装置,其特征在于,包括有:
iSCSI报文接收单元,用于接收来自外部的iSCSI报文;
报头摘要校验单元,与所述iSCSI报文接收单元相连,用于根据所述iSCSI报文中的报头摘要对所述iSCSI报文的报文头部进行校验;
数据头摘要校验单元,与所述报文摘要校验单元相连,在所述报头摘要校验单元进行的校验失败时被触发,用于根据所述iSCSI报文中数据段内紧随数据头部之后的数据头摘要对所述数据头部进行校验,其中所述数据头部加载在所述iSCSI报文的数据段开始处且至少包含数据段开始标识和数据段长度指示、所述数据段开始标识用于指示所述iSCSI报文数据段的开始、而所述数据段长度指示用于表示所述iSCSI报文中数据段的长度;
报文丢弃单元,与所述数据头摘要校验单元相连,在所述数据头摘要校验单元校验成功时被触发,用于根据所述数据段长度指示的具体值丢弃所述iSCSI报文;和/或
会话关闭重建单元,与所述数据头摘要校验单元相连,在所述数据头摘要校验单元校验失败时被触发,用于关闭所述iSCSI报文对应的会话并相应进行会话重建。
14.如权利要求13所述的iSCSI错误恢复装置,其特征在于,根据所述数据头摘要对所述数据头部进行的校验具体为循环冗余检查。
CN2007101518304A 2007-09-20 2007-09-20 iSCSI报文处理方法和装置、错误恢复方法和装置 Active CN101123485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101518304A CN101123485B (zh) 2007-09-20 2007-09-20 iSCSI报文处理方法和装置、错误恢复方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101518304A CN101123485B (zh) 2007-09-20 2007-09-20 iSCSI报文处理方法和装置、错误恢复方法和装置

Publications (2)

Publication Number Publication Date
CN101123485A true CN101123485A (zh) 2008-02-13
CN101123485B CN101123485B (zh) 2011-05-11

Family

ID=39085676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101518304A Active CN101123485B (zh) 2007-09-20 2007-09-20 iSCSI报文处理方法和装置、错误恢复方法和装置

Country Status (1)

Country Link
CN (1) CN101123485B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651559B (zh) * 2009-07-13 2011-07-06 浪潮电子信息产业股份有限公司 一种存储服务在双控制器存储系统中故障切换的方法
CN101404657B (zh) * 2008-10-30 2011-08-17 广州慧扬科技投资有限公司 一种基于iSCSI协议的网络存储系统中的文件完整性检查方法
CN102291408A (zh) * 2011-08-15 2011-12-21 成都市华为赛门铁克科技有限公司 对iSCSI协议报文的处理方法及装置
CN101448022B (zh) * 2008-09-09 2012-05-30 创新科存储技术(深圳)有限公司 互联网小型计算机系统接口接收端窗口控制方法及装置
CN101588221B (zh) * 2009-06-19 2012-07-04 中兴通讯股份有限公司 一种实现校验和算法自适应选择的方法及装置
CN102045880B (zh) * 2009-10-09 2015-03-25 大唐移动通信设备有限公司 基于cpri协议的数据传输方法、系统和设备
CN107122683A (zh) * 2017-04-27 2017-09-01 郑州云海信息技术有限公司 一种数据存储方法、数据完整性校验方法及应用服务器
CN107733556A (zh) * 2016-08-12 2018-02-23 北京小米移动软件有限公司 报文校验方法及装置
CN111200594A (zh) * 2019-12-20 2020-05-26 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7701973B2 (en) * 2004-06-28 2010-04-20 Intel Corporation Processing receive protocol data units

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101448022B (zh) * 2008-09-09 2012-05-30 创新科存储技术(深圳)有限公司 互联网小型计算机系统接口接收端窗口控制方法及装置
CN101404657B (zh) * 2008-10-30 2011-08-17 广州慧扬科技投资有限公司 一种基于iSCSI协议的网络存储系统中的文件完整性检查方法
CN101588221B (zh) * 2009-06-19 2012-07-04 中兴通讯股份有限公司 一种实现校验和算法自适应选择的方法及装置
CN101651559B (zh) * 2009-07-13 2011-07-06 浪潮电子信息产业股份有限公司 一种存储服务在双控制器存储系统中故障切换的方法
CN102045880B (zh) * 2009-10-09 2015-03-25 大唐移动通信设备有限公司 基于cpri协议的数据传输方法、系统和设备
CN102291408A (zh) * 2011-08-15 2011-12-21 成都市华为赛门铁克科技有限公司 对iSCSI协议报文的处理方法及装置
CN102291408B (zh) * 2011-08-15 2014-03-26 华为数字技术(成都)有限公司 对iSCSI协议报文的处理方法及装置
CN107733556A (zh) * 2016-08-12 2018-02-23 北京小米移动软件有限公司 报文校验方法及装置
CN107733556B (zh) * 2016-08-12 2021-09-07 北京小米移动软件有限公司 报文校验方法及装置
CN107122683A (zh) * 2017-04-27 2017-09-01 郑州云海信息技术有限公司 一种数据存储方法、数据完整性校验方法及应用服务器
CN111200594A (zh) * 2019-12-20 2020-05-26 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质
CN111200594B (zh) * 2019-12-20 2021-07-16 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质

Also Published As

Publication number Publication date
CN101123485B (zh) 2011-05-11

Similar Documents

Publication Publication Date Title
CN101123485B (zh) iSCSI报文处理方法和装置、错误恢复方法和装置
US6430714B1 (en) Failure detection and isolation
CN104699576B (zh) 串行通信测试装置、包括该装置的系统及其方法
US20040236991A1 (en) System and method for on-line diagnosing of network interface cards
CN112836453B (zh) Sas控制器帧缓冲区结构设计方法
CN101297277A (zh) 静态可验证进程间通信隔离进程
JP3996928B2 (ja) 破損データを処理する方法
CN101819550A (zh) 串行连接小型计算机系统接口测试系统及方法
CN102291408B (zh) 对iSCSI协议报文的处理方法及装置
US7783964B2 (en) Redundant 3-wire communication system and method
CN115587055A (zh) 总线的传输方法、系统、设备及存储介质
FR2865089A1 (fr) Procede pour communiquer des donnees a l'aide de tampons de donnees de relance
CN113259273B (zh) 交换机的控制方法、交换机、计算机设备和存储介质
RU2383067C2 (ru) Способ сохранения пакетов данных с использованием технологии указателя
US7266730B2 (en) Information system
JP4413806B2 (ja) 障害切り分け方法、障害切り分け機能を有する通信装置及びプログラム
CN115904230A (zh) 一种数据校验方法、系统及装置
CN115658404A (zh) 一种测试方法及系统
US20060268724A1 (en) Using Open Vera Assertions to verify designs
CN100561953C (zh) 一种记录诊断数据的方法
CN111930582A (zh) 系统管理总线检测平台、处理器及系统管理总线检测方法
EP1198891B1 (en) Data integrity management for data storage systems
CN113037507B (zh) 具有错误侦测功能的智能网卡系统及错误侦测方法
WO2022247422A1 (zh) 资源队列管理接口的验证方法、电子设备、存储介质
US7210090B1 (en) Method and apparatus for vendor-specific device communication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address