专利名称:在不同的互联网通信栈实例之间对数据包路由的方法和设备的制作方法
技术领域:
本发明总的涉及数字数据处理,更具体地,涉及在计算机系统中对互
联网通信栈(例如TCP/IP栈)的使用。
背景技术:
在二十世纪后期,开始出现一种已知为信息革命的现象。尽管信息革 命是一种历史发展,其范围比任意一个事件或机器更广泛,但是没有一个 设备比数字电子计算机更能表现信息革命了 。计算机系统的发展无疑是一 个革命。每年,计算机系统增长越来越快,存储越来越多的数据,以及向 它们的用户提供越来越多应用。与此同时,计算资源的成本一直在降低, 从而在几年前因为太昂贵而不能够收集、存储和处理的信息如今可经济地 通过计算机进行管理。由于产品设计、制造工艺、资源调度、管理工作以 及许多其它因素变得更加高效,所以信息处理的更低成本使得生产率以滚 雪J求效应逐、渐增力口。
计算的更低成本以及数字设备的通用版本使得这些设备中存储的信息 量剧增。使用数字形式存储的这些信息,自然地,期望获得从计算机系统 对信息的更宽的访问。信息量使得任一个设备的存储能力变得相形见绌。 为了改善信息访问,开发出了允许计算设备与另 一个设备通信和交换信息 的各种技术。或许,这种分布式计算机的最突出实例是万维网(通常,简 称为"web"),即在使用互联网的世界范围内可用的资源集合。从学童 到老年人都学习使用web,并且在它们家或工作单位可以方便地找到几乎 无止境的各种信息。商业、政府、组织甚至普通个人使得信息在web上可 用,以至于达到这样的程度,即现在期望任意有价值的相关信息可在web上的某处得到。
在多个数字系统中为web以及为电子邮件和其它形式的通信和分布式 处理提供支持的互联网是通过多个链路连接的数字设备(节点)的异构网 络,从而在网络的任意两个节点之间,典型地存在多个路径,从而给互联 网带来了一定程度的冗余。在包中发送数据,在多个连续的节点之间对每 个包路由,直到它到达它的目的地。为了支持在与互联网耦合的任意两个 随机节点之间的通信,使用全局命名规则对每个节点分配唯一名称。这种 命名规则已知为域名系统或DNS。仅具有目标节点的全局DNS名称的与 互联网连接的源节点可向目标发送数据包。各个DNS服务器和其它设备将 全局DNS名称转换成互联网协议(IP)地址,使得互联网上的各个路由器 和其它设备正确确定对于数据包到达其最终目的节点的路径。
在对包路由的基本层,互联网能够从一个节点向另 一个节点传输任意 随机数据,因此可看作通信介质。然而,互联网的用途取决于在源节点和 目的节点处理数据交换的应用。因此,web浏览器和其它web应用的出现 使得基础信息传输技术在独立、交互基础上对于不具有广泛计算机编程技 术的人们可用,所以这极大地扩大了互联网的使用。
在与互联网连接的计算机系统中, 一组低级别进程从互联网连接接收
输入(inbound )数据包,组合包中的数据,向一个或多个高级别应用提供
数据;类似地,所述一组低级别进程从高级应用接收输出(outbound)消
息、文件或类似的结构,构成体现每个这种结构的一个或多个输出数据包,
对数据包寻址,以及在互联网连接之间发送数据包。这里,这些进程称为
互联网通信栈或TCP/IP栈,其中TCP/IP是传输控制协议/互联网协议的 已知首字母缩写。
互联网通信栈或TCP/IP栈(或"栈实例")是用于执行上述低级别 互联网通信功能的计算机程序代码的进程实例。对于任意不同原因,有时, 期望在一个计算机系统中采用多个互联网通信栈。尽管不是必须的,但是 所述多个互联网通信栈可使用相同的基础TCP/IP或相同的基础TCP/IP 的部分,或其它计算^^编程代码,但是每个互联网通信栈具有其自己独立的状态数据,并且每个互联网通信栈具有其自己的IP地址(或IP地址组)。 使用这种多个互联网通信栈的一个实例是这样一种计算机系统,其具
有 一个(或多个)栈,用于代表用户执行有用的应用,这里称为工作栈 (production stack);以及分开的一个(或多个栈),用于远程管理、保 持和控制计算机系统本身的任务,这里称为服务栈。因为各种原因,期望 将用户应用从系统管理功能分离。例如,即使工作栈过载或无效,也可以 通过服务栈执行系统维护和控制操作;可通过服务栈执行并行维护,而不 干扰在工作栈中正在进行的操作等。
互联网通信栈必须根据主管协议执行网络通信所需的某些核心功能, 但是按需要也可执行任意不同的改进或可选功能。其中计算机系统包含多 个互联网通信栈,例如在工作栈和分开的服务栈的情况下,在多个栈之间 存在核心功能的至少一些副本。然而,由于副本需要附加资源,所以不必 复制改进或可选功能,并且这些功能并非在所有栈中可用。如果需要在不 支持该功能的栈中访问用于处理通信的改进功能,则可通过在局域网 (LAN )连接上将数据路由到另 一个栈来调用其它栈中的功能。遗憾地是, 这种方案只是空想。这样消耗LAN上的网络资源,并且每个栈需要它自 己的专用网络适配器执行这种操作。
此外,还可通过定义与不同栈相关的端口并将指定端口用作数据的目 的地而在不同的互联网通信栈之间对数据进行内部地路由。端口转发使得 一个适配器^^皮两个栈共享。然而,由于某些数据包不包括端口标识(或者 端口不可访问),所以端口转发不是始终可用。例如,在对数据加密以用 于虚拟专用网络中的某些包中,端口也被加密,并且不可用于使用传统端 口转发的栈间路由。
期望提供在计算机系统中的互联网通信栈之间传送数据的改进技术, 以避免现有技术中的某些缺点。具体地,期望提供栈间通信设施,其不在 LAN上施加附加流量,支持单硬件LAN适配器的共享,以及可容易地集 成在支持互联网通信协议的现有软件中。发明内容一种计算机系统包含多个互联网通信栈实例,其可以共享共同硬件网络适配器或与单独的各自硬件网络适配器关联。对于多个栈实例定义系统 内部软件通信路径,从而使用互联网协议(IP)寻址在计算机系统中的不 同互联网通信栈实例之间对包路由。使用IP转发,将到达一个栈并且具有 与另 一个栈关联的目的IP地址的包转发至其他栈。在优选实施例中,包的栈间路由可使用全局定义的互联网IP地址或局 域内联网(封装的)IP地址,并且可采用输入或输出包。例如,对于输入 包可到达第一栈,使用全局IP地址将其转发至第二栈,以及使用局部内联 网IP地址将其重新转发回第一栈。对于输出包可到达第一栈,使用局部内 联网IP地址将其转发至第二栈,以及使用全局IP地址将其重新转发回第 一栈。也存在许多其他用途。在优选实施例的示例性环境中,第一栈是具有全范围的TCP/IP功能 的工作栈,以支持在通用计算机系统中的各种用户应用,第二栈是具有有 限范围的TCP/IP功能的服务栈,其的存在主要用以支持从远程控制台的 系统控制,并行维护操作等。可使用栈间接口来获得改进功能的操作,以 用于来到的并且由绑定至服务栈的应用发送的包。在优选实施例的一个变形中,栈间接口还可用于支持由多个栈对共同 硬件网络适配器的共享。栈间接口可作为选择性能够或禁止共享的开关运 行。在另一个变形中,当在工作栈上执行例程维护时,可使用栈间接口临 时地将数据路由到备用栈实例。因此,本发明提供一种使用IP寻址的简单内部栈间接口,其能够进行 栈间通信,而不使用网络设施,不需要专用软件的开发成本,以处理栈间 通信或在所有栈实例中提供期望水平的功能。可参照附图从结构和操作方面更好地理解本发明的细节,其中类似的 标号表示类似的部分,其中
图1是互联网的高M^示。
图2是根据优选实施例的主机计算机系统的主要硬件组件的高级框图。
图3是根据优选实施例的主机计算机系统的主要软件组成的概念示图。
图4是示出根据优选实施例的在互联网通信栈实例中处理输入数据包 的高级过程的整体流程图。
图5是示出根据优选实施例的在互联网通信栈实例中处理输出数据包 的高级过程的整体流程图。
图6是示出根据优选环境对输入数据包的处理的流程图,其中根据优 选实施例将为服务应用而绑定的封装数据包路由到用于IPSec处理的工作 栈。
图7是示出才艮据图6的示例性环境对输出数据包的处理的流程图。
M实施方式 互联网概况
在讨论本发明实施例的操作之前,这里提供了互联网的简单概述。 术语"互联网"是"互联网网络,,的缩写版, 一般指的是利用在计算 机网络领域中公知的TCP/IP和相关协议族的计算机网络的集合。TCP/IP 是"传输控制协议/互联网协议"(即便于计算机之间的通信的软件协议) 的首字母缩写。
图l是互联网的高,念图。互联网不是预先建立的拓朴结构,而是 通过增加新的节点和链路无限扩展的。节点可具有将其与其它节点连接的
任意数目的链路,这些链路可使用任意不同的通信技术,所述技术具有不 同的数据容量和其它特征。因此,互联网的拓朴结构变为极端复杂的互连 网络,其中典型地在任意两个节点之间存在大量可能的通路。
网络的中心部分(有时称为"骨干网")包含多个高速路由器101, 其接收数据包,并将这些数据包继续转发到网络中的其它节点。典型地,每个路由器具有与其它路由器的多个连接,并且这些连接具有高数据容量。例如,在高速路由器101之间通常使用光纤链路。与高速路由器连接的是这样的节点,其用作对于高速路由器的互联网"骨干网"的访问点,如图1中所示的节点102。由于访问节点102用作在高速路由器101和其它网络 节点之间对数据包路由,所以访问节点102也是路由器,但是它们典型地 采用低速连接。访问节点可以是例如公共互联网服务提供商(其通过电话 线路或其它连接在付费的情况下提供对互联网的访问),或可以是用于其 内部系统的大型公司的访问节点。通常,每个访问节点102连接至多个高 速路由器101,以提供冗余,尽管这不是必要的。典型地,每个访问节点 提供对多个主机计算机系统103A、 103B (共同表示为标号103)的访问, 图1中仅示出2个。主机103是连接至互联网的计算机系统,并且其作为 源端生成或作为最终目的地接收在互联网上发送的数据包。主机103可以 是从大型主机系统到PC到手持便携式设备的任意类型计算机系统,并且 一个主机可代表系统的集群。通常,主机具有用于访问互联网的仅一个访 问节点102 (在这种情况下是非冗余的),但是主机也可具有多个这种访 问节点用于冗余。在主机和访问节点之间的连接通常是相对低速的(例如 电话线或射频链路),但是也可以是高速链路。在一些计算机系统的情况 下,例如主要用于在互联网上提^f^f言息的大型互联网服务器,主机可直接 连接至高速路由器IOI,因此主机用作其自身的访问节点。可以理解,图1用作互联网的概念示图,实际上在互联网上节点和连 接的数目可以与图1中所示的有极大的不同,并且连接的拓朴结构可以改 变。此外,可以理解,可以存在其它层次的连接类型和访问形式,为了图 示的清楚在图1中没有示出。即,可以存在多种类型或等级的访问节点102, 其中主机通过这些节点连接以到达骨干网的高速路由器101,并且不同的 主机可以在不同层次的访问节点连接。严格地讲,互联网包括与其耦合的 所有设备,并且当在互联网上登入例如PC的小型计算机系统时,从其作 为互联网节点并具有互联网协议(IP)地址(尽管IP地址仅是暂时的)的 意义上,其是互联网的一部分。通常,互联网骨干网和访问节点的路由器和连接都称为互联网,即,与计算机系统的分布式处理网络相对将互联网 看成通信介质。
一般地,使用在后者含义中的"互联网"描述通信介质, 但是根据上下文,也可采用前者的含义。为了能够在任意网络中从一个随机节点向另一个进行数据通信,发送 节点必须指定接收节点的目的地。对于很小的网络,例如局域以太网,可 以向网络中的所有节点广播数据,通过简单的寻址方案识别所期望的接收 方。互联网的大小使得这种方案不现实。对于发送方仍旧必须指定目的地, 但是向网络中的每个节点发送数据直到找到目的地这是不现实的。这意味 着,发送方以及在通路中的发送方和接收方之间的每个节点必须能够确定 将数据包向哪里路由,而使其到达其目的地。然而在通路中的每个节点必 须能够确定在下一个中间链路上将包向哪里路由,而不必让通路中的每个 节点知道最终目的地。 一般地,存在多个可能的路由,并且路由器可基于 各个因素确定使用哪个。在路由器硬件的层次,通过多位数字地址(称为互联网协议(IP)地址)指定互联网目的节点。将使用32位IP地址的原始互联网寻址系统分 成分别为8位的4个部分或"八位字节(octet)"。这些八位字节通常通 过句点分开,例如IP地址可写为卯.4.63.18。八位字节是寻址的分级形 式,对于每个单独的路由器,不必知道所有互联网地址的最终目的地。将 承载远处地址的数据包路由到更近的路由器,并且因此能够进一步对地址 细分,以此类推直到数据包到达其最终目的地。尽管原始寻址系统使用32 位IP地址,但是近年来,互联网地址空间受到限制,并且已经采用已知为 IPv6的新标准用于互联网IP地址。IPv6支持128位的IP地址。目前,IPv6 是同相的,并且许多互联网设备硬件使用旧的32位IP寻址协议,已知为 IPv4。IP地址允许发送节点将数据包路由到接收节点,但是在通过使用互联 网来使用数字IP地址用于更高级的进程间通信时,可具有缺陷。首先,数 字地址对于人们来说4艮难记得。此外,某些IP地址可在多个节点之间共享, 或者可因为网络配置的改变而改变。对于这些和其他原因,存在用于互联网节点的更高级命名约定,称为域名系统(DNS)。在具有任意字母字符 的DNS中对互联网节点给定名称,然后将它们转换成IP地址。因此,节 点的DNS名称更容易记得,并且不需要因为某些硬件改变而简单地改变。 例如, 一个人可建立客户端可能记得的具有类似DNS名称的web服务器, 并且可保持相同的DNS名称,即使因为硬件更新等造成web服务器的实 际IP地址改变。DNS服务器的分布式系统记录DNS名称和它们对应的IP 地址,并且提供用于将DNS名称转换成IP地址的机构。由于路由器用于根据包的IP地址对给定数据包选择多个通信链路中 的一个(直接目的地),所以多个IP地址可以与每个链路关联。由于连接 的路由器或多个路由器简单地将所有IP地址与一个目的地节点关联,所以 在架构中不存在禁止一个主机节点具有多个IP地址的装置。典型地,用作 客户端并执行例如交互式web浏览器的应用的个人工作站或个人计算机将 仅具有一个IP地址。然而,某些更大的计算机系统可具有多个IP地址, 其中每个与内部进行的不同各自集合关联。在耦合至互联网的主机节点计算机系统中,等级进程组接收来自应用 的输出数据,并且将其适当地格式化在数据包中,其具有适当的IP地址指 定,用于在互联网上的传输。类似地,等级进程组从互联网接收数据包, 提取和组合数据,并将其提供给应用。所述等级进程组通常称为"互联网 通信栈,,。在行业中,通常成为"TCP/IP栈,,,尽管由栈处理的互联网通 信不需要限制在TCP/IP协议中,并且可包括例如UDP/IP、 ICMP/IP等的 其他协议。 一个主机计算机可包含互联网通信栈的多个实例,其中所使用 的每个具有各自的目的。在一个主机计算机系统中,多个互联网通信栈实 例是激活的,每个栈典型地具有其自己的不同IP地址(或IP地址组)。详细描述参照附图,其中在几个示图中,类似的标号指定类似的部件,图2是 根据优选实施例的通过互联网与其他系统通信的主机计算机系统200的主 要硬件组件的高级框图。CPU 201是执行指令和处理来自主存储器202的数据的至少一个通用可编程处理器。优选地,主存储器202是使用任意不同存储器技术的随才;i^取存储器,其中从存储装置或其他通过CPU201处 理的装置加载数据。一个或多个通信总线205提供用于在CPU 201、主存储器202和各种 I/O接口单元211-214 (还已知为I/O处理器(IOP)或I/O适配器(IOA )) 之间传送数据的数据通信路径。I/O接口单元支持与各种存储装置和I/O 设备的通信。例如,终端接口单元211支持一个或多个用户终端221-224 的连接。存储接口单元212支持一个或多个直接存^^i史备(DASD) 225-227 (典型地,其是旋转磁盘驱动存储设备,但是它们或者可以是其他 设备,包括盘驱动器阵列,其可被配置为作为对于主机的单独大型存^i殳 备出现)的连接。I/O设备接口单元213支持任意各种其他类型I/O设备 (例如打印机228和传真机229)的连接,可以理解,可使用其他或附加类型的i/o设备。网络接口 (或"网络适配器")214支持用于与一个或多个其他数字 设备通信的一个或多个外部网络230的连接。网络230包括互联网,但是 网皿口 214不必直接耦合至互联网,其可连接至局域网(未示出),其 随后通过网关与互联网连接。优选实施例的主机计算机系统200包含至少 一个网络适配器214。其可选地包含多个网络适配器。其中系统200包含 多个适配器, 一个或多个可直接或间接耦合至互联网,这些适配器可连接 至相同或不同的局域网,或者相同或不同路由器或网关。可以理解,图2旨在示出高级的系统200的代表性主要组件,其中各 个组件可具有比图2中所示的更高复杂度,可揭_供不同于图2中所示的或 附加的组件,并且这种组件的数目、类型和配置可改变,典型地,大型计 算机系统可具有比图2更多的组件。这里公开了这种附加复杂度或附加变 化的几个特定实例,可以理解,仅通过实例存在而不仅仅是这种改变。尽管在图2中为了图示的目的仅示出一个CPU201,但是计算机系统 200可包含多个CPU,这是本领域已知的。尽管在图2中示出主存储器202 为一个单一性实体,但是实际上,存储器202可以是分布式的和/或分等级的,这是本领域已知的。例如,存储器可存在于多等级緩存中,并且这些 緩存可进一步按功能划分,使得一个緩存保存指令,而另一个保存由处理 器或多个处理器使用的非指令数据。此外,存储器也可以是分布式的,并
且可以与不同CPU或CPU组关联,这是在各种所谓的非统一存储器存取 (NUMA)计算机架构中已知的。尽管图2中示出通信总线205为一个实 体,但是实际上,典型地通过复杂的总线等级、接口等实现在各种系统组 件中的通信,其中使用更高速路径在CPU201和存储器202之间通信,使 用更低速路径与I/O接口单元211-214通信。总线205可以以任意各种形 式排列,例如按等级的点对点链接、星型或网型配置、多个等级总线、并 行和冗余路径等。例如,在NUMA架构中已知的,在节点基础上排列通 信路径。总线可使用例如行业标准PCI总线、或任意其他适合的总线技术。 尽管示出多个I/O接口单元(它们将系统总线205从对于各种I/O设备运 行的各种通信路径分离),但是可选择地,也可以将I/Oi殳备中的某些或 所有直接连接至一个或多个系统总线。
图2中所示的计算机系统200具有多个连接终端221-224,例如可以是 典型地多个用户的"大型"计算机系统。连接设备的实际数目可以改变, 并且本发明不限于任意特定大小的系统。可选择地,计算机系统200可以 是单用户系统,例如"个人计算机,,。访问计算机系统200的用户工作站 或终端可以通过网络230连接至系统200或与系统200通信。可选择地, 计算机系统200可以这样的系统,即,其包含无连接终端或仅具有一个用 户显示器和键盘输入的一个操作者平台。此外,尽管为了在一个计算机系 统中实现的示例性目的在这里描述了本发明的某些功能,但是这些功能可 选择地可使用与彼此通信的计算机系统的分布式网络实现,其中在不同的 计算机系统上执行这里描述的不同功能或步骤。
尽管高级地描述和示出各种系统组件,但是可以理解,典型的计算机 系统包含对于本发明的理解不重要的未示出的许多其他组件。在优选实施 例中,计算机系统200是基于IBM i/SeriesTM架构的计算机系统,可以理 解,本发明可以在其他计算机系统上实施。图3是根据优选实施例的主机计算机系统200的主要软件组成(由存 储器202的组成表示)的概念示图。操作系统301是可执行代码,以及提 供各种低级软件功能(例如设备接口、存储页管理、多个任务的管理和分 派等)的状态数据,这是本领域已知的。具体地,操作系统301包括用于 系统200的每个网络适配器214的各自网络适配器设备驱动器。图3表示 第一网络适配器设备驱动器302和可选第二网络适配器设备驱动器303, 可选网络适配器i殳备驱动器303用虛线表示,以指示该特征代表可选实施 例。在系统200包含仅一个网络适配器214的情况下,存在仅一个对应的 网络适配器设备驱动器302;在系统200包含第二网络适配器(图2中未 示出)的情况下,存在对应的附加网络适配器i殳备驱动器303.根据优选实施例的主机计算机系统包含多个互联网通信栈实例。在图 3所示的特定示例性实施例中,其包含两个互联网通信栈实例,其中一个 是服务栈304,另一个是工作栈305。然而,主机系统200可包含多于两个 的互联网通信栈实例。两个栈执行用于互联网上的通信所必须的TCP/IP 的核心组和/或其他互联网协议功能,特别地包括IP路由。然而,除了这 些核心协议之外,工作栈305支持基本全范围的TCP/IP和/或其他互联网 协议改进功能,而服务栈支持少数的改进功能或不支持。这些改进功能是 仅由某些应用或环境所需的功能。这种改进功能的实例包括IPSec、 IP过 滤、网络地址转换(NAT)和入侵检测,可以理解,工作栈可支持其他或 附加的改进功能。通常,使用工作栈305支持用于在计算机系统200上执行的生产工作 的多种用户应用。由于某些用户应用可需要特定的改进功能,并且难以预 先预测用户应用的特征,以及将由系统200上执行的用户应用所需的是哪 些功能,所以期望支持大范围的改进TCP/IP或其他互联网协议功能。服 务栈的存在主要用于维护和控制的目的。例如,服务栈可用于支持与远程 控制台的网络通信,以控制系统200的操作;在系统200上执行并行维护 操作;以及用于类似的管理功能。此外,系统200还包含一个或多个用户应用311-313 (图3中表示的,可以理解,实际数目可以改变,典型地可以更大)。用户应用311-313通 过互联网与远程进程通信,以代表用户执行生产工作,并且优选地与工作 栈305关联,以根据TCP/IP或某些其他可用互联网协议处理互联网通信。 此外,系统200还包含一个或多个服务应用314-315 (图3中表示的,可以 理解,实际数目可以改变,典型地可以更大)。服务应用与远程进程通信, 以执行管理功能,并且优选地与服务栈304关联,以根据TCP/IP或某些 其他可用互联网协议处理互联网通信。在图3的实例中,服务应用314表 示为操作系统301的一部分,而服务应用315表示为与操作系统301分离, 以示出服务应用可以是操作系统的一部分也可以不是操作系统的一部分。 典型地,与工作栈关联的应用(例如用户应用311-313)不是操作系统的一 部分,但是工作栈也可以向操作系统功能提供服务。
将每个网络适配器设备驱动器302、 303绑定到各自互联网通信栈。每 个互联网通信栈304、 305可具有与其绑定的0个、l个或大于l个网络适 配器设备驱动器。初始地,将网络适配器中接收的所有输入包路由到绑定 对应网络适配器设备驱动器的互联网通信栈中。在每个栈中的各个IP路由 选择器306、 307使用IP路由协议确定用于每个流出包的目的网络适配器 设备。
根据本发明的优选实施例,通过IP路由选择器建立到另 一个栈的系统 内部的栈间通信路径。配置每个IP路由选择器306、 307,以将某些包路 由到虛拟网络适配器设备驱动器308。实际上,虛拟网络适配器设备驱动 器不驱动物理网络适配器,所以虚拟网络适配器设备驱动器308根本不是 一个设备驱动器。而是简单地用作在IP路由器可对包路由的IP路由协议 下的目的地,因此建立内部栈间通信路径。实际上,将绑定到虛拟网络适 配器设备驱动器308的包路由到其他栈。即,如果在服务栈304中的路由 选择器306使用IP路由选择虛拟网络适配器设备驱动器308作为包的目的 地,则随后将包路由到工作栈305,并进入到工作栈中,以按照来自绑定 到工作栈的实际网络适配器和对应网络适配器设备驱动器303的包相同方 式处理。可以理解,典型的计算机系统可包含对于本发明的理解不重要的许多 其他软件组成(未示出)。具体地,典型的操作系统将包含许多功能,以 及与在网络间的数据传输不相关的状态数据。
在图3中将各个软件实体表示为分离实体或包含在其他实体中。然而, 可以理解,这种表示仅用于示例性目的,并且特定模块或数据实体可以是 分离实体,或通用模块或模块包装的一部分。此外,尽管在图3的概念表 示中示出某个数目和类型的软件实体,但是可以理解,这种实体的实际数 目可以改变,并且具体地,在复杂主机系统中,典型地这种实体的数目和 复杂度可以更大。
尽管扭无念性示出图3的软件组成驻留在存储器202中,但是可以理解, 通常计算机系统的存储器太小,以致于无法同时保存所有的程序和数据, 并且典型地将信息存储在数据存储设备225-227中(包括一个或多个大型 存储设备,例如旋转磁盘驱动器),以及如果需要通过操作系统将信息分 页保存到存储器中。此外,可以理解,图3的概念表示不意味着对任意特 定存储器组织模型的暗示,并且系统200可采用单地址空间虛拟存储器, 或可采用重叠的多虚拟地址空间。
图4是示出根据优选实施例的在互联网通信栈实例304、 305中处理输 入数据包(即,从互联网输入)的高级过程的整体流程图。参照图4,栈 实例从网络适配器驱动器接收输入数据包(步骤401)。在步骤401中接 收的数据包的源端可以是用于物理硬件网络适配器的网络适配器驱动器 302、 303,或者可以是虚拟网络适配器驱动器308,实际上,它仅是与作 为网络适配器的接收栈实例通信的另一个栈实例的接口。在接收包时,IP 路由选择器306、 307检查在包中的目的IP地址,以确定适当的路由(步 骤402)。如果目的地址与另一个实体关联(从步骤403的"N"分支), 则将包转发(使用IP转发)到目的实体(步骤404 )。可将包指定到计算 机系统200外部的某些地址,在这种情况下,可将包转发到与外部地址关 联的网络适配器,以向其最终目的地的外部传输。但是具体地,在优选实 施例中,可通过向与目的栈关联的虛拟适配器驱动器308 IP转发将至少一些包转发到系统200中的不同互联网通信栈实例。
在步骤403,如果目的地址与当前栈实例关联,则将包向上转发到由 各个栈层处理的栈(表示为从步骤403的"Y"分支)。可选地,处理可 包括显示与原始IP地址不同的嵌入在原始数据包中的封装IP地址(步骤 405 )。可通过用于IP地址封装的任意可用协议来显示封装IP地址。例如, 根据IPSec隧道协议,可以从解密数据包提取封装IP地址,IPSec隧道仅 是封装的一个可能的实例。在显示封装IP地址的情况下,随后将包返回至 IP路由选择器(步骤403 ),以向适当的目的实体进行IP转发(步骤404 )。 这个目的实体可以是系统200中的不同网络通信栈实例。
在不存在封装IP地址的情况下(或已经先前提取了封装地址并且由此 转发了包的情况下),栈的上层(例如IP和TCP层)根据可用的传统协 议处理包(步骤406)。然后,将包中的数据提供给系统200中的适当应 用(步骤407 )。
图5是示出才艮据优选实施例的在互联网通信栈实例304、305中处理输 出数据包(即,通过互联网向外部目的地输出)的高级过程的整体流程图。 参照图5,输出数据包可以是来自与栈实例绑定的应用的数据结果(示出 为通过步骤501和502的路径),或者可以是从另 一个实体(特定地从另 一个栈)转发的数据包(示出为通过步骤503的路径)。在前一情况下, 栈实例接收数据,所述数据来自与栈绑定的应用的输出互联网通信(步骤 501),例如在工作栈305的情况下的用户应用311-313,或在月良务栈304 的情况下的服务应用314、 315。栈的上层(例如IP和TCP层)根据可用 协议处理数据,以生成一个或多个数据包(步骤502)。可选地,已经由 更高栈层处理的数据包可在从另一个实体(具体地从同一系统中的另一个 栈)路由之后到达栈中(步骤503)。
可选地,栈可将数据包和目的地址封装在更大数据包中,以根据任意 适合的封装协议(例如IPSec隧道)提供用于更大数据包的新IP地址(步 骤504)。无论是否执行封装步骤504,随后都通过IP路由选择器306、 307将包转发到由其IP地址指定的目的地(步骤505 ) 。 IP转发路由目的地是网络适配器驱动器。所述目的地可以是与物理网络适配器耦合的网络
适配器驱动器302、 303 (在外部目的地的情况下),或者可以与系统200 中另一个栈实例对接的虛拟适配器驱动器308。
可在各种应用中使用根据如上所述优选实施例的栈间通信。例如,栈 间通信容易支持由多个栈实例对单个硬件网络适配器的共享。典型地,硬 件网络适配器由第一栈实例所有或激活,需要通过与第一栈实例相关的IP 路由选择器路由的所有通信。但是,IP路由选择器可将进入包路由到第二 栈实例,或者从第二栈实例接收外出包,因此通过网络适配器(不是由第 二栈实例所有)支持在第二栈实例和外部实体之间的通信。栈间接口也可 以作为能够在某时刻或某事件时选择的开关。例如,在某时刻能够正常地 使能和禁能接口,以支持需要专用网络适配器的重要任务的应用。或者, 接口可以被正常禁能,以在可选择的时刻能够从主栈实例向备用栈实例重 新路由数据,以在主栈上执行例程维护。
在根据优选实施例使用栈间实例的特定示例性实施例中,工作栈305 具有全范围的TCP/IP功能,以支持通用计算机系统中的各种用户应用, 并且服务栈304具有有限范围的TCP/IP功能,它的存在主要支持从远程 控制台的系统控制、并行维护操作等。使用栈间接口来获得在服务栈上并 非正常可用的一个或多个改进功能操作,以用于涉及与服务栈绑定的应用 的通信。
一个这种改进功能的实例是使用IPSec隧道协议的数据包的封装。 IPSec隧道允许对完整的数据包进行封装和加密,以将其打包在具有新IP 才艮头和IP地址的更大包中。可4吏用IPSec隧道,例如以支持虚拟专用网 (VPN)。在具有双重工作栈和服务栈实例的系统中,有时候可需要服务 栈使用工作栈的IPSec功能。例如, 一些维护操作可偶尔需要从不安全网 络连接的设备执行。
图6和图7是分别示出根据示例性环境在系统200的各个组件中对输 入数据包的处理和输出数据包的处理的流程图,其中根据优选实施例将为 服务应用而绑定的封装数据包路由到用于IPSec处理的工作栈。在该实例中,将互联网IP地址66.191.69.9和66.191.69.10路由至与服务栈304绑定 的网络适配器302。在服务栈上定义互联网IP地址66.191.69.9,在工作栈 上定义互联网IP地址66.191.69.10。可存在对于这些栈和/或附加网络适配 器定义的并非与该实例相关的附加互联网IP地址。在服务栈上定义企业网 虚拟专用网(VPN )地址目的地10.5.12.35,在工作栈上定义用于远程企业 网地址目的地10.5.26.14的VPN过滤规则。
参照图6,具有66.191.69.10的IP地址的输入包和封装包(VPN包) 到达网络适配器302,并且4皮路由到与网络适配器302绑定的服务栈304 (步骤601)。在服务栈上没有定义IP地址66.191.69.10,然而,将其定 义为到虛拟适配器308的路由,即到工作栈305的路由。因此,IP路由选 择器306使用IP转发将包路由到工作栈305 (步骤602 )。
工作栈接收所述包。在工作栈上定义IP地址66.191.69.10,从而工作 栈的IPSec隧道功能对包解密,以显现嵌入的VPN包(步骤603 )。这种 嵌入的VPN包具有它自己的IP地址10.5.12.35,在这种情况下其是在虚拟 专用网上使用的企业网地址。在工作栈上没有定义企业网IP地址 10.5.12.35,然而将其定义为到虚拟适配器308的路由,即到服务栈的路由。 因此,IP路由选择器307将当前解密的包向回路由到服务栈(步骤604)。
月良务栈接收具有IP地址10.5.12.35的解密包。在服务栈上定义了所述 地址,从而在服务栈的更高层(即TCP和IP层)处理所述包(步骤605 )。 然后,将结果数据传递到服务应用(步骤606)。服务应用从服务栈接收 数据,并且适当地使用数据(步骤607)。
参照图7,初始地将来自服务应用的输出数据传递到具有套接字目的 地址10.5.26.14的服务栈,其中所述地址对应于远程设备中的目的地的企 业网IP地址(步骤701)。在服务栈的TCP和IP层中处理所述数据,以 生成具有IP地址目的地10.5.26.14的一个或多个数据包(步骤702 )。
对于IP路由选择器306定义IP地址10.5.26.14,作为与虚拟适配器 308对应的地址,从而路由选择器306将包经由栈间接口路由到虛拟适配 器308,即工作栈305 (步骤703)。在工作栈305中定义用于IP地址10.5.26.14的VPN过滤规则,指示工作栈的IPSec功能,以随后加密所述 包并将其封装到更大的包中,所述更大的包具有与远程设备对应的全局可 路由(互联网)IP地址129.42.161.17 (步骤704 )。对于IP路由选择器 307定义地址129.42.161.17作为与虛拟适配器308对应的地址,从而路由 选择器307经由栈间接口将包路由到服务栈304 (步骤705)。
在服务栈304中的IP路由选择器306接收包,并识别IP地址为可路 由到网络适配器驱动器302的外部地址。因此,IP路由选择器306将包路 由到适配器驱动器302 (步骤706)。然后,网络适配器接收包,并在网络 上对其进行发送(步骤707 )。
尽管这里使用了 IPv4实施例的某些实例,但是可以理解,本发明可同 等地应用于IPv6寻址以及IPv4寻址。
在这里描述的技术的优点中,优选实施例是可以使用已经可用的IP转 发和路由设施在不同互联网通信栈之间对包数据进行路由。这种方式仅需 要对IP路由选择器进行最小量的配置,并且不需要大量的专用编程或功能 能力。此外,由于在互联网通信中IP转发是无处不在的,所以根据本发明 优选实施例对栈间接口的j吏用可能具有广泛的适用性,除了没有作用的例 外。最后,不需要不同的栈实例使用共同代码或具有共同开发源的代码; 可有利地使用独立开发的栈代码避免使得每个栈实例感染相同的代码错 误,因此提高故障容限度。
一般地,被执行以实现本发明所示实施例的例程(无论作为操作系统 的一部分实现,还是作为具体应用、程序、对象、模块或指令序列实现) 在这里称为"程序"或"计算机程序"。典型地,程序包括指令,所述指 令在由根据本发明的计算机系统中的设备或系统中的一个或多个处理器读
的各个方面的元素所必须的步骤。此外,尽管在全功能计算机系统的环境 中已经描述以及在之后将描述本发明,但是本发明的各个实施例能够以各 种形式作为程序产品分布,并且本发明可同样应用,而不管用于实际执行 分布的信号承载介质的特定类型。信号承载介质的实例包括但不限于易失性和非易失性存储设备、软盘、硬盘驱动器、CD-ROM、 DVD、磁盘等。 此外,本发明应用任意形式的信号承载介质,而不关心是否在传输网络(包 括无线网络)上从一种形式的信号承载介质向另一种交换数据。图2中将 信号承栽介质的实例示出为系统存储器202,以及数据存^i殳备225-227。 尽管除了某些替换物之外已经公开了本发明的具体实施例,但是本领 域普通技术人员可以认识到,可以在以下权利要求的范围内在形式和细节 上进行其他修改。
具体地,参照所附权利要求,可将从属权利要求的特征与独立权利要 求的特征组合,并且可以以任意适合的方式组合各个独立权利要求的特征, 而不限于在权利要求中列举的特定组合中。
为了免生疑问,在说明书和权利要求书中使用的术语"包括"不应该 理解为"仅包含"的含义。
权利要求
1.一种计算机系统,包括至少一个处理器;存储器;操作系统,作为能够在所述至少一个处理器上执行的多个指令实现,所述操作系统支持多个进程实例的并行执行;多个应用,能够在所述至少一个处理器上执行;至少一个网络适配器,用于与网络通信,所述网络适配器在互联网之间发送用于通信的数据包;第一互联网通信栈实例和第二互联网通信栈实例,每个所述互联网通信栈实例与所述多个应用中各自的至少一个应用关联,所述第一和第二互联网通信栈实例支持用于在所述第一和第二互联网通信栈之间的至少一个方向上传送数据包的栈间接口;其中根据与各自数据包关联的各自互联网协议(IP)地址,选择地将所述栈间接口之间传送的每个数据包路由到所述栈间接口之间的目的互联网通信栈,所述IP地址匹配于与所述目的互联网通信栈关联的IP地址。
2. 如权利要求1所述的计算机系统,其中所述第二互联网通信栈实 例支持由所述第一互联网通信栈实例不支持的至少一个互联网协议功能。
3. 如权利要求2所述的计算机系统,其中所述第二互联网通信栈实 例是用于用户应用的通用支持的工作栈,并且所述第一互联网通信栈是用 于支持所述计算机系统的管理功能的服务栈。
4. 如权利要求l、 2或3所述的计算机系统,其中所述栈间接口支持 在所述第 一和所述第二互联网通信栈之间的包的双向通信。
5. 如任意先前权利要求所述的计算机系统,其中通过将虛拟网络适 配器设备驱动器指定为在所述第一栈实例中的至少一个IP地址的IP转发 目的地来实现在所述栈间接口之间的数据包通信,所述虚拟网络适配器设 备驱动器是对于所述第二栈实例的接口 。
6. 如任意先前权利要求所述的计算机系统,其中所述笫一和第二互 联网通信栈共享共同网络适配器,所述共同网络适配器绑定至所述第一互 联网通信栈实例。
7. —种对互联网通信数据包路由的方法,包括以下步骤在计算机系统中的互联网通信栈的第一实例中接收用于表示多个数据 包的数据,每个所述数据包与各自互联网协议(IP)地址关联;从每个所迷数据包的各自IP地址确定其各自路由目的地,其中,对于 至少一些所述数据包,所述各自路由目的地对应于在所述计算机系统中的 互联网通信栈的第二实例,在互联网通信栈的所述第一实例中执行所述确 定步骤;和响应于确定数据包的路由目的地对应于互联网通信栈的所述第二实 例,将所对应的包转发至互联网通信栈的所述第二实例。
8. 如权利要求7所述的对互联网通信数据包路由的方法,其中在所 述接收步骤中接收的所述数据包中的至少一些是由所述计算机系统接收的 数据包,作为来自互联网的输入通信。
9. 如权利要求7或8所述的对互联网通信数据包路由的方法,其中 在所述接收步骤中接收的所述数据包中的至少 一些是从所述计算机系统内 部执行的至少一个应用接收的数据包,作为用于互联网上传输的输出通信。
10. 根据权利要求7至9中任一项所述的对互联网通信数据包路由的 方法,还包括以下步骤在互联网通信栈的所述第一实例和互联网通信栈的所述第二实例之一 中,对于所述数据包中的至少一些执行封装功能,所述封装功能是包括以 下内容的组中的一个(a)将具有第一IP地址的第一数据包封装到具有 第二 IP地址的第二数据包中;和(b)从具有第二 IP地址的第二数据包中 提取先前封装的具有第一 IP地址的第一数据包。
11. 如权利要求10所述的对互联网通信数据包路由的方法, 其中在将所对应的包转发到互联网通信栈的所述第二实例的步骤之后,通过互联网通信栈的所述第二实例执行所述执行封装功能的步骤;和其中所述方法还包括以下步骤在执行所述封装功能之后确定每个数据包的各自路由目的地,从所述 各自包的IP地址确定所述路由目的地,其中对于至少一些所述数据包,所 述各自路由目的地对应于在所述计算机系统中的互联网通信栈的所述第一 实例,在互联网通信栈的所述第二实例中执行所述确定步骤;和响应于确定数据包的路由目的地对应于互联网通信栈的所述第一实 例,将所对应的包转发到互联网通信栈的所述第二实例。
12. 根据权利要求7至11中任一项所述的对互联网通信数据包路由 的方法,其中所述第一和第二互联网通信栈实例共享共同网络适配器,所 述共同网络适配器绑定至所述第一互联网通信栈实例和所述第二互联网通 信栈实例的仅其中之一。
13. —种对互联网通信数据包路由的计算机程序产品,包括 在信号承载介质上记录的多个计算机可执行指令,其中所述指令在由所述计算机系统执行时使得所述计算机系统执行以下步骤(a)在所述计算机系统中保持多个互联网通信栈实例;(b )提供用于在至少一些所述互联网通信栈实例之间的至少一个方向上传送数据包的栈间接口,每个所述数据包与各自互联网协议(IP)地址关联;(c) 在第一互联网通信栈实例中,从所述数据包的各自IP地址确定 多个数据包中的每个数据包的各自路由目的地,其中,对于至少一些所述 数据包,所述各自路由目的地对应于所述栈间接口;和(d) 对于经过所述确定步骤(c)的所述数据包中的每个,如果所述 数据包的各自路由目的地对应于所述栈间接口 ,则经由所述栈间接口从所 述第 一互联网通信栈实例将所述数据包路由到所述计算机系统中的第二互 联网通信栈实例。
14. 如权利要求13、 14或15所述的计算机程序产品,其中所述栈间 接口支持在所述第 一和所述第二互联网通信栈之间的包的双向通信。
15. 如权利要求13或14所述的计算机程序产品,其中经由所述栈间接口路由到所述第二互联网通信栈实例的所述数据包中的至少一些是由所 述计算机系统接收的数据包,作为来自所述互联网的输入通信。
16. 如权利要求13所述的计算机程序产品,其中经由所述栈间接口 路由到所述第二互联网通信栈实例的所述数据包中的至少一些是从所述计 算机系统内部执行的至少一个应用接收的数据包,作为用于互联网上传输 的输出通信。
17. 根据权利要求13至16中任一项所述的计算机程序产品,其中所 述指令还使得所述计算机执行以下步骤(e )在所述第一互联网通信栈实例和所述第二互联网通信栈实例之一 中,对于所述数据包中的至少一些执行封装功能,所述封装功能是包括以 下内容的组中的一个(i)将具有第一 IP地址的第一数据包封装到具有 第二 IP地址的第二数据包中;和(ii)从具有第二 IP地址的第二数据包中 提取先前封装的具有第一 IP地址的第 一数据包。
18. 如权利要求17所述的计算机程序产品,其中在所述步骤(d )之后通过所述第二互联网通信栈实例执行所述步 骤(e);和其中所述指令还使得所述计算机系统执行以下步骤(f) 在执行步骤(e)之后确定经过步骤(e)的所述数据包中的每个 的各自路由目的地,其中对于至少一些所述数据包,所述各自路由目的地 对应于所述栈间实例;和(g) 对于经过所述确定步骤(f)的所述数据包中的每个,如果所述 数据包的各自路由目的地对应于所述栈间接口 ,则经由所述栈间接口从所 述第二互联网通信栈实例将所述数据包路由至所述第一互联网通信栈实 例。
全文摘要
一种计算机系统包含多个互联网通信栈实例,其可以共享或可以不共享共同硬件网络适配器。使用互联网协议(IP)寻址在计算机系统中内部的不同互联网通信栈实例之间对包路由。使用IP转发,将到达一个栈并且具有与另一个栈关联的目的IP地址的包转发至其他栈。优选地,包的栈间路由可使用全局定义的互联网IP地址或局部内联网(封装的)IP地址,并且可采用输入或输出包。示例性实施例是具有全范围的TCP/IP功能的工作栈,以及具有有限范围的TCP/IP功能的服务栈。可使用栈间接口来获得改进功能的操作,以用于来到的并且由绑定至服务栈的应用发送的包。
文档编号H04L29/06GK101411160SQ200780010969
公开日2009年4月15日 申请日期2007年3月12日 优先权日2006年4月13日
发明者D·A·克里斯坦松, T·E·小墨菲 申请人:国际商业机器公司