CN101572716A - 传输小型计算机系统接口scsi包的方法和装置 - Google Patents

传输小型计算机系统接口scsi包的方法和装置 Download PDF

Info

Publication number
CN101572716A
CN101572716A CNA2009101455535A CN200910145553A CN101572716A CN 101572716 A CN101572716 A CN 101572716A CN A2009101455535 A CNA2009101455535 A CN A2009101455535A CN 200910145553 A CN200910145553 A CN 200910145553A CN 101572716 A CN101572716 A CN 101572716A
Authority
CN
China
Prior art keywords
scsi
bag
application server
layer message
sent
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.)
Pending
Application number
CNA2009101455535A
Other languages
English (en)
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.)
Hangzhou 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 CNA2009101455535A priority Critical patent/CN101572716A/zh
Publication of CN101572716A publication Critical patent/CN101572716A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种传输小型计算机系统接口SCSI包的方法,应用于包括应用服务器和存储设备的系统中,所述方法包括以下步骤:所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包;所述应用服务器将所述拆分得到的SCSI子包分别封装成对应的二层报文;所述应用服务器通过网口向所述存储设备发送所述二层报文,使所述存储设备将所述二层报文转换成SCSI子包、将所述SCSI子包组合成SCSI包并根据所述组合得到的SCSI包进行读写操作。本发明减小了对网络瞬时流量的冲击,避免了网络拥塞,保障了存储设备的存储性能。本发明同样公开了一种应用上述方法的装置。

Description

传输小型计算机系统接口SCSI包的方法和装置
技术领域
本发明涉及通信技术领域,尤其涉及一种传输小型计算机系统接口SCSI包的方法和装置。
背景技术
随着信息时代的到来,信息的采集与处理成为决定现代企业生存与发展的关键因素,多数企业通过iSCSI(Internet Small Computer System Interface,互联网小型计算机系统接口)协议直接访问存储设备,实现数据的批量封装和可靠传输。
iSCSI协议是一种在IP(Internet Protocol,互联网协议)网络上,特别是以太网上进行数据块传输的协议,目前已经成为新一代存储技术的标准协议。iSCSI协议可以实现在IP网络上运行SCSI(Small Computer System Interface,小型计算机系统接口)协议和应用SCSI的功能,充分利用了现有IP网络的成熟性和普及性等优势,允许用户通过TCP(Transmission Control Protocol,传输控制协议)/IP网络来构建SAN(Storage Area Network,存储区域网络)。
iSCSI协议层次模型包括:SCSI应用层、iSCSI协议层、TCP/IP层和以太网层,其中,SCSI应用层将自身构建的SCSI CDB(Command Descriptor Block,命令描述块)传送给iSCSI协议层,同时接收来自iSCSI协议层的SCSI CDB;iSCSI协议层对接收到的来自SCSI应用层的SCSI CDB进行封装,构建iSCSIPDU(Protocol Data Unit,协议数据单元),并通过一个或者多个TCP连接发送和接收iSCSI PDU,上述TCP连接组成Initiator-Target(发起端-接收端)会话,负责传送包含控制消息、SCSI命令、参数和数据的iSCSI PDU,可以被加入会话或者从会话中移除;TCP/IP层提供端到端的透明可靠传输,对IP报文进行路由和转发;以太网层提供点到点的无差错传输。
现有技术中,通过在发起端上安装Initiator软件与接收端连接,对接收端进行数据读写。Initiator软件首先将SCSI包封装成iSCSI包,再将iSCSI包封装成TCP包,通过网口将TCP包发送出去。接收端接收到TCP包后,依次去掉TCP头和iSCSI头,将TCP包中的SCSI CDB发送给自身的存储资源,存储资源根据接收到的SCSI CDB对数据进行处理,并将处理结果按照上述封装顺序返回给发起端。
在上述处理过程中,发起端首先将SCSI包存放在缓存中,然后再通过网口将封装后的SCSI包发送出去。由于IP网络的特性,当通过网口发送一个SCSI包时,网络流量会出现一个瞬时的峰值;如果多个SCSI包同时发送,将会使网络流量的峰值超过网络的网口速率,从而导致网络出现拥塞,甚至可能导致缓存中的数据丢失。例如,假设一个SCSI包的大小为1MB,发起端在10ms内将一个SCSI包发送出去,即网络上的瞬时传输速率为100MB/s(即100兆字节每秒),接近800Mb/s(即800兆比特每秒);如果在10ms内需要同时发送两个1MB的SCSI包,网络上的瞬时传输速率为1600Mb/s,会使网口速率为1000Mb/s的IP网络发生拥塞,同时影响发送发SCSI包的速率,并在缓存填满时导致数据丢失。
为避免上述情况,可以限制SCSI包的大小,发送较小的SCSI包,并使每个SCSI包通过网口发送时间隔一段时间(例如5毫秒)。例如,如果1个SCSI包只有100KB,对于网口速率为1000Mb/s的IP网络来说,可以同时发送10个SCSI包而不发生网络拥塞。然而在接收端,处理每个SCSI包的时间是一定的,例如,16KB的SCSI包和1000KB的SCSI包的处理时间均在15-18ms之间。SCSI包越小,接收端的处理时间越长,存储的速率就会越慢。例如,对于1MB的SCSI包,如果作为一个包发送,接收端的处理时间为18ms;如果按照100KB的SCSI包发送,接收端需要处理10个包,接收端的处理时间将会超过150ms;如果按照32KB的SCSI包发送,接收端需要处理30个SCSI包,接收端的处理时间将会超过450ms。
综上所述,现有技术提出的SCSI包传输方案中,发起端通过网口发送的SCSI包比较大时,会造成网络流量的瞬时峰值过大,并导致网络拥塞和数据丢失;发起端限制SCSI包的大小,发送较小的SCSI包时,会影响数据存储的速率。
发明内容
本发明提供了一种传输SCSI包的方法和装置,实现了网络流量和存储性能的平衡。
本发明提供了一种传输小型计算机系统接口SCSI包的方法,应用于包括应用服务器和存储设备的系统中,所述方法包括以下步骤:
所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包;
所述应用服务器将所述拆分得到的SCSI子包分别封装成对应的二层报文;
所述应用服务器通过网口向所述存储设备发送所述二层报文,使所述存储设备将所述二层报文转换成SCSI子包、将所述SCSI子包组合成SCSI包并根据所述组合得到的SCSI包进行读写操作。
优选地,所述应用服务器通过网口向存储设备发送二层报文,具体为:
所述应用服务器每隔预设时间向所述存储设备发送一次二层报文,直到将所述SCSI包对应的所有二层报文发送完毕。
优选地,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包,具体为:
所述应用服务器使用所述SCSI包中的SCSI命令描述块CBD的保留字段,将所述SCSI包拆成至少两个SCSI子包,对所述SCSI子包设置对应的序列号。
优选地,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包之前,还包括:
所述应用服务器确定所述待发送的SCSI包的大小大于预设阈值。
优选地,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包之前,还包括:
设置所述SCSI子包的个数和所述二层报文的发送间隔,使所述SCSI子包的个数和所述二层报文的发送间隔满足所述应用服务器处理所述待发送的SCSI包的时间限制。
优选地,所述设置SCSI子包的个数和二层报文的发送间隔,具体为:
通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
本发明还提供了一种应用服务器,应用于包括应用服务器和存储设备的系统中,所述应用服务器包括:
拆分模块,用于将待发送的SCSI包拆分为至少两个SCSI子包;
封装模块,与所述拆分模块电性连接,用于将所述拆分模块拆分得到的SCSI子包分别封装成对应的二层报文;
发送模块,与所述封装模块电性连接,用于通过网口向所述存储设备发送所述封装模块封装得到的二层报文,使所述存储设备将所述二层报文转换成SCSI子包、将所述SCSI子包组合成SCSI包并根据所述组合得到的SCSI包进行读写操作。
优选地,所述发送模块,具体用于每隔预设时间向所述存储设备发送一次二层报文,直到将所述SCSI包对应的所有二层报文发送完毕。
优选地,所述拆分模块,具体用于使用所述SCSI包中的小型计算机系统接口SCSI命令描述块CBD的保留字段,将所述SCSI包拆成至少两个SCSI子包,对所述SCSI子包设置对应的序列号。
优选地,所述应用服务器,还包括:
判断模块,与所述拆分模块电性连接,用于判断所述待发送的SCSI包的大小是否大于预设阈值,在所述待发送的SCSI包的大小大于所述预设阈值时,通知所述拆分模块对所述待发送的SCSI包进行拆分。
优选地,所述应用服务器,还包括:
设置模块,与所述拆分模块和所述发送模块电性连接,用于设置所述SCSI子包的个数和所述二层报文的发送间隔,使所述SCSI子包的个数和所述二层报文的发送间隔满足所述应用服务器处理所述待发送的SCSI包的时间限制。
优选地,所述应用服务器,还包括:
记录模块,与所述封装模块电性连接,用于记录所述封装模块向二层报文中添加的转发信息,并区分不同的二层报文对应的转发信息。
优选地,所述设置模块,具体用于通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
本发明通过应用服务器将SCSI包拆分为至少两个SCSI子包,将拆分得到的SCSI子包封装成对应的二层报文,并将二层报文依次发送到存储设备,减小了对网络瞬时流量的冲击,避免了网络拥塞;通过存储设备将转换得到的SCSI子包组合成SCSI包,并根据SCSI包进行读写操作,保障了存储设备的存储性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中的一种传输SCSI包的方法流程图;
图2为本发明中的另一种传输SCSI包的方法流程图;
图3为本发明中的一种传输SCSI包的具体应用场景流程图;
图4为本发明中的一种存储设备结构示意图;
图5为本发明中的一种应用服务器结构示意图;
图6为本发明中的一种传输SCSI包的系统结构示意图。
具体实施方式
本发明提供的技术方案中,其核心思想为由应用服务器将SCSI包拆分为至少两个SCSI子包,并将拆分得到的多个SCSI子包分别封装成对应的二层报文,将该二层报文依次发送到存储设备,并设置发送二层报文的间隔时间(例如2毫秒);存储设备端将接收到的二层报文解封装成SCSI子包,并将SCSI包对应的所有SCSI子包组合成SCSI包,将该SCSI包发送给自身的存储资源进行读写处理,既降低了对网络瞬时流量的压力,也减少了处理数据的读写时间。
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明中的一种传输SCSI包的方法流程图,应用于包括应用服务器和存储设备的系统中,该方法包括以下步骤:
步骤101,应用服务器将待发送的SCSI包拆分为至少两个SCSI子包。
具体地,应用服务器可以预先设置SCSI子包的大小和个数,使用SCSI包中的SCSI CBD的保留字段,将SCSI包拆成至少两个SCSI子包,并对每个拆分得到的SCSI子包设置对应的序列号。
SCSI CBD的保留字段共4个字节,即32位,可以包括一个统计字节和一个排序字节。应用服务器可以使用保留字段中的统计字节表示根据同一个SCSI包拆分得到的SCSI子包的总数,还可以使用保留字段中的排序字节的前4位表示拆分前的SCSI包的编号,使用排序字节的后4位表示拆分得到的SCSI子包的序列号。例如,应用服务器可以将拆分得到的第一个SCSI子包中的排序字节的后4位设置为0001,可以将拆分得到的最后一个SCSI子包中的排序字节的后4位设置为1111。
步骤102,应用服务器将拆分得到的SCSI子包分别封装成对应的二层报文。
具体地,应用服务器可以在每个拆分得到的SCSI子包的基础上添加iSCSI头、TCP头、IP头、以太头(Ethernet Head)和以太尾(Ethernet Trailer),将SCSI子包封装成对应的二层报文。
步骤103,应用服务器通过网口向存储设备发送二层报文,使存储设备将二层报文转换成SCSI子包、将SCSI子包组合成SCSI包并根据组合得到的SCSI包进行读写操作。
应用服务器可以预先设置预设时间,每隔预设时间向存储设备发送一次二层报文,直到将SCSI包对应的所有二层报文发送完毕。存储设备接收到二层报文后,将该二层报文转换为SCSI子包,并将SCSI包对应的所有SCSI子包组合成SCSI包,并根据该SCSI包进行数据的读写操作。
本发明由应用服务器将SCSI包拆分为至少两个SCSI子包,将拆分得到的SCSI子包封装成对应的二层报文,并将二层报文依次发送到存储设备,减小了对网络瞬时流量的冲击,避免了网络拥塞。
上述实施方式提供了一种基于应用服务器端的传输SCSI包的方法,本发明还通过以下实施方式提供了一种基于存储设备端的传输SCSI包的方法。
如图2所示,为本发明中的另一种传输SCSI包的方法流程图,应用于包括应用服务器和存储设备的系统中,该方法包括以下步骤:
步骤201,存储设备接收来自应用服务器的二层报文,该二层报文由应用服务器根据SCSI包拆分并封装得到。
其中,二层报文是由应用服务器根据SCSI子包封装而成,该SCSI子包由应用服务器根据待发送的SCSI包拆分得到。
步骤202,存储设备将接收到的二层报文转换成SCSI子包。
具体地,存储设备通过步骤201接收到来自应用服务器的二层报文后,将该二层报文依次去掉以太头、以太尾、IP头和TCP头,获取解封装后的SCSI子包。
步骤203,存储设备将转换得到的SCSI子包组合成SCSI包,并根据该SCSI包进行读写操作。
存储设备获取SCSI子包后,可以读取SCSI子包中的统计字节和排序字节,获取由同一个SCSI包拆分得到的SCSI子包的总数,以及每个SCSI子包的序列号。当存储设备根据接收到的SCSI子包的序列号获知该SCSI子包为某个SCSI包对应的最后一个SCSI子包后(例如,可以判断排序字节的后4位为1111的SCSI子包为最后一个SCSI子包),统计接收到的该SCSI包对应的SCSI子包的个数,并将统计得到的SCSI子包的个数与统计字节表示的SCSI子包的总数相比较,如果两者不相等,则判断SCSI包的传输过程发生错误,请求应用服务器将该SCSI包对应的所有SCSI子包进行重传;如果两者相等,则判断已全部接收到该SCSI包对应的所有SCSI子包,并根据转换得到的SCSI子包的序列号,将SCSI子包组合成对应的SCSI包。随后,存储设备可以将组合得到的SCSI包发送给自身的存储资源,由存储资源根据该SCSI包进行数据的读写操作。
本发明由存储设备接收来自应用服务器的二层报文,并将该二层报文转换成SCSI子包,再将转换得到的SCSI子包组合成SCSI包,并对该SCSI包进行相应的操作,保障了存储设备的存储性能。
上述实施方式提供了一种传输SCSI包的方法,本发明还通过以下实施方式结合具体的应用场景,对上述方法进行详细的描述。
如图3所示,为本发明中的一种传输SCSI包的具体应用场景流程图,包括以下步骤:
步骤301,应用服务器判断待发送的SCSI包的大小是否大于预设阈值,如果待发送的SCSI包的大小大于预设阈值,则执行步骤303;如果待发送的SCSI包的大小不大于预设阈值,则执行步骤302。
其中,预设阈值可以为固定值,也可以动态修改。
步骤302,应用服务器将待发送的SCSI包封装成二层报文,并将该二层报文发送给存储设备。
如果待发送的SCSI包的大小不大于预设阈值,应用服务器将不对该SCSI包进行拆分,而是直接将该SCSI包封装成二层报文,并将该二层报文发送给存储设备。
步骤303,应用服务器设置SCSI子包的个数和根据SCSI子包封装得到的二层报文的发送间隔,使SCSI子包的个数和二层报文的发送间隔满足应用服务器处理待发送的SCSI包的时间限制。
具体地,应用服务器可以通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
Int=2毫秒;
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
需要说明的是,由于使用保留字段中的排序字节的后四位表示拆分后的SCSI子包的序列号,因此最多可以将1个SCSI包拆分为15个SCSI子包,即序列号分别为0001至1111的SCSI子包。
例如,当SCSI包的大小为880K时,应用服务器可以将该SCSI包拆分成9个SCSI子包,前8个SCSI子包的大小为100K,第9个SCSI子包的大小为80K;当SCSI包的大小为90K时,应用服务器不对该SCSI包进行拆分;当SCSI包的大小为1800K时,应用服务器将该SCSI包拆分成10个SCSI子包,每个SCSI子包的大小为180K。
步骤304,应用服务器将SCSI包拆分为至少两个SCSI子包。
具体地,应用服务器使用待发送的SCSI包中的SCSI CBD的保留字段,按照步骤303确定的SCSI子包的个数,将该SCSI包拆成至少两个SCSI子包,并对每个SCSI子包设置对应的序列号。
如表1所示,为SCSI CBD的字段结构表。应用服务器可以使用SCSI CBD中的操作码Option Code(包括读、写等类型)后的保留字段(Reserved),将SCSI包拆成至少两个iSCSI子包。上述保留字段可以包括统计字节和排序字节,其中,统计字节表示根据同一个SCSI包拆分得到的SCSI子包的总数,排序字节的前四位表示SCSI包的编号,排序字节的后四位表示拆分后的SCSI子包的序列号。
表1 SCSI CBD的字段结构表
Figure A20091014555300151
例如,应用服务器将编号为0001、大小为1MB的SCSI包拆分成10个大小为100KB的SCSI子包时,可以设置第1个SCSI子包的序列号为0001,第2至9个SCSI子包的序列号分别为0010至1001,第10个SCSI子包的序列号为1111,则拆分后的SCSI子包的序列字段分别为00010001至00011001,以及00011111,而拆分前的SCSI包的序列字段为00010000。
步骤305,应用服务器将拆分后的SCSI子包分别封装成对应的二层报文。
具体地,应用服务器在每个拆分得到的SCSI子包的基础上添加iSCSI头、TCP头、IP头、以太头(Ethernet Head)和以太尾(Ethernet Trailer),将SCSI子包封装成二层报文。其中,iSCSI头来自于iSCSI协议层次模型中的iSCSI协议层,TCP头和IP头来自于TCP/IP层,以太头和以太尾来自于以太网层。
步骤306,应用服务器通过网口将二层报文发送给存储设备。
具体地,应用服务器可以每隔预设时间向存储设备发送一次二层报文,直到将SCSI包对应的所有二层报文发送完毕,上述预设时间为应用服务器通过步骤303设置的二层报文的发送间隔。
步骤307,存储设备将接收到的二层报文转换成SCSI子包。
具体地,存储设备接收到来自应用服务器的二层报文后,将该二层报文依次去掉以太头、以太尾、IP头、TCP头和iSCSI头,获取解封装后的SCSI子包。
步骤308,存储设备将转换得到的SCSI子包组合成SCSI包。
具体地,存储设备根据转换得到的SCSI子包的序列号,将SCSI子包组合成对应的SCSI包。
例如,存储设备获取到序列字段为00010001的SCSI子包后,确定该SCSI子包是由编号为0001的SCSI包拆分得到的第1个SCSI子包,并等待后续的SCSI子包。存储设备获取到序列字段为00011111的SCSI子包后,确定该SCSI子包是由编号为0001的SCSI包拆分得到的最后一个SCSI子包,并将在上述过程中获取到的SCSI子包,包括序列字段为00010001和00011111的SCSI子包,组合成SCSI包。
步骤309,存储设备中的存储资源根据获取的SCSI包进行数据的读写操作。
具体地,存储设备通过步骤308获取SCSI包后,可以将该SCSI包发送给自身的存储资源,由该存储资源根据该SCSI包进行数据的读写操作。
需要说明的是,本发明方法可以根据实际需要对各个步骤顺序进行调整。
本发明将根据SCSI包拆分得到的SCSI子包封装成对应的二层报文,并将该二层报文依次发送到存储设备,减小了对网络瞬时流量的冲击,避免了网络拥塞;将转换得到的SCSI子包组合成SCSI包,并对该SCSI包进行相应的操作,保障了存储设备的存储性能。
本发明在上述实施方式中提供了传输SCSI包的方法和应用场景,相应地,本发明还提供了应用上述传输SCSI包的方法的装置,包括存储设备和应用服务器。
如图4所示,为本发明中的一种存储设备结构示意图,包括:
接收模块410,用于接收来自应用服务器的二层报文,该二层报文是由应用服务器根据SCSI子包封装而成,该SCSI子包由应用服务器根据SCSI包拆分得到。
应用服务器可以将SCSI包拆分成SCSI子包,并将拆分后的SCSI子包封装成二层报文,再将封装得到的二层报文依次发送到接收模块410,相邻的二层报文的发送时间可以间隔预设时间。
转换模块420,与接收模块410电性连接,用于将接收模块410接收到的二层报文转换成SCSI子包。
具体地,转换模块420可以将二层报文依次去掉以太头、以太尾、IP头和TCP头,获取解封装后的SCSI子包。
组合模块430,与转换模块420电性连接,用于将转换模块420转换得到的SCSI子包组合成SCSI包,并根据该SCSI包进行读写操作。
上述组合模块430,具体用于根据SCSI子包的序列号,将该SCSI子包组合成对应的SCSI包。随后,组合模块430可以根据组合得到的SCSI包进行数据的读写操作。
本发明由存储设备接收来自应用服务器的二层报文,并将该二层报文转换成SCSI子包,再将转换得到的SCSI子包组合成SCSI包,并对该SCSI包进行相应的操作,保障了存储设备的存储性能。
如图5所示,为本发明中的一种应用服务器结构示意图,包括:
拆分模块510,用于将根据SCSI包得到的SCSI包拆分为至少两个SCSI子包。
上述拆分模块510,具体用于使用SCSI包中的SCSI CBD的保留字段,将该SCSI包拆成至少两个SCSI子包,对该SCSI子包设置对应的序列号。
拆分模块510可以使用SCSI CBD中的操作码Option Code(包括读、写等类型)后的保留字段(Reserved),将SCSI包拆成至少两个SCSI子包。该保留字段中的排序字节的前四位表示SCSI包的编号,排序字节的后四位表示拆分后的SCSI子包的序列号。
例如,拆分模块510将编号为0001、大小为1MB的SCSI包拆分成10个大小为100KB的SCSI子包时,可以设置第1个SCSI子包的序列号为0001,第2至9个SCSI子包的序列号分别为0010至1001,第10个SCSI子包的序列号为1111,则拆分后的SCSI子包的序列字段分别为00010001至00011001,以及00011111,而拆分前的SCSI包的序列字段为00010000。
封装模块520,与拆分模块510电性连接,用于将拆分模块510拆分后的SCSI子包分别封装成对应的二层报文。
具体地,封装模块520在每个拆分得到的SCSI子包的基础上添加iSCSI头、TCP头、IP头、以太头(Ethernet Head)和以太尾(Ethernet Trailer),将SCSI子包封装成二层报文。
记录模块530,与封装模块520电性连接,用于记录封装模块520向二层报文中添加的转发信息,并区分不同的二层报文对应的转发信息。
其中,上述转发信息包括iSCSI头、TCP头、IP头、以太头和以太尾。
发送模块540,与封装模块520电性连接,用于通过网口将封装模块520封装后的二层报文发送给存储设备,使存储设备将二层报文转换成SCSI子包、将SCSI子包组合成SCSI包并根据组合得到的SCSI包进行读写操作。
上述发送模块540,具体用于每隔预设时间向存储设备发送一次二层报文,直到将SCSI包对应的所有二层报文发送完毕。
设置模块550,与拆分模块510和发送模块540电性连接,用于设置SCSI子包的个数和二层报文的发送间隔,使SCSI子包的个数和二层报文的发送间隔满足应用服务器处理待发送的SCSI包的时间限制。
上述设置模块550,具体用于通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
Int=2毫秒;
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
需要说明的是,由于使用保留字段中的排序字节的后四位表示拆分后的SCSI子包的序列号,因此最多可以将1个SCSI包拆分为15个SCSI子包,即序列号分别为0001至1111的SCSI子包。
例如,当SCSI包的大小为880K时,拆分模块510可以将该SCSI包拆分成9个SCSI子包,前8个SCSI子包的大小为100K,第9个SCSI子包的大小为80K;当SCSI包的大小为90K时,拆分模块510不对该SCSI包进行拆分;当SCSI包的大小为1800K时,拆分模块510将该SCSI包拆分成10个SCSI子包,每个SCSI子包的大小为180K。
判断模块560,与拆分模块510电性连接,用于判断待发送的SCSI包的大小是否大于预设阈值,在待发送的SCSI包的大小大于所述预设阈值时,通知拆分模块510对待发送的SCSI包进行拆分。
其中,预设阈值可以为固定值,也可以动态修改。在待发送的SCSI包的大小不大于预设阈值时,判断模块560通知封装模块520将待发送的SCSI包直接封装成二层报文。
本发明由应用服务器将根据SCSI包拆分得到的SCSI子包封装成对应的二层报文,并将该二层报文依次发送到存储设备,减小了对网络瞬时流量的冲击,避免了网络拥塞。
本发明在上述实施方式中提供了传输SCSI包的方法和装置,相应地,本发明还提供了应用上述传输SCSI包的方法的系统。
如图6所示,为本发明中的一种传输SCSI包的系统结构示意图,包括应用服务器610和存储设备620,其中,
应用服务器610,用于将SCSI包拆分为至少两个SCSI子包,将拆分后的SCSI子包分别封装成对应的二层报文,通过网口将封装后的二层报文发送给存储设备620。
应用服务器610,还用于使用SCSI包中的SCSI CBD的保留字段,将该SCSI包拆成至少两个SCSI子包,对该SCSI子包设置对应的序列号。
具体地,应用服务器610可以使用SCSI CBD中的操作码Option Code(包括读、写等类型)后的保留字段(Reserved),将SCSI包拆成至少两个SCSI子包。该保留字段中的排序字节的前四位表示SCSI包的编号,排序字节的后四位表示拆分后的SCSI子包的序列号。
另外,上述应用服务器610每隔预设时间向存储设备620发送一次二层报文,直到将SCSI包对应的所有二层报文发送完毕。
存储设备620,用于接收来自应用服务器610的二层报文,将接收到的二层报文转换成SCSI子包,将转换得到的该SCSI子包组合成SCSI包,并根据该SCSI包进行读写操作。
具体地,上述存储设备620根据SCSI子包的序列号,将该SCSI子包组合成对应的SCSI包。
本发明通过应用服务器将根据SCSI包拆分得到的SCSI子包封装成对应的二层报文,并将该二层报文依次发送到存储设备,减小了对网络瞬时流量的冲击,避免了网络拥塞;通过存储设备将转换得到的SCSI子包组合成SCSI包,并对该SCSI包进行相应的操作,保障了存储设备的存储性能。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (13)

1、一种传输小型计算机系统接口SCSI包的方法,应用于包括应用服务器和存储设备的系统中,其特征在于,所述方法包括以下步骤:
所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包;
所述应用服务器将所述拆分得到的SCSI子包分别封装成对应的二层报文;
所述应用服务器通过网口向所述存储设备发送所述二层报文,使所述存储设备将所述二层报文转换成SCSI子包、将所述SCSI子包组合成SCSI包并根据所述组合得到的SCSI包进行读写操作。
2、如权利要求1所述的方法,其特征在于,所述应用服务器通过网口向存储设备发送二层报文,具体为:
所述应用服务器每隔预设时间向所述存储设备发送一次二层报文,直到将所述SCSI包对应的所有二层报文发送完毕。
3、如权利要求1或2所述的方法,其特征在于,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包,具体为:
所述应用服务器使用所述SCSI包中的SCSI命令描述块CBD的保留字段,将所述SCSI包拆成至少两个SCSI子包,对所述SCSI子包设置对应的序列号。
4、如权利要求1所述的方法,其特征在于,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包之前,还包括:
所述应用服务器确定所述待发送的SCSI包的大小大于预设阈值。
5、如权利要求2所述的方法,其特征在于,所述应用服务器将待发送的SCSI包拆分为至少两个SCSI子包之前,还包括:
设置所述SCSI子包的个数和所述二层报文的发送间隔,使所述SCSI子包的个数和所述二层报文的发送间隔满足所述应用服务器处理所述待发送的SCSI包的时间限制。
6、如权利要求5所述的方法,其特征在于,所述设置SCSI子包的个数和二层报文的发送间隔,具体为:
通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
7、一种应用服务器,应用于包括应用服务器和存储设备的系统中,其特征在于,所述应用服务器包括:
拆分模块,用于将待发送的SCSI包拆分为至少两个SCSI子包;
封装模块,与所述拆分模块电性连接,用于将所述拆分模块拆分得到的SCSI子包分别封装成对应的二层报文;
发送模块,与所述封装模块电性连接,用于通过网口向所述存储设备发送所述封装模块封装得到的二层报文,使所述存储设备将所述二层报文转换成SCSI子包、将所述SCSI子包组合成SCSI包并根据所述组合得到的SCSI包进行读写操作。
8、如权利要求7所述应用服务器,其特征在于,
所述发送模块,具体用于每隔预设时间向所述存储设备发送一次二层报文,直到将所述SCSI包对应的所有二层报文发送完毕。
9、如权利要求7或8所述应用服务器,其特征在于,
所述拆分模块,具体用于使用所述SCSI包中的小型计算机系统接口SCSI命令描述块CBD的保留字段,将所述SCSI包拆成至少两个SCSI子包,对所述SCSI子包设置对应的序列号。
10、如权利要求8所述应用服务器,其特征在于,还包括:
判断模块,与所述拆分模块电性连接,用于判断所述待发送的SCSI包的大小是否大于预设阈值,在所述待发送的SCSI包的大小大于所述预设阈值时,通知所述拆分模块对所述待发送的SCSI包进行拆分。
11、如权利要求8所述应用服务器,其特征在于,还包括:
设置模块,与所述拆分模块和所述发送模块电性连接,用于设置所述SCSI子包的个数和所述二层报文的发送间隔,使所述SCSI子包的个数和所述二层报文的发送间隔满足所述应用服务器处理所述待发送的SCSI包的时间限制。
12、如权利要求8所述应用服务器,其特征在于,还包括:
记录模块,与所述封装模块电性连接,用于记录所述封装模块向二层报文中添加的转发信息,并区分不同的二层报文对应的转发信息。
13、如权利要求11所述应用服务器,其特征在于,
所述设置模块,具体用于通过以下计算方法确定SCSI子包的个数和二层报文的发送间隔:
N = [ Sf / 100 ] + 1 , Sf ≤ 1000 K 10 , Sf > 1000 K
且Int*N+t<T;
其中,N为SCSI子包的个数,Sf为待发送的SCSI包的大小,[Sf/100]为对Sf除以100的商取整后的结果,Int为二层报文的发送间隔,t为所述存储设备处理每个SCSI包所消耗的时间,T为所述应用服务器中的应用程序能够承受的SCSI包最大处理时间。
CNA2009101455535A 2009-05-27 2009-05-27 传输小型计算机系统接口scsi包的方法和装置 Pending CN101572716A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2009101455535A CN101572716A (zh) 2009-05-27 2009-05-27 传输小型计算机系统接口scsi包的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2009101455535A CN101572716A (zh) 2009-05-27 2009-05-27 传输小型计算机系统接口scsi包的方法和装置

Publications (1)

Publication Number Publication Date
CN101572716A true CN101572716A (zh) 2009-11-04

Family

ID=41231953

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009101455535A Pending CN101572716A (zh) 2009-05-27 2009-05-27 传输小型计算机系统接口scsi包的方法和装置

Country Status (1)

Country Link
CN (1) CN101572716A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102860049A (zh) * 2011-04-27 2013-01-02 华为技术有限公司 一种短信处理方法、相关设备及系统
CN105049380A (zh) * 2015-08-27 2015-11-11 广州市百果园网络科技有限公司 一种网络通信处理方法及通信服务设备
CN110691094A (zh) * 2019-10-10 2020-01-14 山东超越数控电子股份有限公司 一种基于iscsi协议传输数据的方法、设备及介质
WO2021164163A1 (zh) * 2020-02-21 2021-08-26 苏州浪潮智能科技有限公司 一种请求处理方法、装置、设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102860049A (zh) * 2011-04-27 2013-01-02 华为技术有限公司 一种短信处理方法、相关设备及系统
CN105049380A (zh) * 2015-08-27 2015-11-11 广州市百果园网络科技有限公司 一种网络通信处理方法及通信服务设备
CN105049380B (zh) * 2015-08-27 2018-11-23 广州市百果园网络科技有限公司 一种网络通信处理方法及通信服务设备
CN110691094A (zh) * 2019-10-10 2020-01-14 山东超越数控电子股份有限公司 一种基于iscsi协议传输数据的方法、设备及介质
WO2021164163A1 (zh) * 2020-02-21 2021-08-26 苏州浪潮智能科技有限公司 一种请求处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
RU2187898C2 (ru) Способ формирования ячеек данных и устройство и телекоммуникационная система для его осуществления, способ перемещения пакета данных и устройство и телекоммуникационная система для его осуществления
CA2168351C (en) Method and apparatus for connecting a node to a wireless network using a standard protocol
CN1866971B (zh) 移动通讯系统处理数据分段的方法及装置
CN101442481A (zh) 用于无线接口上tcp性能改善的双重代理方法
CN108737912B (zh) 报文互通方法、potn互通模块及potn系统
CN103346949A (zh) 基于嵌入式的双通道网络数据包的拆包和组包方法及系统
CN102404414B (zh) 基于mmc/sd接口的以太网通信系统及方法
CN106256149A (zh) 一种数据处理方法及装置
CN113949718B (zh) 基于e1及ip混合承载的电力专网调度放号系统及方法
CN100396126C (zh) 一种基站控制器向基站传输数据的方法
CN109936492A (zh) 一种通过隧道传输报文的方法、装置和系统
CN101257456A (zh) 提高压缩报文转发性能的方法及装置
CN109120540A (zh) 传输报文的方法、代理服务器和计算机可读存储介质
CN101572716A (zh) 传输小型计算机系统接口scsi包的方法和装置
CN101667959B (zh) 一种物理层数据传输的方法、装置及数据传输的系统
CN107948217B (zh) 交换机系统和通信方法
US6934551B1 (en) Method for wireless data transmission for adaptive multiple protocols
CN100536457C (zh) 一种实现同步数字体系上传送数据包的方法和装置
CN102369784A (zh) 提高中继网络系统性能的方法、通信系统及协议实体
CN110446275A (zh) 一种e1点对点通信的方法、终端及系统
CN107995315B (zh) 业务板间信息的同步方法、装置、存储介质及计算机设备
CN102546112B (zh) 一种数据封装方法及装置
CN102811149B (zh) 一种用于视频系统中的双卡前端设备及控制方法、系统
CN106302258B (zh) 一种报文转发方法及装置
CN101789843A (zh) 实现多线路e1捆绑的方法和网桥

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20091104