基于网络地址翻译类型的无缝主机迁移的制作方法

文档序号:6478864阅读:183来源:国知局
专利名称:基于网络地址翻译类型的无缝主机迁移的制作方法
技术领域
本发明总体上涉及网络。更具体而言,本发明涉及网络中的数据分发和网络地址 翻译(NAT)的使用。
背景技术
网络可以包括一组通过通信系统连接在一起的计算设备。网络中的计算机可以与 网络中的其它计算机通信、交换数据和共享资源。网络的例子包括个人域网(PAN)、局域 网(LAN)和广域网(WAN)。本领域公知有各种网络结构。图1A中示出的传统客户端_服务器网络包括连接 到客户端120A-120D的主机110。主机110建立网络会话130,控制哪些客户端和多少客户 端可以加入网络会话130,以及客户端120A-120D在它们已经加入网络会话130时如何彼此 交互。由于主机110通常具有大量的带宽和处理能力,主机110可以能够在网络会话130 中管理和分发到所有客户端120A-120D和来自所有客户端120A-120D的数据。在这种结构 中,来自特定客户端(例如客户端120D)的数据可通过主机110分发给其它客户端(例如 客户端120A-120C)。例如,客户端120D可以向主机110发送数据。当另一个客户端,诸如 客户端120A,请求该数据时,主机110将该数据发送给客户端120A。由于连接到主机,客户端可以只(经由主机)请求该客户端需要的数据,使得该客 户端不必管理不需要的数据。这种设置可以共用于不具有有效地管理网络会话内交换的所 有数据的能力的客户端之间。这些客户端可能需要主机来管理和分发数据。使主机管理和分发网络会话中的数据的缺点是当发生影响主机和任何一个会话 客户端之间的通信的连通性问题时会丢失数据。在这种情况下,来自特定客户端的数据不 能被发送到主机。该数据也将对网络中的其它客户端不可用。例如,客户端120D可能突 然变成与主机110断开。客户端120D本应已经发送到主机110的信息根本不会到达主机 110,因此,该信息不能被发送到网络的其余部分(例如客户端120A-120C)。丢失的信息可 能导致网络会话130的中断,可能影响其它客户端的工作。在玩交换式网络游戏的环境下 尤其如此。当试图通过对等通信(P2P)在客户端之间建立通信时可能会进一步出现关于网 络地址翻译(NAT)的问题。P2P通信通常指连接到网络的客户端设备之间的直接通信。 P2P应用的例子包括但不限于互联网协议承载语音(VoIP)、比特流传输、视频传输、文件 共享、数据共享以及其它类型的客户端之间的不超过单个客户端的带宽能力的直接数据传 递。利用NAT协议,多个节点或计算设备可以共享单个因特网或本地网络的网际协议 (IP)地址。在一个例子中,局域网可以将公共的全局地址用于外部网络业务,而将一个(或 一组)私有IP地址用于内部网络业务。网络中的大部分客户端被连接到中心服务器,该服 务器设置在NAT防火墙(以下称为NAT)之后。本领域一般公知NAT的四种类型全克隆、 受限克隆、端口受限以及对称。
全克隆NAT从同一内部IP地址和端口获取所有请求,并且将它们映射到同一外部 IP地址和端口。任何外部主机可以通过向所映射的外部地址发送包来向内部主机发送包。 在受限克隆NAT中,来自同一内部IP地址和端口的所有请求也映射到同一外部IP地址和 端口。然而,与全克隆NAT不同,仅当内部主机先前已向IP地址X发送了包时,(具有IP地 址X的)外部主机才可以向该内部主机发送包。端口受限NAT类似于受限克隆NAT,但其限制包括端口号。具体而言,仅当内部主 机先前已从IP地址X和端口 P发送了包时,外部主机才可以向内部主机发送具有源IP地 址X和源端口 P的包。在最后的例子一对称NAT中,从同一内部IP地址和端口到特定目 的地IP地址和端口的所有请求被映射到同一外部IP地址和端口。如果同一主机发送具有 同一源地址和端口的包,但是向不同的目的地发送,则使用不同的映射。此外,只有接收包 的外部主机可以向内部主机发回用户数据协议(UDP)包。因此,本领域需要改进的用于网络数据分发的系统和方法,其解决与网络会话连通性相关的问题,并且维持会话中的不中断的数据交换。在此情况下,期望的是P2P网络中 的主机具有期望的NAT简档(profile),以便建立优化的P2P网络。因此,本领域还需要在 连接到中心服务器的若干客户端中确定具有期望的NAT简档的主机。

发明内容
本发明的系统和方法用于维护网络数据分发,将允许网络会话在没有任何数据损 失的情况下经受住主机和客户端之间的中断的通信。主机功能以无缝且没有显著数据损失 的方式迁移到客户端。本发明的实施例使一个或更多个客户端用作网络会话的备份主机。 当其它客户端向主机发送数据时,它们也可以向一个或更多个备份主机发送该数据。例如, 向主机发送数据的客户端可能在特定时间段内没有收到对数据的确认。该客户端可以向主 机重新发送该数据,并且向备份主机发送该数据。备份主机的确定可以基于建立主机和多 个客户端之间的连接时在主机和客户端之间共享的(NAT)简档信息。本发明的各种实施例包括用于网络数据分发的方法。这种方法包括将主机连接 到客户端,确定客户端是否能够用作备份主机,并且如果能,则向该客户端发送特定信息, 该信息将允许客户端用作备份主机。该确定可以利用NAT简档信息。用作备份主机包括当 其它客户端不能与主机通信时接收来自那些其它客户端的信息。在本发明的一些实施例 中,该方法还用于指示主机和客户端之间的通信被中断,以及终止该主机和该特定客户端 之间的通信。本发明的各种实施例包括用于网络数据分发的系统。这种系统可以包括主机、能 够用作备份主机的第一客户端以及第二客户端,该第二客户端能够在主机和第二客户端之 间的通信中断的情况下向第一客户端发送数据。在本发明的一些实施例中,第二客户端也 可以用作备份主机。本发明的一些实施例可以包括多个客户端,每个都构造为用作备份主 机。NAT简档信息可以在关于备份主机可行性的确定中使用。本发明的实施例也可以提供用于网络分发系统的主机系统。这种主机系统可以包 括确认模块,在收到时确认客户端通信;协商模块,协商特定客户端是否能够用作备份主 机;以及备份应用模块,向客户端传送提供主机信息的应用。本发明的一些实施例还包括主 机信息数据库和计时器。NAT简档信息可以在确定备份主机可行性时收集、分析和使用。
本发明的一些实施例包括用于网络数据分发的计算机存储介质和指令。这种指令可以用于将主机连接到客户端,通过使用NAT简档信息来与能够用作备份主机的客户端进 行协商,以及向该客户端发送主机信息,使得它可以开始充当备份主机。


图IA示出本领域公知的客户端-服务器网络结构。图IB示出具有一个备份主机的用于网络数据分发的示例性系统。图IC示出具有若干备份主机的用于网络数据分发的示例性系统。图ID示出利用NAT的用于网络数据分发的示例性系统。图2示出网络数据分发系统中的提供无缝主机迁移的计算设备的示例性结构。图3A示出用于网络数据分发的示例性系统的实现,其可以包括网络地址翻译器。图3B示出用于网络数据分发的示例性系统的另一种实现,其可以包括网络地址 翻译器。图4示出用于网络数据分发的示例性方法,其可以包括使用NAT简档信息。
具体实施例方式本发明包括用于网络数据分发的系统和方法。本发明的实施例可以允许主机迁移 无缝地进行。在主机和客户端之间的通信中断的情况下,网络会话可以在没有显著的数据 丢失的情况下继续进行。网络会话的主机可以被连接到若干客户端。这些客户端中的一个 (或更多个)客户端可以能够用作备份主机。与客户端协商备份可行性,并且将主机信息发 送给该客户端,然后该客户端可以用作备份主机。备份主机然后可以连接到网络会话中的 其它客户端并从这些客户端接收数据。之后,如果主机和特定客户端之间的通信中断,则该 特定客户端可以将其数据发送到备份主机,使网络会话在没有任何数据损失的情况下继续 进行。整个本申请中所标识的要素是示例性的,可以包括各种其替换、等同或衍生。可以 使用硬件、软件和计算机可执行指令的各种组合。程序模块和引擎可以包括当由处理器执 行时实现特定任务的执行的例程、程序、对象、组件和数据结构,该处理器可以是通用的或 专用的。存储在计算机可读介质中的计算机可执行指令和关联的数据结构表示编程装置的 例子,用于执行这里所公开的方法的步骤和/或实现特定系统结构。在图IA所示和上面详细讨论的客户端-服务器网络结构中,每个客户端不必处理 网络会话中的所有数据。相反,每个客户端仅接收和处理该客户端参与网络会话所需要的 数据。一些客户端由于例如缺少带宽或缺乏处理能力而不能有效地管理所有数据。然而, 一些客户端的确具有管理网络会话中的所有数据的能力。这些特定的客户端可以充当备份 主机,存储来自网络会话的部分或全部数据。与图IA的系统构造相对比,图IB示出具有一个备份主机(客户端160A)的用于 网络数据分发的示例性系统。备份主机可以是任何能够执行网络会话的主机的一些或全部 功能的客户端。当网络会话150的主机140不能执行或未执行时,一些或全部主机职责可 以迁移到备份主机。为有资格成为备份主机,要求候选的主机(客户端)展示备份可行性。 展示备份可行性可以包括满足一个或更多个与例如带宽、处理能力、存储器、硬件或软件配置或者服务质量有关的要求。客户端的备份可行性可以通过与主机协商来确定。在完成涉及以及确认备份可行性的协商之后,可以通过网络会话150在主机140和客户端160A之间发送主机信息。主机信息可以包括网络名称、网络中的客户端的网际协 议(IP)地址、防火墙信息以及客户端160A接管某些主机职责时需要的有关具体职责的信 息。利用主机信息,客户端160A可以能够在主机140和其它客户端160B-160D之间的一个 或更多个连接中断时用作备份主机。例如,如果客户端160B变成与主机140断开,则客户 端160B可以向客户端160A传递数据,如将在图3A和图3B的情况下所示出的那样。通过 将主机职责从主机140迁移到客户端160A,对于网络会话150,来自客户端160B的信息未 完全丢失。在一些实施例中,多于一个的客户端可以能够用作备份主机。图IC示出具有若干 备份主机_客户端190A-190D的用于网络数据分发的示例性系统。如果原主机170变得不 可用,则图IC的网络会话180中的每个客户端可以负责特定的备份主机职责。例如,在游 戏环境下,客户端190A可以负责记分,而客户端190B可以负责状态变化。客户端190C可 以负责许可标准(例如谁可以参加游戏),而客户端190D可以负责聊天功能。可选择地,客 户端190A可以负责所有上述任务,而如果客户端190A后来出故障,则客户端190B-190D接 管那些任务。图ID示出利用NAT的用于网络数据分发的示例性系统。网络上的客户端设备 195A、195B、197和195D最初连接到外部网络199中的服务器191。服务器191可以监视用 于在连接到外部网络199的客户端195A、195B、197和195D之间玩游戏的数据。 客户端195A、195B、197和19OT可以位于对应的网络地址翻译器(NAT) 192A、192B、 192C和192D之后。每个NAT可以根据因特网标准来配置,该标准使局域网(LAN)能够针 对内部业务使用一组私有IP地址,而针对外部业务使用第二组全局IP地址。大多数NAT 对IP地址执行动态翻译,使得在内部网络开始通信之前,外部网络无法达到内部网络。然 而,由于客户端195A、195B、197和195D建立了服务器-客户端关系,服务器191与客户端 195A、195B、197 和 195D 之间的通信不受 NAT 192A、192B、192C 和 192D 的限制。在建立客户端可以直接相互通信的P2P网络时,一个客户端可以被建立为主机 197,其它对等方195 (非主机的连接到P2P网络的客户端)通过该主机197建立彼此之间的 直接连接。对等方195可以按照公知为全连接网(FCG,fully connected grid)的配置来 连接。这种配置可以防止任何一个对等方成为瓶颈。主机197可以基于每个客户端的NAT 简档来确定。NAT 192A、192B、192C和192D可以是以上所提及的四种不同的NAT配置(全 克隆、受限克隆NAT、端口受限克隆和对称)之一。穿越(traversal)全克隆、受限克隆和端口受限克隆NAT通常比穿越对称NAT更 复杂。如果客户端在如美国专利申请11/243,853号(其公开内容先前已被加入)中所述 的对称NAT之后,则可以实现NAT穿越。具体而言,客户端可以执行端口预测,包括在NAT 上构造预测传输地址列表,其中该客户端位于该NAT之后。然后客户端可以将包含该预测 传输地址列表的邀请(INVITE)消息从第一节点发送到第二客户端。对称NAT之后的客户 端然后可以利用预测传输地址对第二节点执行连通性检查。可以通过以并行方式向每个预 测传输地址发送通过NAT 的 UDP 简单穿越(STUN,Simple Traversal of UDP through NAT) 请求来执行连通性检查。当对称NAT之后的客户端接收这些请求时,客户端向第二客户端发送STUN响应。如果第二客户端接收STUN响应,则它开始向该地址发送信息。可以有上述四种类型之外的NAT类型。在一些情况下,可使用标准技术来穿越NAT。在其它情况下,NAT行为可能是不可预测的或不稳定的,使得与这种NAT之后的客户 端的通信不可靠。由于主机107的职责是在其它对等方195A、195B和195D之间传送信息, 重要的是主机197应当在不干扰其通信能力的类型的NAT之后。在对等方195A、195B、195D 和主机197处于全连接网(FCG)的情况下,特别期望的是使用不干扰主机通信能力的NAT 之后的主机。这使得能够为最大数量的对等方提供最高水平的服务。通过选择具有期望的NAT简档的主机197,可以获得更为可靠的P2P通信。一旦 已经确立主机197,对等方195可以通过最初向主机197发送信息来相互通信,主机197然 后将该信息转送到相应的接收对等方195。客户端也可以在使用主机197之后直接发送信 息,以便建立直接通信路径。在某些实施例中,客户端195A、195B、195D和197可以通过与外部网络199相关联 的STUN服务器193获得NAT简档信息。STUN服务器193利用轻量协议,该协议允许支持 IP的客户端发现NAT的存在和类型,其中该客户端位于该NAT之后。STUN服务器193与多 数NAT类型工作,并且不依赖于NAT的任何特殊的行为。在一个方面中,STUN服务器193的 作用类似于对客户端195A举着的镜子,使得客户端195A可以看到其本地的传输地址如何 被映射到公共的传输地址。客户端195A也可以通过与STUN服务器193通信来确定客户端 195A位于其之后的NAT 192A的类型。每个客户端195A、195B、197和19OT可以使用STUN服务器193来获得NAT简档信 息,然后可以将该信息转送到中心服务器191,以便中心服务器191确定哪个客户端将成为 最有利的主机197。类似地,客户端195A、195B、197和195D可以使用STUN服务器193来获 得NAT简档信息,然后可以将该信息转送到尝试通过P2P网络通信的所有其它客户端195, 以便客户端195A、195B、197和195D最好地确定主机197。连接到服务器191的每个客户端可以收集其自己的NAT简档信息以在P2P网络内 使用。该简档信息可以包括有关客户端位于其之后的NAT类型的信息、有关NAT是否支持 通用即插即用(UPnP)的信息、有关NAT是否展示端口保留的信息以及有关NAT是否支持端 口可预测性的信息。在当前应用的情况下使用的端口保留是指一旦内部IP地址被映射到特定的外部 端口,则它将被一直映射到该特定端口。类似地,端口可预测性是指,可预测内部IP地址将 被映射到哪个外部端口即使该端口不总是同一个端口。例如,每次尝试映射内部IP地址 时,外部端口号可以持续递增。每个客户端的NAT简档信息可以用于创建连接到服务器的所有客户端之间的优 先级列表,以便最好地选择用于P2P通信的主机。如果潜在的主机之间存在优先级持平,则 可以分配序数,以确定哪个潜在的主机被选择为实际的主机。在一些实施例中,这种序数可 以由服务器以客户端连接到该服务器的顺序来分配。可选择地,分布式仲裁算法可以用于 从两个或更多个同样适合的潜在的主机中选择主机。如果最初的主机决定离开P2P网络, 或者以某种方式与网络断开,则该信息可以用于选择P2P网络的下一个主机,以便无缝地 维持网络连通性。一旦给定客户端已经收集了简档信息,与连接到服务器的其它客户端共享该客户端的NAT简档。分发可以通过对等分发或从客户端到服务器到其余客户端来进行。服务器可以通过专用的网络连接来分发简档信息。一旦客户端已经提交了所有NAT简档,则确定 特定的客户端是否应当是主机、对等方,或者它们是否不能满足整体上的网络交互的要求。 该确定可以基于如上所述针对每个客户端获得的简档信息来进行。例如,通过基于若干因素来分配优先级,可以基于具有最有利的简档的客户端来 从可用客户端中选择主机。基于其简档信息,其余客户端可以被指定为对等方,或者可能不 能被识别为对等方或主机。例如,不可穿越的NAT之后的客户端可能不满足作为对等方或 主机连接到网络所需的要求。示例性优先化方案可以将客户端分为五种单独的级别活跃、可能、未知、进行中 和非活跃。活跃标签指示客户端是很好的主机候选者。可能标签指示客户端是好的主机候 选者,但优先级仍给予具有活跃标签的客户端。未知标签指示网络不能决定该特定客户端 是否是好的主机候选者。进行中标签指示网络仍在决定客户端是否是好的主机候选者。最 后,非活跃标签指示客户端不能承担主机的职责。优先级标签可以基于四个示例性的准则NAT类型、通用即插即用(UPnP)能力、端 口保留和端口可预测性。在确定优先级时还可能使用若干其它因素。这些因素可以属于客 户端的服务质量简档,并且可以包括QoS信息,包括但不限于ping时间、带宽表现、地理、 等待时间和IP提供商。图2示出网络数据分发系统中的提供无缝主机迁移的计算设备的示例性结构 200。可以用作网络中的中央通信集线器(hub)的主机200可以是诸如服务器的计算设备。 由于客户端在某个时刻可以成为备份主机,典型地为客户端操作而预备的计算设备也可以 展示主机200配置的一些或全部。主机200可以包括网络接口 210、确认模块220、协商模 块230、主机信息数据库240、备份应用模块250、轮询模块260、计时器270和NAT模块280。本发明所提及的模块(或应用)是执行各种系统级功能的例程的集合。根据需 要,可以通过硬件(诸如处理设备)和设备驱动程序来动态地装载和卸载(例如执行)模 块。这里所述的模块化软件组件也可以作为较大软件平台的一部分被并入或作为应用专用 组件的一部分被整合。网络接口 210可以是配置为允许主机和网络中的其它计算设备之间的通信的各 种硬件和/或软件组件任何之一。网络接口 210可以包括用于通过有线、无线和/或基于 因特网的通信网络进行通信的组件。确认模块220允许验证客户端发送的信息由主机200接收到。当主机200经由网 络接口 210从客户端接收信息时,确认模块220可以向发送该信息的客户端发送接收确认 (ACK)。例如,如果客户端将有关游戏状态数据的改变的信息发送到主机200,则确认模块 220可以向发送客户端发送ACK应答,指示接收到该信息。由确认模块220发送的ACK应答 可以进一步包括收到什么信息、收到多少该信息以及/或者该信息是否有损坏的部分或 不完整的指示。未收到关于发送客户端的特定数据传输的ACK可以表示主机200从未收到该数据 传输。主机200未收到数据传输(或其一部分)可以表示主机200与发送该数据传输的客 户端之间的连接或者主机200本身出现了问题。如果特定数量的数据传输未能从主机200 接收ACK应答,则发送客户端可以调用迁移操作,以使一些或全部主机功能迁移到备份主机。协商模块230基于各种参数来协商客户端的备份可行性。例如,可以需要有可行 性的备份主机/客户端候选者具有某个量的可用带宽。客户端的带宽需要足以允许该客户 端管理网络会话中的所有数据。备份可行性可以需要客户端遵循它们所涉及的各种服务质 量标准,例如ping速率、包损失、可用存储、处理器速度等。协商模块230可以进一步确定客户端候选者是否能够连接到网络中的每个其它 客户端。有可行性的备份主机可以需要能够连接到网络中的每个其它客户端并从其接收信 息。备份可行性的参数可以由网络会话的类型确定。例如,由于在游戏环境中可以发生的 状态变化的数量,特定的游戏网络会话可以需要用于备份可行性的特定量的带宽和处理器 速度。较不复杂的事务处理,如简单的文件传递,可以需要较少的带宽和/或处理能力。协商模块230可以被配置为与多个客户端协商备份可行性,从而得到一系列的备 份主机。可选择地,协商模块230可以被配置为在一组客户端中分配针对特定任务的备份 职责。通过提供一系列的备份主机,当网络或主机/客户端条件允许时,主机职责可以从主 机无缝地迁移到第一备份主机,到第二备份主机等。备份主机职责和/或特定职责的顺序 可以基于客户端连接到主机的顺序来指定。可选择地,顺序和/或职责可以基于其它因素, 诸如带宽或服务质量。主机信息数据库240可以存储有关主机、客户端或网络会话的信息。存储在主机 信息数据库240中的信息可以允许计算设备执行某些主机职责,诸如连接到网络会话中的 其它客户端。这种主机信息可以包括网络名称、网络中的客户端的网际协议(IP)地址和防 火墙信息。当发生诸如客户端与网络断开或新客户端加入网络等事件时,主机信息数据库 240可以被更新。例如,新客户端的IP地址将需要被添加到主机信息数据库240。与主机信息数据库240协同工作,备份应用模块250生成可以在客户端上、下载、 安装和执行的应用。该应用为客户端提供某种操作功能,除了满足基本的可行性要求外,客 户端可能还需要该功能以便于其充当备份主机。该应用可以构造客户端以连接到网络会话 中的其它客户端并且与其交换数据。可选择的轮询模块260可以被构造为轮询网络中的所有客户端。轮询模块260可 以被用于就连通性而轮询客户端。就连通性而轮询可以包括向网络会话中的每个客户端 发送小数据包,从已经接收到数据包的客户端接收应答/确认,以及确定哪些客户端在与 主机200通信方面有问题。轮询模块260可以按照周期性的间隔自动轮询客户端。轮询模块260也可以被 配置为当发生特定事件时轮询客户端,特定事件诸如新客户端加入网络会话或指示通信 中断(例如,客户端未确认由主机200发送的数据)。轮询模块260的轮询操作可以类似 于周期性的心跳,如美国专利公开2003-0204566号“Multi-user Application Program Interface”中所描述的那样,其公开内容先前已通过引用而加入。主机200还可以包括计时器270。计时器270可以被配置为测量在事件之后已经 过去了多少时间。主机200可以使用计时器270来确定像由轮询模块260生成的数据传输 那样的数据传输与对该数据传输的确认之间的时间。这种信息可以用来确定是否终止到特 定客户端的连接。如果主机200在由计时器270测量的一段时间内没有从特定客户端接收 到确认或轮询响应,则主机200可以终止与该客户端的连接。
由备份应用模块250生成的应用可以进一步包括某种类似于轮询模块260和计时 器270的功能。与可以寻求确定是否将特定客户端从网络会话中排除出去的主机200不同, 该“心跳”功能可以由被指定为备份主机的客户端用来确定主机200何时不再能够或已经 连续不能履行某些主机职责。主机200不能或未能履行某些职责可通过连续没有收到可以 由确认模块220生成的ACK或心跳来指示。主机200还可以包括NAT模块280。NAT模块280的执行可以允许NAT简档信息 的收集、共享和接收。NAT模块280的执行可以类似地允许利用NAT简档信息来确定网络中 的最有可行性的主机。NAT简档信息可以存储在存储器、专用数据库或诸如主机信息数据库 240的其它数据库中。主机200 (和任何数量的客户端)可以驻留在网络地址翻译器之后,该网络地址翻 译器为特定计算设备将内部IP地址翻译成公共IP地址。公共IP地址是由网络中的其它 计算设备看到的地址。在一些实施例中,主机200或其它计算设备可以包含网络地址翻译 器。然而,在一些网络中,可以根本不使用NAT。NAT简档信息可以包括有关使用的NAT(如 果有)的类型、NAT从事通用即插即用(UPnP)的能力、NAT维护端口保留的能力以及NAT的 端口可预测性的信息。在一些情况下,主机200 (或网络中的其它计算设备)可以基于诸如服务质量信息 的附加信息来应用补充仲裁过滤器,以对从两个或更多个同样可能的候选设备中确定主机 设备进行仲裁。服务质量信息可以包括诸如客户端的Ping时间、带宽表现、地理、等待时 间、IP提供商等因素。这种附加信息也可以被存储在存储器或数据库(专用或其它)中。图3A示出用于网络数据分发的示例性系统300的实现,其可以包括网络地址翻译 器(未示出)。主机200连接到多个客户端310A-310D。客户端310A已与主机200成功协 商备份可行性并且经由连接320收到主机信息。利用主机信息,客户端310A连接到网络中 的其它客户端,即客户端310B-310D。连接330允许客户端310B-310D直接(即不通过主机 200)与客户端310A通信。如果每个相应的客户端310B-310D难以将数据发送到主机200, 则客户端310B-310D可以使用连接330来与客户端310A交换该数据。客户端310B-310D 也可以自动向客户端310A发送数据,而不考虑到主机200的数据传输的任何困难。图3B示出用于网络数据分发的示例性系统的另一种实现,其可以包括网络地址 翻译器(未示出)。特别地,图3B示出这样的用于网络数据分发的示例性系统其中主机 200和客户端310D之间的通信被中断。具体而言,所示的主机200和客户端310D之间的数 据传输340被示出为不成功。尽管客户端310D正在试图将数据传输340发送到主机200, 但是有故障的连接阻止了主机200收到该传输。由于客户端310A是网络会话的备份主机,客户端310D可以在备份数据传输350 中将旨在给主机200的相同数据直接发送到客户端310A( S卩,不通过主机200)。客户端 310A然后可以在数据传输360中将该数据发送到主机200。在该特定实施例中,由于有故 障的连接将客户端310D与主机200分开,客户端310A用作客户端310D和主机200之间的 代理。于是,虽然是通过客户端310A接收的,主机200仍可以将来自客户端310D的该数据 分发到客户端310B和310C。可选择地,与客户端310D与主机200之间的连接仅仅有缺陷 相比,如果例如主机200不能维持主机职责,则客户端310A可以将数据发送到客户端310B 或 310C。
由于主机200与客户端310D之间的通信已经中断,客户端310D可以需要通过客 户端310A获得会话数据。客户端310A可以充当针对主机200和客户端310D的数据接收 和发送的中介,还可以代表两个计算设备中的任何一个做出数据请求。图4是描述用于网络数据分发的示例性方法400的流程图,该方法可以包括使用 NAT简档信息。图4中所标识的步骤(及其顺序)是示例性的,也可以包括其各种替换、等 同或衍生,但不限于其执行顺序。图4的处理步骤(及其各种替换)可以利用硬件或软件 来实现,包括包括具有处理器可以执行的指令的机器可读或计算机可读存储介质(例如光 盘、存储卡或硬驱动器)。在步骤410中,主机(例如主机200)建立网络会话。主机可以设置某些关于谁可 以加入网络会话的参数以及关于如何进行网络会话的各个方面。主机可以建立仅特定客户 端或受邀客户端可以加入的专属(private)网络会话。可选择地,主机可以建立对公众开 放且任何客户端可以加入的网络会话。在步骤420中,多个客户端通过连接到主机来加入网络会话。如果主机已经设置 了某些关于谁可以加入网络会话的参数,则客户端在被允许连接主机或参加网络会话之前 需要满足那些参数。在步骤430中,通过图2的协商模块220协商备份可行性。一个或更多个客户端 可以是具有用作备份主机的能力和资源的有可行性的备份主机。备份可行性可以在客户端 一加入网络会话时就协商。可以对备份可行性的各个方面,包括带宽和服务质量进行评价, 以确定特定客户端是否能够用作备份主机。可以类似地考虑NAT简档信息。依据协商模块 220的要求,在网络会话的客户端中可以有一个或多于一个的有可行性的备份主机、或者没 有有可行性的备份主机。也可以分配备份职责。在步骤440中,对备份职责进行分配。在有多个作为有可行性的备份主机的客户 端的情况下,需要针对顺序和/或特定职责在那些客户端之间分配备份职责。网络会话 中的客户端可以将其数据发送到可能已经由主机标识出的第一个有可行性的备份主机, 或者通过广播或其它通信发送到第一个认定的备份,如美国专利公开2003-0217135号 "Dynamic PlayerManagement”(其公开内容先前已通过引用被包含)中所示例的那样。如 果第一个有可行性的备份主机不能或变得不能用作备份主机,则其它各客户端可以将它 们的数据发送到第二个有可行性的备份主机以加入网络会话。可以利用本文和/或上述 "Dynamic Player Management”申请中所公开的手段来指示与第二备份主机通信的需要。在步骤450中,确定特定的客户端是否可以连接到网络会话中的每个其它客户 端。备份主机需要能够连接到会话中的每个其它客户端。如果第一客户端不能连接到第 二客户端,则第一客户端不能用作网络会话的备份主机。例如,第一客户端可能有防火墙问 题,将阻止第一客户端进行某些类型的连接。如果由于任何原因,潜在的备份主机不能连接 到另一个客户端,则该方法可以返回到步骤440并重新分配备份职责。—旦已经确定客户端是有可行性的备份主机并且可以连接到网络会话中的所有 其它客户端,该方法前进到步骤460。在步骤460中,备份信息被下载到有可行性的备份主 机。通过向备份主机提供备份信息,主机可以脱离网络,并且备份主机能够提供网络会话中 的其它客户端所需的任何信息。备份信息可以作为如在图2的备份应用模块250的情况下 讨论的便于无缝主机转换的应用的下载和安装的一部分而提供。
在步骤470中,可以开始网络数据分发。如图3A所示,数据传输可以在主机和客 户端之间进行。如图3B进一步示出的,数据传输也可以在两个客户端之间进行,从具有主 机连通性问题的客户端到能够用作备份主机的客户端。此外,该备份主机可以将该数据转 发到主机上或根据请求直接发送到其它客户端。不论通过什么连接,数据必须被转送,数据 被提供给需要该数据的那些计算设备。尽管已参照示例性实施例描述了本发明,本领域技术人员将理解可以在本发明 的真实精神和范围内做出各种变化,并且可以用等同来替换其要素。另外,可以在本发明的 基本启示下做出各种修改,各种备选的系统可以用于实现本文所述的各种方法,各种方法 可以用于实现源自上述系统的某些结果。
权利要求
一种用于维护网络数据分发的方法,包括建立主机和多个客户端之间的连接,其中,所述主机和所述多个客户端的每个客户端之间交换的数据在接收到时被确认;至少基于建立所述主机和所述多个客户端之间的连接时、在所述主机和所述多个客户端之间共享的网络地址翻译(NAT)简档信息来确定所述多个客户端中的第一客户端的备份可行性;以及向所述第一客户端发送主机信息,其中,所述第一客户端至少基于所述主机信息来建立与所述多个客户端中的所有其它客户端的连接,并且如果所述主机和所述多个客户端中的第二客户端之间的通信中断,则所述第一客户端从所述第二客户端接收数据。
2.如权利要求1所述的方法,还包括当在所述主机和所述多个客户端之间共享NAT 简档信息之前经由STUN服务器收集NAT简档信息。
3.如权利要求1所述的方法,其中,在利用客户端_服务器结构的所述主机和所述多个 客户端之间共享所述NAT简档信息。
4.如权利要求1所述的方法,其中,在利用对等结构的所述主机和所述多个客户端之 间共享所述NAT简档信息。
5.如权利要求1所述的方法,还包括利用NAT简档信息为所述多个客户端中的每个 客户端分配优先级值,其中,至少基于NAT简档信息来确定所述多个客户端中的所述第一 客户端的备份可行性包括所述优先级值的使用。
6.如权利要求5所述的方法,还包括当所述第一客户端具有与分配给所述多个客户 端中的另一个客户端的优先级值相等的优先级值时,解决优先级争端。
7.如权利要求6所述的方法,其中,解决所述优先级争端包括参考与分配给所述多个 客户端中的其它客户端的顺序值相比所述第一客户端的更高的顺序值,所述顺序值预先已 经分配给所述多个客户端中的每个客户端。
8.如权利要求1所述的方法,其中,所述多个客户端中的每个客户端的NAT简档信息包 括NAT类型,并且其中,至少基于NAT简档信息来确定所述多个客户端中的所述第一客户端 的备份可行性包括所述NAT类型的使用。
9.如权利要求1所述的方法,其中,所述多个客户端中的每个客户端的NAT简档信息包 括有关NAT是否支持通用即插即用(UPnP)的信息,以及其中至少基于NAT简档信息来确定 所述多个客户端中的所述第一客户端的备份可行性包括有关NAT是否支持UPnP的信息的 使用。
10.如权利要求1所述的方法,其中,所述多个客户端中的每个客户端的NAT简档信息 包括有关NAT的端口可预测性信息的信息,以及其中至少基于NAT简档信息来确定所述多 个客户端中的所述第一客户端的备份可行性包括所述端口可预测性信息的使用。
11.如权利要求1所述的方法,其中,所述多个客户端中的每个客户端的NAT简档信息 包括有关NAT的端口保留信息的信息,以及其中至少基于NAT简档信息来确定所述多个客 户端中的所述第一客户端的备份可行性包括所述端口保留信息的使用。
12.如权利要求1所述的方法,其中,通过在所述第二客户端向所述主机发送数据之后 的一时间段内没有从主机到所述第二客户端的确认来识别中断的通信。
13.如权利要求1所述的方法,还包括轮询所述多个客户端以确定所述主机和所述多个客户端中的每个客户端之间的连通性。
14.如权利要求13所述的方法,其中,由所述轮询的结果来指示中断的通信。
15.如权利要求1所述的方法,还包括从所述主机向所述多个客户端中的每个客户端 发送有关中断的通信的指示。
16.如权利要求1所述的方法,还包括基于中断的通信终止所述主机和所述第二客户 端之间的连接。
17.如权利要求1所述的方法,其中,协商所述第一客户端的备份可行性包括确定所述第一客户端的带宽。
18.如权利要求1所述的方法,其中,协商所述第一客户端的备份可行性还包括确定所 述第一客户端是否能够连接到所述多个客户端中的每个所述其它客户端。
19.如权利要求1所述的方法,其中,向所述第一客户端发送主机信息包括发送提供所 述主机信息的应用。
20.如权利要求1所述的方法,还包括至少基于建立所述主机和所述多个客户端之间的连接时、在所述主机和所述多个客户 端之间共享的NAT简档信息来确定所述多个客户端中的第三客户端的备份可行性;以及向所述第三客户端发送主机信息,使得所述第三客户端至少基于所述主机信息和所述 NAT简档信息来连接到所述多个客户端中的所有其它客户端,并且如果所述第一客户端和 所述第二客户端之间的通信中断,则所述第三客户端从所述第二客户端接收数据。
21.如权利要求20所述的方法,其中,所述第二客户端还配置为至少基于与所述主机 建立连接的顺序,在向所述第三客户端发送所述数据之前向所述第一客户端发送所述数 据。
22.如权利要求20所述的方法,其中,所述第二客户端还配置为至少基于所述第一客 户端的带宽和所述第三客户端的带宽,在向所述第三客户端发送所述数据之前向所述第一 客户端发送所述数据。
23.一种用于维护网络数据分发的系统,包括主机,配置为连接到多个客户端,其中,所述主机从所述多个客户端中的每个客户端接 收数据并确认所述数据的收到;第一客户端,配置为接收主机信息,其中,所述第一客户端至少基于建立所述主机和 所述多个客户端之间的连接时、在所述主机和所述多个客户端之间共享的网络地址翻译 (NAT)简档信息来连接到所述多个客户端中的所有其它客户端,以及其中,所述主机进一步 配置为协商所述第一客户端的备份可行性;以及第二客户端,配置为在所述主机和所述第二客户端之间的通信中断的情况下向所述第 一客户端发送数据。
24.如权利要求23所述的系统,其中,中断的通信通过在所述第二客户端向所述主机 发送数据后的一时间段内没有来自所述主机的确认来指示。
25.如权利要求23所述的系统,其中,所述第二客户端进一步配置为向所述主机重新 发送所述数据。
26.如权利要求23所述的系统,其中,所述第二客户端进一步配置为向所述多个客户 端中的每个客户端通知所述主机和所述第二客户端之间中断的通信。
27.如权利要求23所述的系统,其中,所述第二客户端进一步配置为终止所述主机和 所述第二客户端之间的连接。
28.如权利要求23所述的系统,其中,所述主机进一步配置为向所述多个客户端轮询 连通性。
29.如权利要求23所述的系统,其中,所述主机进一步配置为向所述多个客户端中的 每个客户端通知所述主机和所述第二客户端之间中断的通信。
30.如权利要求29所述的系统,其中,所述主机进一步配置为终止所述主机和所述第 二客户端之间的连接。
31.如权利要求23所述的系统,其中,所述主机进一步基于所述第一客户端的带宽来 协商备份可行性。
32.如权利要求23所述的系统,其中,所述主机进一步基于第一客户端是否能够连接 到所述多个客户端中的每个其它客户端来协商备份可行性。
33.如权利要求23所述的系统,其中,所述主机进一步配置为向所述第一客户端发送 所述主机信息。
34.如权利要求33所述的系统,其中,所述主机通过发送应用来发送所述主机信息,该 应用被配置为提供有关所述多个客户端中的每个所述其它客户端的信息。
35.如权利要求23所述的系统,其中,所述多个客户端中的第三客户端被配置为接收 主机信息,使得所述第三客户端至少基于建立所述主机和所述多个客户端之间的连接时、 在所述主机和所述多个客户端之间共享的所述NAT简档信息连接到所述多个客户端中的 所有其它客户端。
36.如权利要求35所述的系统,其中,所述第二客户端被进一步配置为在所述第一客 户端和所述第二客户端之间的通信被中断的情况下向所述第三客户端发送数据。
37.一种用于维护网络中的数据分发的计算设备,包括确认模块,配置为发送确认从客户端接收到的数据的应答;协商模块,配置为至少基于共享的网络地址翻译(NAT)简档信息来协商第一客户端的 备份可行性;以及备份应用模块,配置为向所述第一客户端发送提供主机信息的应用,使得所述第一客 户端至少基于所述NAT简档信息连接到所述多个客户端中的所有其它客户端并且从第二 客户端接收数据。
38.一种其上包含程序的计算机可读存储介质,所述程序能够由处理器执行,以执行用 于组消息传送的方法,所述方法包括将主机连接到多个客户端,使得所述主机和所述多个客户端中的每个客户端之间交换 的数据在收到时被确认;至少基于建立所述主机和所述多个客户端之间的连接时、在所述主机和所述多个客户 端之间共享的网络地址翻译(NAT)简档信息来确定所述多个客户端中的第一客户端的备 份可行性;以及向所述第一客户端发送主机信息,使得所述第一客户端至少基于所述主机信息来连接 到所述多个客户端中的所有其它客户端,并且所述第一客户端从所述多个客户端中的第二 客户端接收数据。
39.如权利要求38所述的计算机可读存储介质,其中,所述程序还包括用于终止所述 主机和所述第二客户端之间的连接的可执行指令。
全文摘要
本发明提供了用于维护网络数据分发的系统和方法。网络数据可以以这种方式分发在没有显著的数据损失的情况下,允许网络会话经受住主机和客户端之间的中断的通信。本发明的实施例使一个或更多个客户端能够用作网络会话的备份主机,这种确定包括使用NAT简档信息。当其它客户端向主机发送数据时,如果有任何中断通信的指示,它们也可以向一个或更多个备份主机发送该数据。
文档编号G06F15/16GK101861575SQ200880115471
公开日2010年10月13日 申请日期2008年10月1日 优先权日2007年10月5日
发明者亚当·P·哈里斯, 罗纳德·J·罗伊, 马克·L·雅各布 申请人:索尼电脑娱乐美国公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1