CN1747444A - 数据处理系统网络中从主机单元分担数据流的方法及引擎 - Google Patents
数据处理系统网络中从主机单元分担数据流的方法及引擎 Download PDFInfo
- Publication number
- CN1747444A CN1747444A CNA2005100813718A CN200510081371A CN1747444A CN 1747444 A CN1747444 A CN 1747444A CN A2005100813718 A CNA2005100813718 A CN A2005100813718A CN 200510081371 A CN200510081371 A CN 200510081371A CN 1747444 A CN1747444 A CN 1747444A
- Authority
- CN
- China
- Prior art keywords
- pdu
- iscsi
- tcp
- head
- data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
一种从主机数据处理单元(205)分担对通过至少一个TCP/IP连接(3071、3072、3073)到来的数据流的iSCSI TCP/IP处理的方法,以及相关的iSCSITCP/IP分担引擎(TOE)。该方法包含:提供协议数据单元(PDU)头部队列(311),用来存储通过所述至少一个TCP/IP连接接收的iSCSI PDU的头部(HDR11、...、HDR32);监控所述至少一个TCP/IP连接,寻找待处理的进入的iSCSI PDU;当通过所述至少一个TCP/IP连接至少收到iSCSI PDU头部时,从收到的PDU中抽取该iSCSI PDU头部,并且将所抽取的iSCSI PDU头部放入PDU头部队列;查看PDU头部队列,以确定是否存在待处理的iSCSIPDU,并且根据在从PDU头部队列中检索的、所抽取的iSCSI PDU头部中的信息处理进入的iSCSI PDU。
Description
技术领域
一般地,本发明涉及或者计算机网络领域,具体地讲,涉及有关于通过计算机网络,尤其是倚赖于如TCP/IP协议(传输控制协议/因特网协议)的协议的网络,传送存储数据的方面。
背景技术
近年来,数据处理系统网络(此后简称为计算机网络),尤其是那些倚赖于TCP/IP协议的计算机网络,已经变得非常普遍。
基于TCP/IP协议的计算机网络的最佳例子之一为以太网,由于以太网的简单性与被减少的实现成本,其已经成为最常见的(例如)LAN(局域网)联网方案,尤其是在SOHO(小办公室/家庭办公室)环境下。
计算机网络的数据传送速度,尤其是以太网链路的数据传送速度,近年来已经得到迅猛增长,从10Mbps(每秒兆比特)增长到了10Gbps(每秒吉比特)。
对于通过网络的、在数据存储设备之间的数据传送,是否能够得到具有高速数据传送速度的网络链路尤其重要。
在这一情况下,出现了所谓的iSCSI,即表示互连网SCSI(小型计算机系统接口)的缩写,作为用来通过TCP/IP网络(尤其是以太网)在不同数据存储设备之间高效传送数据的新协议。通常来说,iSCSI为用来从所谓的SCSI数据传送发起方(即启动输入/输出——I/O——处理的SCSI设备,例如应用服务器,或者只是用户的个人计算机——PC——或工作站)向SCSI目标方(即响应于进行I/O处理的请求的SCSI设备,例如存储设备)传送存储数据的端到端协议,其中SCSI发起方与SCSI目标方两者都连接到TCP/IP网络。人们已经借助于两个被独立广泛使用的协议建立起iSCSI,一方面为SCSI协议,其来自计算机存储设备领域(例如硬盘),另一方面为TCP/IP协议,其广泛用于计算机网络领域,例如因特网与以太网。
在不涉及过多细节的前提下,就其自身而言,iSCSI协议为利用消息语义以将面向块的存储数据SCSI协议映射为TCP/IP协的SCSI传送协议,其采用字节流的形式,由此可以通过TCP/IP网络传送SCSI命令:通用SCSI命令描述块(CDB)被封装在iSCSI数据单元中,其被称为数据包或者协议数据单元(PDU),然后在通过网络将其发送给所希望的目的SCSI目标方之前,将其送往TCP层(并且类似地,来自该SCSI目标方的响应被封装在iSCSIPDU中,并且被转发给TCP层以通过网络传送给发起方的SCSI发起者)。
然而,网络数据传送速度的快速增长(其已经在性能上超过了大部分数据处理器(中央处理单元——CPU——或微处理器)的处理能力)已经开始产生了一些问题。
iSCSI/TCP/IP协议方面的处理一般由软件应用程序完成,所述软件应用程序在连接到网络的PC、工作站、服务器机器、或者存储设备的中央处理器(CPU)或微处理器上运行。对于主机中央处理器,这不是可以忽略的任务:例如,对于(例如)网络应用服务器的2GHz中央处理器,目前相当常见的1Gbps网络链路就可能构成繁重的负担:在实际上,该服务器的CPU可能花费了其一半的处理能力来进行对于通过网络传送的数据的TCP/IP协议相关方面的相对较低级的处理,从而相应地减少了剩余的、可用于其他正在运行的软件应用程序的处理能力。
换而言之,虽然计算机网络的数据传送速度增长显著,但是采用iSCSI/TCP/IP协议所需的相对繁重的处理成本构成了阻碍高效数据传送以及阻碍进一步提高计算机网络上数据传送速度的主要瓶颈之一。这就意味着:目前,阻碍提高网络数据传送速度的主要障碍不是计算机网络传送速度,而是这一实际情况:iSCSI/TCP/IP协议栈以小于网络速度的速度(由通过计算机网络交换存储数据的联网SCSI设备的CPU)进行处理。在高速网络中,可能会发生以下情况:与执行其正在运行的一或多个软件应用程序相比,SCSI设备的CPU必须为网络流量管理(例如用于重组乱序接收的数据包)专门分配更多的处理资源。
人们已经提出了至少部分地减少在应用服务器、文件服务器、PC、工作站、存储设备的中央处理器上处理网络流量的低级TCP/IP协议方面的负担的解决方案。某些已知的设备也被称为TCP/IP分担引擎(TOE)。
基本而论,TOE将对于TCP/IP协议相关方面的处理从主机处理器分担给独立的硬件,该硬件一般嵌入在(例如)PC或工作站的网络接口适配卡(NIC)中,通过NIC可以进行到计算机网络的连接。
TOE可以不同方式实现,既可以实现为具有专用固件的、独立的、基于处理器的组件,也可以实现为基于ASIC的组件,或者实现为上述两种解决方案的混合。
通过分担TCP/IP协议处理,至少部分地解除了主机CPU的计算量较大的协议栈负担,从而主机CPU可以将其处理资源更集中于所运行的应用程序。
然而,因为TCP/IP协议栈原先是针对软件应用实施而进行定义与开发的,所以以硬件实现其处理具有无法忽略的问题,例如如何达到性能的实际改进、并且避免扩展实现中的附加的新瓶颈,以及如何设计至上层协议(ULP)的接口。
iSCSI协议的采用引入了对于联网SCSI设备的主机CPU的进一步的处理负担。如上所述,iSCSI数据单元,即所谓的PDU,每个都包含PDU头部部分,以及可选地(依赖于PDU类型)PDU有效负载部分。iSCSI还具有相对于TCP/IP协议所允许的基本数据保护的、用于改进数据保护防止损坏的机制:具体地讲,TCP/IP协议采用简单校验和来保护TCP数据段;为了实现数据完整性验证,iSCSI协议允许对于每个PDU采用多达两个的摘要或CRC(循环冗余码):第一CRC可在PDU中提供,以保护PDU头部,而可以提供第二CRC来保护PDU有效负载(当PDU有效负载存在时)。
由主机CPU进行对进入的(入境的)iSCSI PDU处理是一项繁重的工作,因为(例如)必须处理来自可能是多个的TCP/IP连接的iSCSI PDU(其具有就主机CPU进行中断处理而言的固有开销),以通过进行CRC计算确保数据完整性验证,将进入的数据拷贝到目的方SCSI缓冲器中。
由此,如已知TOE所做的那样,从主机CPU只分担对于TCP/IP协议相关方面的处理,可能不足以达到以下目标——显著减少主机CPU必须专用于处理通过网络的数据流量的处理资源:iSCSI协议的某些特有方面可能仍然会造成主机CPU上的繁重负担。
发明内容
考虑到上面概述的现有技术状况,本申请人着手以下问题:如何减少(例如)计算机网络的主机PC、工作站、或者服务器机器的数据处理单元上的、管理通过该网络的数据传送的低级iSCSI/TCP/IP协议相关方面的负担。
具体而言,本申请人面对以下问题:通过提供一种至少部分地分担通过计算机网络的数据传送的iSCSI/TCP/IP协议相关方面的任务处理的TOE,改进当前已知的TOE。
根据本发明的一个方面,提出了一种所附权利要求1所述的方法,用来从主机数据处理单元分担对通过至少一个TCP/IP连接到来的数据流的iSCSITCP/IP处理。
该方法包含:
提供协议数据单元(PDU)头部队列,用来存储通过至少一个TCP/IP连接接收的iSCSI PDU的头部;
监控所述至少一个TCP/IP连接,寻找待处理的进入的iSCSI PDU;
当通过所述至少一个TCP/IP连接至少收到iSCSI PDU头部时,从收到的PDU中抽取该iSCSI PDU头部,并且将所抽取的iSCSI PDU头部放入PDU头部队列;
查看PDU头部队列,以确定是否存在待处理的iSCSI PDU,并且根据在从PDU头部队列中检索的、所抽取的iSCSI PDU头部中的信息处理进入的iSCSI PDU。
本发明的另一个方面涉及一种权利要求15所述的iSCSI TCP/IP分担引擎,用来从主机数据处理单元分担对通过至少一个TCP/IP连接到来的数据流的iSCSI TCP/IP处理,该分担引擎包含:
进入iSCSI PDU监控器,用来监控来自至少一个TCP/IP连接的PDU;
所有TCP/IP连接公用的PDU头部队列;
PDU头部抽取器,用来从进入的PDU中抽取PDU头部,将所抽取的头部放入所述头部队列,并且管理至PDU头部处理器的、关于在PDU头部队列中存在待处理的PDU头部的信号指示。
由于根据本发明上述方面的方法以及相关的TCP/IP分担引擎,至少部分地解除了网络SCSI设备的主机处理单元的对于iSCSI/TCP/IP协议栈的计算繁重的处理。
附图说明
通过以下对本发明实施方式的详细描述,可以清楚本发明的特征与优点,这些实施方式只作为非限制性的示例,该描述将参照附图进行,其中:
图1为示例计算机网络、具体为基于TCP/IP的网络、以及更具体地为以太网的示意图;
图2示意显示图1的计算机网络的通用计算机(例如用户PC或工作站、或者服务器计算机(例如应用服务器))的主要功能块;
图3示意显示根据本发明实施方式的TCP/IP分担引擎(TOE)的主要功能块;
图4示意显示通用iSCSI协议数据单元(PDU)的结构;
图5非常概略地显示本发明的一种实施方式中的、图3的TOE的iSCSI辅助单元的结构;
图6A到6D为显示本发明的一种实施方式中的、图5的iSCSI辅助单元的操作的极简化的流程图。
具体实施方式
参照附图,尤其是图1,示意性地显示了示例计算机网络100。计算机网络100可以是(例如)企业、银行、公共管理部分、SOHO环境等等的LAN,网络及其目标方的具体类型不是对本发明的限制。
计算机网络100包含多个网络组件105a、105b、105c、…、105n,例如通过图1中示意性显示的、其中以标号110表示的通信介质联网在一起的个人计算机(PC)、工作站、用做文件服务器的机器、和/或应用服务器、打印机、海量存储设备等等。
具体而言,计算机网络100为基于TCP/IP的网络,即依赖于TCP/IP协议进行通信的网络,例如为以太网,其为目前为止LAN最常采用的体系结构。具体而言,并且仅作为实例,计算机网络100可以为1Gbps或10Gbps以太网。网络通信介质110可以是有线链路、或者红外线链路、或者无线链路。
然而,虽然在此后将进行的描述中将作为实例参照以太网,但是本意不是将本发明限制于任何特定的计算机网络配置,本发明适用于任何计算机网络,通过该计算机网络采用iSCSI协议以在不同网络组件之间传送存储数据。
在下文中,只是作为实例,将假定计算机网络100在其组件中包含应用服务器计算机,在所示实例中由网络组件105a表示,即计算机网络100中的计算机,其运行该计算机网络用户感兴趣的一或多个应用程序,所述用户连接到网络100并且通过各个用户的个人计算机(PC)和/或工作站105b享受应用服务器105a提供的服务。还假定计算机网络100包含存储设备,例如存储服务器或文件服务器,在所示实例中由网络组件105s表示。网络100的其他组件可以包含(例如)网络阵列存储(NAS)。
如图2示意所示,网络100的通用计算机,例如应用服务器计算机105a,包含并行连接到数据通信总线203(例如PCI总线)的几个功能单元。具体而言,中央处理单元(CPU)205一般包含微处理器,例如RISC处理器(可能的情况是,该CPU可以由几个独立并协作的CPU构成),CPU 205控制应用服务器计算机105a的运行;工作存储器207一般为RAM(随机存取存储器),直接由CPU 205使用以执行程序以及暂时存储数据;以及只读存储器(ROM)209,存储基本程序,用于工作服务器计算机105a自引导。应用服务器计算机105a可以(并且一般确实)包含几个外设单元,其通过各自接口连接到总线203。具体而言,可以提供允许与人类用户交互的外设单元,例如显示设备211(例如CRT、LCD或者等离子体监视器)、键盘213、以及定点设备215(例如鼠标或触摸板)。应用服务器计算机105a还包含用于程序(操作系统、应用程序、操作系统函数库、用户函数库)以及数据的本地海量存储的外设单元,例如总体标记为217的、驱动磁硬盘的一或多个磁硬盘驱动器(HDD),以及用于读取/写入CD-ROM/DVD的CD-ROM/DVD驱动器219,或者CD-ROM/DVD播放盒(juke-box)。可以存在其他外设单元,例如用来读取/写入软盘的软盘驱动器,用来读取/写入存储卡的存储卡读取器,磁带海量存储存储单元等等。
应用服务器计算机105a还配备有网络接口适配(NIA)卡221,用来连接到计算机网络100,具体而言用于以极其物理的级别访问通信介质110。NIA卡221为自身具有数据处理能力的硬件外设,在附图中通过嵌入处理器225示意显示,其可以(例如)包含与计算机105a功能单元、尤其与CPU 205通信的微处理器、RAM与ROM。优选地,NIA卡221包含DMA引擎227,其用来处理对计算机105a存储区域(例如RAM与本地硬盘等等)的直接访问,用来在没有CPU 205干预的情况下向其/从其写入/读取数据。
根据本发明的实施方式,TCP/IP分担引擎(TOE)223融入NIA卡221,用来至少部分地从应用服务器105a的CPU 205(主机CPU)分担对在应用服务器105a与(例如)存储服务器105s或用户的PC 105b之间交换的数据流量的TCP/IP相关方面的繁重处理。
具体而言,在本发明的实施方式中,TOE 223用来使NIA卡221能够进行直至iSCSI层的大部分协议处理,其以后在本说明书中更详细地描述。
网络100的任何其他计算机,尤其是存储服务器105s,具有图2所示的一般结构,尤其是在具有TOE 223的NIA 221方面。然而需要指出本发明不限于以下事实——根据iSCSI协议交互存储数据的网络组件双方或者一方为具有图2所示结构的计算机:iSCSI设备的具体结构对本发明不构成限定。
图3为其中包含有TOE 223的NIA卡221内部结构的、就有关于理解此处所述本发明示范性实施方式的功能块的非常概略性的表示。
NIA卡221包含物理级接口设备301,用来实现国际标准化组织(ISO)所列的开放系统互连(OSI)“层栈”模型的物理(PHY)层。PHY层301处理通过网络通信介质110的通信的基本物理细节。在PHY层301之上,介质访问控制(MAC)层接口设备303实现MAC层,该层在其他功能之中负责控制到网络通信介质110的访问。
嵌入NIA221的TOE 223包含用来对TCP/IP数据包(具体为通过网络通信介质110从一或多个TCP连接接收的TCP/IP数据包)进行TCP/IP处理的设备305。
TCP/IP数据包为在网络层协议(直接在MAC层之上的ISO-OSI层)上符合IP协议、并且具有作为传输层协议的TCP协议的数据包。
根据iSCSI协议,使用特别的消息语义将常规的SCSI协议映射到TCP字节流上。待通过网络传送的数据在包数据单元或协议数据单元(PDU)中格式化;在图4中,非常概略地表示了通用iSCSI PDU 400的结构。一般而言,每个PDU 400都包含PDU头部部分405、以及可选的PDU有效负载部分410(是否存在PDU有效负载部分依赖于PDU类型:某些iSCSI PDU不承载数据,只包含头部部分405)。
PDU 400可以包含两个数据完整性保护字段,即两个数据摘要或CRC(循环冗余码)字段415与420:可以提供第一CRC字段415(一般为四字节)以保护PDU头部405部分的信息内容,而可以提供第二CRC字段420以保护PDU有效负载部分425(当存在时)的信息内容。需要指出这两个CRC字段415与420都是可选的;具体而言,在那些未承载有效负载的PDU中,不存在第二CRC字段420。具有多达两个CRC字段的可能性实现了相对于TCP/IP协议所允许的基本数据保护的、用来改进保护数据防止损坏的iSCSI机制:TCP/IP协议采用了简单校验和来保护TCP数据段;为了实现数据完整性验证,iSCSI协议允许采用对于每个PDU多达两个的CRC:第一CRC保护PDU头部,而第二CRC来保护PDU有效负载。需要指出头部CRC 415或有效负载CRC 420或者两者都可以被选择性地使能或禁止;具体地讲,在PDU缺少有效负载部分410的情况下,将禁止有效负载CRC 420。
PDU 400以基本头部段(BHS)430开始;BHS 430具有固定恒定大小,具体地讲,目前其为48字节长。虽然其长度固定恒定,但是BHS 430的结构根据该iSCSI PDU 400为命令PDU还是响应PDU而变化。命令PDU为由iSCSI发起方发出的、承载iSCSI目标方的命令、数据、状态信息的PDU;相反,响应PDU为由iSCSI目标方发出的、响应于从iSCSI发起方接收的命令PDU的PDU。BHS 430包含用来完整描述整个PDU 400的长度的信息;具体地讲,在其他字段中,BHS 430包含:字段435(TotalPayloadLength,有效负载总长度),其中包含指明PDU有效负载410的总长度的信息;以及字段440(AHSlength,ASH长度),其中包含指明可选的附加头部段(AHS)445的长度的信息。顾名思义,AHS 445为PDU头部405的可选附加部分,该部分如果存在的话(由字段440包含不同于零的值这一事实表示的情况),在BHS 430之后,并且允许扩展iSCSI PDU头部405以包含BHS 430所提供的信息之外的附加信息。
仍然依赖于PDU的类型,BHS 430可以进一步包含字段445、450、455、460,其承载发起方任务标记(ITT)、SCSI任务标识符、目标方传送标记(TTT——分配给每个由目标方发送给发起方的、响应于由发起方向目标方发出的写入请求的“准备好传送”请求的标记)、逻辑单元号(LUN)、SCSI命令描述符块(CBD)。
如本说明书技术背景部分所述,就所需处理能力而言,(例如)由服务器105a的CPU 205(主机CPU)以软件对数据流iSCSI/TCP/IP协议相关方面进行处理是繁重的。
具体地讲,由(例如)服务器105a主机CPU 205以软件对进入的(入境)iSCSI PDU进行处理是一项繁重的任务,尤其是因为主机CPU 205一般必须处理来自多个TCP/IP连接的iSCSI PDU(其具有中断的固有开销),通过进行CRC计算确保数据完整性验证(当在该PDU中存在一或两个CRC时),将进入的数据拷贝到适当的目的方SCSI数据缓冲器中。发起方和目标方之间的通用iSCSI会话实际上可包括多于一个的TCP/IP连接,通过TCP/IP连接在例如应用服务器105a的iSCSI发起方和例如存储服务器105s的iSCSI目标方之间进行通信。例如,应用服务器105a在运行期望的应用程序的同时,可能需要执行自和/或从存储装置(例如由存储服务器105s支持的本地硬盘)的读取和/或写入操作:如果发生这样的事情,则应用服务器105a开始iSCSI会话,建立与存储服务器105s的一个或多个应用服务器105a。
从仅仅负责与TCP/IP协议有关方面的主机CPU的分担处理可能不足以显著地减少计算资源,例如服务器105a的CPU 205(更一般地,通用iSCSI设备的处理器)必须投入到通过网络交换的存储数据流的处理中。iSCSI协议的一些特定方面可能仍会使CPU 205的负担过大。
根据本发明的实施例,为了解决这样的问题,除了分担进入数据流的TCP/CP协议方面的处理之外,还部分地从主机CPU 205将进入的iSCSIPDU的处理分担到其外部设备,例如NIA 221(但是这不是对本发明的限制,因为远端CPU的外设可提供用于对分担进入的iSCSI PDU的处理)。
再来参照图3,标号3071、3072、3073表示对应于(三个)各个不同TCP连接的多个(实例中为三个)TCP数据流。可观察到,除了TCP数据流,标识为3071、3072、3073的元素也可认为是TCP数据流重组缓冲器,其中只要较低级的TCP/IP层305收到数据流量,就重组来自不同TCP连接的iSCSIPDU。
根据本发明的实施方式,将TCP数据流(即相应地在重组缓冲器中重组的数据)3071、3072、3073送入iSCSI辅助单元309,以在TOE 223级上处理。
具体地讲,iSCSI辅助单元309采用iSCSI头部队列311,以及多个(示例中为三个)iSCSI数据队列3131、3132、3133,具体为每个TCP连接一个iSCSI数据队列。
如以下详述,iSCSI头部队列311由iSCSI辅助单元309使用以存储从通过不同TCP数据流3071、3072、3073到达的、进入的iSCSI PDU PDU11、…、PDU32中抽取的头部部分(简称头部)HDR11、…、HDR32。而iSCSI数据队列3131、3132、3133用来保持用来允许iSCSI辅助单元309在多个SCSI缓冲器中分别识别适当SCSI数据缓冲器3501、3502、…、350n的信息(例如指针、引用、描述符),这些缓冲器为要拷入从进入的PDU PDU11、…、PDU32中抽取的iSCSI PDU有效负载部分DATA11、…、DATA32(当存在有效负载部分时)的目的方缓冲器。具体地讲,在本发明的实施方式中,iSCSI辅助单元309利用DMA机制,具体为NIA 221的DMA引擎227,来直接访问(例如)应用服务器105a的适当存储区域,其中定位SCSI数据缓冲器3501、3502、...、350n,例如RAM或者本地硬盘的区域,并且将进入的PDU的有效负载部分从输入的TCP数据流(即从重组缓冲器来的)3071、3072、3073移动到适当目的方SCSI数据缓冲器3501、3502、…、350n。
应该注意可以在NIA 221的内部存储器中定位iSCSI头部队列311和/或iSCSI数据队列3131、3132、3133,或者可以在应用服务器105a的系统存储器中定位它们,例如在RAM中或者本地硬盘上;在第二种情况下,可以利用NIA 221的DMA引擎来写入/检索去向/来自iSCSI头部队列311和/或iSCSI数据队列3131、3132、3133的数据。
iSCSI辅助单元309检测通过TCP数据流3071、3072、3073到达的入境iSCSI PDU PDU11、…、PDU32(即其在重组缓冲器3071、3072、3073中检测PDU);具体地讲,iSCSI辅助单元309检测到达的TCP数据流中的iSCSIPDU边界。当在与不同TCP连接相关联的任一重组缓冲器3071、3072、3073中检测到入境iSCSI PDU时,iSCSI辅助单元309将PDU头部HDR11、…、HDR32与PDU有效负载DATA11、…、DATA32分离;所分离的头部HDR11、…、HDR32累积到iSCSI头部队列311中,同时使用从iSCSI数据队列3131、3132、3133检索的信息,iSCSI辅助单元309指令DMA引擎227直接将PDU有效负载DATA11、…、DATA32拷贝到适当目的方SCSI缓冲器3501、3502、…、350n中。
具体地讲,可以将iSCSI头部队列311实现为近似循环缓冲器,其中存储所接收的PDU的头部(按照收到PDU的顺序)。
非常概略性地,并且在本发明的一种示例性实施方式中,iSCSI头部队列311由iSCSI PDU头部处理器335利用,iSCSI PDU头部处理器335为入境PDU管理代理330的一部分,(例如)在主机CPU 205的控制下运行(而这不是作为对本发明的限制,因为入境PDU管理代理330也可以在NIA 221的处理器225的控制下运行,更一般地讲,在实现TOE 223的外设中嵌入的处理单元的控制下运行)。iSCSI PDU头部处理器335向SCSI目的方缓冲器定位器340提供从iSCSI头部队列311获得的、用于识别不同SCSI目的方缓冲器3501、3502、…、350n的信息;利用该信息,SCSI目的方缓冲器定位器340定位适当的目的方SCSI缓冲器,以及该缓冲器内需要拷入数据的位置,并且向适当iSCSI数据队列3131、3132、3133投递用来允许iSCSI辅助单元309分别识别不同的SCSI目的方缓冲器3501、3502、…、350n的信息,其中需要向该SCSI目的方缓冲器拷贝由入境PDU承载的数据。需要指出:将入境PDU管理代理330分离为iSCSI PDU头部处理器335与SCSI目的方缓冲器定位器340只是示例性的,而非限制性的;替换的实施方式是可能的。
在图5中,再次示意性地、但稍微详细一些地显示了iSCSI辅助单元309。iSCSI辅助单元309包含PDU头部抽取器505,其从通过通用TCP数据流3071、3072、3073到来的通用入境PDU 400中抽取完整头部405。PDU头部抽取器505在仲裁器507的控制下运行,仲裁器507保持那些已经收到足够处理的数据量的TCP连接的列表;PDU头部抽取器505将所抽取的头部405放入iSCSI头部队列311。当入境PDU由PDU头部抽取器505处理时,头部验证器510“即时”(on the fly)验证头部CRC(当其存在于进入的PDU中时);具体地讲,通过启动CRC验证器513,即时计算PDU头部的CRC,并且将所计算的CRC与头部CRC 415相比较,以验证所接收的iSCSI头部的完整性;将验证结果附接在所抽取的PDU头部405上作为头部状态(例如图3中的H-STAT11、H-STAT21等等),并且将其放入iSCSI头部队列311中。应该注意:只有对考虑中的TCP连接使能头部CRC时,头部验证器510才验证头部的CRC。
iSCSI辅助单元309还包含有效负载验证器515,其通过即时计算PDU有效负载410的CRC(例如利用CRC验证器513的服务),验证PDU有效负载的数据完整性。将有效负载验证结果放入iSCSI头部队列311作为数据状态(例如图3中的D-STAT11、D-STAT21等等);应该注意:虽然iSCSI头部队列311中的通用的所抽取的PDU头部后面紧跟着相应的头部状态(当头部CRC被使能时),但是对于数据状态并非如此,这是因为只有在完成数据移动之后才计算数据状态并且将其放入iSCSI头部队列311中。还应该注意:也是在这种情况下,只有在存在有效负载CRC时,即如果进入的PDU承载了有效负载并且对于考虑中的TCP连接使能了有效负载CRC,有效负载验证器515才验证有效负载的CRC。
iSCSI辅助单元309还包含PDU有效负载移动器520,其与iSCSI数据队列3131、3132、3133以及DMA引擎227交互,以使后者根据从iSCSI数据队列3131、3132、3133检索的描述信息与所识别的SCSI数据缓冲器,将入境PDU的有效负载410移动到适当的SCSI数据缓冲器3501、3502、…、350n。
此后将参照图6的简化示意流程图描述根据本发明实施方式的iSCSI辅助单元309的运行。
假定已经在通常的登录过程之后,在假定为iSCSI发起方的应用服务器105a与假定为iSCSI目标方的文件服务器105s之间建立了iSCSI会话(然而需要指出这不应该被作为对本发明的限制,这是因为iSCSI分担同样适用于iSCSI发起方与iSCSI目标方)。只是作为例子,还假定存在例如三个的多个不同的TCP连接,相应于三个TCP数据流(相应于各自的重组缓冲器,重组缓冲器由较低级TCP/IP层管理)3071、3072、3073。所述多个(在所考虑的例子中为三个)不同的TCP连接可能(例如)属于同一iSCSI会话,或者属于不同的iSCSI会话(即可能有多个iSCSI会话存在并且是激活的)。
iSCSI辅助单元309总是寻找准备好进行处理的入境PDU(判定块605)。具体地讲,仲裁器507根据相应的TCP连接状态,进行对不同TCP数据流3071、3072、3073的仲裁:通用iSCSI会话的通用TCP连接3071、3072、3073实际上可能处于两种状态之一,即“等待头部”状态或者“等待数据”状态。
在通用TCP连接3071、3072、3073处于等待头部状态的情况下,仲裁器507通过监控相应于该TCP连接的重组缓冲器,等待直至从该TCP连接至少收到完整的BHS 430,并且该收到的BHS可在相应的重组缓冲器中得到(其中,如上所述,BHS为PDU头部405总是存在于PDU中的那一部分,并且具有固定的恒定长度,一般为48字节)。当仲裁器507检测到已经通过通用TCP连接至少收到了PDU的完整BHS 430时,仲裁器认为该TCP连接为准备好进行处理,并且这样的TCP连接被放入“TCP连接就绪”列表,该列表由仲裁器507管理,以等待由iSCSI辅助单元309进一步处理。
如果通用TCP连接3071、3072、3073改为处于等待数据状态,则只有当仲裁器507通过监控相应于该TCP连接的重组缓冲器确定已经通过该TCP连接收到了足够的数据量(足够的数据块,其大小最好可由用户配置,例如通过配置参数)、并且已经(由SCSI目的方缓冲器定位器340)向相应于该TCP连接的iSCSI数据队列3131、3132、3133投递SCSI目的方数据缓冲器3501、3502、…、350n之一(已经向适当的iSCSI数据队列3131、3132、3133投递SCSI数据缓冲器3501、3502、…、350n就意味着应用服务器105a——具体为入境PDU管理代理330——准备好了让进入的PDU有效负载移动到适当的SCSI目的方数据缓冲器3501、3502、…、350n)时,仲裁器507才将该TCP连接加入到TCP连接就绪列表。
返回图6的示意流程图,在块605,iSCSI辅助单元309查看TCP连接就绪列表,并且检查是否有任一TCP连接3071、3072、3073准备好了处理:在否定的情况下(退出分支N),iSCSI辅助单元309继续等待TCP连接被放入TCP连接就绪列表,否则(退出分支Y),iSCSI辅助单元309从TCP连接就绪列表中挑选一个TCP连接3071、3072、3073(块610)以处理第一可用PDU;具体地讲,当在TCP连接就绪列表中存在多于一个的TCP连接时,iSCSI辅助单元309可根据“先进先出”标准挑选一个TCP连接,即iSCSI辅助单元309挑选位于TCP连接就绪列表顶部(或者底部)的TCP连接。
然后,iSCSI辅助单元309首先检查从TCP连接就绪列表中挑选的TCP连接的状态(块615)。
如果该TCP连接处于等待头部状态(判定块620的退出分支Y),则意味着从相应重组缓冲器取得的数据至少相应于完整的PDU BHS 430。如果满足这一条件,则有三种可能情况:正在处理的PDU未承载AHS 445(情况(a));或者PDU承载了AHS 445,其已经被完整接收,并且可以在重组缓冲器中得到(情况(b));或者PDU承载了AHS 445,但是还未收到完整的AHS 445(情况(c))。
具体地讲,在本发明的实施方式中,头部抽取器505一般在其运行开始时假定在PDU中不存在AHS,并且等待在TCP流重组缓冲器中至少具有一个完整的BHS。当在重组缓冲器中至少重组了一个完整的BHS时,头部抽取器505从重组缓冲器中读取该BHS,并且检查(通过查看PDU头部第二数据字中的字段440)PDU头部是否还包含AHS 445。如果结果为存在AHS 445,则头部抽取器505等待直至收到全部AHS(在相应于该TCP连接的重组缓冲器中);如果还未完全收到ASH,则不将PDU头部所抽取的部分(BHS)放入iSCSI头部队列311,而是保持等待:具体地讲,头部抽取器505不等待全部AHS,而是将该TCP连接返回给仲裁器507,并且请求仲裁器当至少收到全部ASH时(一旦处理了BHS 430就知道了AHS 445的大小),将该TCP连接返回到TCP连接就绪列表。当最终收到了完整AHS 445时,由仲裁器507将该TCP连接带回TCP连接就绪列表;然后,头部抽取器505读取AHS,并且将完整PDU头部(BHS 430加上AHS 445)放入iSCSI头部队列311。
更详细地说,在上述情况(a)(判定块625的退出分支N)中,已经收到了完整的PDU头部,并且其可在相应的重组缓冲器中得到。iSCSI辅助单元309(的头部抽取器505)于从TCP连接就绪列表中挑选的TCP流中抽取完整的iSCSI PDU(BHS)头部405(块630)。例如,参照图3,并且假定从TCP连接就绪列表中挑选出的、要处理的的TCP连接为连接3071,并且还假定等待处理的第一PDU为PDU11,则iSCSI辅助单元309的头部抽取器505抽取头部HDR11。头部抽取器505将所抽取的头部HDR11放入iSCSI头部队列311(块635)。
iSCSI辅助单元309(的头部验证器510)“即时”验证所抽取的PDU头部HDR11的完整性。为此,头部验证器510即时计算正在处理的PDU的头部405的CRC(块640),并且在对于正在处理的TCP连接使能了iSCSI PDU头部CRC的情况下(判定块645的退出分支Y),头部验证器510验证(块650)(通过查看头部CRC字段415)头部CRC。头部验证器510将头部验证过程结果H-STAT11附加在所抽取的PDU头部HDR11上,由此将PDU头部HDR11与附加其上的相应头部验证结果H-STAT11一道放入iSCSI头部队列311(块655)。
然后,iSCSI辅助单元309向主机CPU 205发出中断(图3中INT),以信号表示在iSCSI头部队列311中存在PDU头部(块657);具体地讲,只有使能了中断才发出中断;实际上中断可能被暂时禁止,这是因为相应于先前收到的PDU,主机CPU已经正在服务先前发出的中断。
PDU管理代理330(响应于所发出的中断,或者因为其已经正在服务先前发出的中断)查看iSCSI头部队列311,并且处理PDU头部;利用从所处理的PDU头部(其完整描述进入的PDU)中检索的信息,如果确定该PDU还承载数据,PDU管理代理330,则识别适当的目的方SCSI数据缓冲器3501、3502、…、350n,以及该目的方SCSI数据缓冲器内待拷贝该数据的位置(诸如ITT、TTT、偏移与有效负载长度等信息可用于此目的);然后,PDU管理代理330向相应于该TCP连接的iSCSI数据队列3131、3132、3133投递所识别的SCSI数据缓冲器。一旦处理了PDU头部,则将其从iSCSI头部队列中去除(例如通过PDU管理代理330)。
然后,iSCSI辅助单元309更新TCP连接的状态,并且将该TCP连接传递回仲裁器507,以进行再次仲裁。具体地讲,通过查看所收到的PDU头部(具体地为BHS 430),iSCSI辅助单元309能够确定该PDU是否承载了有效负载,即,该PDU是否承载数据(块660)。在肯定的情况下(退出分支Y,)将TCP连接状态改变为等待数据(块661),并且将该TCP连接返回仲裁器507(块663),(如上所述)当通过该TCP连接收到足够数据量时,并且在(SCSI目的方缓冲器定位器340)已经向相应于该TCP连接的iSCSI数据队列3131、3132、3133投递了SCSI数据缓冲器3501、3502、…、350n的情况下,仲裁器507决定是否将该TCP连接放回TCP连接就绪列表。相反,如果PDU未承载数据(判定块660的退出分支N),则将TCP连接状态改变为等待头部,并且将控制传递回仲裁器507;通过这种方式,如果仲裁器507检测到在该TCP连接上已经收到了下一PDU的完整BHS 430、并且其可在相应的重组缓冲器中得到,则将该TCP连接保持在TCP连接就绪列表中,并且可以处理下一PDU;否则,从TCP连接就绪列表中去除该TCP连接(并且当收到完整BHS 430时将其再次添加到该列表中)。
在上述情况(b)(判定块625的退出分支Y以及连接符J1)下,即,如果正在处理的PDU还包含AHS 445,则iSCSI辅助单元309检查是否已经收到了完整的AHS 445,并且其是否可在相应的重组缓冲器中得到(块667)。在否定的情况下(判定块667的退出分支N),iSCSI辅助单元309从TCP连接就绪列表中去除该TCP连接(块670),并且请求仲裁器507当收到了完整的AHS 445、并且其可在相应的重组缓冲器中得到时将该TCP连接带回到TCP连接就绪列表;该TCP连接保持在等待头部状态。
相反,如果收到了完整的AHS 445(判定块667的退出分支Y),则iSCSI辅助单元309从入境PDU中抽取完整的iSCSI PDU头部405,将所抽取的头部放入iSCSI头部队列311,并且如果对于该TCP连接使能了头部CRC、并且在进入的PDU中存在头部CRC,则iSCSI辅助单元309“即时”验证所抽取的PDU头部的完整性(所有这些动作类似于上述情况(a)中执行的那些动作,由单个块671概括)。操作流以类似于上述情况(a)的方式继续,通过向主机CPU 205发出中断(如果使能的话),以信号表示在iSCSI头部队列311中存在PDU头部,并且检查该PDU是否承载数据(连接符J3,以及随后的块657至663)。
返回到判定块620,如果iSCSI辅助单元309检测到从TCP连接就绪列表中挑选的TCP连接处于等待数据状态(判定块620的退出分支N,以及连接符J4),则意味着从重组缓冲器取得的数据为一段预期的PDU有效负载。iSCSI辅助单元309即时计算有效负载CRC(块675),并且使通过该TCP连接收到的数据移动到投递给相应iSCSI数据队列3131、3132、3133的SCSI数据缓冲器(块677)。
然后,iSCSI辅助单元309确定最近收到(并且处理)的数据段是否为当前PDU(当前处理的PDU)的最后一个段(块679);在肯定的情况下(判定块679的退出分支Y),验证有效负载CRC(在假定对于该TCP连接使能了有效负载CRC的情况下),并且将验证结果放入iSCSI头部队列311(块681至685)。然后,将TCP连接状态改变为等待头部(块687),并且将该TCP连接返回仲裁器507,以进行再次仲裁(块689)。相反,如果最近收到的数据段不是当前PDU的最后一个段(判定块679的退出分支N),则该TCP连接保持在等待数据状态,并且将该TCP连接返回仲裁器507,以进行再次仲裁。
由此,iSCSI头部队列311包含iSCSI PDU头部,以及可选地有关于PDU头部状态的信息(即头部CRC验证过程的结果,如果有的话),以及有关于PDU有效负载状态的信息,包含有效负载CRC验证结果。这就允许PDU头部与数据部分处理的简单同步,以及在有效负载损坏情况下高效实现iSCSI恢复。所不同的是,通过利用DMA机制,PDU有效负载被直接从相应TCP连接的重组缓冲器拷贝到适当的SCSI目的方数据缓冲器,而不需要主机CPU205的任何干预,由此解除了主机CPU 205繁重的处理负担。
应该注意,根据本发明的所述实施方式,虽然提供了相应于TCP连接数目的多个iSCSI数据队列,但是也可以方便地提供单个唯一的iSCSI头部队列,以存储来自所有TCP连接的进入PDU的iSCSI PDU头部。为所有TCP连接提供单个iSCSI头部队列允许以高效地实现(例如)在主机CPU 205的控制下运行的、用来处理进入的iSCSI PDU的代理软件。实际上,该入境PDU管理软件代理,以及由此的主机CPU不需要在不同TCP连接中进行仲裁,也不需要管理不同TCP连接的多任务处理:对不同TCP连接的处理被从主机CPU分担给TOE 223。
具体地说,提供单个唯一iSCSI头部队列311允许借助单个软件任务高效地处理所有不同的TCP连接,该软件任务(例如)由主机CPU 205运行(如在此处考虑的示例性实施方式中),或者可替换地,由实现TOE 223的外设(例如NIA 221)的处理器225运行。该单个iSCSI头部队列311包含处理入境iSCSI PDU所需的所有信息。
根据本发明的实施方式,每当将PDU头部放入iSCSI头部队列311时,iSCSI辅助单元309可以向主机CPU 205发出中断(在假定使能了中断的情况下)。由此,向主机CPU 205信号表示存在新的iSCSI PDU等待处理。响应于所发出的中断,iSCSI PDU头部处理器335处理在iSCSI头部队列311中可用的PDU头部,直至该队列被清空;此时,再次使能中断。这样的中断通知机制允许在不同TCP连接之间合并中断;由此对于多个SCSI请求,所发起的中断的数目被减少到单个中断。
由于上述方案,由主机CPU对入境iSCSI PDU进行的处理被大大简化:实际上大部分iSCSI PDU处理由以TOE硬件执行,而不是以主机CPU执行;具体地讲,解除了主机CPU检测来自不同TCP连接的进入PDU、检测PDU边界、验证数据完整性(当需要时)、向适当的iSCSI目的方缓冲器拷贝PDU有效负载的负担。
上述方案允许以硬件实现基本上完备的TCP终端。
具体地讲,主机CPU不需要在不同TCP连接之间仲裁:主机CPU只查看单个PDU头部队列,其中可以找到所有进入的iSCSI PDU的头部,以及有关于PDU头部和数据完整性的信息。由此,主机CPU不需要每当新PDU到达时连续地服务中断:只有当在头部队列中有一个头部时,iSCSI辅助单元才发出中断。
虽然通过某些实施方式公开并描述了本发明,但是本领域技术人员显然清楚:在不脱离所附权利要限定范围的情况下,能够对所述实施方式、以及本发明其他实施方式进行几种修改。
Claims (24)
1.一种从主机数据处理单元(205)分担对通过至少一个TCP/IP连接(3071、3072、3073)到来的数据流的iSCSI TCP/IP处理的方法,包含:
提供协议数据单元(PDU)头部队列(311),用来存储通过所述至少一个TCP/IP连接接收的iSCSI PDU的头部(HDR11、...、HDR32);
监控所述至少一个TCP/IP连接,寻找待处理的进入的iSCSI PDU;
当通过所述至少一个TCP/IP连接至少收到iSCSI PDU头部时,从收到的PDU中抽取该iSCSI PDU头部,并且将所抽取的iSCSI PDU头部放入PDU头部队列;
查看PDU头部队列,以确定是否存在待处理的iSCSI PDU,并且根据在从PDU头部队列中检索的、所抽取的iSCSI PDU头部中的信息处理进入的iSCSI PDU。
2.如权利要求1所述的方法,其中所述查看PDU头部队列包含使所述主机数据处理单元被信号指示(INT)在PDU头部队列中存在待处理的iSCSIPDU头部。
3.如权利要求2所述的方法,其中所述使主机数据处理单元被信号指示包含:向所述主机数据处理单元发出中断,对于PDU头部队列中iSCSI PDU头部的处理是主机数据处理单元的职责。
4.如权利要求3所述的方法,还包含:使所述至主机数据处理单元的中断在其被发出之后被禁止直至PDU头部队列被清空为止。
5.如权利要求1至4中任一项所述的方法,还包含:
执行所抽取的iSCSI PDU头部的完整性验证,并且将有关于该iSCSI PDU头部完整性验证结果的信息放入PDU头部队列。
6.如权利要求5所述的方法,其中所述执行所抽取的iSCSI PDU头部的完整性验证包含:确定是否使能了iSCSI PDU头部摘要(415),并且只有使能了iSCSI PDU头部摘要,才执行所述将有关于该iSCSI PDU头部完整性验证结果的信息放入PDU头部队列。
7.如上述权利要求中任一项所述的方法,还包含:
为所述至少一个TCP/IP连接中的每一个提供iSCSI PDU数据队列(3131、3132、3133),该iSCSI PDU数据队列用来存储有关于通过所述至少一个TCP/IP连接接收的iSCSI PDU所承载的数据(DATA11、...、DATA32)要向其拷贝的目的方SCSI数据缓冲器的信息;
识别通过所述至少一个TCP/IP连接接收的iSCSI PDU所承载的数据要向其拷贝的目的方SCSI数据缓冲器(3501、3502、...、350n),所述识别包含:利用从PDU头部队列中所抽取的iSCSI PDU头部中检索的信息;
将目的方SCSI数据缓冲器识别信息放入与相应的至少一个TCP/IP连接相关联的iSCSI PDU数据队列;以及
直接将从所接收的iSCSI PDU中抽取的iSCSI PDU有效负载(425)拷贝到所识别的目的方SCSI数据缓冲器,所述直接拷贝利用放入所述数据队列中的的目的方SCSI数据缓冲器识别信息。
8.如权利要求7所述的方法,其中所述直接拷贝在基本没有所述主机数据处理单元干预的情况下,对于所识别的目的方SCSI数据缓冲器采用直接存储器存取(227)。
9.如权利要求8所述的方法,其中所述直接拷贝包含:将来自与所述至少一个TCP/IP连接相关联的重组缓冲器的iSCSI PDU有效负载拷贝到所识别的目的方SCSI数据缓冲器中。
10.如权利要求7、8或9所述的方法,还包含:
执行iSCSI PDU有效负载的完整性验证,并且将有关于该PDU有效负载完整性验证结果的信息放入所述头部队列。
11.如权利要求10所述的方法,其中所述执行iSCSI PDU有效负载的完整性验证包含:确定是否使能了iSCSI PDU有效负载摘要(420),并且只有使能了iSCSI PDU有效负载摘要,才执行所述将有关于该iSCSI PDU有效负载完整性验证结果的信息放入PDU头部队列。
12.如权利要求7至11中任一项所述的方法,其中所述监控至少一个TCP/IP连接还包含:
等待通过所述至少一个TCP/IP连接收到完整的iSCSI PDU基本头部段(430);
检查该iSCSI PDU基本头部段,以确定进入的iSCSI PDU是否包含附加头部段(445),并且在肯定的情况下,在抽取iSCSI PDU头部之前,等待收到完整的附加头部段。
13.如权利要求12所述的方法,其中所述监控至少一个TCP/IP连接还包含:
在抽取了iSCSI PDU头部之后,等待收到至少部分iSCSI PDU有效负载,并且在将iSCSI PDU有效负载收到部分直接拷贝到目的方SCSI数据缓冲器之前,等待该目的方SCSI数据缓冲器可用。
14.如权利要求13所述的方法,其中所述等待目的方SCSI数据缓冲器可用包含:等待该目的方SCSI数据缓冲器识别信息放入与该TCP/IP连接相关联的数据队列中。
15.一种iSCSI TCP/IP分担引擎,用来从主机数据处理单元(205)分担对通过至少一个TCP/IP连接(3071、3072、3073)到来的数据流的iSCSI TCP/IP处理,该分担引擎包含:
进入iSCSI PDU监控器(507),用来监控来自所述至少一个TCP/IP连接(3071、3072、3073)的PDU;
所有TCP/IP连接公用的PDU头部队列(311);
PDU头部抽取器(505),用来从进入的PDU中抽取PDU头部(HDR11、...、HDR32),将所抽取的头部放入所述头部队列,并且管理至PDU头部处理器(335)的、关于在PDU头部队列中存在待处理的PDU头部的信号指示(INT)。
16.如权利要求15所述的iSCSI TCP/IP分担引擎,其中所述PDU头部处理器在所述主机数据处理单元的管理下运行,所述PDU头部抽取器用来向该主机数据处理单元信号指示在PDU头部队列中存在待处理的PDU头部。
17.如权利要求16所述的iSCSI TCP/IP分担引擎,其中所述PDU头部抽取器用来管理发出对主机数据处理单元的中断。
18.如权利要求15所述的iSCSI TCP/IP分担引擎,其中所述PDU头部处理器在该分担引擎的管理下运行。
19.如权利要求15至18中任一项所述的iSCSI TCP/IP分担引擎,还包含:
头部验证器(510),用来执行所抽取的PDU头部的完整性验证,并且将有关于该PDU头部完整性验证结果的信息放入PDU头部队列。
20.如权利要求15至19中任一项所述的iSCSI TCP/IP分担引擎,还包含:
对于所述至少一个TCP/IP连接中每一个的PDU数据队列(3131、3132、3133),该PDU数据队列用来存储有关于通过所述至少一个TCP/IP连接接收的iSCSI PDU的数据(DATA11、...、DATA32)要向其拷贝的目的方SCSI数据缓冲器的信息;以及
PDU有效负载移动器(520),用来管理从进入的PDU中抽取PDU有效负载,以及根据从所述数据队列中检索的信息将其拷贝到适当的目的方SCSI数据缓冲器(3501、3502、...、350n)。
21.如权利要求20所述的iSCSI TCP/IP分担引擎,其中所述PDU有效负载移动器用来利用直接存储器存取引擎,引起所抽取的PDU有效负载至适当的目的方SCSI数据缓冲器的直接拷贝。
22.如权利要求20或21所述的iSCSI TCP/IP分担引擎,还包含:
有效负载验证器(515),用来执行所抽取的PDU有效负载的完整性验证,并且将有关于该PDU有效负载完整性验证结果的信息放入PDU头部队列。
23.如权利要求15所述的iSCSI TCP/IP分担引擎,其中所述监控器包含仲裁器,用来管理TCP/IP连接就绪列表。
24.如权利要求23所述的iSCSI TCP/IP分担引擎,其中所述仲裁器用来在已经通过TCP/IP连接收到足够的预定量数据的条件下,将该TCP/IP连接放入TCP/IP连接就绪列表。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04300591.7 | 2004-09-10 | ||
EP04300591 | 2004-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1747444A true CN1747444A (zh) | 2006-03-15 |
Family
ID=36033851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100813718A Pending CN1747444A (zh) | 2004-09-10 | 2005-06-28 | 数据处理系统网络中从主机单元分担数据流的方法及引擎 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060056435A1 (zh) |
CN (1) | CN1747444A (zh) |
TW (1) | TW200629817A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006304A (zh) * | 2010-12-06 | 2011-04-06 | 北京中创信测科技股份有限公司 | Tcp承载的上层协议数据单元的自动定界方法和系统 |
CN110177087A (zh) * | 2019-05-05 | 2019-08-27 | 方一信息科技(上海)有限公司 | 一种基于TOE网卡的Target端协议硬件解析方法 |
CN110691094A (zh) * | 2019-10-10 | 2020-01-14 | 山东超越数控电子股份有限公司 | 一种基于iscsi协议传输数据的方法、设备及介质 |
WO2020063298A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
TWI708494B (zh) * | 2016-03-31 | 2020-10-21 | 香港商阿里巴巴集團服務有限公司 | 一種tcp流重組方法和裝置 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438265B2 (en) * | 2004-11-04 | 2013-05-07 | International Business Machines Corporation | Method of offloading iSCSI PDU corruption-detection digest generation from a host processing unit, and related iSCSI offload engine |
US7620181B2 (en) * | 2005-04-20 | 2009-11-17 | Harris Corporation | Communications system with minimum error cryptographic resynchronization |
KR100823734B1 (ko) * | 2006-07-07 | 2008-04-21 | 한국전자통신연구원 | iSCSI를 위한 데이터 가속 장치 및 이를 이용한iSCSI 저장 시스템 |
US7844753B2 (en) * | 2006-11-13 | 2010-11-30 | Intel Corporation | Techniques to process integrity validation values of received network protocol units |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
US8289966B1 (en) * | 2006-12-01 | 2012-10-16 | Synopsys, Inc. | Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data |
US8706987B1 (en) | 2006-12-01 | 2014-04-22 | Synopsys, Inc. | Structured block transfer module, system architecture, and method for transferring |
US8316276B2 (en) | 2008-01-15 | 2012-11-20 | Hicamp Systems, Inc. | Upper layer protocol (ULP) offloading for internet small computer system interface (ISCSI) without TCP offload engine (TOE) |
US8625621B2 (en) * | 2008-03-06 | 2014-01-07 | Integrated Device Technology, Inc. | Method to support flexible data transport on serial protocols |
US20090228733A1 (en) * | 2008-03-06 | 2009-09-10 | Integrated Device Technology, Inc. | Power Management On sRIO Endpoint |
US8312190B2 (en) * | 2008-03-06 | 2012-11-13 | Integrated Device Technology, Inc. | Protocol translation in a serial buffer |
US8213448B2 (en) * | 2008-03-06 | 2012-07-03 | Integrated Device Technology, Inc. | Method to support lossless real time data sampling and processing on rapid I/O end-point |
US20090225775A1 (en) * | 2008-03-06 | 2009-09-10 | Integrated Device Technology, Inc. | Serial Buffer To Support Reliable Connection Between Rapid I/O End-Point And FPGA Lite-Weight Protocols |
US8312241B2 (en) * | 2008-03-06 | 2012-11-13 | Integrated Device Technology, Inc. | Serial buffer to support request packets with out of order response packets |
TWI469055B (zh) * | 2008-06-27 | 2015-01-11 | Realtek Semiconductor Corp | 網路工作卸載裝置與方法 |
US8793399B1 (en) * | 2008-08-06 | 2014-07-29 | Qlogic, Corporation | Method and system for accelerating network packet processing |
US8111696B2 (en) * | 2008-10-14 | 2012-02-07 | Emulex Design & Manufacturing Corporation | Method to improve the performance of a computer network |
US8572251B2 (en) | 2008-11-26 | 2013-10-29 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
US20100175073A1 (en) * | 2009-01-07 | 2010-07-08 | Inventec Corporation | Network device for accelerating iscsi packet processing |
US8762532B2 (en) | 2009-08-13 | 2014-06-24 | Qualcomm Incorporated | Apparatus and method for efficient memory allocation |
US20110041128A1 (en) * | 2009-08-13 | 2011-02-17 | Mathias Kohlenz | Apparatus and Method for Distributed Data Processing |
US9038073B2 (en) * | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
US8788782B2 (en) | 2009-08-13 | 2014-07-22 | Qualcomm Incorporated | Apparatus and method for memory management and efficient data processing |
JP5593792B2 (ja) * | 2010-03-31 | 2014-09-24 | 富士通株式会社 | Raid装置、記憶制御方法、および、記憶制御プログラム |
US8527837B2 (en) * | 2010-10-15 | 2013-09-03 | Micron Technology, Inc. | Selective error control coding in memory devices |
CN102281188B (zh) * | 2011-06-14 | 2013-12-18 | 北京飞杰信息技术有限公司 | 一种企业级存储系统的数据传输方法和装置 |
US10498648B1 (en) | 2015-03-25 | 2019-12-03 | Amazon Technologies, Inc. | Processing packet data using an offload engine in a service provider environment |
US20160352832A1 (en) * | 2015-06-01 | 2016-12-01 | Alibaba Group Holding Limited | Enhancing data consistency in cloud storage system by entrance data buffering |
US10817176B2 (en) * | 2018-06-18 | 2020-10-27 | Intel Corporation | Compute offload in block storage using virtual objects |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313582A (en) * | 1991-04-30 | 1994-05-17 | Standard Microsystems Corporation | Method and apparatus for buffering data within stations of a communication network |
US5802080A (en) * | 1996-03-28 | 1998-09-01 | Seagate Technology, Inc. | CRC checking using a CRC generator in a multi-port design |
US6904110B2 (en) * | 1997-07-31 | 2005-06-07 | Francois Trans | Channel equalization system and method |
US7620692B2 (en) * | 2001-09-06 | 2009-11-17 | Broadcom Corporation | iSCSI receiver implementation |
US7627693B2 (en) * | 2002-06-11 | 2009-12-01 | Pandya Ashish A | IP storage processor and engine therefor using RDMA |
US7260112B2 (en) * | 2002-12-24 | 2007-08-21 | Applied Micro Circuits Corporation | Method and apparatus for terminating and bridging network protocols |
US7239645B2 (en) * | 2003-01-21 | 2007-07-03 | Applied Micro Circuits Corporation | Method and apparatus for managing payload buffer segments in a networking device |
-
2005
- 2005-06-28 CN CNA2005100813718A patent/CN1747444A/zh active Pending
- 2005-09-01 US US11/217,196 patent/US20060056435A1/en not_active Abandoned
- 2005-09-05 TW TW094130433A patent/TW200629817A/zh unknown
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006304A (zh) * | 2010-12-06 | 2011-04-06 | 北京中创信测科技股份有限公司 | Tcp承载的上层协议数据单元的自动定界方法和系统 |
CN102006304B (zh) * | 2010-12-06 | 2013-06-26 | 北京中创信测科技股份有限公司 | Tcp承载的上层协议数据单元的自动定界方法和系统 |
TWI708494B (zh) * | 2016-03-31 | 2020-10-21 | 香港商阿里巴巴集團服務有限公司 | 一種tcp流重組方法和裝置 |
WO2020063298A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN110958213A (zh) * | 2018-09-27 | 2020-04-03 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN110958213B (zh) * | 2018-09-27 | 2021-10-22 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
US11489945B2 (en) | 2018-09-27 | 2022-11-01 | Huawei Technologies Co., Ltd. | TCP packet processing method, toe component, and network device |
CN110177087A (zh) * | 2019-05-05 | 2019-08-27 | 方一信息科技(上海)有限公司 | 一种基于TOE网卡的Target端协议硬件解析方法 |
CN110691094A (zh) * | 2019-10-10 | 2020-01-14 | 山东超越数控电子股份有限公司 | 一种基于iscsi协议传输数据的方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20060056435A1 (en) | 2006-03-16 |
TW200629817A (en) | 2006-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1747444A (zh) | 数据处理系统网络中从主机单元分担数据流的方法及引擎 | |
US7475167B2 (en) | Offloading data path functions | |
CN100544310C (zh) | 为通过网络的数据传输管理存储器的方法、系统和程序 | |
US7620692B2 (en) | iSCSI receiver implementation | |
RU2436147C2 (ru) | Усовершенствованный беспроводной usb-протокол и usb-концентратор | |
US9804788B2 (en) | Method and apparatus for transferring information between different streaming protocols at wire speed | |
US8099470B2 (en) | Remote direct memory access for iSCSI | |
CN100438403C (zh) | 用于管理通过网络的数据传输的方法和系统 | |
US7664892B2 (en) | Method, system, and program for managing data read operations on network controller with offloading functions | |
US8438265B2 (en) | Method of offloading iSCSI PDU corruption-detection digest generation from a host processing unit, and related iSCSI offload engine | |
US20040210584A1 (en) | Method and apparatus for increasing file server performance by offloading data path processing | |
US20080228897A1 (en) | Layering serial attached small computer system interface (sas) over ethernet | |
CN1985492B (zh) | 支持iSCSI读操作和iSCSI烟囱的方法和系统 | |
EP2216955B1 (en) | Network interface device | |
CN101263464B (zh) | 基于帧的数据传送并行处理 | |
US20030115350A1 (en) | System and method for efficient handling of network data | |
US7012918B2 (en) | Direct data placement | |
CN104937904B (zh) | 用于卸载的方法、系统和计算机存储介质 | |
US8924610B1 (en) | SAS/SATA store-and-forward buffering for serial-attached-SCSI (SAS) storage network | |
US20070198761A1 (en) | Connection management mechanism | |
US7404040B2 (en) | Packet data placement in a processor cache | |
WO2007030187A1 (en) | A remote node index mapping mechanism for serial attached storage devices | |
US6704836B1 (en) | Method for dynamic control of concurrent extended copy tasks | |
US7549088B2 (en) | Communication apparatus and program provided with failure determining method and function | |
US7366802B2 (en) | Method in a frame based system for reserving a plurality of buffers based on a selected communication protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |