具体实施方式
下面结合附图提供的详细描述旨在作为对本示例的描述,而非表示用于解释或利用本示例的唯一形式。该描述阐述本示例的功能以及用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同的示例来完成。
图1示出一示例应用级多播(ALM)系统100。多播是将共同的消息通信给选择的一组接收器的过程。与需要网络路由器来确定分组传递路径并在必要时复制分组的IP多播不同,应用级多播将所有功能性推到终端系统。ALM不要求来自网络路由器的任何特殊支持;因此可容易地在现有网络基础架构之上采用它。如图1所示,系统100包括在设备103-105中的多方交互式应用113-115。多方交互式应用被配置为使交互会话的成员能够在网络135中通过多播彼此交互。在本示例中,多方交互式应用113-115可以是能够实时交互的任意类型的应用,诸如用于视频会议、多人游戏、远程教育、虚拟会诊、语音通信等等的应用。交互会话包括允许多方交互式应用113-115交换数据的任何会话。例如,交互会话可以是视频会议、音频会议、多媒体会议、在线游戏或涉及多用户的任何事件。服务器130中的会话控制器131被配置为在多方交互式应用113-115之间建立通信会话。
对于通信的实际过程,多方交互式应用113-115被配置为与设备103-105中的ALM模块123-125交互。ALM模块123-125配置为用应用级网络监视和数据分组路由来处理多方交互式应用113-115之间的通信。具体地说,ALM模块123-125被配置为确定可用的传输机制并且以可用的最适合的机制发送数据分组。ALM模块123-125还被配置为监视设备103-105之间的连接状态并且按照最近更新的状态路由数据分组。下面结合图2讨论示例ALM模块。
在一示例操作中,多方交互式应用113从用户接收请求以发起与设备104-105中其他用户的交互会话。多方交互式应用113建立与会话控制器131的会话,会话控制器131提供有关会话的信息给多方交互式应用114-115,以供其他成员连接该会话中的发起用户所用。多方交互式应用113-115随后与ALM模块123-125交互以建立彼此的连接(即链路)。ALM模块123-125随后确定相对于彼此的连接状态,诸如延迟、连通性、可用的传输协议等等,并且向彼此发送该信息。基于该信息,每一ALM模块计算向交互会话中每一其它设备发送数据分组的路由。
图2示出图1所示的ALM模块123的示例架构。ALM模块123允许节点(例如运行在多方交互式应用上的设备)在具有多个成员的交互会话中与其它节点通信。具体地,多方交互式应用可以依赖ALM模块123来主动管理数据分组路由,而不必仅依赖于直接的一对一连接。ALM模块123能够从多种协议类型中选择以处理数据分组路由。这些协议一般包括传输控制协议(TCP)、用户数据报协议(UDP)和与IP多播有关的协议。UDP是适于媒体流传输的轻量协议。TCP是适于消息传递的可靠协议。在同一交互会话中的终端系统可被配置为建立彼此之间的TCP和UDP信道两者。连接尝试可被发送到各类网络地址,诸如客户机在本地看到的专有地址、服务器查明的公共地址、客户机从支持通用即插即用(UPnP)的网络地址转换(NAT)检索到的公共地址、IP多播地址等等。
为了允许藏在不同NAT背后的终端系统之间进行UDP通信,定义了UPD穿孔协议并且该协议与经NAT的UDP简单穿越(STUN)相似。在一个示例实现中,每一节点发送一定数量的UDP分组(例如10个分组)到交互会话中其它节点的每一可用网络地址。如果发送节点在发送所有这些分组到一特定节点之后不能获得应答,则该发送节点将假设该特定节点不能经由UDP到达。
除了TCP和UDP之外,ALM模块123在IP多播可用时使用IP多播。IP多播是用于一对多数据分发的有效机制。然而,IP多播一般因为固有的问题而不是全局布置的。通常,IP多播具有不调合的布置,大部分在专用网中。当IP多播可用时使用IP多播可以大大提高数据传递的效率。在一示例实现中,每一交互会话与一IP多播地址相关联,后者可由发起该会话的节点或服务器随机产生。该地址可注册在服务器的会话控制器上并在其它节点参加时分发给其它节点。参加该交互会话的每一节点发送出其自己的信息。如果节点通过IP多播信道从同一会话中的成员收到探查分组,则该节点可停止TCP/UDP探查并使用IP多播用于所有后续的通信。
如图2所示,ALM模块123包括应用级中的组件。这些组件可在会话层202、成员层203和路由层204中实现。ALM模块123还可包括网络级中的组件。这些组件可包括在连接层208和传输层209中。
ALM模块123被配置为允许用户发起并同时参加多个交互会话。例如,ALM模块123可被配置为支持多方A/V会议应用,该应用允许用户与不同组的成员节点建立多个会议会话。ALM模块123还允许用户同时出席多个会议会话。在会话层202中,会话对象如会话对象214和215被配置为维护交互会话和每一会话的成员或出席者列表。会话对象214-215由会话管理器212管理。
因为ALM模块123包括不同层中的组件,故连接层208中的组件可以不知道成员节点正在参加哪一个交互会话。因而,即使当一个节点出现在两或多个会话中,ALM模块123可仅创建一个节点连接模块实例并且为每一类型的连接仅维护一个连接。
在成员层203中,每一成员模块227-229被配置为保持成员的应用级属性,如成员ID、其正在参加的交互会话等等。通常,在应用级中成员模块227-229与网络级中节点连接模块247-249之间存在一对一的映射。每一成员模块227-229还被配置为管理来自相应成员的媒体数据,并且如果使用信道编码则装配A/V分组。
本地成员模块225被配置为管理由同一节点中的多方交互式应用生成的本地流223。例如,本地成员模块225可从节点中的媒体捕捉模块接收数据流并使用由成员模块227-229提供的信息将这些流发送到交互会话中的其它节点。
在路由层204中的组件用作应用级上的支持多播的路由器。通常,进出ALM模块123的分组经过路由层204。路由级204中的组件将应用定义的分组转发到交互会话中的其它成员。可使用分组中的目的地ID来选择下一跳以转发该分组。如图2所示,路由层204中的组件可包括网络监视器234、路由管理器236和套接字238。
路由管理器236被配置为处理ALM模块123的数据分组路由。由ALM123处理的数据分组可具有多个目的地。例如,本地节点可以不是唯一的目的地,甚至不是其收到的分组的目的地。因而,对于任何进入的分组,路由管理器236被配置为检查本地节点是否为目的地之一。如果是,则路由管理器236将分组转发给上面的层。路由管理器236还被配置为检查该分组是否需要被中继到其它节点。路由信息可在由路由管理器236维护的本地路由表中找到或者可由分组携带。
ALM模块123配置有应用级连接状态路由。每一节点周期性地测量其邻近节点的网络动态并且将该信息传播到同一交互会话中的所有其它节点。网络监视器234被配置为探查和传播网络信息。网络监视器234还配置为维护同一交互会话中节点的图。每当连接状态消息到达,网络监视器234就使用该信息来更新该图。
当连接状态改变时,路由管理器236被配置为以任意方法重新计算每一活动流的路由,这些方法如应用Dijkstra的SPF算法、扩展最宽路径优先(BPF)算法等。路由管理器236还可在与活动流相关联的节点的订阅状态改变时重新计算该活动流的路由。路由信息保存在路由表中。不同于每分组的IP路由,ALM 123配置有每一流的特定源路由。数据传递路由是在源处计算的并且被转发到所有中继节点。因而,路由管理器236不仅为本地流也为它需要中继的流维护路由表。
在网络级的连接层208中,每一节点连接247-249被配置为维护至一特定节点的可用连接,如TCP、UDP和IP多播。节点连接247-249提供抽象的网络信道用于与关联于交互会话的每一节点的通信。可用连接的类型对于路由层204及以上层一般是透明的。由本地流223或网络监视器224生成的外出分组一般将通过路由表以获得下一跳信息。然后,这些分组被传递到相应的节点连接模块247-249。节点连接模块247-249将自动选择最适合的连接以按照指定的服务质量(QoS)要求发送分组。
节点连接模块247-249是由节点连接管理器244管理的,它被配置为添加、删除和更新模块实例。在一个实现中,进入分组一般不直接去节点连接模块247-249。相反地,进入分组可被传递至节点连接管理器244,该连接管理器244被配置为维护每一TCP套接字的接收缓冲区,因为TCP分组可以由下层网络组合或分割。节点连接管理器244可被配置为保持进入的比特流并且直到收到完整的分组为止才将它们传递给节点连接模块247-249。对于UDP分组,节点连接管理器244可被配置为解包这些分组并且在将分组传递至正确的节点连接模块之前检索源ID。
在传输层208中,ALM模块123被配置为使用节点中可用的传输机制。在本示例中,节点中的传输机制包括TCP 253、UDP 254、IP多播255。
ALM模块123可暴露应用程序接口(API),这些API允许诸如图1中的多方交互式应用113之类的应用与ALM模块123交互。下面是可由ALM模块123的套接字238暴露的示例API:
InitSocket()初始化应用级套接字。
CloseSocket()关闭应用级套接字。
AddMember(MemberID id,ADDRESS地址)调用该接口来通知路由层和连接层交互会话中的新成员节点。在不调用该接口的情况下,路由层不能向该成员发送任何数据并且不能从该成员接受任何数据。
UpdateMember(MemberID id,ADDRESS地址)调用该接口来更新成员节点的地址信息。
CloseMember(MemberID id)调用该接口来通知路由层和连接层一成员节点的离开。在进行该方法之后,本地站点可不再向该成员发送任何数据。
CreateStream(StreamType类型,StreamInfo信息)调用该接口来注册一新的流如音频和视频。StreamInfo包含流的比特率。
UpdateStream(StreamID id,StreamInfo信息)调用该接口来更新特定流的StreamInfo。
DeleteStream(StreamID id)调用该接口来撤消注册一现有流。相应的路由信息可从路由表中删除。
AddSourceMembership(MemberID id,StreamType类型)如果用户想要订阅一特定成员节点的特定流则调用该接口。
DropSourceMembership(MemberID id,StreamType类型)如果用户想要取消订阅一特定成员节点的特定流则调用该接口。
AddReceiver(StreamType type,MemberID id)如果本地站点收到来自成员ID的订阅消息则调用该接口。
RemoveReceiver(StreamType类型,MemberID id)如果本地站点收到来自成员ID的取消订阅消息则调用该接口。
UpdateReceivers(StreamType类型,MemberIDSet idSet)调用该接口来更新一特定流的接收器设置。
Send(StreamID id,LPVOID数据,UINT长度)调用该接口来发送一特定流的数据。应用层不必指定接收器设置,因为ALM 123可实现为针对每一流的路由协议。每一流的接收器设置由路由层维护。
BroadcastMessage(Message消息)向ALM组中的所有成员广播控制消息,无论它们是否已经订阅任何本地流。
SetOnReceiveCallback()调用该接口来设置回调函数,以便接收应用级数据,诸如来自其它会议成员的音频和视频。
下面是可由路由管理器236暴露的示例API:
GetRoutingTopo(MemberID id,StreamType t,CTopology & tp)该接口允许开发者/用户可视化应用级传输路由。拓扑可保存在存储器块中并且可用与路由级协议中定义的相同的格式来实现。
下面是可由网络监视器234暴露的示例API:
SetBWMeasurementData(LPVOID data[],UINT unitLen,UINT分组)该接口允许开发者设置用于带宽测量的数据。数据在应用级被分割和编码(如果开发者想要进行信道编码的话)。
SetBWDataProcessCallback()如果开发者想要使用带宽测量数据,则可调用该接口来设置回调函数。
图3示出用于应用级多播系统的示例路由图300。示例路由图300包括6个节点,它们正在参加一个由应用级多播系统处理的交互会话。通常,节点103基于网络信息如由网络监视器收集的节点之间的连接状态来建立图300。示例路由图300表示由节点103产生的或者发送到节点103用于关连子节点104-108的流的数据分组路由。如图3所示,节点103被配置为分别通过连接312和313直接发送数据分组至节点104和105。连接312和313可用任何类型的协议来实现。例如,连接312和313取决于QoS要求可使用TCP、UDP或IP多播。数据分组路由可用各种方式实现。例如,路由信息如路由图300或路由表,可通信至中继节点如节点105。路由信息也可包括在数据分组中,诸如包括源和目的地标识符。
在示例路由图300中,节点103依赖节点105用连接314-316来将数据分组转发至节点106-108。例如,节点105-108可以是其中IP多播可用的专用网的一部分。因而,节点105可被配置为用实现IP多播协议的连接314-316来发送数据分组。
图4示出用于应用级多播系统的示例协议分层模型400。示例分层模型400允许应用级多播系统定义连接、路由和应用层上的协议。例如,带有应用级首部402和数据412的应用级消息可密封在具有数据413的路由级数据报中。包括路由级首部403和数据413的路由级消息可密封在具有数据414的连接级数据报中。具有首部404的连接级消息随后用传输层协议在具有首部405-406和数据415-416的消息中发送。
图5示出用于应用级多播系统的连接级协议数据分组的示例首部500。通常,连接层是应用级多播系统控制的最低层。在连接层中的消息通常由对应于交互会话中一节点的节点连接管理器或节点连接模块诸如图2中的节点连接模块247-249来处理。
如图5所示,示例连接级数据分组首部500可包括魔法字(magic word)字段、版本字段、可靠性字段、消息ID字段、消息长度字段、发送器ID字段和ACK序列字段。魔法字字段标识应用级多播系统。版本字段示出应用级多播系统的版本。可靠性字段指示当前分组假设为经由可靠传送信道来发送。如果该分组要求可靠传送,并且是从UDP信道收到的,则在收到该消息时需要发送ACK。ACK序列字段包含确认需要ACK的分组的接收所使用的分组的序列号。
消息ID字段包含消息类型信息。在一个示例中,消息类型可定义为:
enum CLP_MESSAGE_TYPE
{
CLP_HEL=0x0001,//问候
CLP_PRB=0x0002,//用于测量RTT的探查消息
CLP_APR=0x0004,//对通信消息的回答
CLP_ACK=0x0008,//对需要ACK的分组的确认
CLP_OTH=0x0010,//其它
}
消息长度字段示出分组的长度,包括连接层首部500。发送器ID字段包含分组发送者的成员ID,它可以是与分组源不同的身份。
在一个示例实现中,魔法字字段为6位;版本字段为2位;可靠性字段为1位;ACK序列字段为8位;消息ID字段为16位;消息长度字段为16位;以及发送器ID字段为128位。
如上所述,消息类型可包括问候消息(CLP_HEL)、探查消息(CLP_PRB)、回答探查消息(CLP_APR)和确认消息(CLP_ACK)。问候消息主要用于建立连接。在节点接受TCP连接请求之后,它从连接接收到的第一个消息一般是问候消息。否则,主机节点可关闭该连接。主机节点也可使用问候消息通过UDP和IP多播信道来查验交互会话中的其它节点。在收到问候消息时,节点连接管理器可检查是否已经存在与数据分组的首部中的发送器ID相关联的节点连接模块。如果是,则节点连接管理器更新该节点连接模块的连通性信息(例如,如果从UDP收到问候消息则将UDP信道状态设置为“可用”)。否则,节点连接管理器创建新的节点连接模块实例并且将它与分组首部中的发送器ID相关联。问候消息的主体是空的,因为发送器ID(它始终与问候消息中的源ID相同)已经携带在连接层协议分组首部中。
问候消息也可用作保持活动消息。例如,主机节点可每5秒发送问候消息至每一可用的UDP和IP多播信道以保持链路活动。如果主机节点在一定的时间内(例如30秒)还没有收到来自特定链路的问候消息,则主机节点可假设连接断了。在这种情形中,节点连接模块实例将试着重新连接。
探查和回答探查消息可用于测量端到端的延迟。两个消息可具有相同的主体结构:一个包含时间戳的DWORD字段。在一个示例实现中,交互会话的主机节点每10秒发送探测消息至每一可用的UDP信道。在分组中的时间戳指示发送时间。在收到该消息时,交互会话中的成员节点将消息ID改为回答探查并且将该分组立即发送回去。当主机节点收到返回的分组时,它可通过从当前时间中减去分组中所携带的时间戳来计算RTT。结果被报告给网络监视器。
在应用级多播系统中,基本上存在两种分组:控制消息和媒体流。尽管媒体数据的丢失影响通信质量,但控制消息的丢失通常是破坏性的。例如,订阅请求的丢失使订阅者保持等待;网络状态更新的丢失可导致网络拥塞。因而,可靠的TCP信道通常较佳地用于传送控制消息。
然而,由于防火墙和NAT的存在,TCP连接并不始终可用。有时,UDP是两个终端系统进行通信的唯一可用信道。在一个示例实现中,应用级多播系统可使用与TCP中的“超时并重新传送”方案相似的轻量机制来确保在UDP上的可靠传递。可使用连接级协议首部中的可靠性字段。在该字段中的指示(例如在1位的可靠性字段中的1)指示数据分组需要确认。滑动窗口机制不优选,因为不必保证按序列传递。
CLP_ACK消息用于确认需要ACK的分组的收到。例如,分组的主体可包含一个序列号,它指示该成员节点已经收到哪一个分组。可为序列号使用较小的字段(例如8位),因为需要ACK的分组的量不会大。
CLP_OTH消息可用于指示一个分组属于上面的层。在这种情形中,连接中的组件可去除连接级协议首部并且将该数据传递至路由级协议。
图6示出用于应用级多播系统的路由级协议数据分组的示例首部600。如图6所示,示例路由级数据分组首部600可包括源ID字段、消息类型字段、媒体类型字段、接收器数量字段、拓扑长度字段、接收器列表字段、序列号字段、比特率字段和拓扑字段。源ID字段包含分组源的成员ID。消息类型字段包含消息类型信息。在一个示例中,消息类型可定义为:
enum RLP_MESSAGE_TYPE
{
RLP_LKST=0x01,//链路状态信息
RLP_SBSC=0x02,//订阅请求
RLP_UNSB=0x04,//取消订阅请求
RLP_ACTP=0x08,//接受拓扑
RLP_RJTP=0x10,//拒绝拓扑
RLP_BWMS=0x20,//带宽测量
RLP_BWRP=0x21,//带宽测量报告
RLP_STRM=0x40,//媒体流
RLP_APPM=0x80;//应用级消息
RLP_QUIT=0xFF,//离开会话
}
媒体类型字段指示包括在数据分组中的媒体数据类型。接收器数量字段指示该分组的接收器数量。拓扑长度字段指示拓扑字段中条目的数量。接收器列表字段包含条目,其中列表中的每一条目包含成员ID。序列号字段包含拓扑的序列号。流比特率字段包含与拓扑相关联的流的新比特率。拓扑字段包含多播树的拓扑。该字段可包括在RLP_STRM类型的消息中,该消息可包含流的路由信息。
在一个示例实现中,消息类型字段包括8位;源ID字段包括128位;媒体类型字段包括7位;接收者数量字段包括8位;拓扑长度字段包括8位;接收器列表字段中的每一条目包括128位;序列号字段包括32位;流比特率字段包括32位;以及拓扑字段的每一条目包括128位的成员ID和32位的子号码。
图7示出用于应用级多播系统的带有路由级协议链路状态信息的示例数据分组700。通常,路由级协议链路状态数据分组是由监视与关联于交互会话的其它节点连接或链路的节点的网络监视器发送的。网络监视器收集网络动态并且周期性地用路由级协议链路状态数据分组将该信息传播至其它成员节点。如图7所示,示例的路由级链路状态数据分组700可包括链路数量字段、目的地ID字段、RTT字段、可用带宽字段以及更多链路字段。
链路数量字段指示该分组中链路状态条目的数量。每一链路状态条目包含链路的目的地ID、RTT和可用带宽。节点一般发布从该节点发起的链路的链路状态。每一目的地ID字段条目可仅包含结束节点的成员ID。RTT字段和带宽字段分别包括有关来回时间和传送带宽的信息。更多链路字段可包括有关从该节点发起的其它可用链路的信息。
通常,路由级协议链路状态数据分组被传递给网络监视器。基于新的信息重新为每一流计算媒体传递路由。如果路由不同于先前的计算,则可在该媒体类型的所有外出数据分组中携带新的拓扑,直到新的多播树中所有内部节点都接受了该拓扑为止。
具有应用级多播系统的多方交互式应用的用户可选择订阅/取消订阅交互会话中一特定成员的特定媒体流。订阅/取消订阅消息可用于该选择。这些消息可包含媒体类型。对应于源ID和接收器ID的订阅者ID和媒体提供者ID可从路由级协议数据分组首部中检索到。这些消息一般被传递给路由级中的组件。网络动态和订阅状态可输入到路由管理器中。在任一输入中的任何变化可引起多播树的重新计算。
在从关联于交互会话的源节点收到拓扑信息时,接收节点可检查它是否能如拓扑所要求的那样中继流,例如,按照最新更新的可用带宽测量。如果能,则接收节点更新路由表并且发送RLP_ACTP消息至源节点。否则,接收节点保持路由不变并且发送RLP_RJTP消息至源节点。
RLP_ACTP消息可包含拓扑的序列号。该序列号是由源节点生成的并且在分组的拓扑部分中携带。序列号帮助源节点确认所接受的内容是关于最新更新的拓扑的。源节点在从多播树中的所有内部节点收到RLP_ACTP之后停止发送拓扑。
有时,尤其当两或多个源节点在相近时间改变其拓扑时,多个源节点可能要求同一接收节点中继其数据。由于可用带宽是在先来先用的基础上使用的,一些后到的中继请求可能无法满足。在这些情形中,中继请求发送RLP_RJTP消息至源节点。除了被拒绝的拓扑的序列号,分组可包含接收节点的最新链路状态信息。基于该新信息,源节点可重新计算其多播树并且以新的序列号来分发新的拓扑。
图8示出用于应用级多播系统的带有带宽测量信息的示例数据分组800。分组800一般由网络监视器使用以测量数据通信性能。轮次号字段指示分组所属的测量轮次。轮次号字段用于避免混淆来自连续测量过程的分组。序列号字段包含该分组的按序编号。时间戳字段记录发送时间。数据字段包括关联于带宽测量信息的数据。
应用级多播系统允许用户在应用层设置和处理带宽测量数据。应用层指派的数据的示例是用户的显示图像和最近的实时视频的I帧。这些数据可通过暴露的接口传递至网络监视器。默认地,网络监视器可使用无意义数据块用于带宽测量。开发者也可设置用于处理测量数据的回调函数。数据部分的结构可由开发者定义。
图9示出用于应用级多播系统的带有带宽测量报告的示例数据分组900。分组900一般由节点的网络监视器传递至关联于交互会话的其它节点。轮次号字段标识一个特定的测量轮次。增加趋势字段指示是否在一个特定的测量轮次观测到单向延迟的增加趋势。如果在当前轮次中未观测到增加趋势,则发送器可在下一轮次中增加探查率。可用带宽字段记录计算出的所测量路径的可用带宽。
应用级多播系统中的节点可发送其它数据分组至同一交互会话中的其它节点。例如,在离开交互会话之前,节点可通过任何可用的信道发送RLP_QUIT至该会话的所有节点。在收到该消息时,应用级多播系统中的每一节点如果离开的节点已经是其流的订阅者则可清除路由表中的相应条目并且重新计算多播树。
由应用级多播系统处理的媒体流数据可以是音频、视频或任何用户定义的流。在收到RLP_STREAM分组时,路由层中的组件如路由管理器可检查分组是否包括拓扑信息。然后,路由管理器可从本地订阅列表中检查本地用户是否订阅了关联于该分组的流。如果是,则路由管理器可去除路由级协议首部,并且将路由级协议分组传递至应用级协议组件。路由管理器可查找路由表以查看是否要将该分组转发至交互会话中的其它节点。如果是,则路由管理器打包路由级协议首部,并且将该分组向下传递至连接层。
应用级多播系统的应用级组件可以定义较低层可能无法理解的它们自己的消息。当收到这些消息时,路由层组件将其直接传递至应用级。应用级组件被配置为处理媒体流,包括任何用户定义的流。开发者可以按需定义应用级首部。如果使用信道编码,则在应用级中处理分割和重新装配。
图10示出用于在应用级多播系统中与交互会话的节点通信的示例过程1000。示例过程1000可由节点实现以发起和组织交互会话。在框1002,对交互会话的请求被发送至会话控制器。在框1004,接收有关关联于该交互会话的节点的信息。在框1006,建立与这些节点每一个的连接。在框1008,从每一节点接收连接状态信息。在框1010,计算用于发送数据分组至每一节点的路由图。在框1012,将计算出的路由图提供给各节点。在框1014,按这些路由发送内容。在框1016,监视到每一节点的连接状态。将结合图11讨论用于监视连接状态的示例过程。
图11示出用于监视与关联于交互会话的节点的连接状态的示例过程1100。在框1102,标识一数据分组。在判断框1104,作出数据分组是否包含节点的连接状态信息的判断。如果是,则过程1100进行至判断框1106。如果数据分组不包括连接状态信息,则过程1100进行至框1114,在其中处理数据分组。将结合图12讨论用于处理数据分组的示例过程。
在判断框1106,作出连接状态是否已改变的判断。如果否,则过程返回框1102。如果连接状态已经改变,则过程1100继续至框1108,在其中按照改变的连接状态重新计算路由图。在框1110,向各节点提供重新计算的路由。
图12示出用于处理关联于交互会话的数据分组的示例过程1200。数据分组可由关联于交互会话的任何节点来发送。在框1202,接收关联于交互会话的数据分组。在判断框1204,作出分组是否与本地目的地相关联的判断。如果是,则过程1200继续至框1206,在其中将分组转发至多方交互式应用进行处理。过程随后进行至判断框1208。如果分组不与本地目的地相关联,则过程1200也进行至判断框1208。
在判断框1208,作出是否中继数据分组的判断。如果不中继分组,则过程1200返回框1202。如果要中继分组,则过程进行至框1210,在其中标识关联于交互会话的路由图。在框1212,按照路由信息将分组转发至一或多个中继节点。例如,可将分组转发至路由树中的子节点。过程随后返回至框1202。
图13示出用于实现所述系统和方法的示例性计算机设备1300。在其最基本的配置中,计算设备1300一般至少包括一个中央处理单元(CPU)1305和存储器1310。
取决于计算设备的精确配置和类型,存储器1310可以是易失性(如RAM)、非易失性(如ROM、闪存等)或者两者某种组合。另外,计算设备1300还可具有附加的特征/功能性。例如,计算设备1300可包括多个CPU。所述方法可由计算设备1300中的任何处理单元以任何方式来执行。例如,所述过程可由多CPU中的两个CPU并行执行。
计算设备1300还可包括其它存储(可移动和/或不可移动),其中包括但不限于磁或光盘或带。这样的其它存储在图13中由存储1315例示。计算机存储介质包括易失性和非易失性、可移动和不可移动介质,它们是以存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的。存储器1310和存储1315都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备1300访问的任何其它介质。任何这样的计算机存储介质可以是计算设备1300的一部分。
计算设备1300还可包含允许该设备与其它设备通信的通信设备1340。通信设备1340是通信介质的示例。通信介质一般体现为在经调制数据信号如载波或其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“经调制的数据信号”指一种信号,它具有一或多个以将信息编码到该信号中的方式设置或改变的特性。作为示例而非限制,通信介质包括线接介质如线接网络或直接线连接,以及无线介质如声音、RF、红外和其它无线介质。在此使用的术语计算机可读介质包括计算机存储介质和通信介质两者。所述方法可用任何形式编码在任何计算机可读介质,这些形式诸如数据、计算机可执行指令等等。
计算设备1300也可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等的输入设备1335。还可包括诸如显示器、扬声器、打印机等的输出设备1330。所有这些设备是本领域周知的并且不必详细讨论。
本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可存储描述为软件的该过程的示例。本地或终端计算机可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本地计算机可按需下载软件的片断,或者通过在本地机器上执行一些软件指令而在远程计算机(或计算机网络)上执行一些软件指令来分布式地处理。本领域的技术人员将认识到,通过使用本领域技术人员已经的常规技术,软件指令的全部或部分可由专用电路如DSP、可编程逻辑阵列等来执行。