网络端点之间的媒体会话的制作方法

文档序号:12071814阅读:271来源:国知局
网络端点之间的媒体会话的制作方法与工艺

通信网络通常包括不同类型的网络节点,例如用户设备、路由器、网络地址翻译器(NAT)、媒体中继服务器等,这些节点在网络内执行不同的功能。两个进行通信的节点(端点,例如用户设备)之间的通信可以经由网络中的其他节点(中间节点,例如路由器、NAT、和媒体中继服务器)。网络可以具有分层的架构,由此不同的逻辑层提供不同类型的点对点通信服务。每一层是由该层紧接着下面的层(不是最低层)来服务的,并且向该层紧接着上面的层(不是最高层)提供服务。该网络可以是基于分组的网络和/或互联网。

可以在诸如经由通信网络连接的用户设备之类的两个端点之间建立媒体会话,以使得可以经由网络在这些端点之间发送和接收实时媒体。媒体会话的示例是SIP(“会话发起协议”)媒体会话。媒体会话可以是IP语音或视频(VOIP)会话,其中通话的音频和/或视频是在VOIP会话中的端点之间发送和接收的。可以通过网络地址(例如,IP(“互联网协议”)地址)来标识端点和其他类型的网络节点,其中会话是在与端点相关联的传输地址之间建立的。传输地址是网络地址(例如,IP地址)和与该网络地址相关联的端口的组合。

为了建立媒体会话,端点中的一个端点可以向其他端点发送媒体会话请求。在本文中,发起针对媒体会话(例如,音频/视频通信)的请求的端点被称为“进行发起的端点”或等同地被称为“呼叫方端点”。接收并处理来自呼叫方的通信请求的端点被称为“进行响应的端点”或“被叫方端点”。每个端点可以具有多个关联的传输地址,例如本地传输地址、在NAT的公共侧上的传输地址、在中继服务器上分配的传输地址等。在媒体会话建立期间,对于每个端点,相应的地址是针对该端点所选择的以用于在媒体会话中发送和接收数据。例如,可以根据ICE(“交互式连通性建立”)协议来选择地址。一旦建立了媒体会话,媒体就可以在不同端点的这些所选择的地址之间流动。



技术实现要素:

提供了该发明内容以用简化的形式引入在下文的具体实施方式中进一步表述的概念的选择。该发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来限制所要求保护的主题的范围。

本主题的方面针对一种用于在进行发起的端点和进行响应的端点之间产生媒体会话的方法。进行发起和进行接收的端点是经由通信来连接的,所述通信包括网络节点,存在通过网络的多个可用路径,通过上述路径可以建立媒体会话。所述端点可以访问与可用路径相关联的类型度量,所述类型度量传达可用路径的直接性,所述类型度量用于对针对媒体会话可用的路径进行选择。所述方法包括以下步骤。访问指示可用路径的质量的网络信息,所述网络信息是从多个网络节点收集的并且包括来自与进行发起和进行接收的节点不同的网络节点的贡献,所述不同的网络节点具有可用路径的至少部分的当前的可见性和/或过去的可见性。选择数据是基于网络信息而生成的,所述选择数据用于影响所述选择。向端点中的至少一个端点发送选择数据,以便使得端点针对媒体会话而选择较高质量但是较不直接的可用路径而不是较直接但质量较差的可用路径。

附图说明

为了帮助理解本主题并且示出如何实施本主题,现在将仅仅作为示例来参考以下附图,其中:

图1示出了通信系统;

图2示出了用户设备的框图;

图3示出了控制服务器的框图;

图4示出了分层网络架构的表示;

图5示出了网络地址翻译器的操作;

图6A-C分别示出了针对媒体会话的通过网络的第一、第二、和第三路径;

图7示出了针对媒体会话的一组可能的地址对;

图8示出了功能性地表示端点和控制服务器的功能框图;

图9是用于产生媒体会话的方法的流程图。

具体实施方式

现在仅仅作为示例来描述实施例。

图1是通信系统的示意图,其包括:公共网络2,其是具有公共地址空间的基于分组的互联网(即,经互连的个体网络的系统),例如因特网;第一和第二端点,其是由第一和第二用户4a、4b操作的第一和第二用户设备6a、6b;第三和第四端点,其是由第三和第四用户4’a、4’b操作的第三和第四用户设备6’a、6’b;第一和第二媒体服务器14a、14b;以及控制服务器(遥测服务器)12。公共网络2包括多个路由器3,其在公共网络2的不同个体网络(未示出)之间对业务进行路由。

用户设备6a、6’a连接至第一基于分组的专用网络5a并且作为其网络节点,而用户设备6a、6’a连接至第二基于分组的专用网络5b并且作为其网络节点。

专用网络的每个节点在该专用网络的专用地址空间中具有相应的专用网络地址,其中连接至该同一专用网络的其他节点(且仅仅这样的节点)可以使用所述专用网络地址来通过该专用网络(且仅仅通过该专用网络)与该节点进行通信。该地址是专用的在于其不能由未与该同一专用网络连接的设备使用以与该节点进行通信,例如,其不能在公共网络2中被使用。此外,尽管该地址在该专用网络内是唯一的,但是其他的节点可以在不同的网络中(例如,第一和第二用户设备5a、5b可能恰好具有同一专用网络地址,但是其仅可用于在专用网络5a内与第一用户设备6a进行通信并且其仅可用于在第二专用网络5b内与第二用户设备6b进行通信)使用相同的网络地址。

为了使得第一专用网络5a(相应地,第二专用网络5b)的节点能够与公共网络2进行通信,第一(相应地,第二)专用网络经由第一网络地址翻译器(NAT)8a(相应地,第二NAT 5b)而连接至公共网络2。也分别在第一和第二专用网络5a、5b的第一和第二专用地址空间中具有相应的专用网络地址(被称为该NAT专用侧的地址)的每个NAT 5a、5b,还在公共网络2的公共地址空间中具有相应的公共网络地址(被称为该NAT的公共侧上的地址)。因此,不仅第一和第二专用网络5a、5b的节点可以使用这些NAT的专用网络地址来分别与第一和第二NAT 5a、5b进行通信,而且在该专用网络之外的节点也可以使用这些NAT的专用网络地址来与这些NAT 5a、5b进行通信。

NAT(例如,8a、8b)通过将专用网络的专用地址空间映射到公共网络的公共地址空间中来充当专用网络(例如,5a、5b)与公共网络(例如2)之间的接口,由此使得专用网络的节点能够通过公共网络在专用网络之外进行通信。

在专用网络(5a/5b)中的一个专用网络之外的节点可以使用该NAT公共地址经由公共网络2将去往该专用网络的特定的节点的业务送往相关的NAT(8a/8b),其中,该NAT接着经由该专用网络将所述业务转发至该节点。

在下文中详细地描述了NAT的操作。

专用网络5a、5b和公共网络2构成了通信网络1,其中各种用户设备6a、…、6’b、NAT 8a、8b、服务器12、14a、14b、和路由器3是网络节点。通信网络1也是互联网(其包括互联网的个体网络2以及专用网络5a、5b)。

用户设备6a、6b执行通信客户端软件7a、7b(客户端)的相应的实例。客户端使得用户设备6a、6b能够通过网络1在用户设备6a、6b之间建立媒体会话,例如以促进在用户的4a、4b之间的实时通信事件(例如,语音和/或视频通话),以使得用户4a、4b可以通过网络1彼此进行通信,其中在媒体会话中,通话音频和/或视频是在设备6a、6b之间发送和接收的。用户设备6’a、6’b也将客户端软件7’a、7’b的相应的实例执行到类似的效果。

尽管未在图2中示出,但是,用户设备可以通过不包含任何NAT的某一其他机制而连接至公共网络2。例如,用户设备可以经由Wi-Fi连接至专用网络,而经由不包含NAT的移动网络连接至公共网络。

控制服务器12执行控制代码13以用于以在下文中所描述的方式来监测和控制各种用户设备之间的通信的方面。

图2是用户设备6(例如,6a、6b、6’a、6’b)的示意性框图。用户设备6是可以采取多种形式的计算机设备,例如:台式计算机或膝上型计算机、移动电话(例如,智能电话)、平板计算设备、可穿戴计算设备、电视机(例如,智能TV)、机顶盒、游戏控制台等。

用户设备6包括处理器22,其上连接了存储器20、一个或多个输出设备(例如,显示器24和扬声器26)、一个或多个输入设备(例如,相机27和麦克风28)、以及网络接口24(例如使得用户设备6能够连接至网络1的以太网、Wi-Fi、或移动网络(例如,3G、LTE等)接口)。显示器24可以包括触摸屏,其可以从设备6的用户处接收触摸输入,在该情况下,显示器24也是用户设备6的输入设备。被示出为连接至处理器的各种组件中的任何一个组件可以集成在用户设备6中,或者非集成并且经由合适的外部接口(有线的例如以太网,或无线的例如Wi-Fi)而连接至处理器22。

存储器20保存客户端7的备份,当在处理器24上执行时,其使得用户设备6实现客户端7的功能。

客户端7具有用户界面,用于从用户设备6的用户处接收信息并且向用户设备6的用户输出信息,包括在诸如通话之类的通信事件期间。用户接口可以包括,例如,经由显示器24输出信息的图形用户界面(GUI)和/或自然用户界面(NUI),所述NUI使得用户能够以“自然的”方式与设备进行交互,不受诸如鼠标、键盘、遥控器等之类的某些输入设备所施加的人为约束。NUI方法的示例包括利用触摸感应显示器、语音和话音识别、意图和目标理解、使用深度相机(例如立体或飞行时间相机系统、红外相机系统、RGB相机系统及其组合)的运动姿势检测、使用加速计/陀螺仪、面部识别、3D显示器、头部、眼睛、和视线追踪的运动姿势检测、沉浸式增强现实和虚拟现实系统等。

图3是控制服务器12的示意性框图。控制器服务器12包括其上连接有存储器30的处理器32,以及使得控制服务器12能够连接至网络1的网络接口34。存储器30保存控制软件13,其中当在处理器32上执行时,所述控制软件13使得控制服务器12实现控制软件13的功能。尽管被描绘为单个设备,但是控制服务器12的功能可以以分布式的方式跨多个服务器设备而分布,或者可替代地,例如以分布式的、对等的方式由一个或多个用户设备来实现。

网络1具有分层架构,由此将网络1的功能组织成抽象的层。这在图4中示意性地示出。在该示例中,网络1实现互联网协议组,由此将功能组织成四个层108-102:应用层108(相当于OSI(“开放系统互联”)模型的层5、6、和7)、在应用层108之下的传输层106(相当于OSI模型的层4)、在传输层106之下的网络层104(相当于OSI模型的层3)——其是互联网层、以及在互联网层104之下的链路层102(相当于OSI模型的层1和2的组合)。

应用层108在运行在不同主机上的进程之间提供了进程到进程的通信,所述主机即连接至网络1的通用计算机设备例如,用户设备6和服务器12、14(应当注意的是,路由器3和NAT 8不是如在本文中所使用的术语“主机”)。传输层106在不同主机之间提供端到端通信,包括在主机之间提供端到端信道以供进程使用。互联网层104例如经由在互联网层操作的路由器3/NAT 8在互联网1的不同的个体网络之间提供路由(即通信),其中NAT 8在互联网层提供对网络地址信息的翻译(网络地址翻译)。链路层102例如经由在链路层102处操作的网络开关和/或集线器等而在相同的个体网络(互联网1)的相邻节点的物理网络地址(例如,MAC(“媒体访问控制”)地址)之间提供通信。

待通过网络1发送的应用数据(例如,用户数据)在进行发送的主机处从应用层108传递至传输层106,在传输层106处其根据诸如UDP(“用户数据报协议”)或TCP(“传输控制协议”)之类的传输层协议而被分组花成传输层分组。TCP是“可靠的”流式传递服务在于其包含确认/重新传输机制,而UDP是“不可靠的”流式传递服务在于其不包括任何这样的机制。不可靠服务的分组被称为数据报。接着,将传输层的数据(例如,TCP分组/UDP数据报)传递到该主机处的互联网层104,在该互联网层104处所述数据根据互联网协议(其是互联网层协议)被进一步分组化成IP数据报。接着,将IP数据报的数据传递至链路层102以用于通过网络1发送至进行接收的主机。当在进行接收的主机处被接收时,将IP数据报的数据向上传递至互联网层104,在互联网层104处,从IP数据报的有效载荷提取传输层分组的数据并且向上传递至传输层106,在传输层106处,从传输层分组的有效载荷提取应用数据并向上传递至应用层。

在图4中示出了传输层分组(例如,TCP分组或UDP数据报)10。传输层分组106包括在进行发送的主机的传输层106处生成并附接的传输层报头(例如,UDP/TCP报头)10i以及对从应用层108所接收的应用数据进行编码的传输层有效载荷(例如,UDP/TCP有效载荷)10ii。

还示出了IP数据报11。IP数据报11包括在进行发送的主机的互联网层104处生成并附接的IP报头11i,以及对从传输层所接收的传输层分组的数据进行编码的IP有效载荷11ii。IP报头包括作为IP分组11通过网络1被送往的传输地址的目的地传输地址,以及作为在生成IP数据报的主机本地的传输地址(至少在该分组产生阶段)的源传输地址。

分别参考在IP报头和IP有效载荷中所编码的信息来在本文中使用术语“IP报头等级”和“IP有效载荷等级”。

针对在专用网络(例如,5a/5b)内生成的分组,IP报头包括作为该专用网络的专用地址空间中的专用网络地址(例如,5a/5b中的用户设备6a/6b的专用网络地址)的传输地址,以及与该专用地址相关联的端口。如所指示的,这样的专用地址空间在该专用网络之外是不可使用的。因此,如果简单路由器用于在该专用网络(例如,5a/5b)与公共网络(例如,2)之间转发IP数据报,则专用网络之外的节点将无法响应这样的数据报,因为其在IP报头中将不具有任何可用的源地址。

为此,NAT可以用于在公共网络和私人网络之间提供接口。

图5示出了NAT 8(例如,8a、8b)的操作。IP报头11i和IP有效载荷11ii的IP数据报11是由NAT经由专用网络5(例如,5a、5b)从诸如用户设备6(例如,6a/6’a、6b/6’b)之类的网络节点接收的。IP报头11i包含用户设备6的初始源传输地址,其包括用户设备6在专用网络5的专用地址空间中的专用网络地址(其是专用IP地址)以及与该专用地址相关联的端口。IP报头11i还包含用户设备6已经将IP数据报11送往的目的地传输地址。

如图所示,NAT 8修改IP报头11i以用新的源传输地址来代替初始源传输地址,由此生成经修改的IP数据报11’,其具有包含新的源传输地址(目的地传输地址和IP有效载荷11i没有由NAT 8修改)的经修改的报头11’i。新的传输地址包括NAT 8在公共网络2的公共地址空间中的公共网络地址(其是公共IP地址),以及与该公共IP地址相关联的端口。

NAT 8保持初始传输地址与新的传输地址之间的映射9,以使得其可以将已经经由公共网络2送往新的传输地址的任何返回业务(且其将从而在NAT 8处结束)经由专用网络5而转发至用户设备6的初始传输地址。

在最简单的示例中,NAT简单地用其自身的公共IP网络地址来替换专用IP地址并且不改变端口。然而,对于NAT而言,实现地址空间的伪装变得日益常见,由此将专用地址空间隐藏在单个网络地址之后。为了防止返回分组的不确定性,NAT通常必须改变诸如与源地址相关联的端口之类的其他信息。例如,NAT可以具有单个公共IP地址并且用其自身的单个公共IP地址和唯一的(并且很可能不同的)端口来替换专用地址空间中的每个传输地址,以使得在专用网络之外仅仅通过与单个公共IP地址相关联的端口来彼此区分专用网络的节点。

通常而言NAT不修改IP有效载荷,而是仅仅以上述方式修改IP报头。这对仅仅将响应送往IP报头中的源地址的协议(例如,HTTP)而言一般是可接受的。

然而,包括一些媒体会话协议(例如SIP)在内的其他协议也依赖于在IP有效载荷(非报头)等级被编码的端点地址。例如,SIP协议指示端点应该使用在SIP邀请/SIP响应中所包含的地址来建立媒体会话,其将在IP有效载荷(不是报头)等级被编码。如在图5中所示出的,这不由NAT 8修改。

因此,例如,假定图1中的第一用户设备6a将经由第一NAT 8a将在IP有效载荷等级被编码的媒体会话邀请发送至第二用户设备6b。NAT 8a将不修改IP有效载荷,因此在接收到邀请之后,第二用户设备6b将尝试使用来自未经修改的IP有效载荷(非报头)的未经修改的第一用户设备6a的专用传输来响应该邀请——这将失败,因为专用地址在专用网络5a之外是不可用的,并且其将因此不可能建立会话。类似地,即使第一用户设备6a不在NAT 8a之后而是替代地具有其自己的公共IP地址,会话建立仍然会失败,这是因为第二用户设备5b在NAT 5b之后:在以会话邀请响应而对该邀请进行响应时,第二用户设备6b将在响应中包含在IP有效载荷等级编码的、在第二专用网络5b的第二地址空间中其自身的专用地址,类似地第一用户设备6a不可使用该地址。

为此,已经开发出了诸如STUN(“针对NAT的会话遍历工具”)和TURN(“使用中继NAT的遍历”)之类的协议,以使得SIP会话等能够在由一个或多个NAT分隔的端点之间被建立。

STUN允许端点来确定其是否位于在NAT之后,并且如果是,则NAT的公共地址被映射至进行发起的端点的专用地址(即,有效地给予其对映射9的访问),以使得端点可以包括IP有效载荷中的公共地址而不是其自己的专用地址。通常而言,STUN通过进行发起的端点向STUN服务器发送查询来工作,所述查询作为IP数据报通过NAT并经由公共网络而被中继至STUN服务器。因为NAT在NAT公共侧上的对应的公共地址来替代查询的IP报头中的专用地址,所以STUN服务器可以从查询的IP报头获得所述对应的公共地址,进而,其可以提供至进行发起的端点。接着,进行发起的端点可以使用该公共地址而不是其自己的专用地址来建立会话,由此在IP有效载荷等级将可用的地址传达至会话请求中的进行响应的端点。进行响应的端点可以类似地发现在响应中在IP有效载荷等级可以传达至进行发起的端点的其相关联的公共地址,而不是其自己的专用地址。STUN服务器的角色是有效地提供地址发现,并且一旦媒体会话被建立后,其通常不参与到其中的一个角色。

如在现有技术中已知的,存在这样的情况,其中即使当已知NAT的公共地址时也无法建立这样的会话,例如,当进行发起和/或进行响应的端点在对称NAR之后时。在这样的情况下,一个或多个TURN中继服务器常常可以用于通过将媒体数据中继通过TURN服务器来遍历NAT。

当端点需要使用TURN中继时,其向TURN中继发送请求以请求向该端点分配在TURN中继上唯一的公共传输地址。如果该请求被接受,则使用TURN服务器的公共地址作为针对该端点的源地址来建立媒体会话。该端点向TURN服务器发送其希望在会话中发送的包含在TURN消息中的媒体。TURN服务器从TURN消息中提取该媒体,且将其从已经作为源地址被分配至该端点的TURN服务器上的公共地址向前中继。TURN服务器还将目的在于该端点的、已经被引导至在TURN服务器上所分配的地址的数据中继至在TURN消息中包含的端点以供由该端点提取。

如果两个端点都位于不允许STUN的NAT之后,则每个端点都将需要其自己的相应的传输地址以在TURN服务器上被分配,在该情况下,在这两个所分配的TURN服务器地址之间建立了媒体会话,并且每个端点中继/接收TURN消息中的数据,其中提供给TURN服务器的数据是向分配至媒体会话中的那些端点的两个TURN服务器地址发送的和从其接收的。

TURN中继需要在该(这些)服务器上分配资源(包括在TURN服务器上分配的唯一的公共传输地址)以持续至少媒体会话的持续时间,并且也意味着媒体会话的媒体经由比当在端点之间直接地建立或经由一个或多个NAT建立媒体会话时较不直接的路径行进。因此,尽管TURN中继可以或多或少地保证提供通过网络针对媒体会话可用的路径,但是该中继是以增加服务器资源的使用以及由于路径的不直接性而潜在地增加延迟为代价的。

STUN和TURN功能可以并入在同一个服务器中,有时其也简单地被称为TURN服务器,虽然其也包括STUN功能。

图1的媒体服务器14a和14b是TURN服务器,其并入了STUN和TURN功能两者,并且因此具有地址查找和媒体中继功能两者。可替代地,这个和/或其他功能可以在分别的服务器中分开,或者可以由同一个服务器来执行在下文中所描述的由媒体服务器14a、14b所执行的功能。

ICE(“交互式连通性建立”)是用于建立供VOIP会话遍历网络地址NAT和防火墙的连通性的已知协议,其尝试建立在媒体延迟方面最高效的路径以确保理想的媒体质量。可以在公开可获得的RFC 5245,Interactive Connectivity Establishment(ICE):A Protocol for Network Address Translator(NAT)Traversal for Offer/Answer Protocols,J.Rosenberg(2010年4月)中找到ICE协议的细节。对ICE协议的某些扩展是在[MS-ICE2]连接建立(ICE)扩展文件中定义的

(http://msdn.microsoft.com/en-us/library/office/cc431504(v=office.12).aspx)。

在ICE的上下文中,对于媒体会话而言,优选在客户之间具有直接连通性的路径(直接路径)而不是例如涉及使用中间中继服务器(例如,通过TURN服务器进行中继)的间接路径。ICE的上下文中的路径指的是一组NAT和/或媒体中继服务器(如果存在的话:路径可以不包括NAT或服务器),其可以用于在这些端点之间发送和接收数据。如在下文中所讨论的,由一对传输地址(其中一个用于由进行发起的端点来发送和接收数据,而另一个用于由进行响应的端点来发送和接收数据)来标识路径,其定义了这样一组NAT和/或媒体中继服务器(如果存在的话)。

在ICE上下文中的“直接”路径指的是这样的路径,当经过该路径时,由进行发送的端点沿着该路径所发送的、去往进行接收的端点的数据不是在互联网层之上被处理的时,即以使得该数据在被传送至互联网层之前,仅仅在进行发送的端点的传输层处/之上被处理以供传输,并且在进行接收的端点处被接收之后,在进行接收的端点的传输层处/之上以及从互联网层向上传递。不包括任何媒体中继服务器(例如,TURN服务器)的路径是直接的,其包括具有NAT和/或路由器的那些路径,因为它们不在互联网层之上处理这样的数据(尽管,例如为了管理的目的,它们仍然可以实现传输层和应用层)。

在ICE上下文中的“间接”路径指的是这样的路径,当经过该路径时,由进行发送的端点沿着该路径发送的、去往进行接收的端点的数据是在互联网层之上(例如,在传输层和可能的更高层,例如应用层)被处理的时。即,这样将数据向上传输至传输层以在由进行发送的端点发送之后但是在进行接收的端点接收之前,在沿着该路径某处的某一中间网络节点处在该层处或该层之上进行处理。包括一个或多个媒体(例如,TURN)中继服务器的路径是间接的。

ICE仅仅允许通过网络的对称路径。该上下文中的对称路径指的这样的路径,其中沿着该路径从第一端点到第二端点而发送的数据经过同一组NAT和/或媒体中继服务器(如果存在的话),这是因为数据是沿着该路径从第二端点向第一端点发送的,但是是以相反的顺序。当然,在端点和NAT、端点和服务器之间、NAT和NAT之间、服务器和服务器、服务器和NAT之间等,在所采用的路由方面可能存在不对称,例如针对互联网业务,数据可以在每个方向和/或在不同的时刻通过互联网的不同的个体网络,并从而通过不同的路由器,但是在两个方向都通过相同的NAT和/或TURN服务器(如果存在的话)。不包括服务器或NAT的直接路径是对称的。

图6A-6B示出了通过图1的网络的路径示例,其是对称的并且在ICE的上下文中被认为是直接的。

图6A示出了沿着从进行发送的端点6(左手侧)到进行接收的端点的第一路径、在一个方向行进的去往进行接收的端点6(右手侧)的数据。第一路径不包括任何NAT 8或中继服务器14。路径是对称的在于以另一方向行进的数据也不经过任何的NAT 8或中继服务器14,尽管其以不同的方向和/或在不同的时刻可以经过不同的路由器3。

如图所示,一旦数据已经由进行发送的端点作为传输层(例如,UDP/TCP)分组10而从传输层106被传递至网络层104,其保持在网络层104处或之下,直到到达进行接收的端点为止。即,在沿着第一路径行进时,不存在对数据的传输层(或更高层)处理。沿途可以将传达数据的IP分组10分块,但是除了保持未经修改的之外,并且因此传输层分组10到达进行接收的端点的传输层,类似地未经修改。

图6B示出了沿着从进行发送的端点6(左手侧)到进行接收的端点的第二路径、在一个方向上行进的去往进行接收的端点6(右手侧)的数据。第二路径包括至少一个NAT 8但是不包括任何中继服务器14。路径是对称的在于以另一方向行进的数据经过同一NAT 8(以相反的顺序)但是没有中继服务器14,尽管其可以经过不同的路由器3,尽管其以任一方向和/或在不同时刻遍历的路由器可以是不同的。

再次,一旦数据已经在进行发送的端点处作为分组10而从传输层(例如UDP/TCP)被传递至网络层104,其就保持在网络层104处或之下,直到达到进行接收的端点为止。然而,相比于图6A的第一路径,传达数据的IP分组11在NAT 8处被修改以改变IP报头中的源地址。在图7B中将经修改的IP分组标记为11’。尽管如此,编码传输层分组10的IP有效载荷是未经修改的,并且因此在进行接收的端点的传输层处接收未经修改的传输层分组10。

图6C示出了通过网络1的对称的间接路径的示例。

图6C示出了沿着从进行发送的端点6(左手侧)到进行接收的端点的第三路径、在一个方向上行进的去往进行接收的端点6(右手侧)的数据。第三路径包括至少一个媒体中继服务器14并且还可以包括一个或多个NAT(未示出)。该路径是对称的在于以另一方向行进的数据经过相同的中继器和NAT(以相反的顺序),但是可以以不同的方向和/或在不同的时刻经过不同的路由器。

如果在图6C中所示出的TURN服务器被分配至进行发送的端点6(左手侧),则将包含在其从中提取的TURN消息中的数据从进行发送的端点发送至服务器14,并且向前中继至进行接收的端点,否则,如果将TURN服务器分配至进行接收的端点,则在中继服务器14处所接收的来自进行发送的端点的数据被打包到TURN消息中以朝向进行接收的端点发送。在任一事件中,TURN服务器在传输层和应用层操作以当经过第三路径时将数据重新格式化,这使得第三路径是间接的。由于重新格式化,进行接收的端点接收传输层分组10’,其与由进行发送的端点(10)原本发送的那些分组是不同的。

ICE协议尝试基于静态的优先级来标识其所认为的最高效的路径,所述静态优先级被分配给可以用于媒体会话的多个所谓的“候选者对”中的每个候选者对。候选者是与进行发起的端点或进行响应的端点中的一个相关联的传输地址。候选者对是一对候选者(i,r),第一(i)与进行发起的端点相关联而第二(r)与进行响应的端点相关联。术语“候选者“涉及这样的事实:ICE机制一开始假定与端点相关联的任何传输地址可能可用于媒体会话(尽管由于在上文中所讨论的原因其可能实际上不可用)——则ICE协议涉及标识实际上可用的候选者。

ICE将候选者分成3个类别:主机候选者、反射候选者、和中继候选者。

主机候选者是所讨论的端点本地的传输地址,即在直接地附接至该端点的网络接口上。例如,用户设备6a、6b的专用地址是那些用户设备本地的,并且因此是主机候选者,而类似地,如果用户设备直接地连接至公共网络2(而不是或除了经由NAT 8a、8b之外),则它们将具有其自己的、那些用户设备本地的公共地址,其也将是主机地址。

反射候选者是传输地址,其不是端点本地的,但其是NAT的公共侧上经翻译的传输地址(例如,如在图5的经修改的IP报头11’中所包括的)。这些被分类成两个子类别:“服务器反射候选者”,其是通过以在上文中所概述的方式查询服务器(例如,STUN服务器)而发现的公共NAT地址,以及“对等反射候选者”,其是在媒体会话的建立期间由另一端点发现的(例如,如由进行响应的端点发现的、与进行发起的端点相关联的公共侧NAT地址,或反之亦然)。

中继候选者是以在上文中所概述的方式从媒体中继服务器(例如,TURN服务器)分配的传输地址。

这是针对图1中的第一和第二用户设备6a、6b,在图7中示意性地示出的。在该示例中,第一用户设备6a是进行发起的端点而第二用户设备6b是进行响应的端点。

第一用户设备6a与以下项相关联:第一本地传输地址(其是主机候选者)40a;在第一NAT 8a的公共侧上且映射至第一专用网络5a中的第一用户设备6a的专用传输地址的第一反射传输地址(其是反射候选者)42a;以及在第一TURN服务器14a上的分配给第一用户设备6a的第一中继传输地址44a(其是中继候选者)。类似地,第一用户设备6b与以下项相关联:第二本地传输地址(其是主机候选者)40b;在第二NAT 8b的公共侧上、映射至第二专用网络5b中的第二用户设备6b的专用传输地址的第二反射传输地址(其是反射候选者)42b;以及在第二TURN服务器14b上的分配给第二用户设备6b的第二中继传输地址44b(其是中继候选者)。

潜在地,进行发起的端点的候选传输地址中的任何一个传输地址可以用于与进行响应的端点的候选传输地址中的任何一个传输地址进行通信。即,第一用户设备6a可以潜在地将数据从其自己的相关联的地址(40a、42a、44a)中的任何一个地址送往与第二用户设备相关联的地址(40b、42b、44b)中的任何一个地址,反之亦然。在图6的示例中,这产生了潜在地可以用于在第一与第二用户设备6a、6b之间进行通信的9个候选者对:[(40a、40b)、(40a、42b)、…、(44a、42b)、(44a、44b)]。

然而,在实践中,一些候选者对将不是有效的(即,将不起作用)。例如,如果两个端点都在NAT之后,并且它们的主机候选者40a、40b是专用网络5a/5b中的专用地址,则由于在上文中所讨论的原因,其不太可能能够使用这些地址40a、40b直接地进行通信。然而,如果它们的主机候选者40a、40b是当被使用时不涉及通过任何NAT的路由数据的公共地址,则候选者对(40a、40b)很可能是有效的。

类似地,取决于NAT的类型(例如,如果其是对称的NAT),可能不能如所讨论的使用反射候选者42a和/或42b。

尽管实际上这样的路径将仅在候选者对实际上有效的情况下才是可用的,每个候选者对因此潜在地表示通过网络的某一类型的路径。

一对主机候选者(例如(40a、40b))潜在地表示通过网络的直接路径,其是在上文中参考图6A所描述的不涉及任何NAT或媒体中继服务器的类型的第一直接路径。然而,如果本地地址40a、40b中的任何一个本地地址是其使用实际上涉及通过NAT发送数据的专用地址,则这样的候选者对将是无效的。

一对候选者,其中至少一个是潜在地表示通过网络的直接路径的反射候选者(例如,(40a、42b)、(42a、40b)、(42a、42b)),其是在上文中参考图6B所描述的涉及NAT但没有媒体中继服务器类型的第二直接路径。然而,如果反射地址(中的任何一个)是在例如对称NAT的公共侧,则这样的候选者对将是无效的。

一对候选者,其中的至少一个是中继候选者(例如,(40a、44b)、(42a、44b)、(44a、44b)、(44a、42b)、(44a、40b))表示在上文中参考图6C所描述的有可能起作用但是以需要将资源分配在媒体中继服务器上为代价的类型的通过网络的间接路径。

作为ICE媒体会话建立过程的一部分,进行发起的端点和进行响应的端点两者都尝试通过与合适的TURN服务器(例如,14a、14b)进行通信来发现它们所有的候选者,所述后选择接着以所有可能的组合来配对,例如,如果发现了6个候选者40a-44b,则这将产生在上文中所讨论的9个候选者对。接着,ICE尝试发现哪些候选者对是有效的。ICE这样做的方式是以具体的排序顺序对称地尝试所有可能的对,直到其找到中的一个可以接着针对媒体会话而被选择的一组一个或多个有效的(例如,起作用的)候选者对为止。每当端点中的至少一个端点发现产生多个候选者对的超过一个候选者时,将存在经由其可以建立媒体会话的多个潜在地可用的通过网络的路径(尽管由于不是每个候选者对都有效,因此不是所有路径都实际上可用)。

尝试候选者对的顺序是由ICE静态优先级方案所指示的,具有较高优先级的对在较低优先级的对之前被尝试。

根据ICE协议,可以根据方程1向每个候选者(例如,40a-44b)分配静态优先级:

优先级=(224)*(类型偏好)+(28)*(本地偏好)+(20)*(256-组件ID)

类型偏好(类型度量的一个示例)是包含性的从0到126的整数,并表示针对候选者类型的偏好(本地、服务器反射、对等反射、以及中继)。126是最高偏好,而0是最低偏好。将值设置为0意味着该类型将仅仅被用作最后的手段。对于具有相同类型的所有候选者而言,类型偏好是相同的,而对于不同类型的候选者,类型偏好是不同的。针对对等反射候选者的类型偏好比针对服务器反射候选者的类型更高。ICE协议为主机候选者推荐值126(除非这些主机候选者是来自虚拟专用网络接口的,在该情况下则推荐0),为服务器反射候选者推荐100,为对等反射候选者推荐110,并且为中继候选者推荐0。本地偏好是包含性的从0到65535的整数,并表示针对特定IP地址的偏好,其中当端点是多家乡终端时(连接至多于一个计算机网络)从该特定IP地址获得候选者。当仅仅存在单个IP地址时,ICE推荐将其设置为最大值65535,当不存在多家乡终端时,有效地使该项成为冗余。

可以看出,迄今为止,方程1中最重要的项是基于候选类型的第一项。

因此,ICE优先级方案经由中继候选者将间接路径去优先级(其仅仅被用作最后的手段),并且此外偏置静态优先级离开反射候选者。

一旦形成了候选者对并根据方程(1)分配了优先级,则可以根据方程2来计算针对每个候选者对的候选者对静态优先级:

对优先级=232*MIN(G,D)+2*MAX(G,D)+(G>D?1:0)

其中,G是针对进行发起的端点候选者的静态优先级,D是针对进行响应的端点的候选者的,并且G>D?1:0是这样的表达式:如果G大于D则其值为1,否则为0。

因为与非中继候选者相比,ICE使中继候选者较不优先,所以包括中继候选者的候选者对与不包括主机候选者的那些候选者对相比较不优先。因此,ICE静态优先级方案使较直接的路径优先于较不直接的路径。

另外,因为ICE使反射候选者不优先与主机候选者,所以包括反射候选者的候选者对与仅仅包括主机候选者的那些候选者对相比较不优先。因此,ICE静态优先级方案被偏置朝向不涉及NAT的路由。

静态ICE路径优先化方案对于受控制的公司部署/拓扑而言是足够的。然而,实时媒体服务的大规模全球在线服务部署带来了完全不同的一组挑战,对于其而言,静态优先级方案不仅可能是不够的,而且在某些情况下还可能损害媒体质量。找到理想的连接路径对于确保针对用户的最佳可能体验以及确保对于订阅了在线服务的用户而言满足媒体质量SLA(“服务等级协议”)而言变得关键。

以下是一些场景,在这些场景中只基于由ICE定义的静态路径优先级来选择最有效的路径可能是不够的或不期望的。

1.作为在线服务合同的一部分,公司可能具有提供较好的媒体质量和较低的延迟的MPLS(“多协议标签交换”)链路。即使ICE静态优先级方案确定通过MPLS链路的路径为较低优先级,但是使用MPLS链路将实际上提供更好的媒体体验。

如在本领域中公知的,MPLS是基于短路径标签而不是长网络地址将数据从一个或多个网络节点送往下一网络节点的机制,其无需在路由表中执行查询(这需要时间和资源)。标签标识了遥远的节点之间的虚拟路径(“MPLS链路”)而不是端点本身。在实现MPLS机制的网络中,仅基于附接至分组的标签而不对分组本身进行检查来针对该分组的路由进行决策,这被称为标签交换。这与例如在IP路由中所使用的分组交换是不同的,其中路由器使用来自IP报头自身的IP分组的目标地址来决定下一跳。ICE看不见该较低层的标签交换,其简单地将这些路径和涉及较低效的路由机制的路径等价地当作“直接的”,已知其不涉及诸如中继服务器之类的较高层的中介。MPLS协议可以被认为是在OSI层2(数据链路)和层3(网络)之间运行的,如传统上所定义的,并且有时将它们称为“层2.5”协议。

2.区域性ISP(“互联网服务提供商”)对等协议可以产生ICE优选的具有极高延迟的路径。

术语“对等”是指在互联网的两个自主网络之间的数据路由。对等协议规定了诸如ISP之类的不同网络运营商可以使用彼此网络的方式,并且因此规定了通过这样的互联网来路由数据的方式。

这样的较低层(例如,互联网层)路由决策再一次对于ICE而言是不可见的,并且在ICE和本公开的上下文中,所产生的路径是“直接的”,因为它们不涉及诸如媒体中继服务器之类的较高层(例如,传输/应用层)的中介。然而,实际上,这样的协议可以得出通过互联网的路径,所述路径在地理上是绕路的或以其他方式低效的(例如,这涉及不适合的互联网网络),并且因此容易延迟(并因此具有较低质量),但是ICE却将其高度优先,因为尽管如此这样的路径是“直接的”(如在本申请中所使用的术语)。

特别地,发明人已经了解,不同ISP之间的路由决策通常未被优化。有时,是由于商业的而不是技术的原因来进行路由决策的,即,进行特定的一组较低层的路由决策不是因为它们将在个体网络之间提供例如涉及最少跳的最快的路由,也不是因为在某些意义上它们从技术的角度而言是最优的,而是因为它们对于ISP更便宜。

这些次最优路由决策在较高层实际上是不可见的(尽管在次最优媒体传递方面其效果是显然的),它们在ISP自身的域之外也不是直接可控制的。然而,发明人已经理解,尽管使用受控的较高层中继,但是较低层行为也为了终端用户的利益而受影响,例如为了避免已知采用了不利的路由决策的路径,如通过对来自过去的一段时间内的媒体会话的网络质量度量的考虑所揭示的。

3.媒体路径的质量可以根据时间和网络上的负载而不同,并且可以不与ICE静态优先级直接地关联。

4.ICE缺少基于从先前建立的媒体会话收集遥测数据来学习和适应连通性路径的能力。

本公开提供了一种机制,从而路径选择可以额外地受到相关的网络信息的影响,而不是仅依赖由ICE所提供的静态优先级。网络信息指示了对在进行发起和进行响应的端点之间的媒体会话可用(或至少潜在地可用)的路径的质量。在该上下文中,路径的“质量”指的是当用于媒体会话时,路径能够传递的终端用户体验。例如,因为当沿着该路径被接收时,易受丢包、过度延迟、过度抖动等的影响并从而降低了媒体(例如,音频和/或视频)的感知质量(例如,从用户的角度)的降低了终端用户体验的路径具有较低的质量,而例如因为展示了最小的丢包、较低的延迟、较低的抖动等,并且因此没有显著地降低媒体的感知质量的增强了终端用户体验的路径则具有较高的质量。

该网络信息可以由管理员配置或者在媒体会话建立期间或可替代地基于从先前建立的媒体会话所收集的遥测数据而动态地确定。所述决策可以基于仅仅由进行选择的客户端所收集的数据,或者客户端可以与关于连接路径和网络质量特性的更丰富的数据组的服务器相结合地工作。

除了其他的事情之外,本公开将ICE协议扩展至:

a.包括用于建立针对实时媒体的最佳连通性路径的拓扑/部署信息(MPLS、ISP对等等)。在本上下文中,“拓扑信息”指的是关于在网络层或之下、在关于互联网的个体网络之间的数据的路由的信息(例如,在某种意义上,MPLS路由是在网络层之下执行的——参见上文)。该信息可以被配置在客户端上或者客户端可以从提供与在媒体会话中所涉及的实体相关的拓扑和呼叫质量遥测数据的遥测服务器(呼叫方/被呼叫方端点和中继服务器)发现该信息。MPLS和ISP对等协议两者都产生不影响如在本文中所使用的路径的“直接性”的路由决策,这是因为它们不引入任何较高层的中介(例如,媒体中继服务器),且其因此对于ICE协议而言是不可见的,但是它们在路径质量方面仍然是高度相关的(其中,取决于协议的性质,涉及MPLS路由的路径趋向于具有较高的质量并且涉及由ISP对等协议规定的路由路径潜在地具有较低的质量);

b.包括对在媒体会话的连通性建立期间的路径质量的动态发现或者在媒体会话期间的不间断的监测;

c.利用从先前所建立的媒体会话收集的遥测数据来针对随后的呼叫建立更好的媒体连通性;

d.使能将具有更好质量的路径优先化以及将具有较低质量的路径去优先化或者完全移除;

e.如果当前媒体路径的质量降低至比另一可用媒体路径(通常是在呼叫方和被呼叫方端点之间存在的几个可用的媒体路径)更差,则使能在媒体会话期间切换媒体路径。

利用ICE,呼叫方端点典型地被命名为进行控制的端点并且负责选择用于媒体流的最终路径。根据下文,进行控制的端点还在选择针对媒体流的最终路径的同时包含前述拓扑信息。

图8是功能框图,其中在图8的虚线下方的功能框(组件)表示当由用户设备6(6a和/或6b)执行时,由客户端7(7a和/或7b)所实现的功能。在虚线之上的组件表示当在控制服务器12上执行时,由控制编码13所实现的功能。

客户端7a实现了路径选择系统50,其包括候选者对生成组件52、静态优先级生成组件53、核对清单生成组件54、以及候选者修改组件56、本地选择组件57、以及包括路径探查组件59的连通性检查组件58。组件52、53、和56构成了优先级生成组件。

控制编码13实现控制系统62,其包括远程选择组件64、聚合组件66、以及监测组件68。

修改组件、核对清单生成组件、和连通性检查组件56、54、58构成用于针对媒体会话来选择路径的路径选择组件。

现在将参考作为该方法的流程图的图9来描述用于在进行发起的端点6a和进行响应的端点6b之间实现媒体会话的方法。端点6a、6b两者都实现如在MS-ICE2中所定义的ICE协议,外加在本文中所描述的额外的功能。

在S2处,进行发起的端点7a上的客户端(进行发起的客户端)与第一TURN服务器14a进行通信以发现其候选者(本地候选者),即可能能够用于媒体会话的任何主机、服务器反射、和中继候选者。接着,进行发起的客户端将这些在会话邀请消息中发送至进行响应的端点6b。作为响应(S4),在进行响应的端点6b上的客户端7b(进行响应的客户端)通过与返回至进行发起的端点的第二TURN服务器14b进行通信而收集其候选者(远程候选者)。

在S6处,候选者对生成组件52分别接收如由进行发起和进行响应的端点所发现的本地候选者和远程候选者,根据这些其生成并输出一组候选者对。候选者对生成组件53接收所生成的一组候选者对以及分配给本地和远程候选者的ICE静态优先级,并且基于针对候选者对的三个输入静态优先级来生成。两个端点可以并行地执行相同的候选者对/优先级调整过程,或者一个端点可以执行这些并且将这些结果传送至另一个端点。

候选者对中的每个候选者潜在地与通过网络的可用路径相对应,其中,如果候选者对最后证明是有效的,则其可能可以由端点用于媒体会话。

S2-S6是根据在上文中所概述的常规ICE过程的。

在S8处,端点6a、6b中的一个或两个向控制服务器12发送与端点中的至少一个端点有关的端点信息,以用于与在控制服务器12处所保存的信息进行比较。端点信息包括标识或以其他方式传达关于潜在地可用的路径的信息的路径信息,例如关于如果将数据沿着该路径发送将通过其来路由该数据的ISP的信息、标识或以其他方式传达关于数据将通过其沿着该路径路由的任何专用网络5a/5b的信息、标识或以其他方式关于沿着该路径所包括的任何媒体中继服务器14a/14b的信息等。

在S10处,由选择组件64接收端点信息,选择组件64将所接收到的信息与位于遥测服务器12处的存储器30中所保存的全局网络信息70进行比较。接着,选择组件64使用该比较结果来影响端点6a、6b针对该媒体会话而选择通过网络的路径的方式,从而确保它们选择具有适当地高质量的路径,即使该路径不是由ICE静态优先级优选的并且已经被分配了低静态优先级(参见下文)。

全局网络信息包括网络拓扑/部署信息以及从网络2中的各种实体(节点)所收集的呼叫质量遥测数据,其中的一些有可能与在媒体会话中涉及的实体相关(即,呼叫方/被叫方端点6a、6b和中继服务器)。

全局网络信息70包括当前的和历史的网络信息70a、70b,其分别是来自聚合和监测组件66、68的贡献。贡献70a、70b随着时间而被更新,以提供关于网络2的丰富的信息源,其包括关于对于进行发起和进行响应的端点6a、6b潜在地可用的路径的质量、选择组件64可以利用其来影响路径选择的信息。

聚合组件随着时间接收并聚合来自诸如其他节点(例如6’a、6’b)之类的网络节点的信息,以提供历史网络信息70a。历史信息70a包括与先前建立的媒体会话相关联的遥测数据。端点(例如,6’a、6’b)例如通过执行对往返时间(RTT)、抖动、丢包等的测量来收集媒体会话被建立期间的遥测数据。接着,可以利用该所收集的遥测数据来针对随后的媒体会话选择更好的媒体路径,所述随后的媒体会话包括端点6a、6b当前尝试建立的会话。

接着,选择组件64可以比较从端点6a、6b所接收的端点信息,并且如果遥测数据指示在历史上其他端点先前已经沿着对端点6a、6b潜在地可用的路径中的一个路径或沿着与该路径重叠的某一其他路径(即,至少部分与该路径一致)经历了差的质量(例如,因为这些路径具有至少一个共同的媒体服务器、专用网络/NAT、和/或ISP等(但是可能另外不同)),则选择组件可以影响该选择以使其偏置离开潜在地可用的路径,即使得端点6a、6b将更不可能选择针对它们的媒体会话而选择该路径。上述路径无需完全重叠,并且选择组件可以根据与该路径重叠到某一程度的多个路径有关的历史信息来对关于给定路径的信息执行统计分析推断。

例如,如果潜在地可用于端点6a、6b的给定的路径包括第一和第二媒体中继服务器,并且存在可用于包括第一中继但不包括第二中继的第一路径的历史信息,并且还存在可用于包括第二中继的第二路径的历史信息,则选择组件64可以从这两组信息推断关于该给定路径的信息。例如,如果第一路径和第二路径两者在历史上都具有较高的质量,则假定给定估计也具有较高质量是合理的,相反也受制于其他网络信息。可替代地,如果第二路径在历史上具有较低的质量,则其可以指示该给定路径也具有较低的质量,尽管该假设有些飞跃。然而,如果历史信息揭示了多个路径(所有这些路径包括第二中继但以某种方式不同)全部在历史上具有较低质量,则可以利用具有相当高等级的统计确定性来推断第二中继是有问题的,并且由于第二中继存在,给定的路径可能具有较低的质量。

监测组件68从对网络2的部分具有当前可见性的网络节点接收网络信息,例如对其自身的操作具有当前可见性的媒体中继服务器14。例如,媒体中继服务器14可以向监测组件68传达其当前是否正确执行、其执行地多好,例如如在性能度量方面所传达的,即,其当前能够以什么速度传送分组或者其丢失分组的可能性、哪些资源其当前可用等。基于所接收的信息,监测组件68更新当前的网络信息70b以反映网络2的当前状态,其可以改变选择组件64操作的方式。例如,当第一和第二媒体中继服务器中的一个耗尽资源(从而,易于引入过度分组延迟、丢包等)并且当前的网络信息70b被更新以对此进行反映时,接着,选择组件可以影响路径选择以避免使用作为结果而选择的媒体中继形式的路径。

因此,全局网络信息70包括来自网络2中的宽泛的多种节点的贡献,所述节点包括用户设备6、媒体中继14等,其具有网络2的当前可见部分和/或网络2的已经可见部分,包括形成对端点6a、6b潜在地可用路径的部分的部分。

全局网络信息70还可以包括管理员配置的路径信息。通常为了具有MPLS链路的部署而完成或者在已知关于ISP对等的信息或具体的拓扑信息的情况下完成。

管理员路径信息还可以包括关于在互联网2内进行的路由决策的信息(如其当前所表示的,对ICE不可见),其可以用将路径选择偏置离开(相应地,朝向)已知涉及将有害于(相应地,有益于)路径质量的低效的或不理想的(相应地,高效的或理想的)路由决策的路径。在本文中,将选择偏置朝向(相应地,远离)某路径指的是对选择进行影响以增加(相应地,降低)选择该路径的可能性。

例如,管理员路径信息可以包括关于MPLS链路的信息,其可以用于将路径选择偏置朝向包括MPLS链路的路径(因为这些路径有可能具有高质量),和/或关于ISP对等协议的信息,其可以用于将选择偏置离开已知存在的非优选对等协议的路径。

在S12处,选择组件64生成用于影响路径选择的第一选择数据,其向端点6a、6b中的至少一个端点发送。

在S14处,核对清单生成组件生成“核对清单”。核对清单是候选者对的按顺序的列表,其确定了执行连通性检查的顺序(参见下文)。

根据一般的ICE过程,核对清单的顺序仅基于候选者对静态优先级,以使得它们的静态优先级的顺序是以候选者对来排序的。

相比而言,在这里,修改组件56基于从选择组件64接收的选择数据并且还基于在进行选择的用户设备处保存的本地网络信息20来控制核对清单的顺序。本地选择组件57基于本地网络信息来生成第二选择数据,所述本地网络信息提供至修改组件56以用类似于第一选择数据的方式来影响选择。该本地网络信息包括在客户端上收集的针对客户端已经参与的先前的媒体会话的本地遥测数据。本地遥测数据是以与在服务器12处保存的信息类似的方式(参见上文)来收集的,但是反映客户端自身的历史体验并且是通过客户端在其自身已经参与的先前所建立的媒体会话期间监测路径质量(例如,RTT、抖动、丢包等)来收集的。与在服务器12处所保存的类似,本地网络信息60还可以包括管理员和/或用户配置的路径信息,并且在上文中对远程管理员所配置的信息的描述等同地应用于其本地配对方。再一次,这通常将为了具有MPLS链路的部署而完成或是在已知关于ISP对等的信息或具体的拓扑信息的情况下完成。

修改组件56的输入端从候选者对生成组件52接收该组候选者对,并且基于来自本地服务器12的选择数据和本地网络信息,将由选择数据和/或本地网络信息所指示的具有不可接受的低质量的任何候选者对移除。在一些情况下,所移除的候选者对可以具有高的或甚至最高的静态优先级,但是因为它们具有不可接受的低质量,所以还是被移除了。

修改组件56的输入端还接收候选者对静态优先级(并且因此构成具有访问静态优先级的访问组件),并且基于来自服务器12的选择数据和本地网络信息,为剩余的候选者分配可以与其静态优先级不同的新的优先级。例如,修改组件54可以向与低(相应地,高)质量路径对应的候选者对分配新的优先级,该新的优先级低于(相应地,高于)根据ICE协议分配的路径的静态优先级。例如,如果所收集的遥测数据(本地的和/或在服务器12处)示出了针对特定的路径的朝向差的媒体质量的历史倾向,则,可以针对随后的媒体会话来降低该路径的优先级。

在一些实施例中,仅仅可以执行候选者移除和生成新的优先级中的一个。

向核对清单生成组件54提供(剩余)对以及它们的新的优先级,并且根据这些生成核对清单。所生成的核对清单仅仅包含剩余的候选者对,并且此外基于新的优先级(不是静态优先级)来进行排序。因此,在核对清单中不存在具有不可接受的低质量的路径,并且此外,可以基于它们较高(相应地,较低)的新优先级将较高(相应地,较低)质量的路径朝列表的顶部(相应地,底部)移动,即使基于这些路径具有较低(相应地,较高)的静态优先级。

应当注意的是,选择数据的生成可以涉及一定程度的人工监督或指导。例如,人类操作员可以观察到针对特定类型的路径的质量的下降,例如通过对网络数据的观察,例如网络中的节点(例如,中继)的当前状态和/或通过人工观察历史媒体会话质量度量,以及手动配置控制系统62以将媒体数据从这样的路径转移开,其接着是由生成合适的选择数据的经配置的系统62所实现的(因此可以通过以人为中介的方式至少部分地引入选择数据的生成对网络数据的依赖性)。为此,控制系统62可以具有利用其可以手动地配置系统62的用户界面。

在S16处,客户端7a、7b执行连通性检查。以其出现在核对清单中的顺序,从列表顶部的对开始(即,按照新优先级的顺序),针对核对清单中的单个候选端来执行连通性检查。因此,首先检查具有最高新优先级的对(但不一定是最高静态优先级)。连通性检查持续进行直到满足停止条件为止,例如,直到已经揭示出特定数目(一个或多个)的候选者对是有效的为止和/或在已经经过了预定量的时间之后。对于所谓的“积极提名”,当找到第一个有效的候选者时,连通性检查结束;然而“定期的提名”允许连通性检查继续进行,以尝试找到多于一个的有效候选者对(如果想要的话)。在连通性检查结束时,生成被揭示为有效的一个或多个候选者的列表(有效列表)。

如所指示的,候选者对中的一些(可能许多)候选者可能没有通过连通性检查,例如包括主机候选者(其是专用传输地址)的候选者对由于所讨论的原因有可能没有通过,其中主机候选者为。

在S18处,使用来自有效列表的候选者对(其可以是或可以不是仅有的所找到的有效候选者)来建立媒体会话。在仅在连通性检查中找到一个有效候选者的情况下,使用该候选者来建立媒体会话;如果揭示出了多个候选者对,则选择一个并且使用其来建立媒体会话。例如,针对该媒体会话,可以选择有效集中的最高优先级的候选者对。

显然,基于新的(而不是静态的)优先级移除候选者和/或执行连通性检查可以引起针对媒体会话选择具有较低静态优先级但是具有较高质量的路径而不是具有较高静态优先级但具有较低质量的路径。

在S16处的连通性检查期间,端点可以针对媒体流而找到几个潜在路径。作为连通性检查的一部分,除了建立媒体路径之外,端点还针对媒体质量而对潜在的路径进行探测。探测可以简单如在不同路径上确定网络RTT、丢包、抖动等以持续几秒钟,或可以执行更复杂的质量测量。接着,进行控制的端点可以基于如由探测所指示的不同路径的质量而不是依赖于由ICE协议所定义的静态优先级来选择最佳路径。

如果在所建立的媒体会话期间,当前正用于媒体会话的路径的质量发生改变(例如,如由监测组件66或由端点自身所检测到的,例如通过检测延迟、抖动、和/或丢包等增加了和/或通过在媒体会话继续进行的同时执行另外的路径探测),则可以从先前生成的有效列表(如果存在多于一个)或者通过再次开始连通性检查而生成的新的有效列表中选择不同的路径,并且媒体会话替代地使用该路径继续。

应当注意的是,在本文中,“可用的”路径指的是可以实际上用于媒体会话的有效路径(例如,有效的候选者对不表示“可用的”路径)。

尽管在上文中根据方程1和2计算了常规的ICE候选者对优先级,并且接着基于选择数据而被修改以生成新的优先级,可替代地,可以在计算候选者对(按照方程2,但是应用于经修改的地址优先级)之前修改个体地址优先级(按照方程1计算),或者可以以其他方式来计算类似的优先级,例如,通过根据选择数据在方程1或2中的一个或两个中有效地包括修改项的方式。

尽管在上文中已经在ICE静态优先级方案的上下文中进行了描述,但是本主题不限于此。一般而言,在经过该路径时沿着该路径数据横穿网络的较高层的路径更优选在经过该路径时沿着该路径数据仅横穿网络的较低层的路径的任何优先级方案被认为是使直接路径优先于较不直接的路径的静态优先级方案。此外,尽管上文呈现了以ICE类型偏好为形式的度量,但是还可以设想不根据ICE协议的其他类型的度量。

应当注意的是,所提及的“较高”和“较低”的优先级不一定指的是这些优先级的任何特定的数字(或任何其他)表示。而是,优先级方案的“较高优先级”指的是与被分配了“较低优先级”的另一路径相比,分配给路径的、该方案更优选的优先级,而不管优先级是以什么方式表示的(可以使用任何期望的表示,已知其传递了必需的信息,例如,作为一简单的示例,可以使用较小的数值来表示较高的优先级)。

在上文中所描述的本地和远程选择组件57、64构成了生成选择数据的选择组件(所述选择数据包括第一选择数据和第二选择数据)。尽管在上文中,第一选择数据是由在远程服务器12(其保留了选择数据所基于的全局网络信息70)处的选择组件64所生成的,在其他实施例中,可以本地地生成选择数据,即可以替代地由用户设备来实现选择组件64。例如,用户设备可以将(部分)全局网络信息70存储在本地存储器中并在本地存储器中对其进行访问,或者,如果其被存储在服务器12处中,则其可以经由网络远程地对其进行访问,并且用户设备可以根据本地/远程访问的全局网络信息70来生成选择数据,以使得本地地接收选择数据。

在本文中应当注意的是,“专用”网络指的是在NAT之后的任何网络。尽管其包括诸如家庭或商务网络(未示出)之类的网络,但是其还包括由例如具有潜在地大量用户的互联网服务器提供商(ISP)所运营的伪公共网络(在一些国家中后者比在另一些国家中更常见)。

尽管参考互联网协议组描述了上文,但是,在本文中所呈现的相关教导也适用于具有不同分层结构的网络。此外,尽管在上文中关于TCP/UDP和IP进行了描述,但应当理解的是,所述描述适用于可以用于生成不同类型的网络层和/或传输层分组的其他类型的传输层和/或网络层协议。

通常而言,可以使用软件、固件、硬件(例如,固定逻辑电路)、或这些实现的组合来实现在本文中所描述的功能中的任何一个。如在本文中所使用的,术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件、或其组合。在软件实现的情况下,模块、功能、或逻辑表示当在处理器(例如,CPU)上执行时执行指定任务的程序代码。所述程序代码可以被存储在一个或多个计算机可读存储器设备中。在下文中所描述的技术特征是与平台无关的,这是指所述技术可以在具有多种处理器的多种商业计算平台上实现。

例如,用户设备(用户终端)还可以包括使得用户终端的硬件执行操作的实体(例如,软件),例如,处理器功能块等。例如,用户终端可以包括计算机可读介质,其可以被配置为保存使得用户终端并且更加特别地使得用户终端的操作系统和相关联的硬件执行操作的指令。因此,指令用于将操作系统和相关联的硬件配置为执行上述操作,并且以此方式引起操作系统的转变并且引起相关联的硬件执行功能。指令可以是由计算机可读介质通过多种不同的配置而提供给用户终端的。

一种计算机可读介质的配置是信号承载介质,并且因此被配置为向计算设备发送指令(例如,作为载波),例如经由网络。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括:随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器、以及可以使用磁的、光学的、以及其他的技术来存储指令和其他数据的其他存储器设备。

本主题的第一方面针对一种用于在经由包括网络节点的通信网络所连接的进行发起的端点和进行响应的端点之间实现媒体会话的方法,存在经由其可以建立所述媒体会话的通过所述网络的多个可用路径,其中,所述端点能够访问与所述可用路径相关联的、传达所述可用路径的直接性的类型度量,所述类型度量用于针对所述媒体会话而选择可用路径,所述方法包括:访问指示所述可用路径的质量的网络信息,所述网络信息是从多个网络节点收集的并且包括来自与所述用户设备和所述其他端点不同的网络节点的贡献,其具有所述可用路径的至少部分的当前的可见性和/或过去的可见性;基于所述网络信息而生成选择数据,所述选择数据用于影响所述选择;以及向所述端点中的至少一个端点发送所述选择数据,以便使得所述端点针对所述媒体会话而相对于较直接但是较低质量的可用路径而优选地选择较高质量但较不直接的可用路径。

在实施例中,所述网络信息可以包括从先前建立的媒体会话所收集的遥测数据,所述遥测数据包括来自与进行发起的端点和进行接收的端点不同的端点的贡献。已经从先前经由与所述可用路径中的一个可用路径重叠的路径所建立的媒体会话收集了所述遥测数据的一部分,所述选择数据是基于所述遥测数据的所述一部分而生成的。已经从先前经由与所述可用路径中的一个路径的一部分重叠的路径所建立的第一媒体会话收集了所述遥测数据的第一部分,并且已经从先前经由与所述一个可用路径的不同的部分重叠的路径所建立的第二媒体会话收集了所述遥测数据的第二部分,并且所述选择数据是基于所述遥测数据的所述第一部分和所述第二部分两者而生成的。

网络可以是互联网,其中数据在所述互联网的个体网络之间被路由,并且所述网络信息包括拓扑信息,所述拓扑信息针对所述可用路径中的至少一个可用路径而传达如果数据要沿着所述至少一个可用路径传输,则要进行的路由决策的性质。所述互联网可以包括MPLS链路,并且所述拓扑信息将所述至少一个可用路径标识为包含MPLS链路,所述选择数据用于将所述选择偏置朝向所述至少一个可用路径。数据是根据ISP对等协议而在所述个体网络之间路由的,并且所述拓扑信息与ISP对等协议有关,其中所述拓扑信息确定如果要沿着所述至少一个可用路径发送数据,则要做出的路由决策的性质。

网络信息可以与形成了所述可用路径中的至少一个可用路径的一部分的至少一个网络节点的当前状态有关。

网络信息可以包括针对至少一个网络节点的当前资源可用性的测量;和/或指示所述至少一个网络节点的当前性能的性能度量;和/或指示至少一个网络节点当前是否正确地运行的指示符。

可以根据ICE协议而将类型度量分配给与所述可用路径相关联的网络地址。

针对媒体会话而选择的较高质量的可用路径可以包括媒体中继服务器,而较低质量的可用路径不包括任何媒体中继服务器。媒体中继服务器可以是TURN服务器,而较低质量的路径不包括任何TURN服务器。

针对媒体会话而选择的较高质量的可用路径可以包括网络地址翻译器,而较低质量的可用路径不包括任何网络地址翻译器。

第二方面是针对一种计算机程序产品,其包括存储在计算机可读存储介质上的代码,所述代码被配置为当被执行时,用于实现在经由包括网络节点的通信网络所连接的进行发起的端点和进行响应的端点之间实现媒体会话的方法,存在经由其可以建立所述媒体会话的通过所述网络的多个可用路径,所述方法包括:访问与所述可用路径相关联的、传达所述可用路径的直接性的类型度量,所述类型度量用于针对所述媒体会话而选择可用路径;接收选择数据以用于影响所述选择,所述选择数据是基于指示所述可用路径的质量的网络信息而生成的,所述网络信息是从多个网络节点收集的并且包括来自与所述用户设备和所述其他端点不同的网络节点的贡献,其具有所述可用路径的至少部分的当前的可见性和/或过去的可见性;基于所述选择数据,针对所述媒体会话而相对于较直接但是较低质量的可用路径而优选地选择较高质量但较不直接的可用路径,其中,所述媒体会话是经由所选择的路径来建立的。

所述方法还可以包括:在所述媒体会话期间,检测所述所选择的路径的质量的降低;以及作为响应,选择新的可用路径,所述媒体会话经由新选择的路径来继续。

还可以基于在进行发起的端点和进行响应的端点中的至少一个端点处保存的本地遥测数据来生成所述选择数据,本地遥测数据是针对所述端点先前已经参加的、先前的媒体会话中的至少一个媒体会话而收集的。

所述方法可以包括基于类型度量和选择数据向所述可用路径分配优先级,其中较高质量的可用路径具有比较低质量的可用路径更高的优先级,并且基于此而被选择。

所述方法可以包括至少基于所述类型度量而向可用路径分配优先级并生成一组可用路径,其中,进行选择的步骤被限制在从所述一组可用路径选择,并且在进行选择的步骤之前从所述一组可用路径移除较低质量的可用路径,以便使得替代地选择较高质量的可用路径。

本主题的第三方面针对一种用于经由通信网络在用户设备和其他端点之间实现媒体会话的用户设备,存在经由其可以建立所述媒体会话的通过所述网络的多个可用路径,所述用户设备包括:访问组件,其被配置为访问与所述可用路径相关联的、传达所述可用路径的直接性的类型度量,所述类型度量用于针对所述媒体会话而选择可用路径;输入端,其被配置为接收选择数据以用于影响所述选择,所述选择数据是基于指示所述可用路径的质量的网络信息而生成的,所述网络信息是从多个网络节点收集的并且包括来自与所述用户设备和所述其他端点不同的网络节点的贡献,其具有所述可用路径的至少部分的当前的可见性和/或过去的可见性;路径选择组件,其被配置为基于所述选择数据,针对所述媒体会话而相对于较直接但是较低质量的可用路径而优选地选择较高质量但较不直接的可用路径,其中,所述媒体会话是经由所选择的路径来建立的。

第四方面针对一种用于经由通信网络在进行发起的端点和进行响应的端点之间实现媒体会话的计算机实现的方法,所述方法包括在进行发起的端点和进行响应的端点中的至少一个端点的计算机处实现以下步骤:在所述端点处生成一组候选者对,每个候选者对包括可用于进行发起的端点的相应的网络地址和可用于进行响应的端点的相应的网络地址,通过在进行发起的端点和进行响应的端点之间交换网络地址,使用通过应用以下步骤而被确定为有效的该组中的一个候选者对来建立媒体会话:在端点处接收与网络地址中的至少一个网络地址有关并且指示通过网络的路径的质量的选择数据,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;接收与每个网络地址关联并且指示通过所述网络的路径的直接性的相应的类型度量,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;并且所述端点针对所述组中的至少一个候选者对而执行连通性检查,以确定候选者对是否有效,其中,根据类型度量和选择数据来选择至少一个候选者对。

第五方面针对一种用于通过通信网络在进行发起的端点和进行响应的端点之间实现媒体会话的计算机,所述计算机是在进行发起的端点和进行响应的端点中的至少一个处实施的,所述计算机包括:候选者对生成组件,其被配置成生成一组候选者对,每个候选者对包括可用于进行发起的端点的相应的网络地址和可用于进行响应的端点的相应的网络地址,通过在进行发起的端点和进行响应的端点之间交换网络地址,使用通过应用以下步骤而被确定为有效的所述组中的一个候选者对来建立媒体会话:i)在端点处接收与网络地址中的至少一个网络地址有关并且指示通过网络的路径的质量的选择数据,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;ii)接收与每个网络地址关联并且指示通过所述网络的路径的直接性的相应的类型度量,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;并且iii)所述端点针对所述组中的至少一个候选者对而执行连通性检查,以确定候选者对是否有效,其中,根据类型度量和选择数据来选择至少一个候选者对。

所述选择数据的至少一部分可以是经由通信网络接收的和/或所述选择数据的至少一部分可以是基于在所述端点处本地保存的网络信息而生成的。

第六方面针对一种用于经由通信网络在进行发起的端点和进行响应的端点之间实现媒体会话的计算机程序产品,所述计算机程序产品包括在计算机可读存储介质上存储的代码,并且所述代码被配置为当在进行发起的端点和进行响应的端点中的一个端点的计算机上执行时,使得以下步骤被执行:在所述端点处生成一组候选者对,每个候选者对包括可用于进行发起的端点的相应的网络地址和可用于进行响应的端点的相应的网络地址,通过在进行发起的端点和进行响应的端点之间交换网络地址,使用通过应用以下步骤而被确定为有效的所述组中的一个候选者对来建立媒体会话:在端点处接收与网络地址中的至少一个网络地址有关并且指示通过网络的路径的质量的选择数据,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;接收与每个网络地址关联并且指示通过所述网络的路径的直接性的相应的类型度量,其中如果所述网络地址用于所述媒体会话,则将经过所述路径;并且所述端点针对所述组中的至少一个候选者对而执行连通性检查,以确定候选者对是否有效,其中,根据类型度量和选择数据来选择至少一个候选者对。

在实施例中,根据ICE协议,所述类型度量与所述网络地址相关联。

可以根据类型度量和选择数据而向候选者对中的每个候选者对分配相应的第一对优先级,选择至少一个候选者对,而不是在所述组中比所述至少一个候选者对具有更低的第一对优先级的另一个候选者对,所述至少一个候选者对是基于此而被选择的。可以根据类型度量而向每一候选者对分配相应的第二对优先级,其中,第二对优先级与选择数据无关,通过根据选择数据而修改第二对优先级来分配第一对优先级,所述至少一个候选者对与其他候选者对相比具有较低的第二对优先级,但是具有较高的第一对优先级。可以根据所述ICE协议来分配第二对优先级。

可以根据所述选择数据而从所述组中移除候选者对,其中,针对所移除的候选者对不执行连通性检查,根据类型度量并且替代所移除的候选者对而选择至少一个候选者对。

可以建立媒体会话以在进行发起的端点和进行响应的端点之间建立实时通信事件。所述实时通信事件可以是语音通话和/或视频通话。

尽管以特定于结构性特征和/或方法动作的语言描述了本主题,但是应当理解的是,在所附权利要求中所定义的主题不一定限于在上文中所描述的特定的特征或动作。相反,在上文中所描述的特定的特征和动作是作为实现权利要求的示例形式而公开的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1