用于在传输数据分组时提高安全性的方法、设备和系统的制作方法

文档序号:7650595阅读:128来源:国知局
专利名称:用于在传输数据分组时提高安全性的方法、设备和系统的制作方法
技术领域
本发明一般地涉及计算机系统,并且更特别地涉及用于在传输数据分组时提高安全性的方法和设备。
背景技术
计算机系统等可以执行诸如操作系统(OS)和一个或多个用户应用之类的代码。在某些传统系统中,用户应用可以在用户缓冲器中存储将在分组中进行传输(例如,从计算机系统)的数据并且执行OS调用。响应于OS调用,OS可以形成用于分组的报头数据,并且将用户应用数据从用户缓冲器复制到OS缓冲器,使得用户应用数据用作分组的有效载荷数据。
OS可以保证将准确的报头数据放置在分组中。然而,将用户应用数据复制到OS缓冲器以形成分组需要时间,从而增加了等待时间(lantency)。因此,某些其他的传统系统可能使用诸如TCP/IP加速之类的方法,这些方法使得用户应用能够形成分组报头数据和有效载荷数据,从而避免将数据复制到OS缓冲器并减少等待时间。然而,如果使得用户应用能够形成分组,则可能不能保证放置在分组中的报头数据的准确性。例如,恶意用户应用可能伪造正在形成的分组的报头数据(例如,以便模仿与另一连接的关联)。因此,期望得到用于传输数据分组的改进方法和设备。

发明内容
在本发明的第一方面,提供了一种传输数据分组的第一方法。该第一方法包括步骤(1)针对可以从中传输数据分组的每个连接,存储对应于该连接的报头数据;(2)使用用户应用来形成分组的报头数据和有效载荷数据,其中该用户应用与将要从中传输分组的连接相关联;以及(3)当传输分组时,将分组报头数据的一个或多个部分与对应于该用户应用所关联的连接的报头数据进行比较。
在本发明的第二方面,提供了用于传输数据分组的第一设备。该第一设备包括(1)存储装置;以及(2)分组解析逻辑,其耦合到该存储装置。该设备适合于(a)针对可以从中传输数据分组的每个连接,在该存储装置中存储对应于该连接的报头数据;(b)接收分组,该分组的报头数据和有效载荷数据是由用户应用形成的,其中该用户应用与将要从中传输该分组的连接相关联;以及(c)当传输分组时,使用该分组解析逻辑将该分组报头数据的一个或多个部分与对应于该用户应用所关联的连接的报头数据进行比较。
在本发明的第三方面,提供了一种用于传输数据分组的第一系统。该第一系统包括(1)处理器,其适合于执行一个或多个用户应用,以及(2)用于传输数据分组的设备,其耦合到该处理器并且具有(a)存储装置;以及(b)分组解析逻辑,其耦合到该存储装置。该系统适合于(i)针对可以从中传输数据分组的每个连接,在该存储装置中存储对应于该连接的报头数据;(ii)使用用户应用来形成分组的报头数据和有效载荷数据,其中该用户应用与将要从中传输该分组的连接相关联;以及(iii)当传输分组时,使用该分组解析逻辑将分组报头数据的一个或多个部分与对应于该用户应用所关联的连接的报头数据进行比较。提供了大量的其他方面,其作为根据本发明的这些方面和其他方面的系统和设备。
根据以下详细描述、所附权利要求书和附图,本发明的其他特征和方面将变得更加完全地显而易见。


图1是根据本发明实施例的用于传输数据分组的系统的框图。
图2说明了根据本发明实施例的用于传输数据分组的方法。
图3说明了根据本发明实施例的传输数据分组的方法的示例性处理流程。
具体实施例方式
本发明提供了用于传输数据分组的方法和设备。更具体地,本发明的方法和设备使得用户应用能够形成分组,同时减少和/或消除对具有不准确的报头数据的分组的成功传输。以这种方式,本发明的方法和设备可以避免在计算机系统的OS形成要传输的分组报头时引入等待时间,并且防止恶意用户应用伪造分组报头信息。
针对可以从中传输数据的每个连接,本发明的方法和设备可以在存储装置中存储对应于连接的信息的元组(tuple)或混合集(conglomeration)的至少一个部分。与连接相关联的用户应用可以形成包括报头数据和有效载荷数据的分组,并且将这样的分组存储在用户缓冲器中。这种分组的报头数据可以包括元组。当(例如,从计算机系统的适配器)传输分组时,可以使用分组解析硬件从分组中快速提取元组(例如,实时地)。可以将所提取的元组与和该连接相关联且存储在该存储装置中的元组进行比较。如果这些元组不匹配,则停止该分组传输或者有意地破坏该分组传输,使得当该分组到达其目的地时该分组不会被使用。因此,本发明的方法和设备可以使得用户应用能够创建分组报头数据和有效载荷数据,同时在分组具有不准确的报头数据时减少和/或消除对该分组的成功传输,从而提供安全的分组传输。
图1是根据本发明实施例的用于传输数据分组的系统的框图。参考图1,系统100可以是计算机等。系统100可以包括至少一个处理器102,其适合于执行诸如操作系统(OS)104和/或一个或多个用户应用106之类的代码。尽管系统100可以使用任意协议,但是假设系统100使用TCP/IP协议。典型地,当使用TCP/IP协议以形成要从系统100传输的分组时,用户应用106形成有效载荷数据,同时OS 104形成报头数据。更具体地,OS 104可以创建报头数据并且将用户应用数据从用户缓冲器复制到OS缓冲器。因此,产生了很大的OS处理开销。为了减少OS 104上的负担,系统100可以使用诸如改进的TCP/IP加速之类的方法,其使得用户应用106能够形成要(例如,从系统100)传输的数据分组。因此,系统100可以将OS 104在形成分组时执行的大部分工作转移到用户应用106。因为用户应用形成数据分组,所以OS可以不需要将数据从用户缓冲器复制到OS缓冲器以形成数据分组,从而减少系统等待时间。此外,如下所述,与传统的TCP/IP加速形成对比,本发明的方法使得用户应用106能够形成数据分组,本发明的方法可以保证由用户应用106形成的分组报头数据的准确性。以这种方式,可以减少或消除对包括由恶意用户应用106伪造的报头数据的分组的成功传输,从而提高数据安全性。
系统100可以包括存储器108,存储器108的一个或多个部分用作用于存储用户应用数据的缓冲器,用户应用数据诸如由用户应用106创建的分组的报头数据和有效载荷数据。处理器102和存储器108可以经由诸如网络接口卡等适配器112耦合到联网链路或架构110(例如,以太网或另一合适的链路或架构)。链路110可以代表多个连接。适配器112可以被配置为传输数据分组,同时减少系统等待时间并提高数据安全性。适配器110可以包括存储装置114,其适合于存储对应于可以(例如,从系统100)传输数据的每个连接的报头数据或信息。例如,在系统设置期间,可以建立多个这种连接。在这样的时间期间,可以针对这种连接创建信息的各个元组或混合集。可以由存储装置114存储每个这种元组的一个或多个部分。在某些实施例中,存储装置114可以存储针对每个连接的队列对(queue pair)上下文(与InfiniBand(无限带宽)协议中使用的类似)。然而,队列对上下文可以包括针对每个连接的关联元组的一个或多个部分。可以使用元组或队列对上下文来验证用户应用是否有权向其目标目的地发送由此形成的分组。可以使用整个元组(或队列对上下文)或其子集(例如,媒体访问控制(MAC)源地址、MAC目的地地址、传输控制协议(TCP)源地址、TCP目的地地址)。
作为替代,在某些实施例中,在存储装置114中不存储对应于每个连接的报头数据或信息(例如,元组)的完整版本,而是在存储装置14中存储这种数据的简化版本(例如,具有更少字节的版本)。例如,可以对对应于每个连接的报头数据或信息的完整版本执行哈希算法或另一适合的算法,以便形成这种数据的简化版本(例如,这种数据的哈希值)。
另外,适配器112可以包括硬件,诸如分组解析逻辑116,其适合于在传输用户应用106形成的数据分组时监视这样的数据分组。在这种传输期间,分组解析逻辑116可以监视数据分组的特定报头字段并且提取这些字段。例如,分组解析逻辑116可以适合于在传输期间监视数据分组传输并且从数据分组提取元组。适配器112可以被配置为将所提取的元组的一个或多个部分与对应于形成所述分组的用户应用106所关联的连接的报头数据或信息进行比较。
现在参考图2描述用于传输分组的系统100的操作,图2说明了根据本发明实施例的用于传输数据分组的方法。参考图2,在步骤202中,方法200开始。在步骤204中,针对可以从中传输数据分组的每个连接,可以存储对应于该连接的报头数据。例如,在设置期间,系统100可以建立与各个用户应用106相关联的连接(例如,可以从中传输数据的连接)。系统100可以存储对应于可以从中传输数据的每个连接的信息的各个报头数据(例如,元组)。信息的报头数据可以是针对每个连接而存储的队列对上下文的一部分。以这种方式,队列对上下文可以分别与连接相关联。每个队列对上下文可以包括特定于与之关联的用户连接的信息。当建立了连接时,可以通过OS的可信代码来设置每个连接的队列对上下文。每个连接的队列对上下文可以包括许可信息、用户缓冲器的位置和完成信令信息以及其他内容。许可信息可以表明用户应用106可以访问的存储器108的多个部分。用户缓冲器的位置可以表明在接收到数据时应该将数据放置在何处。完成信令信息可以表明系统100应该在何时将分组通知给用户应用106。另外,如上所述,根据本发明的方法和设备,队列对上下文可以包括对应于将从中发送该分组的连接的元组(例如,以太网MAC源地址、IP源地址、IP目的地地址、TCP源端口、TCP目的地端口等)。
每个元组的规模可以大于100字节(例如,106字节)。因此,如果系统100支持多个连接,则用以保持对应于每个连接的元组的硅要求可能是重要的。因此,系统100可以创建并存储对应于可以(例如,从系统100)传输数据的每个连接的报头数据信息的简化版本(例如,报头数据信息的哈希)。以这种方式,针对每个连接,系统100可以存储应该包括在从该连接传输的分组的报头数据的信息(或其简化版本)。
在步骤206中,可使用用户应用106来形成分组(例如,TCP/IP分组)的报头数据和有效载荷数据,其中用户应用106与将要从中传输该分组的连接相关联。更具体地,用户应用106可以在存储器108(例如,包括在其中的用户缓冲器)中存储分组报头数据和有效载荷数据。将经由该连接传输的分组的报头数据可以包括元组。元组可以包括唯一地标识连接(例如,将传输该分组的连接)的信息。例如,元组可以包括以太网MAC源地址、VLAN标记、以太网优先权比特、IP源地址和/或目的地地址、TCP源端口和/或目的地端口、标识符/协议、TCP分组的SYN比特和/或逻辑端口指示器。这些字段对于本领域的普通技术人员是已知的。然而,元组可以包括更大数量或者更小数量的信息和/或不同的信息。通过使用用户应用106来形成数据分组,系统100可以使OS解除这样的责任。例如,OS 104可以不需要将用户应用数据从存储器108(例如,包括在其中的用户缓冲器)复制到OS缓冲器。因此,减少了系统等待时间。如果用户应用106是恶意的,则其可能伪造将在连接上传输的分组的报头数据,从而可能破坏不同的连接。例如,恶意用户应用106可以通过改变分组元组的一个或多个部分来伪造分组报头数据,使得该分组将被路由到不同于与用户应用106相关联的连接的其他连接。
在步骤208中,当传输分组时,可以将分组报头数据的一个或多个部分与对应于该用户应用所关联的连接的报头数据进行比较。例如,当用户应用106形成分组报头数据和有效载荷数据时,用户应用106可以通知系统100来传输该分组。作为响应,系统100可以从存储器108(例如,包括在其中的用户缓冲器)中拖曳或获取这样的数据,并且开始向线缆(例如,以太网链路110)发送数据。更具体地,系统100可以向适配器112提供由用户应用106创建的数据分组,其中可以通过适配器112在连接上(例如,经由链路110)传输分组。当在连接上传输分组时,分组解析逻辑116可以监视分组传输并且从分组中提取报头数据或信息(例如,元组)的多个部分。以这种方式解析分组以确定期望的报头数据或信息(例如,元组)是比提供所有可能报头组合的完全置换以确定这种期望的报头数据或信息更简单的任务。适配器112可以将所提取的信息与对应于由存储装置114存储的连接的报头数据或信息进行比较。例如,一旦已经提取分组元组,则可以将分组元组与队列对上下文中存储的元组进行比较。如果所提取的信息与对应于由存储装置114存储的连接的报头数据或信息相匹配,则分组报头数据没有被伪造,并且因此,可以经由连接将该分组成功地传输到其目的地。
作为替代,如果所提取的信息与对应于由存储装置存储的连接的报头数据或信息不匹配,则用户应用106可能已经伪造数据分组的一个或多个部分。因此,系统100可以停止对被伪造分组的传输(例如,过早地中止分组发送流)。作为替代,系统100可以有意地破坏这样的分组(例如,通过破坏分组的循环冗余校验(CRC)值)。当在分组目的地接收到这样的分组时,CRC值将表明该分组已被破坏,并且因此应该被接收机(例如,分组目的地)丢弃。以这种方式,可以丢弃分组并且可以防止恶意用户应用106损害不同于与用户应用106相关联的连接的其他连接。因此,可以在分组传输期间使用解析来提供安全性校验。
通过在传输数据(例如,实时地)时执行这样的比较,系统100可以避免与传输数据分组的存储-转发方法相关联的存储数据分组的等待时间。另外,通过保证分组报头数据的准确性,该比较可以提供安全的(例如,100%安全的)数据分组传输。然而,将所提取的信息与报头数据的简化版本进行比较可能不能提供100%的安全性,但是这样的比较可以提供对很多数据分组传输应用来说足够的安全性。例如,该比较可以减少和/或消除成功传输被伪造分组的可能性。因此,用户应用106可能不能成功地伪装为与另一连接相关联,原因是如果用户应用106伪装为与另一连接相关联,则可以丢弃由用户应用106所创建的分组。以这种方式,本发明的方法和设备可以通过提供实时硬件检查提供安全性而不会影响性能。总之,本发明的方法和设备可以在向线缆上发送分组时解析分组报头数据,并且通过将要传输的分组中的信息(例如,元组)与对应于用户应用106所关联的连接的信息进行比较来验证形成分组的用户应用106是否有权向其目标目的地发送分组。
之后,可以执行步骤210。在步骤210中,该方法结束。通过使用本发明的方法和设备,本发明的方法和设备可以使得用户应用能够创建分组报头数据和有效载荷数据,同时减少和/或消除对具有不准确的报头数据的分组的成功传输,从而实现安全的分组传输。例如,本发明的方法和设备可以提供改进的TCP/IP加速引擎。该改进的TCP/IP加速引擎不仅使OS 104解除了责任,而且实现了分组传输安全性功能。也就是说,本发明的方法和设备可以利用TCP/IP卸载,其释放OS资源并且在提供安全性的同时改进等待时间,该安全性可以防止用户应用106破坏用户应用106不应该与之通信的连接。
更具体地,本发明的方法和设备可以用在以太网环境中,以使用户应用106而不是OS 104能够创建分组(包括其报头数据)并向适配器112直接发送这样的分组。本发明的方法和设备保证了用户应用106创建的分组的报头数据的准确性,从而防止恶意用户程序或应用106伪造报头数据(例如,模仿另一TCP/IP连接和破坏数据)。例如,通过在不进行检测的情况下防止用户应用106改变MAC源地址(SA),本发明的方法和设备可以防止在媒体访问卡(MAC)子层上进行伪造。
在诸如以太网之类的联网环境中,存在数百个、数千个或更多的连接。本发明的方法和设备可以解决大量连接,同时在其上提供对数据分组的安全传输,这些数据分组是由用户应用106创建的。以这种方式,本发明的方法和设备可以向系统环境提供一种在OS创建数据分组(例如,以及包括在其中的报头)时已经存在的网络安全性级别,在该系统环境中,用户应用106具有对在以太网链路或线缆110上提供的分组的直接控制(例如,当用户应用106可以创建分组报头数据和有效载荷数据时)。
通过使得软件(例如,用户应用106)能够创建数据分组(包括其报头数据),本发明的方法可以避免使用硬件来形成报头数据的问题。例如,使用硬件来形成以太网分组的报头数据比较困难。以太网可以具有多种协议及其多种变型。例如,网际协议(IP)分组可以具有0-40字节的可选内容。传输控制协议(TCP)分组可以具有类似数量的可选内容。此外,以太网分组可以是DIX、SNAP、LLC或另一合适的类型,其可以包括或不包括VLAN标记。分组报头数据的格式可以基于以太网分组的类型或随着以太网分组的类型而改变。作为替代,用户应用可以实现不同于TCP/IP的其他协议。因此,设计可以处理各种协议的所有组合并且提供适当的安全性校验的硬件很困难。
图3说明了根据本发明实施例的传输数据分组的方法的示例性处理流程300。参考图3,用户应用106可以形成将经由连接A传输的分组。用户应用106可以在存储器108中(例如,在包括在其中的用户缓冲器中)存储分组有效载荷数据。然而,用户应用106可能是恶意的。因此,用户应用106可能在分组中包括与连接B相关联的分组报头数据,而不是包括与连接A相关联的分组报头数据。系统100可以向适配器112提供由用户应用106创建的数据分组,其中可以通过适配器112在连接上(例如,经由链路110)传输分组。当在连接上传输分组时,分组解析逻辑116可以解析或者从分组中提取与连接B相关联的分组报头数据。适配器112可以将这种所提取的报头数据与对应于存储装置114(例如,在系统设置期间)存储的连接A的报头数据或信息进行比较。因为这样的信息不匹配,所以不能传输由用户应用106形成的分组(例如,可以停止对该分组的传输)。如所示出的,根据本发明的方法和设备,可以建立具有与之相关联的特定元组的连接(例如,在系统设置期间)。可以将这样的元组存储在存储装置114中。在系统操作期间,当与连接相关联的用户应用106创建的数据分组所包括的元组与该连接所关联的元组(由存储装置所存储)不匹配时,系统100可以丢弃该分组。
前面的描述公开的只是本发明的示例性实施例。对于本领域的普通技术人员,在本发明范围内的对上面所公开的设备和方法的修改是显而易见的。例如,尽管上面的系统100使用了使得用户应用106能够形成数据分组的改进方法,但是系统100也可以仍然以传统方式使得OS能够形成数据分组。
因此,尽管已经结合本发明的示例性实施例公开了本发明,但是应该理解,其他示例性实施例可以在如所附权利要求书限定的本发明的精神和范围内。
权利要求
1.一种传输数据分组的方法,包括针对可以从中传输数据分组的每个连接,存储对应于所述连接的报头数据;使用用户应用来形成分组的报头数据和有效载荷数据,其中所述用户应用与将要从中传输所述分组的连接相关联;以及当传输所述分组时,将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较。
2.根据权利要求1所述的方法,其中使用用户应用来形成所述分组的报头数据和有效载荷数据包括减少用以形成所述分组的等待时间。
3.根据权利要求1所述的方法,其中将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较包括减少对具有不准确的报头数据的分组的成功传输。
4.根据权利要求1所述的方法,其中将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较包括提取所述分组报头数据的多个部分;以及将所述分组报头数据的所提取的部分与对应于所述用户应用所关联的连接的报头数据进行比较。
5.根据权利要求1所述的方法,还包括如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则停止分组传输。
6.根据权利要求1所述的方法,还包括如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则破坏所述分组。
7.根据权利要求1所述的方法,其中存储对应于所述连接的报头数据包括存储对应于所述连接的报头数据的简化版本;以及将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较包括将所述分组报头的一个或者多个部分与对应于所述用户应用所关联的连接的报头数据的简化版本进行比较。
8.一种用于传输数据分组的设备,包括存储装置;以及分组解析逻辑,其耦合到所述存储装置;其中所述设备适合于针对可以从中传输数据分组的每个连接,在所述存储装置中存储对应于所述连接的报头数据;接收分组,所述分组的报头数据和有效载荷数据是由用户应用形成的,其中所述用户应用与将要从中传输所述分组的连接相关联;以及当传输所述分组时,使用所述分组解析逻辑将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较。
9.根据权利要求8所述的设备,其中所述设备还适合于减少对具有不准确的报头数据的分组的成功传输。
10.根据权利要求8所述的设备,其中所述设备还适合于提取所述分组报头数据的多个部分;以及将所述分组报头数据的所提取的部分与对应于所述用户应用所关联的连接的报头数据进行比较。
11.根据权利要求8所述的设备,其中所述设备还适合于如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则停止分组传输。
12.根据权利要求8所述的设备,其中所述设备还适合于如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则破坏所述分组。
13.根据权利要求8所述的设备,其中所述设备还适合于存储对应于所述连接的报头数据的简化版本;以及将所述分组报头的一个或者多个部分与对应于所述用户应用所关联的连接的报头数据的简化版本进行比较。
14.一种系统,包括处理器,其适合于执行一个或多个用户应用;以及用于传输数据分组的设备,其耦合到所述处理器并且具有存储装置;以及分组解析逻辑,其耦合到所述存储装置;其中所述系统适合于针对可以从中传输数据分组的每个连接,在所述存储装置中存储对应于所述连接的报头数据;使用用户应用来形成分组的报头数据和有效载荷数据,其中所述用户应用与将要从中传输所述分组的连接相关联;以及当传输所述分组时,使用所述分组解析逻辑将所述分组报头数据的一个或多个部分与对应于所述用户应用所关联的连接的报头数据进行比较。
15.根据权利要求14所述的系统,其中所述系统还适合于减少用以形成所述分组的等待时间。
16.根据权利要求14所述的系统,其中所述系统还适合于减少对具有不准确的报头数据的分组的成功传输。
17.根据权利要求14所述的系统,其中所述系统还适合于提取所述分组报头数据的多个部分;以及将所述分组报头数据的所提取的部分与对应于所述用户应用所关联的连接的报头数据进行比较。
18.根据权利要求14所述的系统,其中所述系统还适合于如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则停止分组传输。
19.根据权利要求14所述的系统,其中所述系统还适合于如果所述分组报头数据的所述一个或多个部分与对应于所述用户应用所关联的连接的报头数据不匹配,则破坏所述分组。
20.所述权利要求14所述的系统,其中所述系统还适合于存储对应于所述连接的报头数据的简化版本;以及将所述分组报头的一个或者多个部分与对应于所述用户应用所关联的连接的报头数据的简化版本进行比较。
全文摘要
在第一方面,本发明提供了一种传输数据分组的第一方法。该第一方法包括步骤(1)针对可以从中传输数据分组的每个连接,存储对应于该连接的报头数据;(2)使用用户应用来形成分组的报头数据和有效载荷数据,其中该用户应用与将要从中传输分组的连接相关联;以及(3)当传输分组时,将分组报头数据的一个或多个部分与对应于该用户应用所关联的连接的报头数据进行比较。本发明还提供了大量其他方面。
文档编号H04L29/06GK101043454SQ200710088309
公开日2007年9月26日 申请日期2007年3月15日 优先权日2006年3月23日
发明者S·M·威伦博格, R·E·富斯, N·P·塞林, J·L·卡尔维格纳克, C·B·维里尔利, C·巴索 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1