用于防止ip欺骗和促进专用数据区的解析的系统和方法

文档序号:7684073阅读:161来源:国知局
专利名称:用于防止ip欺骗和促进专用数据区的解析的系统和方法
用于防止IP欺骗和促进专用数据区的解析的系统和方法 技术领域本申请一般涉及一种改进的数据处理系统和方法。更具体而言,本申 请针对的是一种用于在系统区域网连接请求中防止网际协议(IP)欺骗和 促进专用数据区的解析的系统和方法。
背景技术
在组网协议中,提供用于确保只有特权或受信应用才能够访问特定资 源的保护是重要的。换句话说,组网协议能够依赖于这样的事实是重要的, 即可以相信特定资源是不可被可能有意或无意破坏网,作的应用或连接 到网络的数据处理系统访问的。举例来说,在诸如因特网这样的传输控制协议(TCP)网络中,非特 权应用一般不能够伪造源网际协议(IP)地址,并且通常被防止使用特定 的源端口。此外,不允许非特权客户机绑定(即建立软件链路)到任何地 址,并且不允许其发送原始以太网分组(即未通过TCP/IP编程接口处理 的数据分组)来绕过主机栈(host stack)。这是因为原始套接字不可通过 非特权应用访问。因此,TCP daemon (后台程序)过程能够作为IP连接 建立的一部分假设所提供的远程IP地址是有效的,除非伪造者(即给出未 认证IP地址的非特权应用)在远程客户机具有根访问(root access)。在系统区域网环境中,例如InfiniBand 网络体系结构环境,通过 InfiniBand 体系结构规范巻1和2,版本1.2中所描述的多个机制促进了 TCP/IP通信,该规范可从www.infinibandta.org/specs/处的InfiniBand 贸易协会获得。出于讨论本发明的目的,假设人们熟悉InfiniBand 规范, 其可以很容易从InfiniBand 贸易协会获得,并且因而,在此不再提供对 InfiniBand 网络上的TCP/IP通信中所涉及的所有机制的详细解释。当应用需要将要在连接建立期间使用的IP地址时,例如对于在InfiniBand 网络环境上的TCP/IP连接,通常在通信管理请求(CM REQ ) 消息的专用数据区中传达IP地址。然而,由于提供给接收CMREQ消息 的监听者的远程IP地址不可以纟皮假定为是i人证了的(authentic),因此这 并没有实现TCP/IP连接建立的语义。换句话说,随着允许TCP daemon 信任由远程客户机提供的远程IP地址的TCP/IP网络一起使用的相同保护 机制并不是关于InfiniBandTM网络中CM REQ消息的专用数据区而呈现 的。因此,伪造者可以在CM REQ消息的专用数据区中插入未认证的IP 地址,并且由此获取对远程系统资源的未授权访问。因而,无法知道用户 模式应用只不过没有虚构IP地址并且将其提交作为正常的CM REQ专用 数据的一部分。这是因为,在lnfiniBandTM网络中,用户空间消费者可以 提供想要作为CM专用数据来使用的任何数据。因而,有可能用户空间消 费者可以潜在地采用此来进行IP欺骗。也就是说,用户空间消费者可以将 未授权的IP地址放入专用数据区,并且由此能够建立通信连接并且访问用 户空间消费者不应该访问的远程资源。发明内容说明性实施例提供了 一种机制来消除用户空间消费者通过在 InfiniBand 网络中的通信管理请求(CM REQ)消息的专用数据区内提 供未授权的IP地址来进行网际协议(IP)欺骗的能力。此外,说明性实施 例提供了一种协议,由此可以读取CM REQ消息的专用^t据区中所提供的 数据,并且将其解释用于TCP/IP连接建立和通信。利用说明性实施例的机制,CMREQ仅被限制于特权消费者。这可以 通过检查所述CM REQ中所提供的Q—Key,由连接建立事务的被动方 (passive side)来检验。利用说明性实施例的机制,仅准许指示所述CM REQ来自特权消费者的受控Q_Keys建立对于TCP/IP通信的通信连接。 在一个说明性实施例中,通过使用具有指定CM REQ消息的始发方是否是 特权应用的这些Q—Keys的高阶比特的Q一Keys,有可能确保只有特权消费者才可以通过所述CM REQ消息来处理连接建立。如果设置了 Q_Key的 高阶比特,那么所述Q—Key与关联于特4又应用的特权队列对(privileged queue pair)相关联。通过检查所述Q一Key的该高阶比特,所述连接建立 的被动方有可能能够确定在CM REQ消息中提供的IP地址是否是认证了 的并且可以被信任。这消除了用户空间消费者可以提供要用作CM REQ中 的专用数据的任何东西的可能性。此外,作为说明性实施例的进一步的特征,为了限制可以在系统区域 网(SAN)环境(例如InfiniBand 网络)中的CM REQ专用数据字段 中传递的信息的类型,使用了新的服务标识符(ID)。使用该新的服务ID 通知InfiniBandTM结构(即交换机、通道适配器等)将要以定义的方式解 释所述CMREQ专用数据字段。因而,举例来说,用于连接建立的IP地 址和其它关键信息在CM REQ专用数据区中具有其自己的定义字段。因 此,连接建立事务的被动方知道在CM REQ的专用数据区中的什么地方获 得在主动方与被动方之间建立TCP/IP连接所必需的信息。在一个说明性实施例中,提供了一种用于处理通信连接请求的方法。 所述方法可以包括确定通信连接请求是否具有指示所述通信连接请求始 于特权过程的第一标识符,并且如果所述通信连接请求始于特权过程,则 确定所述通信连接请求是否具有指定所述通信连接请求的专用数据区利用 预定格式下的预定字段的第二标识符。所述方法可以进一步包括依照所 述预定格式的预定字段,处理所述通信连接请求的专用数据区中的信息。 此外,所述方法可以包括使用所述通信连接请求的专用数据区中所处理 的信息来建立通信连接。所述通信连接请求可以是通信管理请求消息,其具有专用数据区以及 在其中提供了所述第一和第二标识符的报头(header)。所述第一标识符 可以是QJKey。所述第二标识符可以是通信管理请求消息中的服务标识 符。如果所述通信连接请求始于特才又过程,则可以将所述第一标识符i殳置 成第一值,并且如果所述通信连接请求始于非特权过程,则可以将所述第 一标识符设置成笫二值。只有操作系统或特权过程可以将所述第 一标识符设置成所述第一值。数据处理系统可以是系统区域网中的主节点。可以在所述主节点的通 道适配器中实现所迷方法。所述专用数据区中的信息可以包括所述专用数 据区的预定字段中的源网际协议(IP)地址或目的IP地址中的至少一个。所述通信连接请求可以包括使用远程直接存储器访问(RDMA)操作从另 一数据处理系统传递的一个或多个不可靠数据报分组。可以在所述数据处理系统的第一主节点中实现所述确定步骤、处理步 骤和建立步骤。所述方法可以进一步包括在所述数据处理系统中的第二 主节点中,接收来自运行在远程主节点中的过程的通信连接请求,以及在 所述笫二主节点中,确定所述过程是否是特权过程。所述方法还可以包括 如果所述过程不是特权过程,则在所述第二主节点中修改所述通信连接请 求,以便将所述第一标识符设置成与关联于所述过程的队列对的第 一标识 符的值相对应的值。此外,所述方法可以包括将所述通信连接请求从所 述第二主节点发送至所述第一主节点。如果所述第一标识符纟皮设置成指示 所述通信连接请求始于特权过程,那么可以将所述第 一标识符设置成与由 所述过程发送并在所述第二主节点中接收的通信连接请求中所提供的第一 标识符的值相对应的值。确定通信连接请求是否具有指示所述通信连接请求始于特权过程的第 一标识符可以包括确定所述通信连接请求是否以与所述数据处理系统的 操作系统相关联的队列对为目标;确定所述第一标识符是否对应于与所述 操作系统相关联的队列对;以及如果所述第一标识符并不匹配于与所述操 作系统相关联的队列对的标识符,则拒绝所述通信连接请求。确定通信连 接请求是否具有指示所述通信连接请求始于特权过程的第 一标识符可以进 一步包括如果所述通信连接请求并不以与所述操作系统相关联的队列对 为目标,则确定所述第 一标识符是否设置了高阶比特;如果所述第 一标识 符设置了高阶比特,则确定所述第一标识符是否与所迷通信连接请求的目 标队列对的标识符相匹配;以及如果所述第一标识符并未"i殳置高阶比特, 或者所述第一标识符并不与所述通信连接请求的目标队列对的标识符相匹配,则拒绝所述通信连接请求。在其它的说明性实施例中,提供了一种计算机程序产品,其包括具有 计算机可读程序的计算机可用介质。当在计算设备上执行时,所述计算机中的各种操作及其组合。在另一说明性实施例中,提供了一种装置。所述装置可以包括处理器 以及耦合于所述处理器的存储器。所述存储器可以包括这样的指令,即当 由所述处理器执^f亍时,该指令使得所述处理器实现以上关于方法i兌明性实 施例所概括的操作中的各种操作及其组合。鉴于以下对本发明的示例性实施例的详细描述,本发明的这些以及其 它的特征和优点将得以描述,或者对本领域的普通技术人员来说将变得显 而易见。


当结合附图阅读时,通过参照以下对说明性实施例的详细描述,将最好地理解本发明以及优选使用模式,及其进一步的目的和优点,在附图中 图1是可以在其中实现说明性实施例的示例性方面的分布式计算机系 统的示例图;图2是依照一个说明性实施例说明了主处理器节点的示例性软件和硬 件方面的示例图;图3是依照一个说明性实施例的主机通道适配器的软件模型的示例图;图4是依照一个说明性实施例说明了用于SAN上的节点的软件管理模 型的示例图;图5是依照一个说明性实施例说明了工作和完成队列处理的示例框图;图6是根据一个说明性实施例说明了三种处理器数据报通信服务的示 例图;图7是说明了具有用于指示QJKey是否与特权应用相关联的控制比特的QJCey的示例图;图8是依照一个说明性实施例用于处理CMREQ消息的示例框图; 图9是依照一个说明性实施例说明了 CM REQ消息的结构化专用数据区的示例;f匡图;图10是依照一个说明性实施例概括了连接建立请求的主动方的示例 操作的流考呈图;以及图11是依照一个说明性实施例概括了连接建立请求的被动方的示例 操作的流程图。
具体实施方式
文中的说明性实施例提供了这样的机制,其用于确保系统区域网中连 接建立请求的源是特权源,以及用于限制可以在该系统区域网中使用的连 接建立请求中所提供的信息的类型。确保这样的请求来自特权源涉及在请 求的报头中提供标识该请求是否始于特权源的标识符。该标识符仅可由特 权应用访问,从而使得非特权应用不可以修改该标识符的设置。以这样的 方式,仅特权应用可以将自己标识为具有特权,并且能够建立通信连接。 因此,连接建立请求的接受方可以信任该请求中的地址信息和其它信息。在一个说明性实施例中,该系统区域网是提供基于InfiniBand 的网 际协议(IP ) (IPoIB )功能性的InriniBandTM网络。在这样的系统中,CM REQ消息用于通过队列对在消费者之间建立通信连接。在这样的实施例 中,可以将标识符提供为Q一Key中的比特(例如高阶比特),其中,損_供 该Q_Key作为该CM REQ消息的部分。当设置该Q一Key时,CM REQ 消息的接收方可以信任CM REQ消息始于特斥又消费者,并且因而可以信任 该CM REQ消息的专用数据区中提供的信息。虽然将具体参照其中系统区域网(SAN)是InfiniBand 网络的示例 性实施例来描述关于SAN的说明性实施例,但是这些实施例仅仅是说明性 的,并且并不限于可以在其中实现说明性实施例的机制的网络的类型。为了描述说明性实施例,假设本领域的普通技术人员熟悉通常可从InfiniBand 贸易协会(IBTA)获得的InfiniBand 体系结构规范。因而, 在此并不提供对InfiniBandTM体系结构规范的详细讨论。现参照附图并且特别参照图1,其说明了可以在其中实现说明性实施 例的示例性方面的分布式计算机系统的示例性实施例。提供图1中所表示 的分布式计算机系统100仅出于说明的目的,并且下面描述的说明性实施 例可以在众多其它类型和配置的计算机系统上实现。举例来说,实现说明 性实施例的计算机系统可以从具有一个处理器和几个输入/输出(I/O)适 配器的小型服务器到具有成百上千个处理器和数千个I/O适配器的特大型 并行超级计算机系统。此外,可以在由因特网或内联网连接的远程计算才几 系统的基J出设施中实现说明性实施例。如图1中所示,分布式计算机系统100包括系统区域网(SAN) 113, 其是分布式计算机系统内的高带宽、低时延网络互连节点。分布式计算机 系统100中可以包括超过一个的SAN 113,并且每个SAN 113可以包括多 个子网络(子网)。文中将节点定义成依附于网络的一个或多个链路的任何组件。在所说 明的分布式计算机系统中,节点包括主处理器101、独立磁盘冗余阵列 (RAID)子系统103、 I/O适配器105、交换机109A-109C、路由器111 等。图1中所说明的节点仅出于说明的目的,因为SAN 113可以连接任何 数目和任何类型的独立节点。节点中的任何一个均可以充当端节点,文中 将其定义为分布式计算机系统100中发起或最终消耗消息或帧的设备。SAN 113是在分布式计算机系统100内支持I/0和处理器间通信(IPC ) 这二者的通信和管理基础设施。如图1中所说明的,分布式计算机系统100包括允许很多设备在安全、远程受管环境中利用高带宽和低时延并行传送 数据的交换式通信结构(即链路、交换机和路由器)。端节点可以通过多个 端口进行通信,并且通过SAN113利用多条路径。对于容错和增加带宽的 数据传送,可以采用通过SAN113的路径和多个端口的可用性。SAN 113包括交换机109A-109C和路由器111。交换机109A-109C将多个链路连接在一起,并且允许使用小报头目的地局部标识符(DLID, Destination Local Identifier)字段在SAN 113内将分组从一个链路路由至 另 一链路。路由器111能够使用大^L头目的地全局唯一标识符(DGUID, Destination Globally Unique Identifier )将帧从第一子网中的一个链路路由 至第二子网中的另一链路。路由器111可以通过广域网(WAN)、局域网(LAN)等连接耦合于其它主机和/或其它路由器。在SAN 113中,主处理器节点101和I/O节点106包括至少一个通道 适配器(CA)以便与SAN 113连接。主处理器节点101包括中央处理器(CPU) 119和存储器121。在一个实施例中,每个CA是向SAN 113上 所传输的源或接收分组足够详细地实现CA接口 (例如在以上参照的 InfiniBand 体系结构规范中所提供的)的端节点。如所说明的,存在两 种CA类型,主CA (HCA ) 117和目标CA ( TCA) 127。通过通用计算 节点来使用HCA 117以便访问SAN 113。在一种实现中,以硬件实现HCA 117。在HCA 117的硬件实现中,HCA硬件卸载许多CPU和I/O适配器 通信开销。HCA117的硬件实现还准许通过交换式网络的多个并行通信, 而无需与通信协议关联的常规开销。在SAN113中使用HCA117还向分布 式计算机系统100的输入/输出(I/O)和处理器间通信(IPC)消费者提供 了零处理器复制数据传送,而不涉及操作系统核心过程。HCA 117和SAN 113的其它硬件提供了可靠、容错的通信。I/O底盘(chassis) 106包括I/O适配器底板和含有适配卡的多个I/O 适配器节点105。图1中所说明的示例性适配卡包括SCSI适配卡123A、 到光纤通道集线器和FC-ALi殳备的适配卡123B、以太网适配卡123C、图 形适配卡123D,以;S^视频适配卡123E。在不背离本发明的精神和范围的 情况下,利用图1中所示的机制可以实现任何已知类型的适配卡。1/0底 盘106在I/O适配器底板中还包括交换机109B,以便将适配卡123A-123E 耦合于SAN 113。RAID子系统103包括微处理器125、存储器126、目标通道适配器 (TCA) 127,以及多个冗余和/或条式存储盘129。中,每个链路115均是在任何两个网络元件(例 如端节点、交换机109A-109C或路由器111)之间的全双工通道。合适的 链路115可以包括但不限于铜缆、光缆,以及底板和印刷电路板上的印 刷电路铜迹线(trace )。链路115和交换机109A-109C等的组合进行操作 以便提供SAN 113的节点之间的点到点通信。图2中总体说明了示例性主处理器节点101的软件和硬件方面。主处 理器节点101包括执行一组消费者过程201的一个或多个处理器。主处理 器节点101包括具有端口 205的HCA 117。每个端口 205均连接至SAN 113 的链路115。端口 205可以连接至一个SAN子网或多个SAN子网。利用 消息和数据服务203,消费者过程201通过动词接口 ( verbs interface ) 207 将消息传送至SAN 113。动词接口 207通常是利用操作系统专用程序接口 来实现的。利用SAN 113的InfiniBand 实现,在先前所参照的 InfiniBand 体系结构规范中指定动词接口 207。图3中说明了 HCA 117的软件模型。HCA117包括一組队列对(QPs) 301,其通过端口 205将消息传送至子网。单个HCA 117可以支持数千个 QPs 301。相比较而言,1/0适配器中的TCA 127通常支持少得多数目的 QPs 301 。还说明了子网经营管理(SMA , subnet management administration)模型209、管理分组211,以及多个虛通道(virtual lane ) 213,其连接传输层与端口 205。现转至图4,其说明了用于SAN 113上的节点的软件管理模型。SAN 体系结构管理设施提供了子网管理器(SM, Subnet Manager) 303A、子 网管理(SA, SubnetAdministration)模块303B,以及支持多个通用管理 服务的基础设施。管理基础设施包括在每个节点中操作的子网管理代理 (SMA, Subnet Management Agent) 307。管理基础设施定义了允许附加 通用服务代理的通用服务接口。此外,SAN体系结构定义了用于在管理器 与管理代理之间通信的公共管理数据报(MAD, management datagram ) 消息结构。SM303A负责初始化、配置和管理交换机、路由器和通道适配器。可以在i者如通道适配器或交换机的其它i殳备内实现SM 303A。将SAN 113的 一个SM303A专用为主SM,并且其负责发现子网拓朴,利用各种局部标 识(LID)号、全局标识(GID)号、子网前缀和分区键(P—Keys)来配 置每个通道适配器端口;利用LID、子网前缀及其转发数据库来配置每个 交换机,以及为子网维护端节点和服务数据库,以便向LID/GID解决服务 以及服务目录提供全局唯一标识(GUID )号。因而,利用子网管理(SM) 303A和子网管理(SA)模块303B来完成SAN 113和SAN组件(例如 HCA117、 TCA (或端节点)127、交换机109A-109C,以及路由器lll) 的管理。子网管理分组(SMPs )用于通过端节点305的管理代理307来发 现、初始化、配置和维护SAN组件。SAN SA分组由SAN组件4吏用,以 便查询和更新子网管理数据。通过基于主机的端节点309中的用户管理控 制台311提供对子网管理的一些方面的控制。SAN 113提供了 1/0所要求的高带宽和可扩缩性,并且还支持处理器 间通信(IPC )所要求的极低的时延和极低的CPU开销。用户过程可以绕 过操作系统(OS)核心过程,并且直接访问诸如HCA 117的网络通信硬 件,其启用了高效消息传递协议。SAN 113适于当前的计算模型,并且是 用于新形式的I/O和计算机群集通信的构造块。SAN 113允许I/O适配器 节点105在其自身之间通信或者与分布式计算机系统中的任何或全部的处 理器节点101进^f亍通信。在I/0适配器附于SAN113的情况下,所得到的 I/O适配器节点105具有大体上与分布式计算机系统中的任何处理器节点 101相同的通信能力。对于可靠的消息服务类型,诸如主处理器节点101和I/O适配器节点 105这样的端节点生成请求分组并且接收确认分组。交换机109A-109C和 路由器lll将分组从源传递至目标(或目的地)。除了不同的CRC才IC字 段之外(在网络中的每个传送阶段均对其进行更新),交换机109A-109C 向前传递未修改的分组。在路由分组时,路由器111更新不同的CRC才^C 字段并且修改报头中的其它字段。在SAN 113中,硬件提供了 一种消息传递机制,其可以用于在通用计算节点之间的处理器间通信(IPC)和输V输出(1/0)设备。消费者通过 分别将发送/接收消息置于SAN通道适配器(CA)上的发送/接收工作队列(WQ)来访问SAN 113消息传递硬件。文中将消息定义成数据交换的应用定义单元,其是协作过程之间通信 的基本单元。文中将分组(或帧)定义成由组网协议报头(和报尾)封装 的一个数据单元。报头通常提供用于通过SAN113而引导分组(或帧)的 控制和路由信息。报尾通常含有用于确保在破坏内容的情况下不传递帧的 控制和循环冗余校验(CRC)数据。消费者4吏用SAN动词来访问HCA功能。解释动词并直接访问CA的 软件被称为通道接口 (CI)。将发送/接收工作队列(WQ)分派给消费者 作为队列对(QP)。可以通过五个不同的传输类型来发送消息可靠连接(RC)、可靠数据报(RD)、不可靠连接(UC)、不可靠数据报(UD), 以及原始数据报(RawD)。消费者通过SAN发送和接收工作完成(WC) 从完成队列(CQ )检索这些消息的结果。源CA关注分段出站消息并且将 其发送至目的地。目的地或目标CA关注重新装配入站消息并将其放入由 目的地消费者指定的存储空间。下面的附图中说明了这些特征。现参照图5,其说明了工作和完成队列处理的框图。每个QP301提供 了到发送工作队列(SWQ )407和接收工作队列(RWQ )409的输入。SWQ 407发送通道和存储语义消息,并且RWQ409接收通道语义消息。消费者 调用动词(在动词接口 207内),以便将工作请求(WR)^t到工作队列(WQ) 中。发送WR 403是通道语义操作,以便将一组本地数据段417推到(push ) 远程节点的接收WQE 405所引用的数据段。发送WR的数据段417中的 每一个均含有虚拟相连存储区域。用于引用本地数据段417的虚拟地址处 于创建了本地QP301的过程的地址上下文中。如图5中所示,已经由消费者过程401放到WQ上的WR403被称为 工作队列元素(WQE ) 405。 WQE 405由HCA 117中的硬件415来执行。 SWQ 407含有描述将要在SAN结构上传输的数据的WQE 405。 RWQ 409 含有描述在哪里放置从SAN 113接收到的输入通道语义数据的WQE 405。在一个实施例中,RWQ 409仅支持一种类型的WQE 405,其被称为 接收WQE。接收WQE提供了对于向其中写入输AJC送消息(incoming send message)的本地存储空间进行了描述的通道语义操作。接收WQE 包括描述了若千虛拟相连存储空间的介軟列表(scatter list )。将输入发送 消息写入这些存储空间。虛拟地址处于创建了本地QP301的过程的地址上 下文中。动词接口 207还提供了一种用于从完成队列411中检索完成的工作的 ^L制。完成队列411含有完成队列元素(CQE) 413,其含有关于先前完 成的WQE 405的信息。采用完成队列411来为多个QP301创建单点完成 通知(a single point of completion notification )。 CQE 413含有足够的信息 来确定完成的特定WQE 405以及QP301。完成队列上下文(未示出)是 含有指向长度以及管理各个完成队列411所需要的其它信息的指针的信息 块。通过SAN结构在使用数据报型消息的过程之间共享的队列需要保护 键(protection key )来^E请求方使用在收端接收到的队列的权力。在SAN 113内所利用的保护键之一被称为队列键(Q一Key )。 Q_Key机制允许应用 认证其利用特定的通信资源的权利力,例如发送和接收队列。为了促进应 用的认证(即,使用所接收的队列),Q一Keys通常能够由应用来设置。因 为应用能够设置QJCey,因此需要一种更强的认证,即该认证不能够被未 授权访问通信资源的应用伪造。在SAN 113中,OS运行为特权类程序,并且应用运行为非特权类。 应用要求OS进行具有特权的特定操作,例如QP上下文建立。提供了 Q—Key,其是OS可控的,并且在没有验证应用具有使用队列资源的权限 的情况下,防止从应用过程级访问队列资源。通过利用大得足以使应用过 程很难猜测正确的键的键来控制未授权的访问。为队列生成"受控 Q—Key",但并不能从应用过程级对其进行操纵,除非操作系统(OS)给 予应用这样做的权限。现参照图6,其说明了三种处理器数据报通信服务。三个处理器,处理器501、处理器502和处理器503,通过各种过程的发送/接收(QP)消 息相互通信。说明了四个这样的过程,举例来说,包括处理器502上的过 程C和过程D以及处理器503上的过程E。在操作期间,远程过程可以同 时尝试通过4吏用数据才艮型消息与过程A进行通信。数据才艮型消息包括允许 在端节点共享QPs的特性。如图6中所说明的,过程C、 D和E试图与过程A的QP_4进行通信。 每个数据报消息均含有Q_Key作为消息的一部分。将Q—Key与关联于 QP—4的Q—Key进行比较。如果匹配,则将请求方t7v QP一4的接收队列511 中,否则将其默默丢弃(例如,在不可靠数据报型服务的情况下)或将否 定确认(NAK)型消息发送回发送方(例如,在可靠数据才艮型服务的情况 下)。通常,请求访问QP的应用过程可以在Q—Key处猜测多次,直到猜 到正确的QJKey。为了防止一个或多个过程C、 D或E获得对QP—4的未 授权访问,需要不能被排除的过程(excluded process )猜测得到的Q—Key。 通过提供不能^皮请求过程生成的Q一Key,防止过程C、 D或E中的一个或 多个可能成功尝试对Q_Key的正确猜测。在Q一Key中提供了附加比特,并且将该附加比特指定为特权比特(或 控制比特)。附加比特通过允许对Q—Key设置应用级访问限制来增强 Q_Key功能性。图7说明了具有控制比特703的Q_Key 701 (例如,字符 序列)。因而,在SAN操作期间,禁止应用级代码在发送工作请求或修改 QP请求上生成Q—Key,除非可信的HCA代码首先将应用标识为具有使 用受控Q—Key的权限。在优选实施例中,受控Q—Key是具有为OS保留(即,仅可以由OS 来改变值)的专用最高阶比特或附加比特的Q一Key。因此,创建了两类 Q—Key,受控类和不受控类。对于受控类将控制比特设置为1,而对于不 受控类将控制比特设置为0。仅准许OS以及由OS给予特权的消费者过程 在工作请求(WR)中提交作为受控Q一Key的QJKey。其它用户空间消费 者仅可以提交具有未设置的高阶比特的Q_Key的WR。这防止了用户空间 消费者向特权模式QP发送消息,因为被动方将校验高阶比特(其不能由用户空间消费者调节)并且只是成功处理了 ^:置了该比特的消息。说明性实施例的机制利用受控Q_Key来检验连接请求始于授权或特 权消费者。以这样的方式,在维持类似于TCP的安全级别的安全级别时, 有可能通过SAN进行网际协议(IP)通信。该安全级别确保连接建立的被 动方可以信任连接请求的发送方。将InfmiBandTM作为示例性SAN,在其中实现了说明性实施例的机制, 通过使用不可靠数据报(UD )队列对(QP ),由InfiniBand 结构来传递 通信管理(CM)消息。这样的CM消息,即UD分组,是使用远程直接 存储器访问(RDMA)操作来传递的,在RDMA操作中,直接将数据从 一个存储器传递到另一存储器,而不涉及主节点的处理器。在UD分组中 使用数据报扩展传输层报头(DETH )。 DETH尤其含有UD分组所导向的 队列对的目的地Q一Key。该Q_Key具有高阶比特,可以将其设置来指定 UD分组的始发方是否具有特权。举例来说,当消费者生成工作请求(WR)时,该消费者指定包括在 WR中的QJCey。如果消费者是特权消费者,那么由该消费者设置WR中 的Q一Key的高阶比特。不是特权消费者的消费者不能够设置该Q一Key的 高阶比特。因而,与非特权消费者关联的QJCey未被设置并且指示WR 的源是非特权消费者。通道接口 (CI)检查WR中的该QJCey,并且基于高阶比特的设置, 确定输出分组的DETH是否含有来自与消费者关联的QP的Q一Key,或者 来自工作请求(WR)的QJKey。再者,具有最高比特i殳置的Q—Key被认 为是受控Q_Key,并且通道适配器不允许消费者任意指定受控Q一Key。 OS维持对受控Q—Key的控制,因为其可以仅为特权消费者配置受控 Q—Key的QP上下文。这允许特权模式代码实现这样的策略,即仅向用户 空间消费者提供具有未设置的高阶比特的Q—Key。因而,依照i兌明性实施例的机制,举例来说,对于CM REQ消息, CM REQ的DETH中的Q—Key的高阶比特通知通道接口 ( CI)(其工作 是解释在通过通道适配器的通信中使用的动词)CM REQ消息是否始于特权消费者。利用说明性实施例,只有特权消费者,即OS已经给予特权状 态的应用或主节点的OS,可以使用CM REQ消息建立通信连接。如果 Q—Key的高阶比特指示特权消费者是CM REQ消息的源,那么该通信连 接的被动方可以信任在该CM REQ消息的专用数据区中提供的信息。如果 Q—Key的高阶比特指示非特权消费者是CM REQ消息的源,那么被动方 可以不信任在专用数据区中提供的信息,即该信息可能是用户空间应用生 成的,并且因而可能是欺骗信息。因此,可以拒绝该CMREQ消息。图8是依照一个说明性实施例用于处理CM REQ消息的示例框图。如 图8中所示,主节点810包括在其上运行的多个消费者过程812-816。消费 者过程812希望在主节点880上与过程884建立TCP/IP通信连接。因此, 消费者过程812通过通道接口 830将CM REQ工作请求递送到其在与主机 通道适配器840相关联的本地QP 822中的发送队列。作为该CM REQ工 作请求的一部分,消费者过程812提供Q—Key,并且设置该CM REQ工 作请求的Q—Key的高阶比特。另外,消费者过程812利用新的服务标识符 来限制CM REQ工作请求,其中该新的服务标识符具有格式化专用数据 区,如下文将较为详细讨论的。在通道接口 830中从消费者过程812接收CM REQ工作请求。通道接 口 830检查该CM REQ工作请求,并且确定在该CM REQ工作请求中提 供的Q—Key是否指示该CM REQ工作请求始于特权消费者,例如OS或 已经由OS授予特权状态的过程。举例来说,通道接口 830可以检查QJCey 中高阶比特的状态,以便确定是否设置了高阶比特。如果设置了高阶比特, 那么通道接口 830可以确定消费者过程812是特权消费者过程。如果没有 设置高阶比特,那么通道接口 830可以确定消费者过程812是非特权消费 者过程。由于OS控制谁可以使用特权Q_Key,因此唯一可以i殳置Q_Key中高 阶比特的时间是当消费者过程812是特权消费者过程并且在该Q一Key中具 体设置了高阶比特的时候。否则,将不设置高阶比特,其对于非特权消费 者过程是缺省的。如果没有设置工作请求中Q_Key的高阶比特,则通道接口 830指示主 机通道适配器840的本地QP 822将CM REQ工作请求中所提供的Q一Key 嵌入到由本地QP 822所发出的CM REQ消息的DETH中。如果设置了 CMREQ工作请求中Q—Key的高阶比特,则通道接口 830指示本地QP822 改为嵌入其自己的Q一Key。使用这些机制,Q—Key本身便不能由于体系结构而被欺骗。也就是说, 由于OS控制QP创建并且用户级应用不能改变QP上下文,因此OS具有 控制使用特权Q—Key的装置。如果非特权用户级应用设置了工作请求中 Q—Key的高阶比特,那么本地QP将嵌入其自己的Q—Key而不是工作请 求中所提供的QJCey。对于非特权用户级应用来说,QP上下文中的Q_Key 是非特权Q一Key。当目标主节点880接收到CM REQ消息时,其使用该CM REQ消息 的DETH中的Q—Key来^Hi输入的CM REQ消息。目标主节点880的通 道接口 882检查该Q—Key,并且确定作为该CM REQ消息的目标的队列 对是否是队列对l(QPl )。 QP1是lnfmiBandTM体系结构中的特别队列对, 其被分派给OS,并且因而处理特权或受信通信。如果CMREQ消息指向 QP1,则通道接口 830确定该QJKey是否是与QP1相关联的指定Q—Key, 例如,0x80010000。如果CM REQ消息指向QP1并且该Q—Key是指定 Q_Key ,那么准许继续由目标主节点880处理该CM REQ消息。如果CM REQ消息指向QP1,但Q—Key不是与QP1相关联的指定Q—Key,那么 可以将拒绝响应返回给发起CM REQ消息的主节点810。如果CM REQ消息的目标QP不是QPl,那么目标主节点880的通 道接口 882验证CM REQ消息的DETH具有设置了高阶比特的Q—Key, 其中该高阶比特在CM REQ消息始于特权模式的情况下可以被设置仅是 QP。如果CM REQ消息的Q—Key具有设置了的高阶比特,那么在CM REQ消息中的Q—Key与目的地QP的Q_Key匹配的情况下准许目标主节 点880继续处理CMREQ消息。否则,如果Q—Key并不具有设置了的高 阶比特或者CM REQ消息中的Q—Key并不与目的地QP的Q一Key相匹配,则可以将拒绝响应消息返回给发起方主节点810。因而,上述机制确保CM REQ消息M自于特权消费者过程的,而不 是由可能进行欺骗的用户空间过程发送的。除了这些保护机制之外,说明 性实施例还提供了一种机制,通过该机制可以处理CM REQ消息的专用数 据区,以l更获得必要的TCP/IP连接建立信息,例如,源IP地址、目的IP 地址等。特别地,提供了可以包括在CM REQ消息的DETH中的服务标 识符,以便指示专用数据区是根据特定规范进行格式化的。通常,并不结构化诸如CMREQ消息的不可靠数据报的专用数据区。 因此,过程可以将它们认为符合专用数据区的任何信息放入专用数据区的 任何字段。因而,如果专用数据区用于将TCP/IP信息传送给目标主系统 880,则无法确切知道在专用数据区的哪里放置了 TCP/IP信息或者在专用 数据区的哪些字段中有什么信息。利用说明性实施例的机制,以预先确定 的方式结构化该专用数据区,从而使得将专用数据区的特定字段指定用于 存储TCP/IP信息的特殊部分。当其被利用的时候,在CM REQ消息的报 头中指定该结构化专用数据区。基于对所接收的CM REQ消息的DETH中该服务标识符的检测,目 标主节点880的通道接口 882可以从CM REQ消息的专用数据区提取必要 的信息,以便通过系统区域网建立TCP/IP连接。服务标识符可以是任何 类型的服务标识符,其可以被包括在CM REQ消息的报头或DETH中。对所接收的CM REQ消息的DETH中预先确定的服务标识符的检测 通知通道接口 882:在CM REQ消息中利用了专用数据区的预先确定的结 构。因此,通道接口 882知道专用数据区的哪些字段含有在主节点810上 的过程812与目标主节点880上的过程之间建立TCP/IP通信连接所需要 的TCP/IP信息的哪些部分。图9是依照一个说明性实施例说明了 CMREQ消息的结构化专用数据 区的示例框图。图9仅仅是CMREQ消息的专用数据区的一种可能的结构, 且并不旨在陈述或暗示关于可以结构化专用数据区的方式的任何限制。在 不背离说明性实施例的精神和范围的情况下,可以对图9中所描绘的结构进行很多修改。如图9中所示,专用数据区卯0包括特定字段910-942,其用于存储对 于在诸如InfiniBandTM网络的系统区域网中的主节点的过程之间建立 TCP/IP通信连接可能是必要的特定TCP/IP信息。在所描绘的例子中,字 段910存储主要版本,字段912存储次要版本,字段914存储IP版本,字 段916存储基于零的虚拟地址(ZB)异常值,字段918存储无效发送(SI) 异常值,字段920存储连接偏好(CP)值,保留字段922,字段924存储 源端口标识符,并且保留字段926。字段928-934存储源IP地址,且每个 字段存储源IP地址的不同部分,如所描绘的。字段936-942存储目的IP 地址,且每个字段存储目的IP地址的不同部分,如所描绘的。TCP/IP通信连接建立的主动方上的特权消费者(即CM REQ消息的 源)负责设置预定专用数据字段910-942中的值,例如源IP地址、目的IP 地址等。当被动方(即目标主节点)接收到CM REQ消息时,其首先m^ 该CM REQ消息来自使用先前所描述的方法和机制的特权消费者。然后, 通过检查服务标识符,被动方知道专用数据区含有诸如图9中所示的那些 字段的预定字段。被动方然后可以依照定义的结构解释专用数据区。图10和11是依照一个说明性实施例概括了通信连接建立的主动方和 被动方的示例性操作的流程图。应当理解,可以通过计算机程序指令实现 流程图说明的每个块,以及流程图说明中块的组合。可以将这些计算机程 序指令提供给处理器或其它可编程数据处理装置来产生机器,从而^f吏得在 处理器或其它可编程数据处理装置上执行的指令创建用于实现流程图块中 所指定的功能的装置。还可以将这些计算机程序指令存储在可以指导处理 器或其它可编程lt据处理装置以特定方式运行的计算机可读存储器或存储 介质中,从而使得存储在计算机可读存储器或存储介质中的指令产生包括 实现流程图块中所指定的功能的指令装置在内的制品。因此,流程图说明的块支持用于实现指定功能的装置的组合、用于实 现指定功能的步骤以及用于实现指定功能的程序指令装置的组合。还应当 理解,可以通过实现指定功能或步骤的基于专用硬件的计算机系统,或者通过专用硬件和计算机指令的组合,来实现流程图说明的每个块以及流程 图说明中的块的组合。图10是依照一个说明性实施例概括了连接建立请求的主动方的示例 性操作的流程图。如图10中所示,操作开始于通道接口接收对建立TCP/IP 通信连接的工作请求(步骤1010 )。通道接口检查该工作请求的Q—Key(步 骤1020 ),并且确定是否设置了 Q一Key的高阶比特(步骤1030 )。如果没 有设置高阶比特,那么通道接口指示本地队列对将工作请求中所提供的 Q—Key嵌入其发送出的CM REQ消息(步骤1040 )。如果设置了高阶比特, 那么通道接口指示本地队列对嵌入与本地队列对相关联的Q—Key (步骤 1050)。然后该操作结束。图11是依照一个说明性实施例概括了连接建立请求的被动方的示例 性操作的流程图。如图11中所示,操作开始于对CM REQ消息的接收(步 骤1110 )。通道接口确定CM REQ消息是否以队列对1为目标(步骤1120 )。 如果是的话,则通道接口确定CM REQ消息的Q—Key是否是与队列对1 相关联的预定Q一Key (步骤1130)。如果是的话,则继续进行对CMREQ 消息的处理,以便建立TCP/IP连接(步骤1140 )。例如,可以在CM REQ 消息上继续进行依照InfiniBand 规范的处理,从而建立TCP/IP连接。 举例来说,在从远程通道适配器的连接管理器(CM)接收到请求时,本 地通道适配器的CM确定所请求的服务是否在本地通道适配器(CA)上 可用。如果不是,则CM将拒绝消息发送回远程CA的CM,其陈述拒绝 的原因。如果本地CA支持所请求的服务,则本地CM创建QP来处理其 通信通道的末端,对具有请求中所提供的信息的QP的上下文进行编程, 将新创建的QP转变成准备接收状态,并且然后将响应消息与关于新创建 的QP的信息发送回请求方。返回步骤1140,如果CM REQ消息的Q—Key不是与队列对1相关联 的预定Q一Key,那么可以将拒绝响应消息返回给CM REQ消息的发起方 或主动方(步骤1150)。如果CMREQ消息并不指向队列对l,则通道接 口确定是否设置了 CM REQ消息中Q_Key的高阶比特(步骤1160)。如果设置了 Q—Key的高阶比特,那么通道接口将CM REQ消息中的Q—Key 与目的地QP的Q一Key进行比较,以便确定是否存在匹配(步骤1165 )。 如果存在匹配,则继续进行对CM REQ消息的处理(步骤1140 )。如果没 有设置QJKey的高阶比特,那么可以将拒绝响应消息发送回给CM REQ 消息的发起方或主动方(步骤1150 )。此后,通道接口检查CMREQ消息中的服务标识符(步骤1160),并 且确定该服务标识符是否指定在CM REQ消息的专用数据区中使用了预 定字段(步骤1170 )。如果CM REQ消息中的服务标识符指示利用了预定 字段,则通道接口依照预定字段来处理专用数据区中的信息(步骤1180 )。 否则,如果服务标识符没有指定利用了预定字段,那么CM确定服务ID 所指定的期望服务是否存在于其关联子系统内(步骤1185)。如果服务存 在,那么按照本领域中公知的正常方式继续处理(步骤1190)。否则,如 果服务并不存在于CM的关联子系统内,则可以将拒绝响应消息返回给 CM REQ消息的发起方或主动方(步骤1195 )。然后该操作结束。因而,利用说明性实施例的机制,将新的服务标识符用于指示CM REQ消息专用数据区含有根据预定结构的预定字段。此外,通过限制CM REQ消息仅由特权消费者发送,如受控Q_Key所检验的,被动方可以确 定含于CM REQ消息的专用数据区中的信息并不是由非特权用户空间消 费者设置的。这保证了对CM REQ消息的预定专用数据区字段的处理是由 特权消费者完成的,并且诸如IP地址的信息(其由主动方传递给CM REQ 消息专用数据区中的被动方)是可以信任的。应当理解,说明性实施例可以采取全硬件实施例、全软件实施例或者 既含有硬件元素又含有软件元素的实施例的形式。在一个示例性实施例中, 以软件实现说明性实施例的机制,其包括但不限于固件、常驻软件、孩史码 等。此外,说明性实施例可以采取可访问于计算机可用或计算机可读介质 的计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算机 或任何指令执行系统使用的或者与计算机或任何指令执行系统结合使用的程序代码。对于该描述来说,计算机可用或计算机可读介质可以是能够容纳、存储、通信、传播或传送由指令执行系统、装置或该:备使用的或者与 指令执行系统、装置或设备结合使用的程序的任何装置。介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或 设备)或者传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可装卸计算机磁盘、随机访问存储器(RAM )、只读存储器(ROM )、 硬磁盘和光盘。光盘的当前的例子包括只读光盘存储器(CD-ROM )、读/ 写光盘(CD-R/W)和DVD。适于存储和/或执行程序代码的数据处理系统可以包括通过系统总线 直接地或间接地耦合于存储元件的至少一个处理器。存储元件可以包括在 程序代码的实际执行期间所采用的局部存储器、大容量存储器,以及为了 减少在执行期间必须从大容量存储器检索代码的次数而提供对至少 一些程 序代码的临时存储的高速緩沖存储器。输7W输出或I/0设备(包括但不限于键盘、显示器、指点设备等)可 以直接地或者通过插入I/O控制器耦合于系统。网络适配器也可以耦合于系统,从而使得数据处理系统能够适于通过介入专用或公用网络耦合于其 它的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调 器和以太网卡正是几种当前可用类型的网络适配器。已经出于说明和描述的目的给出了对本发明的描述,且并不旨在以所 公开的形式穷举或限制本发明。对本领域的普通技术人员来说,很多修改 和变形将是显而易见的。选择和描述实施例是为了最好地解释本发明的原 理、实际应用,以及使本领域的普通技术人员能够针对适于预期的特定用 途的各种实施例以及各种修改来理解本发明。
权利要求
1.一种在数据处理系统中用于处理通信连接请求的方法,所述方法包括确定通信连接请求是否具有指示所述通信连接请求始于特权过程的第一标识符;如果所述通信连接请求始于特权过程,则确定所述通信连接请求是否具有指定所述通信连接请求的专用数据区利用预定格式下的预定字段的第二标识符;依照所述预定格式的预定字段,处理所述通信连接请求的专用数据区中的信息;以及使用所述通信连接请求的专用数据区中所处理的信息来建立通信连接。
2. 根据权利要求l的方法,其中所述通信连接请求是通信管理请求消 息,其具有专用数据区以及在其中提供了所述第 一和第二标识符的报头。
3. 根据权利要求2的方法,其中所述第 一标识符是Q—Key 。
4. 根据权利要求2的方法,其中所述第二标识符是通信管理请求消息 中的服务标识符。
5. 根据权利要求l的方法,其中所述数据处理系统是系统区域网中的 主节点,并且其中所述方法是在所述主节点的通信适配器中实现的。
6. 根据权利要求l的方法,其中所述专用数据区中的信息包括所述 专用数据区的预定字段中的源IP地址或目的IP地址中的至少一个。
7. 根据权利要求l的方法,其中所述通信连接请求包括使用远程直 接存储器访问操作从另一数据处理系统传递的一个或多个不可靠数据报分 组。
8. 根据权利要求l的方法,其中如果所述通信连接请求始于特权过程, 则将所述第一标识符设置成第 一值,以及如果所述通信连接请求始于非特 权过程,则将所述第一标识符设置成第二值,并且其中只有操作系统或特权过程可以将所述第 一标识符设置成所述第 一值。
9. 根据权利要求l的方法,其中在所述数据处理系统的第一主节点中 实现所述确定步骤、处理步骤和建立步骤,并且其中所述方法进一步包括在所述数据处理系统的第二主节点中,接收来自运行在远程主节点中 的过程的通信连接请求;在所述第二主节点中,确定所述过程是否是特权过程;如果所述过程不是特权过程,则在所述第二主节点中修改所述通信连 接请求,以便将所述第一标识符设置成与关联于所述过程的队列对的第一 标识符的值相对应的值;以及将所述通信连接请求从所述第二主节点发送至所述第一主节点。
10. 根据权利要求9的方法,其中如果所述第一标识符被设置成指示 所述通信连接请求始于特权过程,那么将所述第 一标识符设置成与由所述 过程发送并在所述第二主节点中接收的通信连接请求中所提供的第 一标识 符的值相对应的值。
11. 根据权利要求l的方法,其中确定通信连接请求是否具有指示所 述通信连接请求始于特权过程的第 一标识符包括确定所述通信连接请求是否以与所述数据处理系统的操作系统相关联 的队列对为目标;确定所述第 一标识符是否对应于与所述操作系统相关联的队列对;以及如果所述第 一标识符并不匹配于与所述操作系统相关联的队列对的标 识符,则拒绝所述通信连接请求。
12. 根据权利要求11的方法,其中确定通信连接请求是否具有指示 所述通信连接请求始于特权过程的第 一标识符进一步包括如果所述通信连接请求并不以与所述操作系统相关联的队列对为目 标,则确定所述第一标识符是否i殳置了高阶比特;如杲所述第 一标识符设置了高阶比特,则确定所述第 一标识符是否与 所述通信连接请求的目标队列对的标识符相匹配;以及如果所述第一标识符并未设置高阶比特,或者所述第一标识符并不与 所述通信连接请求的目标队列对的标识符相匹配,则拒绝所述通信连接请 求。
13. —种计算机系统,其包括用于实现权利要求1至12中任何一项 的方法的装置。
全文摘要
本发明提供了一种用于在系统和网络连接请求中防止IP欺骗和促进对专用数据区的解析的系统和方法。利用所述系统和方法,诸如Q_Key的高阶比特这样的标识符被用于确定通信连接请求是否始于特权过程。第二标识符用于指定通信连接请求的专用数据区是否利用了预定结构或格式的预定字段。只有当所述第一标识符指定该请求始于特权过程时,才准许进行对所述请求的处理。基于所述第二标识符的设置,从所述专用数据区的预定字段中检索特定信息,以便在建立所请求的通信连接时使用。
文档编号H04L29/06GK101247393SQ20081000992
公开日2008年8月20日 申请日期2008年2月13日 优先权日2007年2月13日
发明者J·A·瓦尔加斯, M·A·科, R·J·雷西奥 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1