路由网络中的容错通信的制作方法

文档序号:7639575阅读:8680来源:国知局

专利名称::路由网络中的容错通信的制作方法路由网络中的容错通信背景在计算机联网环境中,多个节点可在网络上彼此通信。如果网络发生故障,则这些节点之间的通信可能中断。概述以下呈现了本公开的简化概述以便向读者提供基本的了解。本概述并非本公开的宽泛综述,也并不标识本发明的关键或重要要素或者刻划本发明的范围。其目的仅是为了以简化方式呈现在此所公开的某些概念作为在随后呈现的更详细描述的序言。以下示例通过在网络化节点上运行的应用软件经由要求最小考虑的独特的网络堆栈体系结构来提供计算机网络通信容错。许多附带特征将变得更容易理解,因为通过结合附图参考以下详细描述能获得更好的理解。附图描述根据附图阅读以下详细描述将更好地理解本发明,其中图1是示出了示例网络堆栈体系结构的框图。图2是示出了包括经由两个网络耦合的两个示例节点的网络化计算环境的框图。图3是示出了示例容错通信驱动器NETFT的框图。图4是示出了包括NETFT和应用的示例容错通信体系结构的框图。图5是示出了数据流过包括经由网络1上的路径A和网络2上的路径B耦合的源节点和目的节点的容错通信环境的流程图。图6是示出了在外加若干可能的通信故障的情况下数据流过图5所示的容错通信环境的流程图。图7是示出了容错通信驱动器NETFT的另一示例的框图。图8是示出了包括NETFT和应用的示例容错通信体系结构的框图。图9是示出了数据流过包括经由网络1上的路径A和网络2上的路径B耦合的源节点和目的节点的容错通信环境的流程图。图10是示出了在外加若干可能的通信故障的情况下数据流过图9所示的容错通信环境的流程图。图11是示出了其中可实现上述技术的示例计算环境的框图。附图中,类似的附图标记用于指示类似的部分。详细描述以下结合附图提供的详细描述旨在作为本发明的示例的描述而非旨在表示其中可构建或使用本发明的示例的唯一形式。此描述阐述了这些示例的功能以及用于构建和操作这些示例的步骤序列。然而,相同或等效的功能以及序列可通过不同的示例来实现。尽管本发明的示例在此被描述并示为在计算和联网系统中实现,但是所述系统作为示例而非限制而提供。如本领域技术人员理解的,本发明的示例适于应用在各种不同类型的计算和联网环境中。图1是示出了示例网络堆栈体系结构100的框图。网络堆栈("堆栈")通常经由网络堆栈接口和/或其它接口与软件应用程序耦合以向应用提供网络通信功能。应用通常被认为是处于(或耦合到)堆栈的"顶部"。网络通常被认为是处于(或耦合到)堆栈的"底部"。网络堆栈的各个要素可称为处于或靠近堆栈的顶部或底部,或者在该堆栈中相对彼此的较高或较低处。例如,在图1中,协议驱动器130在堆栈中高于在此特定附图中处于堆栈的底部的NIC180。如本领域技术人员所理解的,取决于描述的目的或焦点,网络堆栈的各种描述可包括或不包括某些堆栈要素,或者可以各种方式对这些要素进行分组、排序或命名。本文所用的术语"驱动器"称为控制程序等,它们使节点能够与诸如打印机、网络接口卡或其它计算机子系统的特定设备一起操作、或与诸如网络堆栈、协议驱动器和/或其它计算机软件或固件等一起操作。例如,协议驱动器通常与网络堆栈一起操作。应用可将数据分组传递到在另一节点上运行的应用所指定的堆栈。在此情况中,数据被认为是沿堆栈"向下"流动,并在网络上发送。由节点接收到的数据被认为是沿堆栈"向上"流动直至其到达所指定的应用。这些网络化系统对于本领域技术人员是众所周知的。在一个示例中,堆栈是基于网络驱动器接口规范("NDIS"),该规范定义了诸如NIC180的网络接口卡("NIC")的标准应用程序设计接口("API"),并从网络驱动器提取网络硬件。NDIS也指定了分层网络驱动器之间的标准网络接口,由此从诸如协议驱动器的上层驱动器提取诸如微端口的、管理硬件的下层驱动器。多个遵循NDIS的协议驱动器可在单个节点上共存。而且,如果节点可能由于连接到多个网络而包括多个NIC,则NDIS经由通信量所指示的其相关联驱动器将网络通信量路由至适当的NIC。图1中示出了NDIS的示图。诸如开放数据链路接口("ODI")、数据链路提供者接口("DLPI")、统一驱动器接口("UDI")或其它技术的其它联网堆栈标准、技术和/或体系结构可在以下的示例中使用,并可进行适当的修改,如本领域技术人员应当理解的。为了方便起见,在此整个描述中,示例中使用NDIS和NDIS技术,但是其它标准、技术和/或体系结构可通过进行适当的修改而在所有这些示例中使用,除非另外指明。如图1中所示,经由NDIS120耦合到NIC180的是微端口驱动器160。微端口驱动器通常经由NDIS微端口接口162与NDIS交互。微端口驱动器160可与NIC180相关联,并且可管理其操作,包括通过NIC发送或接收数据。微端口驱动器160通常与诸如中间驱动器140和协议驱动器130的上层驱动器接口。微端口驱动器被视为NIC驱动器。NIC微端口通常执行使用由NDIS所提供的通用或与NIC无关的功能来管理特定NIC所需的这些硬件专用操作。节点可包括多个NIC,并且每个NIC通常具有相关联的NIC驱动器。本描述中的某些示例描述了微端口驱动器的使用,但是如本领域技术人员应当理解的,任何类型的NIC驱动器等可用在这些示例中,除非另外指明。协议或传输驱动器130经由NDIS协议接口134耦合到NDIS120。协议驱动器或传送协议驱动器通常提供用以创建、发送和接收数据分组的功能,这些数据分组通过网络堆栈或在网络上从一个节点发往另一节点。如本领域技术人员所公知的,通用的可靠或有保证的递送传输协议可以是TCP/IP(传输控制协议/网际协议)。IP上的UDP(用户数据报协议)可以是普通的非可靠或无保证的递送协议。诸如IPX/SPX(因特网分组交换/顺序分组交换)的TCP、UDP和/或其它协议可在以下的示例中使用,除非另外指明。图1中7于NIC驱动器,它们如同是协议驱动器。沿网络堆栈向上或向下流动的数据分组经过IM驱动器140,该驱动器140可忽略、检査、过滤、转发、重定向和/或更改数据分组。中间驱动器140也可称为过滤驱动器。图2是示出了包括经由两个网络202和282耦合的两个示例节点210和260的网络化计算环境200的框图。节点210和260各自可以是个人计算机("PC")、客户端计算机、服务器、主机、膝上型设备、便携式设备、消费电子设备或各种其它类型的计算或处理设备、机器或系统的任一种。以下参照图ll详细描述了一种计算系统的非限制示例。圆212、214、262和264表示与其相应节点相关联的NIC。以下还参照图11将一种NIC的一个非限制示例描述为网络适配器1113。如本文所使用的,术语节点是指在网络中(例如网络202)可唯一寻址或以其它方式可唯一标识并且可用于与该网络中的其它节点通信的任何计算系统、设备或进程。作为示例而非限制,节点可以是个人计算机、服务器计算机、手持型或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、消费电子设备、网络PC、小型计算机、大型计算机等。以下参照图11阐述计算机系统形式的节点210的非限制示例。网络202和282可以是同一网络,可存在于同一或不同的子网上、可彼此在逻辑上或在物理上耦合或隔离、可使用类似或不同的联网技术等。具体地,网络202和282可以是路由网络,S卩,包括转发可路由协议分组的路由器的网络。可路由协议通常被认为是用于将数据从一个网络路由到另一个的通信协议。可路由协议的一示例是TCP/IP。以可路由方式发送数据分组意味着使用可路由传输协议来格式化和/或发送数据分组。本领域技术人员应当熟悉可路由协议和路由网络拓朴、系统和体系结构。在一个示例中,网络202和282可彼此独立,使得在一个网络中存在问题或故障的情况下不会影响到另一个的操作状态。在另一个示例中,可使用三个或更多网络。在其中期望较大的容错程度的示例中,可以采用大量网络连同节点与这些网络的相关联的连通性一包括安装在节点上的类似数目的NIC。与节点210相关联的NIC212被示为具有172.56.48.37的示例地址并被耦合到网络1202。也与节点210相关联的NIC214被示为具有197.71.48.38的示例地址并被耦合到网络2282。与节点260相关联的NIC262被示为具有172.56.48.38的示例地址并且也被耦合到网络1202。也与节点260相关联的NIC264被示为具有197.71.48.39的示例地址并被耦合到网络2282。实际上,这些地址可以是IPv4或IPv6地址等,或者通常与所使用的协议相关的任何其它类型的网络地址。每个节点可包括一个或多个NIC。箭头201和230(在图11中示为箭头1114)表示网络1202上的节点210与260之间的第一通信路由或通路("路径A")。箭头281和283表示网络2282上的节点210与260之间的第二通信路由或通路("路径B")。实际上,在环境200中的一个或多个网络上的两个或多个节点之间的可存在一条或多条通路。本文所用的术语"通路"被定义为网络中的节点之间的通信路由或通信链路。这样的路由或链路可以是动态的,因为节点之间的确切路由可随着时间改变。块216和266表示设置在节点210和260的每一个上的应用和网络堆栈,包括容错通信("FT")驱动器。块216的FT驱动器被示为具有示例地址10.0.0.1,而块266的FT驱动器被示为具有示例地址10.0.0.2。这些地址通常被认为是虚拟地址。这些地址可以是IPv4或IPv6地址等,或者任何其它类型的网络或通信地址。FT驱动器可具有或不具有如以下各个示树中所示的虚拟地址。容错网络堆栈是包括FT驱动器的网络堆栈,诸如以下结合图3所述的NETFT等。结合网络堆栈操作的诸如NETFT的FT驱动器通常允许节点经由一个或多个网络上的诸如路径A和路径B的一个或多个通信路径来彼此通信。如果这些通信路径的任一条发生故障,则节点可继续通信,只要至少一条通路可用。这样的通路故障可由于NIC的故障或通路的任何元件的故障而导致,包括连接、敷设缆线或其它通信介质(包括射频("RF")或红外线("IR")等)、路由器、集线器、交换机、防火墙、因特网服务提供商("IPS")、任何节点的电源故障、网络的设备或系统等。在一个示例中,通信故障可导致即插即用("PnP")事件。PnP事件指示NIC从其节点的移除或介质感测变化。例如,介质感测断开通常由于故障而导致,这使得NIC丢失在诸如网络缆线、RF或IR链路等的网络介质上的信号或载波。介质感测断开可由于网络缆线或载波从NIC断开或电缆另一端(例如集线器或交换机)的断电而导致。介质感测连接通常是相反的,诸如重新连接缆线、重新对集线器或交换机通电等。也称为连通性事件的此类事件一般是本地事件,因为它们在其自身的节点上或节点附近发生。这些本地连通性事件通常在节点上导致诸如PnP事件等的事件指示。在另一示例中,通信故障可通过使用在节点之间发送的心跳(heartbeat)分组来检测。这种心跳分组的失败可指示节点之间的通路故障。心跳分组往往被作标记,使得FT驱动器一旦接收到它们就可检测它们并对沿网络堆栈向上传递的分组流将其移除。在一个示例中,心跳分组可通过使用路由控制协议("RCP")形成RCP分组来实现。这些心跳分组可用于验证通路的端对端操作状态。即,通过在路径A上将心跳分组从节点210发送到节点260以及通过节点210从节点260接收对所发送心跳分组的回复,一般认为路径A是端对端可用的。如果心跳失败(未接收到响应于心跳发送的心跳回复),这样的失败可指示路径A可能由于网络1202中诸如路由器、交换机、连接等的某些元件的故障、或者由于目的节点自身的故障而不可用。具体地,节点210可具有可用NIC212和有效介质感测,这指示其被正确连接到网络,但仍可能由于沿线的某些网络或系统故障而检测到心跳失败。图3是示出了示例容错通信驱动器NETFT300的框图。NETFT300可被实现为与NDIS网络堆栈一起使用以及用于在容忍通路故障的节点之间提供网络通信的NDIS微端口驱动器(图1中的160)。B卩,在每个节点都使用NETFT时,尽管通路中的任何组件发生故障,只要至少一条通路仍然可用,两个或更多节点之间的通信就可继续。在一个示例中,将FT驱动器实现为NDIS微端口驱动器提供了至少两个益处。首先,由于这种FT驱动器通常在堆栈中位于任何协议驱动器之下,所以协议可靠性往往要由任何上层可靠协议驱动器来提供,该上层可靠协议驱动器通常不会受到FT驱动器所提供的链路级容错的增加的影响。例如,在结合诸如TCP/IP驱动器的协议驱动器使用FT驱动器时,该FT驱动器通常检测到故障的通路,并且在端对端可用通路上与任何协议驱动器无关地路由数据分组。如果由于切换通路而发生任何分组丢失,则通常在堆栈中位于FT驱动器上的TCP/IP协议驱动器往往检测到这种丢失并执行任意重试或重发操作以确保在分组传送中实现可靠协议。在堆栈中将FT驱动器放置在协议驱动器之下的第二个益处是不会引入协议可路由性的降级。当被如此配置时,FT驱动器对数据分组所执行的任何隧穿(tunneling)操作可采用诸如TCP或UDP的可路由协议,由此除正链路级容错之外确保这种数据可被路由。"可路由地使数据分组隧穿(tunnel)"是使用可路由协议来使传送数据分组隧穿。作为网络堆栈的一部分的NETFT通常经由NDIS或其它网络堆栈接口耦合到软件应用程序。这种耦合通常使得应用程序能够在耦合到堆栈底部的网络上发送和接收分组。在一个示例中,应用程序倾向于对其数据分组使用虚拟地址作为源地址,这种虚拟地址对于NETFT是己知的,并且如以下所述地被映射和传送到网络上的其它节点。如图3中所示,NETFT包括微端口适配器302(也称为处理元件)、路由数据库304以及一个或多个路由监视器适配器306和隧穿适配器308。隧穿适配器308通常表示本地节点上的一个NIC(或,在某些实例中为虚拟NIC)并且维护用于将分组隧穿到目的节点上的NETFT的插座。通常存在与本地节点上的每个NIC相关联的一个隧穿适配器308,并且每个NIC被耦合到提供了通往另一节点的通路的网络。每个网络可与任何其它网络隔离或不隔离。隧穿适配器308通常源图隧穿协议驱动器相关联并经由NDIS接口通过隧穿协议将数据分组隧穿到其相关联的NIC或从该NIC隧穿。隧穿协议的一个示例是UDP。或者,诸如TCP、IPX或SPX的其它协议可用于进行隧穿。如果相关联的NIC或媒体连接变成不活动,则隧穿适配器308可变成不活动。如NETFT中实现的路由数据库304通常是简单的数据结构,该数据库可位于系统存储器中并包括将一条或多条通路的虚拟地址映射到另一节点上的类似NETFT的条目。在一个示例中,映射是由诸如路由监视器适配器306的路由监视器适配器来表示的,该适配器通常与诸如隧穿适配器308的隧穿适配器相关联。一般诸如路由数据库304的路由数据库将包括对应于每个隧穿适配器的一组路由适配器,每个路由适配器与在关联于隧穿适配器的通路上可到达的不同目的节点相关联。例如,当使用TCP/IP时,数据库可将目的虚拟地址映射到特定远程节点的物理地址。路由数据库304还可包括每条通路的优先级信息。这些优先级信息可用于指示通往另一节点的优选或主要通路和/或包括与通路速率或其它特性相关的信息。优选通路是由NETFT算出的在可能的情况下基于优先级信息和/或通路状态优先其它可能的通路来使用的通路。优先级信息可另外指示用于使通往目标节点的多个通路的使用在通路之间达到通信量负载均衡的一系列负载均衡算法,或者启用某些其它通路优先化方案。表l中示出了一示例路由表数据库304的映射表。<table>tableseeoriginaldocumentpage11</column></row><table>参看表1和图2,表1示出了可由运行在节点216上的NETFT使用的示例映射表。表1示出了虚拟目的地址10.0.0.2,该虚拟地址被示为对应于节点266,并被映射到与通往节点266的路径A相关联的物理地址172.56.48.38以及与通往节点266的路径B相关联的物理地址197.71.48.39。路径A被示为具有第一优先级而路径B被示为具有第二优先级。表1作为示例而非限制而提供。当从节点216向节点266发送数据时,这种映射表通常用于通过经由诸如UDP的隧穿协议转发分组来将去往虚拟目的地址10.0.0.2的分组隧穿到物理地址172.56.48.38,由此在路径A上将分组从节点216隧穿到节点266。可在路由数据库(图3的304)中为两个节点之间建立的每组通路创建一个这样的映射表。这种映射表可以通过各种形式实现,使用各种优先级方案和/或存储包括通路操作状态的其它信息。表1中所示的映射表结构、通路数目、地址格式等作为示例而非限制而提供。本地节点虚拟地址、远程节点虚拟地址以及优先级和其它通路信息通常通过带外(out-of-band)机制来向节点提供,并经由其NDIS接口传递给NETFT。这种带外机制可与使用管理应用来指定信息的系统管理器一样简单,或者其可以是自动化系统等。这种带外机制对于本领域技术人员是公知的。如图3中所示,微端口适配器302(也称为驱动器的处理元件)通常解析沿网络堆栈向下流动的数据分组、检査该分组的目的虚拟地址以及使用来自路由数据库304的信息来确定将该数据分组隧穿通过哪个隧穿适配器308。传入分组或沿堆栈向上流动的数据分组朝着目的虚拟地址沿堆栈向上转发,并且隧穿协议已在先前移除了隧穿分组的报头。具体地,隧穿适配器308检查传入分组并将心跳分组转发到路由监视器适配器306,以及通过微端口适配器302沿堆栈向上转发其它分组。使用隧穿协议来使分组隧穿以及如何通过协议驱动器添加和移除协议报头的方面对于本领域技术人员而言是公知的。路由监视器适配器306通常表示在由相关联的隧穿适配器标识的特定通道上可访问的远程节点。路由监视器适配器306通常将提供远程节点的物理地址,该物理地址306还对应于通往远程节点的特定通路。这种物理地址通常被用于路由数据库304中的映射。对于通往远程节点的每个不同通路,通常存在一个远程监视器适配器,每个路由监视器适配器与表示通路的隧穿适配器相关联。在一个示例中,再次参看图2,节点210被示为通过两条通路耦合到节点260,其一通过网络1202("路径A"),而另一条通过网络2282("路径B")。运行在节点210上的NETFT可包括第一路由监视器适配器("RMA-A"),该适配器提供了远程节点260的与其NIC262相关联的物理地址172.56.48.38。RMA-A可与节点210上的第一隧穿适配器("TA-A")相关联,其中该节点可与路径A相关联。节点210上的NETFT还可包括第二路由监视器适配器("RMA-B"),该适配器提供了远程节点260的与其NIC264相关联的物理地址197.71.48.39。RMA-B可与节点210上的第二隧穿适配器("TA-B")相关联,其中该节点可与路径B相关联。参看图3,路由监视器适配器306通常监视通往远程节点的通路的健康状况,并在路由数据库304中指示有故障的或不可用的通路。监视通常包括接收任何事件指示和/或通知任何心跳失败以及相应地更新数据库304。在一个示例中,指示NIC或介质连接的故障的事件可导致隧穿适配器308的禁用。在另一示例中,心跳失败可导致与心跳失败的特定远程节点相关的路由监视器适配器306的禁用。图4是示出了包括NETFT300和应用402的示例容错通信体系结构216的框图。在此示例中,应用402使用虚拟源地址217和表示目的节点的虚拟目的地址来经由堆栈将数据分组发送到NETFT300。这种传出数据分组经由路径480从应用通过网络堆栈流动到驱动器300。驱动器300通常使用存储在路由数据库中的优先级信息和通路操作状态信息来确定每个分组应当采用哪条可能的通路,并且在所选的通路上使用适当的物理源地址422或424来将该分组隧穿到目标节点。应用402可通过NETFT经由TCP协议来发送数据分组,如图4中所示。或者可使用UDP或任何其它协议。而且,如所示,NETFT300可使用UDP协议来将分组隧穿到目标节点。或者,TCP或任何其它协议可用于进行隧穿。此外,替代示例可不使用微端口适配器或NDIS驱动器但可使用其它机构或体系结构来执行类似功能。最后,网络堆栈的各个元件等可以在用户模式或内核模式中运行,或者如所示或其它方式,在具有或不具有等效操作模式的系统上运行。图5是示出了数据流过包括经由网络1202上的路径A和网络2282上的路径B耦合的源节点216和目的节点266的容错通信环境500的流程图。在此示例环境500中,数据被示为从在节点216上运行的应用发送到在节点266上监听目的虚拟地址的应用。数据分组使用TCP协议沿节点216上运行的网络堆栈向下流到NETFT中,如路径501所示。如所示,假设路径A是所选通路,NETFT将数据分组从由应用正在使用的源虚拟地址映射到路径A,并通过UDP使用目的节点266的路径A的物理目的地址来如路径501进一步所示地将该数据隧穿出节点216的NIC1,然后经由链路201进入网络1202。该数据随后流过网络1202、通过链路203、接着到达节点266、如路径503所示地沿节点266上运行的网络堆栈向上流动。该数据随后流过UDP协议(与发送侧用作隧穿协议的协议一样)驱动器,其中从数据分组剥离UDP协议报头,随后将其传递到运行在节点266上的NETFT。NETFT随后将这些数据分组沿堆栈向上转发到正监听目的虚拟地址的应用。响应往往以相反次序流动。图6是示出了在外加若干可能的通信故障610、612、620和630的情况下数据流过图5中所示的容错通信环境500的流程图。其它通信故障也是可能的。故障610指示在发送节点216上运行的NIC1的故障。这种故障可能在NIC1被从节点移除、NIC1的驱动器发生故障、NIC1自身发生故障等情况下发生。故障可由NETFT经由诸如PnP事件等的事件指示和域心跳失败来检测。在这种情形中,路径A通常被认为己发生故障,并且NETFT将选择替代的端对端可用通路。端对端可用通路通常可始终成功地将数据从源节点和应用递送到目的节点和应用。故障620指示与节点216耦合的网络介质的故障。此故障可能由于缆线从NICl断开、由于缆线从网络1202的某一设备断开、由于在网络一侧上缆线所连接的设备断电或发生故障等而导致。这种类型的故障还可由NETFT经由诸如PnP事件等的事件指示和/或心跳失败以及所选的替代通路来检测。故障630指示在网络202内导致数据分组无法到达目的节点266的某一类故障。在此故障的情形中,发送节点216仍耦合到网络202并存在适当的介质感测指示,但是路径A已进一步使网络中断。在这种故障下,如果本地指示显示通往网络202的连通性良好,则运行在发送节点216上的NETFT可能无法通过事件指示检测到该故障,但是可通过路径A的心跳失败检测到该故障。链路203的故障622以及在接收节点266上运行的NIC1的故障612往往类似于针对节点216所示的相应故障。虽然并不在节点216本地的这些故障可能无法通过事件指示来检测,但是可通过心跳失败来检测。这些故障的任一个以及其它故障可通过在节点216上运行的NETFT来检测,并可导致其选择替代的端对端可用通路,诸如在网络2282上的路径B。在此示例中,如图6中所示,NETFT将数据沿替代路径681向下隧穿并通过网络2282到达接收节点266。如果路径A上的故障情况被修复且端对端操作状态恢复,则在发送节点216上运行的NETFT可检测到该恢复并再次使用路径A。此外,从节点266返回到节点216的任何响应可以类似的容错方式通过NETFT来隧穿。图7是示出了容错通信驱动器NETFT700的另一示例的框图。此示例类似于图3中所示示例,但是包括以下所述的变化。在此示例中,软件应用程序可能无需使用虚拟地址。相反,应用程序可使用物理地址来使数据分组寻址到目标节点。协议适配器710通常耦合到微端口适配器702(也称为驱动器的处理元件)和NIC微端口适配器(未示出)。通常,对安装节点上的每一个NIC存在一个协议适配器,每个协议适配器经由其NIC适配器与NIC相关联。由于每个协议适配器与一NIC相关联,所以它也与耦合到该NIC的通路相关联。协议适配器710可用于经由处理元件702从应用接受数据分组,并将该数据分组传递到相关联的NIC而无需进行隧穿。处理元件702通常解析沿网络堆栈向下流动的数据分组、检查这些分组的物理目的地址并使用来自路由数据库704的信息来确定该分组是可在协议适配器710上转发还是需要通过隧穿适配器308隧穿到目标节点。一般而言,如果由物理目的地址指示的通路是端对端可用的,则数据分组将通过该通路发送。可选择将分组在其上隧穿的其它或替代的通路。在此示例中,路由数据库704维护物理目的地址和通路的映射以及如上所述的优先级和其它信息。表2中示出了示例路由数据库704的映射表。目的地址类型地址优先级物理路径A172.56.48.381物理路径B197,71.48.392表2参看表2和图2,表2示出了可由在节点216上运行的NETFT所用的示例映射表。表2示出了包括与通往节点266的路径A相关联的物理目的地址172.56.48.38和与通往节点266的路径B相关联的物理目的地址197.71.48.39的映射。路径A被示为具有第一优先级,而路径B具有第二优先级。当从节点216向节点266发送数据时,这种映射表通常被用于转发(或者按需进行隧穿)正被发往节点266的物理目的地址172.56.48.38的数据分组。如果与初始目的地址相关联的通路是可用的,则数据分组往往被转发到该目的地址而不进行隧穿。如果该通路不可用,则该数据分组通过替代的通路经由隧穿被发送到节点266的物理目的地址197.71.48.39。NETFT700的其它方面一般类似于针对图3所述的NETFT。图8是示出了包括NETFT700和应用402的示例容错通信体系结构216的框15图。在此示例中,应用402使用物理源地址和表示目的节点的物理目的地址801经由堆栈来将数据分组发送到NETFT700。这种传出数据分组经由路径880从应用通过网络堆栈流动到驱动器700。该驱动器700通常使用存储在路由数据库中的优先级信息和通路操作状态信息确定每个分组应当采用哪条可能的通路,并且通过由初始物理目的地址指示的路径将该分组转发到目标节点,或者如果该通路并非端对端可用,则通过如在本示例中由路由882和NIC2892所指示的替代通路来使分组隧穿。应用402可经由TCP协议通过NETFT700发送数据分组,如图8所示。可使用UDP或任何其它协议作为替代。而且,如所示,NETFT700可使用UDP协议来将分组隧穿到目标节点。或者,TCP或任何其它协议可用于进行隧穿。此外,其它示例可不利用NDIS驱动器,但可使用其它机构或体系结构来执行类似功能。最后,网络堆栈等的各个要素可以在用户模式或内核模式中运行,或者如所示或以其它方式,在具有或不具有等效操作模式的系统上运行。图9是示出了数据流过包括经由网络1202上的路径A和网络2282上的路径B耦合的源节点816和目的节点966的容错通信环境的流程图。在此示例环境900中,数据被示为从在节点216上运行的应用发送到在节点266上监听目的物理地址的应用。数据分组使用TCP协议沿在节点216上运行的网络堆栈向下流到NETFT中,如路径901所示。如所示,假设路径A是所选通路,NETFT使用由应用所提供的物理目的地址来将数据分组经由节点216的NIC1在路径A上转发以及经由链路201在网络1202转发。数据随后流过网络1202、通过链路203然后到达节点966、如由路径903所示地沿在节点966上运行的网络堆栈向上流动。数据随后流过NETFT和协议驱动器(用于与发送侧用作发送协议相同的协议的协议驱动器)并到达应用。响应往往以反向次序流动。图IO是示出了在外加了若干可能的通信故障1010、1012、1020、1022和1030的情况下数据流过图9中所示的容错通信环境900的流程图。其它通信故障也是可能的。故障IOIO指示在发送节点816上运行的NIC1的故障。这种故障可能在NICl被从节点移除、其NIC驱动器发生故障、NIC自身发生故障等的情况下发生。该故障可由NETFT经由诸如PnP事件等的事件指示和/或心跳失败来检测。在这种情形中,路径A通常被认为已发生故障,并且NETFT将选择替代的端对端可用通路。故障1020指示与节点816的NIC1耦合的网络介质的故障。此故障可由于缆线从NIC1断开、由于缆线从网络1202的某一设备断开、由于在网络一侧上缆线所连接的设备断电或发生故障等而导致。此类故障还可由NETFT经由诸如PnP事件等的事件指示和/或心跳失败及所选的替代通路来检测。故障1030指示在网络202内导致数据分组无法到达目的节点966的某一类故障。在此故障的情形中,发送节点816仍可耦合到网络202并存在适当的介质感测指示,但是路径A已进一步使网络中断。在这种故障下,如果本地指示显示通往网络202的连通性良好,则运行在发送节点816上的NETFT可能无法通过诸如PnP事件等的事件指示检测到该故障,但是可通过路径A的心跳失败检测到该故障。链路203的故障1022以及在接收节点966上运行的NIC1的故障1012往往类似于针对节点816所示的相应故障。虽然并非节点816本地的这些故障可能无法通过事件指示来检测,但是可通过心跳失败来检测。这些故障的任一个以及其它故障可由在节点816上运行的NETFT来检测,并可导致其选择替代的端对端可用通路,诸如在网络2282上的路径B。在此示例中,如图10中所示,NETFT将数据沿替代路径1081向下隧穿并通过网络2282到达接收节点966。如果路径A上的故障情况被修复且端对端操作状态被恢复,则在发送节点816上运行的NETFT可检测到该恢复并再次使用路径A。此外,从节点966返回到节点816的任何响应可取决于路径A和路径B的操作状态以类似的容错方式由其NETFT来隧穿。图11是示出了其中可实现上述技术的示例性计算环境1100的框图。合适的计算环境可使用各种通用或专用系统来实现。公知系统的示例可包括但不限于个人计算机("PC")、手持型或膝上型设备、基于微处理器的系统、微处理器系统、服务器、工作站、消费类电子设备、机顶盒等。计算环境1100通常包括耦合到各种外围设备1102、1103、1104等的计算设备1101形式的通用计算系统。系统110可经由一个或多个1/0接口1112耦合到各种输入设备1103,包括键盘和诸如鼠标或跟踪球的定点设备。计算设备1101的组件可包括一个或多个处理器(包括中央处理单元("CPU")、图形处理单元("GPU")微处理器("pP")等)1107、系统存储器1109和通常耦合各种组件的系统总线1108。处理器1107通常处理或执行各种计算机可执行指令以控制计算设备1101的操作并经由诸如网络连接1114等的各种通信连接与其它电子和/或计算设备、系统或环境(未示出)通信。系统总线1108表示任意数量的各类总线结构,包括存储器总线或存储器控制器、外围总线、串行总线、加速图形端口、处理器或使用各种总线体系结构的任一种的局部总线等。系统存储器1109可包括诸如随机存取存储器("RAM")的易失性存储器和/或诸如只读存储器("ROM")或闪存("FLASH")的非易失性存储器的形式的计算机可读介质。基本输入/输出系统("BIOS")可以非易失性等形式来存储。系统存储器1109通常存储数据、计算机可执行指令和/或包括可直接访问或正由一个或多个处理器1107操作的计算机可执行指令的程序模块。大容量存储设备1104和1110可通过耦合到系统总线而耦合到计算设备1101或结合到计算设备1101。这种大容量存储设备1104和1110可包括对可移动的非易失性磁盘(例如"软盘")1105读和/或写的磁盘驱动器,和/或对诸如CDROM、DVDROM1106的非易失性光盘读和/或写的光盘驱动器。或者,诸如硬盘1110的大容量存储设备可包括不可移动存储介质。其它大容量设备可包括存储卡、存储棒、带式存储器等。大量计算机程序、文件、数据结构等可被存储在硬盘1110、其它存储设备1104、1105、1106和系统存储器1109(通常受可用空间的限制)上,作为示例,这些大量计算机程序、文件、数据结构等包括操作系统、应用程序、数据文件、目录结构和计算机可执行指令。诸如显示设备1102的输出设备可经由诸如视频适配器1111耦合到计算设备1101。其它类型的输出设备可包括打印机、音频输出、触觉设备或其它感官输出机构等。输出设备可允许计算设备1101与操作员或者其它机器或系统交互。用户可经由诸如键盘、鼠标、操纵杆、游戏垫、数据端口等任何数目的不同输入设备1103与计算环境1100接口。这些及其它输入设备可经由可耦合到系统总线1108的输入/输出接口1112来耦合到处理器1107,并且可通过诸如并行端口、游戏端口、通用串行总线("USB")、火线、红外端口等的其它接口和总线结构来耦合。计算设备1101可通过一个或多个局域网("LAN")、广域网("WAN")、存储域网("SAN")、因特网、无线电链路、光学链路等经由到一个或多个远程计算设备的通信连接而在网络化环境中运行。计算设备1101可经由网络适1113等、或者经由调制解调器、数字用户线路("DSL")链路、综合业务数字网("ISDN")链路、因特网链路、无线链路等耦合到网络。诸如网络连接的通信连接1114通常提供到诸如网络的通信介质的耦合。通信介质通常使用诸如载波或其它传输机制的调制数据信号提供计算机可读和计算机可执行指令、数据结构、文件、程序模块和其它数据。术语"调制数据信号"通常表示以在该信号中编码信息的方式设置或改变其特征中的一个或多个的信号。作为示例而非限制,通信介质可包括诸如有线网络或直接线连接等的有线介质,以及诸如声波、射频、红外线和其它无线通信机制的无线介质。本领域技术人员将认识到用于提供计算机可读和计算机可执行指令及数据的存储设备可分布在网络上。例如,远程计算机或存储设备可以采用软件应用程序和数据的形式来存储计算机可读和计算机可执行指令。本地计算机可经由网络访问远程计算机或存储设备,以及下载软件应用程序或数据的部分或全部并可执行任何计算机可执行指令。或者,本地计算机可按需下载软件或数据的片段,或者通过在本地计算机上执行部分指令而在远程计算机和/或设备上执行另一部分指令来分布式地处理软件。本领域技术人员还将认识到,通过使用常规技术,软件的计算机可执行指令的全部或部分可通过诸如数据信号处理器("DSP")、可编程逻辑阵列("PLA")、离散电路等的专用电子电路来实现。术语"电子装置"可包括包含任何软件、固件等的计算设备或消费类电子设备、或者不包含软件、固件等的电子设备或电路。术语"固件"通常是指维护在诸如ROM的电子设备中的可执行指令、代码或数据。术语"软件"通常是指维护在任何形式的计算机可读介质中或其上的可执行指令、代码、数据、应用、程序等。术语"计算机可读介质"通常是指系统存储器、存储设备及其相关联的介质、通信介质等。权利要求1.一种用于向应用提供多个节点之间的容错网络通信的方法,包括经由耦合到所述多个节点的多个网络提供多个初始通信通路;从所述应用接收发送节点上的数据分组,所述发送节点为所述多个节点之一,所述数据分组由所述应用添加所述多个节点中的一个的地址;以及在所述多个初始通信通路中为所述数据分组选择第一所选通路,其中所述第一所选通路是优选通路。2.如权利要求l所述的方法,其特征在于,还包括检测与所述多个初始通信通路中的一个相关联的本地连通性事件;以及基于所述本地连通性事件指示所述多个初始通信通路中的所述之一是否可用。3.如权利要求1所述的方法,其特征在于,还包括在所述多个初始通信通路中的一个上发送可路由心跳分组;监视对所述可路由心跳分组的响应以确定所述多个初始通信通路中的所述之一的端对端操作状态;以及基于对所述响应的监视指示所述多个初始通信通路中的所述之一是否是端对端可用的。4.如权利要求l所述的方法,其特征在于,所述地址是网际协议第4版的地址或网际协议第6版的地址。5.如权利要求1所述的方法,其特征在于,从所述应用接收到的所述数据分组是传输控制协议分组或用户数据报协议分组。6.如权利要求1所述的方法,其特征在于,用于执行所述方法的计算机可执行指令被存储在计算机可读介质上。7.如权利要求1所述的方法,其特征在于,所述地址是虚拟地址。8.如权利要求7所述的方法,其特征在于,还包括将所述数据分组在所述第一所选通路上可路由地隧穿而无需所述应用了解所述多个初始通信通路的哪一个是所选通路。9.如权利要求8所述的方法,其特征在于,在所述第一所选通路上可路由地隧穿的所述数据分组是传输控制协议分组或用户数据报协议分组。10.如权利要求7所述的方法,其特征在于,还包括检测所述第一所选通路的故障;在所述多个初始通信通路中选择第二所选通路,其中所述第二所选通路是端对端可用的且是优选通路;以及将所述数据分组在所述第二作数通路上可路由地隧穿而无需所述应用了解所述一个或多个初始通信通路的哪一个是所述第二所选通路。11.如权利要求l所述的方法,其特征在于,所述第一所选通路是基于包括在所述数据分组中的物理目的地址来选择的。12.如权利要求11所述的方法,其特征在于,还包括在所述第一所选通路上发送所述数据分组而无需所述应用了解所述多个初始通信通路的哪一个是所述第一所选通路。13.如权利要求ll所述的方法,其特征在于,还包括-检测所述第一所选通路的故障;从所述多个初始通信通路选择第二所选通路,其中所述第二所选通路是端对端可用的且是优选通路;以及将所述数据分组在所述第二所选通路上可路由地隧穿而无需所述应用了解所述一个或多个初始通信通路的哪一个是所述第二所选通路。14.如权利要求13所述的方法,其特征在于,在所述第二所选通路上可路由地隧穿的所述数据分组是传输控制协议分组或用户数据报协议分组。15.—种用于向应用提供多个节点之间的容错网络通信的方法,包括经由耦合到所述多个节点的多个网络提供多个初始通信通路;在接收节点上接收数据分组,所述接收节点包括容错网络堆栈并且是所述多个节点之一,所述数据分组指向所述应用;确定所述数据分组是否被可路由地隧穿;以及如果所述数据分组被可路由地隧穿,则将所述数据分组沿所述容错网络堆栈向上转发。16.如权利要求15所述的方法,其特征在于,还包括通过所述多个初始通信通路之一在所述接收节点上接收可路由心跳分组;以及向所述可路由心跳分组回复响应以指示所述多个初始通信通路的所述之一的端对端操作状态。17.如权利要求15所述的方法,其特征在于,所述数据分组是传输控制协议分组或用户数据报协议分组。18.如权利要求15所述的方法,其特征在于,用于执行所述方法的计算机可执行指令被存储在计算机可读介质上。19.一种用于向应用提供多个节点之间的容错网络通信的系统,包括第一容错驱动器,耦合到第一网络堆桟并且在第一节点上运行,所述第一节点是所述多个节点中的一个;第二容错驱动器,耦合到第二网络堆栈并且在第二节点上运行,所述第二节点是所述多个节点中的一个;以及所述第一容错驱动器和所述第二容错驱动器经由多个网络上的多个初始通信通路来耦合。20.如权利要求19所述的系统,其特征在于,所述第一容错驱动器包括-处理元件,经由所述第一网络堆栈耦合到所述应用;路由数据库,耦合到所述处理元件的,包括表示通往所述第二节点的通路的条目,包括所述第二节点的物理地址,所述通路是所述多个初始通信通路中的一个;以及对通往所述第二节点的所述通路的端对端操作状态的指示;协议适配器,耦合到所述处理元件并经由所述第一网络堆栈耦合到所述多个网络中的一个,所述多个网络中的所述之一与通往所述第二节点的所述通路相关联;以及隧穿适配器,与通往所述第二节点的所述通路相关联并且被耦合到所述处理元件以及经由所述第一网络堆栈耦合到所述多个网络中的所述之一。全文摘要一种用于向应用提供多个节点之间的容错网络通信的方法,包括通过在多个节点之间耦合的多个网络上提供多个初始通信通路;从应用接收发送节点上的数据分组,该发送节点该多个节点中的一个,数据分组由应用添加多个节点中的一个上的地址;以及在多个初始通信通路中为该数据分组选择第一所选通路,其中该第一所选通路是优选通路。文档编号H04L29/10GK101263686SQ200680033111公开日2008年9月10日申请日期2006年9月11日优先权日2005年9月12日发明者D·A·迪昂,M·T·玛萨,R·欧帕弗斯基申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1