保护输入/输出总线与网络间传输数据完整性的方法和系统的制作方法

文档序号:6629350阅读:179来源:国知局
专利名称:保护输入/输出总线与网络间传输数据完整性的方法和系统的制作方法
技术领域
本发明通常与数据处理领域相关,特别是与一种保护在数据处理系统的输入/输出总线与外部网络间传输的数据的完整性的方法、系统和计算机程序产品相关。
背景技术
在过去十年中,LAN(局域网)技术,特别是以太网技术以每三到四年十倍的速度提高着介质的速度。相比之下,在相同时期内,CPU(中央处理单元)的速度大约每二年仅提高一倍。因此,CPU正在成为高速输入/输出性能系统的瓶颈。
为了减轻由于介质速度提高而导致的CPU额外的工作量,本地主机的功能被越来越多地转移给输入/输出(I/O)适配器。但是,这些被转移的功能已经引起了数据完整性问题。由于成本的原因,对适配器厂商来说,为存储元件,如片内FIFOs(先入先出)、外部存储器和其他临时存储器,提供充分的错误校验不是他们的惯例。
TCP/IP(传输控制协议/互联网协议)标准采用的“校验和”要求提高了数据完整性。校验和既能在主机上执行,又能在适配器逻辑上执行。当TCP/IP校验和在适配器逻辑上执行时,必须注意保证错误的数据是由TCP/IP校验和检测出的。只有当所有的数据路径沿着全部数据路径被错误保护时,这一点才能保证。
采用PCI-Express(外围部件互连)总线结构,通过基于PCI-Express的I/O链路的循环冗余校验(CRC)技术,I/O总线协议具有了改进的数据完整性保护。图4是示意性地说明了安装在数据处理系统内部的以太网适配器系统的方框图,该数据处理系统中具有PCI-Express总线结构,这种结构在该领域是众所周知的且有助于解释该发明。适配器系统概括地由参考数字400表示,且连接数据处理系统的I/O总线402到外部网络406,以实现数据处理系统的存储器404到网络406间的数据传输。
如图4所示,在从I/O总线402到网络406传输数据的发送路径上,CRC校验器412位于I/O总线402和适配器430间的接口上,该接口由被PCI-Express结构指定的I/O连接414定义。CRC校验器412校验来自存储器404并通过I/O总线402的数据包的CRC值。该数据包从I/O总线402传输到网络406,它要通过在适配器430上的Tx包缓冲器416和Tx MAC(介质访问控制)418,然后再到达网络406。
在通过适配器/网络接口传输到网络406之前,适配器430中的CRC发生器420为将要传输到网络406的数据包产生CRC值。
在从网络406到I/O总线402传输数据的接收路径上,适配器430中的CRC校验器422校验通过适配器/网络接口、来自网络406的数据包的CRC值。接收到的数据经由适配器430中的Rx介质访问控制424和Rx包缓冲器426传输到适配器430和I/O总线402间的接口中的I/O连接414。在I/O连接414中的CRC发生器428为将通过I/O连接414传送到I/O总线402的数据包生成CRC值。
以太网适配器系统400只在物理层生成和校验CRC值,且数据的完整性只在网络中的物理介质上得到保护。因此,虽然在PCI-Express中和适配器的存储器中进行了奇偶校验,但是这种错误校验不像点对点CRC校验所提供的功能那样强大,因为奇偶校验不能检测出双位错误或与可寻址性有关的错误。
因此,希望对数据处理系统中的输入/输出总线和外部网络间传输的数据提供一种点对点数据完整性保护。

发明内容
本发明提出了一种保护在数据处理系统的输入/输出总线和外部网络间传输的数据完整性的方法、系统和计算机程序产品。用于保护在输入/输出总线和网络间传输的数据完整性的方法包括在输入/输出总线与适配器间的接口中为从输入/输出总线传输到网络的数据产生循环冗佘检验(CRC)值,并在输入/输出总线与适配器间的接口中为从网络传输到输入/输出总线的数据校验CRC值。通过在输入/输出总线和适配器间的接口中加入CRC发生器和CRC校验器,为在输入/输出总线和网络间传输的数据提供了点对点的数据完整性保护。


被认为是本发明的特点的新颖的特征在所附的权利要求中阐明。但是,本发明的本身,其最优使用模式以及进一步的目标和优点将在阅读以下参考附图的对说明性实施例的详细描述中得到充分理解,其中图1是一个可以使用本发明的数据处理系统网络的图示性说明。
图2是根据本发明的优选实施例的,可能作为服务器使用的数据处理系统的方框图。
图3是根据本发明的优选实施例的,可能做为客户端使用的数据处理系统。
图4是示意性地说明了安装在数据处理系统内部的以太网适配器系统的方框图,该数据处理系统中具有PCI-Express总线结构,这种结构在该领域是众所周知的,有助于解释该发明。
图5是示意性地说明了安装在根据本发明的优选实施例的数据处理系统内部的以太网适配器系统的方框图,该数据处理系统中具有PCI-Express总线结构。
图6是说明了根据本发明的优选实施例的保护从数据处理系统的输入/输出总线到外部网络所传输数据的完整性的方法的流程图。
图7是说明了根据本发明实施例的保护从外部网络到数据处理系统的输入/输出总线所传输数据的完整性的方法的流程图。
具体实施例方式
参考这些附图,图1图示性地描述了可以实现本发明的数据处理系统网络。网络数据处理系统100是可以实现本发明的计算机网络。网络数据处理系统100中包含一个网络102,用于为在网络数据处理系统100内部连接在一起的不同设备和计算机问的通信链路提供通信介质。网络102可包括各种连接,如有线、无线通讯链路或光纤。
在所描述的例子中,服务器104连同存储单元106一起连接到网络102。此外,客户端108、110和112也连接到网络102。这些客户端108、110和112可能会是,例如,个人计算机或网络计算机。在所述例子中,服务器104为客户端108-112提供数据,如引导文件、操作系统映像和应用程序。客户端108、110和112是服务器104的客户端。网络数据处理系统100还会包括另外没有示出的服务器、客户端和其它设备。在所述例子中,网络数据处理系统100是具有网络102的互联网,网络102代表世界范围的网络和网关的集合,它们使用传输控制协议/互联网协议(TCP/IP)的协议组互相通信。主要节点或主机间的高速数据通信线链路位于因特网的核心,它由数千发送数据和消息的商业、政府、教育和其他计算机系统组成。当然,网络数据处理系统100也可以由多个不同类型的例如内联网、局域网(LAN)或广域网(WAN)的网络来实现。图1意在举例说明,不是作为对该发明的结构体系限制。
参考图2,其为根据本发明优选实施例描述了用作服务器的,如图1中的服务器104的数据处理系统的方框图。数据处理系统200可以是对称多处理器(SMP)系统,该系统包括连接到系统总线206的多个处理器202和204。作为选择,也可采用单处理器系统。存储控制器/高速缓存208也连接到系统总线206,它提供到本地存储器209的接口。I/O总线桥接器210连接到系统总线206,并提供到I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥接器210可以如所述的那样集成到一起。
连接到I/O总线212的外围部件互连(PCI)总线桥接器214提供到PCI本地总线216的接口。多个调制解调器可连接在PCI本地总线216上。典型的PCI总线的实现支持四个PCI扩展槽或内插附件连接器。图1中到客户端108-112的通讯链路可通过调制解调器218和通过内插附件连接器连接到PCI本地总线216的网络适配器220来提供。
附加的PCI总线桥接器222和224向附加的PCI本地总线226和228提供接口,通过这些总线支持附加的调制解调器或网络适配器。以这种方式,数据处理系统200允许到多个网络计算机的连接。如图所示,存储器映像图形适配器230和硬盘232也可以直接或间接连接到I/0总线212。
本领域普通技术人员将理解图2所示的硬件可以变化。例如,其他的外围设备,如光驱和类似设备,也可以加入或替代所述硬件。所示例子并非意在暗示关于本发明结构上的限制。
举例来说,图2所示的数据处理系统可以是,IBM eServer pSeries系统,该系统是位于纽约Armonk的国际商用机器公司(IBM)的产品,其上运行着高级交互执行程序(AIX)操作系统或LINUX操作系统。
参考图3,即说明了数据处理系统的方框图,其中可以实施本发明。数据处理系统300是客户端计算机的例子。数据处理系统300采用了外围部件互连(PCI)本地总线结构。虽然所述例子采用了PCI总线,但是其他总线结构,如图形加速端口(AGP)和工业标准结构(ISA)也可以使用。处理器302和主存储器304经由PCI桥接器308连接到PCI本地总线306。PCI桥接器308也可以包括用于处理器302的集成存储控制器和高速缓存。到PCI本地总线306的附加连接可以通过直接元件互连或通过内插附件板形成。在所述例子中,局域网(LAN)适配器310、小型计算机系统接口(SCSI)主机总线适配器312和扩展总线接口314通过直接元件连接而连接连到PCI本地总线306。与之相对比,音频适配器316、图形适配器318和音频/视频适配器319通过插入到扩展槽的内插附件板而连接到PCI本地总线306。扩展总线接口314为键盘和鼠标适配器320、调制解调器322和附加存储器324提供连接。SCSI主机总线适配器312为硬盘驱动器326、磁带驱动器328和CD-ROM驱动器330提供连接。典型的PCI本地总线的实现将支持三或四个PCI扩展槽或内插附件连接器。
一个操作系统运行于处理器302上,并被用于协调和提供对图3中数据处理系统300内部不同部件进行的控制。该操作系统可能是通过商业途径获得的操作系统,如Windows XP,可从微软公司得到。一个面向对象的编程系统如Java可能与操作系统协同运行,并从在数据处理系统300上执行的Java程序或应用软件向操作系统提供调用。“Java”是SUN微系统(Microsystems)公司的商标。对操作系统、面向对象编程系统和应用软件或程序的指令位于存储设备中,如硬盘驱动器326,并且可以加载到主存储器304中以由处理器302执行。
本领域技术人员将理解图3所示的硬件将会根据实现方式发生变化。其他的内部硬件或外围设备,如闪存只读存储器(ROM),等效非易失性存储器,或光盘驱动器以及类似设备可以加入或替代图3中所述硬件。同时,本发明中的处理也可以应用到多处理器数据处理系统中。
作为另外一个例子,数据处理系统300可以是独立的系统,配置为不需依靠某种类型的网络通信接口进行引导。作为又一个例子,数据处理系统300可以是个人数字助理(PDA)设备,其配置有ROM和/或闪存ROM,这样可为保存操作系统文件和/或用户产生的数据提供非易失性存储器。
图3中所述的例子和上述例子并非意在暗示结构的限制。例如,数据处理系统300除了采用PDA的形式外,还可以是笔记本电脑或手提电脑。数据处理系统300还可以是自助式服务亭或网络设备。
本发明为数据处理系统(如图2中的系统200)中的输入/输出总线和外部网络(如图1中的网络102)间传输的数据提供点对点数据完整性保护。
根据本发明的优选实施例,点对点数据完整性保护是通过在具有PCI-Express总线结构的I/O总线和以太网I/O适配器间的接口中增加CRC发生器和CRC校验器逻辑实现的。该新的逻辑为以直接存储器访问方式(DMAs)访问适配器的数据包产生CRC值,并为以直接存储器访问方式(DMAs)访问数据处理系统存储器的数据包校验CRC值。
图5是示意性地说明安装在根据本发明优选实施例的数据处理系统内部的以太网适配器系统的方框图,该数据处理系统中具有PCI-Express总线结构。以太网适配器系统通常以参考数字500表示,它在很多方面和图4中的以太网适配器系统400类似,图5中相似的元件以相对应的参考数字表示。
图5中适配器系统500与图4中适配器系统400的区别在于适配器系统500进一步在PCI-Express内核514中包括了CRC发生器540,它位于数据从I/O总线502传输到网络506的发送路径内的I/O总线502和I/O适配器530间的接口中;PCI-Express内核514中还包括了CRC校验器542,它位于数据从网络506传输到I/O总线502的接收路径内的I/O总线502和适配器530间的接口中。
在适配器系统500中,当数据包从数据处理系统存储器504通过I/O总线502时CRC发生器540为数据包产生CRC值。在数据通过适配器530和网络506间的接口之前,由适配器530中的CRC校验器/发生器544校验CRC值。CRC发生器540协同CRC校验/发生器544一起保护了在I/O总线/适配器接口和适配器/网络接口间从I/O总线502传输到网络506的数据的完整性。
在接收路径,CRC校验器522为来自网络506、通过适配器/网络接口的数据包校验CRC值,并且当适配器的DMA引擎通过I/O总线/适配器接口发送数据包到数据处理系统存储器504时,新的CRC校验器542再次校验CRC值。因此,从网络506到存储器504所传输数据的完整性在适配器/网络接口和I/O总线/适配器接口间得到保护。
仍如图5所示,由CRC发生器540产生的CRC值存储在Tx包缓冲器516中,如534处所示;来自网络506的数据包的CRC值存储在Rx包缓冲器526中,如536处所示。
通过在I/O总线502与适配器530间的接口上的传送路径中包含CRC校验器以及在接收路径中包含CRC校验器,提供了点对点数据完整性保护,并且适配器变得足够鲁棒以加载TCP/IP校验和到适配器中,确保了校验和总是基于正确数据而计算得到。
图6是说明根据本发明的优选实施例的保护从数据处理系统的输入/输出总线到外部网络所传输的数据的完整性的方法的流程图。该方法概括地由参考数字600表示,其自校验来自数据处理系统的存储器、通过I/O总线、流向以太网I/O适配器的数据包的CRC值开始(步骤602)。数据包的CRC值接着在I/O总线/适配器的接口中产生(步骤604)。其后在通过适配器/网络接口向网络发送数据包之前,再次校验CRC值(步骤606)。
图7是说明根据本发明优选实施例的保护从外部网络到数据处理系统的输入/输出总线所传输的数据的完整性的方法的流程图。该方法概括地由参考数字700表示,其自校验来自网络、通过网络/适配器接口的数据包的CRC值开始(步骤702)。而后当适配器的DMA引擎发送数据包到数据处理系统的存储器时,该CRC值在适配器与I/O总线间的接口中再次被校验(步骤704)。在步骤704中再次校验后,CRC值在适配器与I/O总线间的接口中产生(步骤706)。
因此本发明提出了一种保护在数据处理系统的输入/输出总线和外部网络间传输的数据完整性的方法、系统和计算机程序产品。用于保护在输入/输出总线和网络间被传输的数据完整性的方法包括在输入/输出总线与适配器间的接口中为从输入/输出总线传输到网络的数据产生循环冗余检验(CRC)值,并在输入/输出总线与适配器间的接口中为从网络传输到输入/输出总线的数据校验CRC值。通过在输入/输出总线和适配器间的接口中加入CRC发生器和CRC校验器,为在输入/输出总线和网络间传输的数据提供了点对点的数据完整性保护。
非常值得注意的是,虽然本发明是在全功能数据处理系统的情况下描述的,但是本领域技术人员将会理解本发明的处理能够以指令的计算机可读介质的形式及多种形式发布,并且不管实际进行发布的信号载体是何种特定类型本发明也等同地适用。计算机可读介质的例子包括记录型介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输型介质,如数字和模拟通讯链路,采用传输形式的有线或无线通信链路,如射频或光波传输。计算机可读介质可采取编码的形式,在特定的数据处理系统中实际使用时再解码。
所提供的本发明的描述是为了举例说明和叙述,不意味着无遗漏或限制于本发明所包括的形式。许多修改和变化对本领域技术人员而言是非常明显的。选择和描述的实施例是为了更好地解释本发明的原理,实际应用,和确保本领域其他的技术人员能够理解为适应预期的特定用途而对该发明进行了各种修改后的各种实施例。
权利要求
1.一种在数据处理系统中,用于保护在输入/输出总线与网络间所传输的数据的完整性的方法,该方法包括在输入/输出总线与适配器间的接口上为从输入/输出总线传输到网络的第一数据产生第一循环冗余校验值;并且在输入/输出总线与适配器间的接口上为从网络传输到输入/输出总线的第二数据校验第二循环冗余校验值。
2.根据权利要求1的方法,进一步包括在适配器和网络之间的接口之前为第一数据校验第一循环冗余校验值。
3.根据权利要求2的方法,进一步包括校验第一循环冗余校验值之后,在适配器和网络之间的接口之前为第一数据产生第三循环冗余校验值。
4.根据权利要求1的方法,进一步包括产生第一循环冗余校验值之前,在输入/输出总线和适配器间的接口上为第一数据校验第四循环冗余校验值。
5.根据权利要求1的方法,进一步包括校验第二循环冗余校验值之后,在输入/输出总线和适配器间的接口上为第二数据产生第五循环冗余校验值。
6.根据权利要求1的方法,其中第一数据中包含第一数据包,且第二数据中包含第二数据包。
7.根据权利要求6的方法,进一步包括在适配器的发送包缓冲器中存储第一循环冗余校验值,并且在适配器的接收包缓冲器中存储第二循环冗余校验值。
8.根据权利要求1的方法,其中输入/输出总线包括外围部件互连输入/输出总线结构。
9.一种数据处理系统,包括输入/输出总线;连接到输入/输出总线的适配器,用于在输入/输出总线和网络间传输数据;位于输入/输出总线与适配器间接口上的第一循环冗余校验发生器,用于为从输入/输出总线传输到网络的第一数据产生第一循环冗余校验值;位于输入/输出总线与适配器间接口上的第一循环冗余校验校验器,用于为从网络传输到输入/输出总线的第二数据校验第二循环冗余校验值。
10.根据权利要求9的系统,进一步包括第二循环冗余校验校验器,用于在适配器与网络间的接口之前为第一数据校验第一循环冗余校验值。
11.根据权利要求9的系统,进一步包括第二循环冗余校验发生器,用于在校验第一循环冗余校验值之后,在适配器与网络间的接口之前为第一数据产生第三循环冗余校验值。
12.根据权利要求9的系统,进一步包括第三循环冗余校验校验器,用于在产生第一循环冗余校验值之前,在输入/输出总线与适配器间的接口中为第一数据校验第四循环冗余校验值。
13.根据权利要求9的系统,进一步包括第三循环冗余校验发生器,用于在校验第二循环冗余校验值之后,在输入/输出总线与适配器间的接口中为第二数据产生第五循环冗余校验值。
14.根据权利要求9的系统,其中第一数据中包含第一数据包,第二数据中包含第二数据包。
15.根据权利要求14的系统,进一步包括第一存储器,用于在适配器的传送包缓冲器中存储第一循环冗余校验值;第二存储器,用于在适配器的接收包缓冲器中存储第二循环冗余校验值。
16.根据权利要求9的系统,其中输入/输出总线包括外围部件互连输入/输出总线结构。
17.一种在数据处理系统中,用于保护从输入/输出总线传输到网络的数据的完整性的方法,该方法包括在输入/输出总线与适配器间的接口中为从输入/输出总线传送到网络的数据产生循环冗余校验值。
18.根据权利要求17的方法,进一步包括在适配器与网络间的接口之前为数据校验循环冗余校验值。
19.一种在数据处理系统中,用于保护从网络传送到输入/输出总线的数据的完整性的方法,该方法包括在输入/输出总线与适配器间的接口上为从网络传送到输入/输出总线的数据校验循环冗余校验值。
20.一种在计算机可读介质中,用于保护在输入/输出总线和网络间传输的数据的完整性的计算机程序产品,它包括第一指令,用于在输入/输出总线与适配器间的接口上为从输入/输出总线传输到网络的第一数据产生第一循环冗余校验值;第二指令,用于在输入/输出总线与适配器间的接口上为从网络传输到输入/输出总线的第二数据校验第二循环冗余校验值。
21.根据权利要求20的计算机程序产品,进一步包括第三指令,用于在适配器与网络间的接口之前,为第一数据校验第一循环冗余校验值。
22.根据权利要求20的计算机程序产品,进一步包括第四指令,用于在校验了第一循环冗余校验值之后,在适配器与网络间的接口之前为第一数据产生第三循环冗余校验值。
23.根据权利要求20的计算机程序产品,进一步包括第五指令,用于在产生第一循环冗余校验值之前,在输入/输出总线与适配器间的接口上为第一数据校验第四循环冗余校验值。
24.根据权利要求20的计算机程序产品,进一步包括第六指令,用于在校验第二循环冗余校验值之后,在输入/输出总线与适配器间的接口上为第二数据产生第五循环冗余校验值。
全文摘要
保护在数据处理系统的输入/输出总线和外部网络间传输的数据的完整性的方法、系统和计算机程序产品。用于保护在输入/输出总线和网络间传输的数据的完整性的方法包括在输入/输出总线与适配器间的接口上为从输入/输出总线传输到网络的数据产生循环冗余检验(CRC)值,并在输入/输出总线与适配器间的接口上为从网络传输到输入/输出总线的数据校验CRC值。通过在输入/输出总线和适配器间的接口上加入CRC发生器和CRC校验器,为在输入/输出总线和网络间传输的数据提供了点对点的数据的完整性保护。
文档编号G06F11/10GK1758581SQ20051008306
公开日2006年4月12日 申请日期2005年7月8日 优先权日2004年10月7日
发明者詹姆斯·R·加拉格尔, 宾·K·瓦, 西瓦拉马·K·科杜库拉, 布鲁斯·亨利·拉特克利夫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1