用于网络端点间的媒体会话的方法和装置与流程

文档序号:26572960发布日期:2021-09-08 02:29阅读:101来源:国知局
用于网络端点间的媒体会话的方法和装置与流程
用于网络端点间的媒体会话的方法和装置
1.本技术是申请日为2016年11月14日、申请号为201680067603.0的发明专利申请“用于网络端点间的媒体会话的方法和装置”的分案申请。


背景技术:

2.通信网络通常包括不同类型的网络节点,诸如在网络内执行不同功能的用户设备、路由器、网络地址转换器(nat)、媒体中继服务器等。两个通信节点(端点,如用户设备)之间的通信可以通过网络的其他节点(中间节点,如路由器、nat和媒体中继服务器)进行。网络可以具有分层架构,由此不同的逻辑层提供不同类型的节点到节点通信服务。每个层都由紧接该层下方的层(除最低层以外)提供服务,并向紧接该层上方的层(除最高层之外)提供服务。网络可以是基于分组的网络和/或互联网。
3.可以在经由通信网络连接的两个端点(诸如用户设备)之间建立媒体会话,使得可以经由网络在这些端点之间发送和接收实时媒体。媒体会话的示例是sip(“会话发起协议”)媒体会话。媒体会话可以是ip语音或视频(voip)会话,其中在voip会话中的端点之间发送和接收呼叫的音频和/或视频。端点和其他类型的网络节点可以通过网络地址(例如ip(“互联网协议”)地址)来标识,其中会话在与端点相关联的传输地址之间建立。传输地址是网络地址(例如,ip地址)和与该网络地址关联的端口的组合。
4.为了建立媒体会话,其中一个端点可以向另一端点发送媒体会话请求。这里,发起对媒体会话(例如音频/视频通信)的请求的端点被称为“发起端点”或等同地称为“主叫端点”。接收和处理来自呼叫者的通信请求的端点称为“响应端点”或“被叫端点”。每个端点可以具有多个关联的传输地址,例如,本地传输地址、nat公共侧的传输地址、分配在中继服务器上的传输地址等。在媒体会话建立期间,对于每个端点,为该端点选择相应的地址以用于在媒体会话中发送和接收数据。例如,可以根据ice(“互动连接建立”)协议来选择地址。一旦媒体会话建立后,媒体可以在不同端点的所选地址之间流动。为了选择路径,生成所谓的“候选对”的列表,其中每个候选对包括可用于端点中的第一个的网络地址——从第一端点的角度来看是“本地”候选者,但是请注意“本地”在这种上下文中不限于其本地接口上的主机地址,并且还可以包括na的公共侧的反身地址或可以将媒体数据中继到第一端点的媒体中继服务器的中继网络地址——以及第二端点可用的网络地址(从第一端点的角度看是“远程”候选者)。可以通过在所谓的“连接性检查”期间从本地地址向远程地址发送一个或多个探测消息来检查本地候选者和远程候选者的每一对可能的配对,以确定其是否有效。


技术实现要素:

5.提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在确定所要求保护的主题的关键特征或主要特征,也不旨在用于限定所要求保护的主题的范围。
6.本公开涉及经由通信网络在第一端点和第二端点之间建立媒体会话,使得媒体数据(音频和/或视频数据)可以在建立的媒体会话中的端点之间传输。媒体会话基于由端点
执行的连接性检查而建立。
7.根据主题的各个方面,在某些情况下,仅对“减少的”一组候选对执行连接性检查。使用探测消息检查候选对使用带宽,因此通过减少候选对的数量,可以节省带宽。
8.至少第一端点(以及在一些情况下,第一端点和第二端点两者)确定一组一个或多个减少的连接性检查标准中的至少一个是否被满足。该确定可以以多种方式进行,例如基于第一端点的直接测量,例如根据turn或stun协议由第一端点发起;和/或通过访问由网络运营商或管理员(例如)设置的一个或多个本地和/或远程参数;和/或基于从第二端点和/或服务器接收的一个或多个消息,例如,第二端点和/或服务器基于其自己的直接测量和/或参数已经生成的消息。
9.如果由第一端点确定没有满足任何标准,则通过在第一端点和第二端点之间交换候选网络地址来执行完整候选配对过程以在第一端点处为连接性检查生成完整的一组候选对,例如根据ice协议(尽管主题不限于任何特定协议)。每个候选对包括可用于第一端点的第一候选网络地址和可用于第二端点的第二候选网络地址。然而,如果由第一端点确定满足至少一个标准,则执行减少的候选者配对过程以在第一端点处为连接性检查生成比完整的一组候选对较少的减少的一组候选对。使用所生成的候选对组(即,减少的组或完整的组,这取决于是否确定满足至少一个标准)的候选对来建立媒体会话。用于建立媒体会话的候选对是通过端点对于生成的候选对组中的至少一个候选对执行连接性检查以确定候选对是否有效而被确定为有效的那个候选对。如果确定满足至少一个减少的连接性检查标准,则对在完整候选对组中的且也不在减少的候选对组中的任何候选对不进行连接性检查。
附图说明
10.为了帮助理解主题并示出其如何实施,现在将仅通过示例的方式参考以下附图,其中:
11.图1示出了通信系统;
12.图2示出了用户设备的框图;
13.图3示出了控制服务器的框图;
14.图4示出了分层网络架构的表示;
15.图5示出了网络地址转换器的操作;
16.图6a

c分别示出了用于媒体会话的通过网络的第一路径、第二路径和第三路径;
17.图7示出了媒体会话的一组可能的地址配对;
18.图8示出了表示端点和控制服务器的功能的功能框图;
19.图9是用于建立媒体会话的方法的流程图;
20.图10是连接性检查过程的流程图。
具体实施方式
21.实时呼叫通常分两个阶段进行:初始信令阶段,在该阶段中确定有效的连接路径,例如基于ice协议,以允许在随后的媒体流动阶段中呼叫媒体(音频/视频数据)在端点之间流动。
22.ice是用于建立穿越网络地址转换器(nat)和防火墙的voip会话的连接性的协议。它侧重于建立媒体延迟方面最高效的路径,以确保理想的媒体质量。ce协议试图通过基于“静态优先级”尝试不同的路径来识别最高效的路径。
23.随着移动端点数量的增加和voip技术的渗透,本主题的发明人已经观察到越来越多的用户尝试从具有非常有限的带宽的网络建立呼叫。对于这种带宽受限的网络,rfc 5245中定义的ice机制可能导致网络饱和,导致呼叫建立失败,选择次优路径并影响现有模式的质量。
24.本主题的所描述的实施例显著地减少了连接建立所需的带宽,使得能够成功建立呼叫(或其他媒体会话),并且对带宽受限网络具有特定的但并非唯一的适用性。
25.ice为呼叫信令阶段的一个方面提供通用框架,其指定配对来自呼叫者和被呼叫者端点的所有可能的“候选者”,并且探查连接性检查中的所有可能的连接路径。
26.候选者包括可用于端点之一的网络地址,其可以是该设备本地的网络接口的本地网络地址(“主机候选者”),之后定位有端点的nat或防火墙的公共侧上的网络地址,其中nat/防火墙可以在该地址处代表端点接收媒体数据并将其路由到该端点(“反身候选者”),或者媒体中继服务器的网络可以在该地址处代表端点接收媒体数据并将接收到的媒体数据中继到端点(“中继候选者”)。这些网络地址是“候选者”,因为在可用于呼叫者的每个候选网络地址和可用于被呼叫者的每个候选网络地址之间建立媒体会话可能并不总是可能的。例如,在呼叫者和被呼叫者位于不同的nat之后的情况下,通常不可能直接通过公共互联网在它们的主机网络地址之间建立连接(见下文)。
27.候选者可以另外表示特定的联网协议,特别是传输层或网络协议——例如,可用于端点之一的一个网络地址可以产生两个候选者,例如,该地址的tcp候选者和udp候选者(tcp和udp是传输层协议)。在某些情况下,例如,如果其中一个或两个端点位于udp阻拦防火墙之后,可用使用tcp而不是udp在两个候选网络地址之间建立媒体会话。又例如,候选对可以表示iupv6或ipv6之一,这取决于它包含的ip地址是ipv4还是ipv6地址(ipv4和ipv6是网络层协议)。
28.根据ice,每个候选者执行候选者“收集”阶段,其中每个端点识别对其可用的每个候选者。然后,端点通过每个端点向其他端点发送其收集的候选者来交换候选者。
29.每个端点然后在候选者配对过程中确定其自己收集的候选者(从该端点的角度看是“本地”候选者)与从另一个端点接收的每个候选者(“远程”候选者)的每个可能的配对,以准备连接性检查。每个候选者仅与表示相同网络协议的其他候选者配对,例如,tcp和udp候选者分别仅与其他tcp和dup候选者配对。除了该限制之外,每个可能的('本地候选者','远程候选者')候选对都有资格对于每个指定的协议进行连接性检查,即(主机,主机),(主机,反身),(主机,中继),(反身,主机),(反身,反身),(反身,中继),(中继,主机),(中继,反身),(中继,中继)。确定的候选对被组织成一组候选对(“候选对组”)以进行连接性检查——所谓的“检查列表”(见下文),其是所确定的候选对的有序列表。排序由ice协议定义,基于ice协议定义的“静态优先级”(见下文)。
30.在连接性检查期间,由本地端点从该对的本地候选地址向该对的远程候选地址发送多个探测消息来检查给定候选对。在此情况下,“从”意味着将本地候选者指定为返回地址,即将其标识为远程端点应该将对探测消息的响应发送到的网络地址,例如,结合传出的
ip和tcp/udp头部——见下文。
31.如果本地端点在响应间隔内响应于至少一个探测消息而接收到答复,则该候选对被确定为有效的。
32.按照顺序(即,按照静态优先级的顺序)检查检查列表中的候选对——因此这取决于情况,可以针对检查列表中的每个候选对发送至少一个探测消息(即,假设连接性检查在到达检查列表末尾之前不终止)。此外,本地端点可以发送针对检查列表中的任何候选对的多个探测消息,例如,它可能会一直发送探测消息(重试),直到收到答复或连接性检查终止为止。
33.取决于实现方式,连接性检查通常在最高优先级路径被验证时或当达到预定超时时结束。
34.一方面,这提供了高度稳健的媒体会话建立机制——如果在媒体可以经由其流动的端点之间存在路径,则几乎可以保证找到该路径。
35.另一方面,如本公开所认识到的,这确实意味着,甚至在媒体数据开始在端点之间流动之前,可以通过以下来消费显著的带宽:(i)收集多个反身候选者和中继候选者(因为这些需要信令——见下文),(ii)在端点之间交换多个收集的候选者,以及(iii)作为连接性检查的一部分传输针对多个候选对的多个探测消息。尤其是,尽管不是唯一的,在带宽受限的网络(如蜂窝网络)中存在一个问题,在遵循这种常规ice方法的情况下,连接性检查本身可以使带宽受限的链路饱和,导致呼叫建立失败或影响已经在共享相同网络的其他端点之间建立的现有媒体流的质量。
36.本公开认识到,在某些情况下,允许比ice协议的严格规则所指定的灵活性更大的灵活性可以导致在呼叫建立的信令阶段期间,特别是在带宽受限网络中做到带宽节省。在本主题的实施例中,这样的带宽节省可以通过以下各种方式来实现:
37.1.修剪候选者和/或候选对,即排除某些候选对以使得没有进行连接性检查的资格,从而保证不对该对执行连接性检查,即保证不发送针对该候选的探测消息,例如候选对在该情况下不可能有效的情况下或者不太可能在目前的情况下使用;和/或
38.2.限制针对该特定候选对执行连接性检查的程度,即,限制发送针对该候选对的探测消息的数量,即减少连接性检查中针对该对的重试次数,例如候选对在当前情况下不可能有效或使用的情况;和/或
39.3.改变检查候选对的顺序,即按照与ice协议规定的顺序不同的顺序对检查列表排序,以便“不优先考虑”在当前情况下不太可能有效或使用的候选对。
40.在1的上下文中,在某些情况下,可以在候选者收集之前修剪某些类型的候选者,例如在某些情况下,终端可能根本不收集中继候选者(见下文)。这可以导致在以下所有三个过程中节省带宽:候选者收集过程,因为它消除了收集中继候选者所需的信令,例如在端点和turn服务器之间;候选者交换过程,因为要交换的候选者较少;以及连接性检查阶段,因为要检查的候选者较少。在其他情况下,可能会发生全面的候选者收集,但某些配对仍然可能被排除,这仍然会导致连接性检查阶段的带宽节省。
41.以下仅通过示例来描述实施例。首先描述可以有效应用实施例的上下文。
42.图1是通信系统的示意图,其包括:公共网络2,其是基于分组的互联网(即,互连的单独网络的系统),例如互连网,其具有公共地址空间;第一和第二端点,它们是由第一和第
二用户4a,4b操作的第一和第二用户设备6a,6b;第三和第四端点,它们是由第三和第四用户4'a,4'b操作的第三和第四用户设备6'a,6'b;第一和第二媒体服务器14a,14b;和控制服务器(遥测服务器)12。公共网络2包括多个路由器3,路由器3在公共网络2的不同单独网络(未示出)之间路由业务。
43.用户设备6a,6'a连接到第一基于分组的专用网络5a并且是第一基于分组的专用网络5a的网络节点,并且用户设备6'a,6'b连接到第二基于分组的专用网络5b并且是第二基于分组的专用网络5b的网络节点。
44.专用网络的每个节点在该专用网络的专用地址空间中具有相应的专用网络地址,其中连接到同一专用网络的其他节点(以及仅此类节点)可以用于通过该专用网络(并且仅通过该专用网络)与该节点通信。该地址是私密的,因为它不能用于通过未连接到同一专用网络的设备与该节点进行通信,例如它不能在公共网络2内使用。而且,虽然该地址在该专用网络内是唯一的,但是其他节点可以在不同网络内使用相同的网络地址(例如,第一和第二用户设备5a,5b可以碰巧具有相同的专用网络地址,但其可用于仅在第一专用网络5a内与第一用户设备6a进行通信并且可用于仅在第二专用网络5b内与第二用户设备6b进行通信)。
45.为了使第一专用网络5a(相应地,第二专用网络5b)的节点能够与公共网络2通信,第一(相应地,第二)专用网络经由第一网络地址转换器(nat)8a(相应地,第二nat 5b)与公共网络2连接。每个nat 5a,5b——以及分别在第一和第二专用网络5a,5b的第一和第二专用地址空间中具有相应的专用网络地址(称为该nat的专用侧上的地址)——也具有公共网络2的公共地址空间中的相应的公共网络地址(称为在该nat的公共侧的地址)。因此,不仅第一和第二专用网络5a,5b的节点可以使用那些nat的专用网络地址分别与第一和第二nat 5a,5b进行通信,而且该专用网络外的节点可以使用那些nat的公共网络地址与那些nat 5a,5b进行通信。
46.nat(例如8a,8b)通过将专用网络的专用地址空间映射到公众的公共地址空间中而作为专用网络(例如5a,5b)和公共网络(例如2)之间的接口进行操作,从而使得专用网络的节点能够通过公共网络在专用网络之外进行通信。
47.专用网络之一(5a/5b)之外的节点可以使用该nat公共地址通过公共网络2将旨在针对该专用网络的特定节点的业务引导至相关nat(8a/8b),然后nat通过该专用网络将业务转发到该节点。
48.下面详细描述nat的操作。
49.专用网络5a,5b和公共网络2构成通信网络1,其中各种用户设备6a,...,6'b,nat 8a,8b,服务器12,14a,14b和路由器3是网络节点。通信网络1也是互联网(其包括互连网2的各个网络以及专用网络5a,5b)。
50.用户设备6a,6b执行通信客户端软件7a,7b(客户端)的相应实例。客户端使得用户设备6a,6b能够通过网络1在用户设备6a,6b之间建立媒体会话,例如以促进用户4a,6b之间的实时通信事件(例如,语音和/或视频呼叫),使得用户4a,4b可以通过网络1彼此通信,其中在媒体会话中在用户设备6a,6b之间发送和接收呼叫音频和/或视频。用户设备6'a,6'b也执行客户端软件7'a,7'b的相应实例以达到类似的效果。
51.用户设备可以通过一些不涉及任何nat的其他机制连接到公共网络2,尽管这在图
2中未示出。例如,用户设备可以经由wi

fi连接连接到专用网络以及通过移动网络而不涉及nat的公共网络。
52.控制服务器12执行控制代码13从而以下面描述的方式监视和控制各种用户设备之间的通信的各方面。
53.图2是用户设备6(例如,6a,6b,6'a,6'b)的示意性框图。用户设备6是可以采取多种形式的计算机设备,例如,台式计算机或膝上型计算机、移动电话(例如智能电话)、平板计算设备、可穿戴计算设备、电视机(例如智能tv)、机顶盒、游戏控制台等。
54.用户设备6包括处理器22,连接到处理器22的以下组件:存储器20、一个或多个输出设备(诸如显示器23和扬声器26)、一个或多个输入设备(诸如相机27和麦克风28)以及使得用户设备6能够连接到网络1的网络接口24(诸如以太网、wi

fi或移动网络(例如3g,lte等)接口)。显示器23可以包括触摸屏,其可以接收来自设备6的用户的触摸输入,在这种情况下,显示器23也是用户设备6的输入设备。示出的连接到处理器的各种组件中的任何组件可以集成在用户设备6中,或者非集成并经由合适的外部接口(有线,例如以太网,或无线,例如wi

fi)连接到处理器22。
55.存储器20保存客户端7的副本,当在处理器24上执行时,副本使用户设备6实现客户端7的功能。
56.客户端7具有用户接口,用于从用户设备6的用户接收信息并向用户设备6的用户输出信息,包括在诸如呼叫的通信事件期间。用户接口可以包括例如经由显示器23和/或自然用户接口(nui)输出信息的图形用户接口(gui),其其使得用户能够以“自然”方式与设备交互,免受来自某些输入设备(如鼠标、键盘、遥控器等)施加的人为约束。nui方法的示例包括利用触敏显示、话音和语音识别、意图和目标理解,使用深度相机的运动姿势检测(例如立体或飞行时间相机系统、红外相机系统、rgb相机系统以及这些的组合)、使用加速度计/陀螺仪的运动姿势检测、面部识别、3d显示、头部、眼部和视线跟踪、身临其境的增强现实和虚拟现实系统等的那些方法。
57.图3是控制服务器12的示意性框图。控制器服务器12包括处理器32和连接到处理器32的存储器30,以及使控制服务器12能够连接到网络1的网络接口24。存储器30保存控制软件13,当在处理器32上执行时,使得控制服务器12实现控制软件13的功能。虽然被描绘为单个设备,但是控制服务器12的功能可以以分布式方式分布在多个服务器设备上,或者可选地由一个或多个用户设备来实现,例如,以分布式的点对点方式。
58.网络1具有分层架构,由此网络1的功能被组织为抽象层。这在图4中示意性地示出。在该示例中,网络1实现互连网协议组,由此该功能被组织成四个层108

102:应用层108(与osi(“开放系统互连”)的层5、6和7的组合相当模型)、应用层108下面的传输层106(与osi模型的层4相当)、网络层104(与osi模型的层3相当),这是在传输层106下面的互联网层,以及在互联网层104下面的链路层102(与osi模型的层1和层2的组合相当)。
59.应用层108提供在不同主机(即连接到网络1的通用计算机设备,诸如用户设备6和服务器12,14)上运行的进程之间的进程到进程通信(请注意,路由器3和nat 8不是这里使用的术语“主机”)。传输层106提供不同主机之间的端对端通信,包括提供主机之间的端到端信道以供进程使用。互联网层104例如经由在互连网层操作的路由器3/nat 8提供路由,即例如互联网1的不同的单个网络之间的通信,其中后者提供在互连网层的网络地址信息
的转换(网络地址转换)。链路层102提供例如互联网1的相同单独网络中相邻节点的物理网络地址——mac(“媒体访问控制”)地址之间的通信,例如经由在链路层102处操作的网络交换机和/或集线器等。
60.将通过网络1传输的应用数据(例如,用户数据)在传输主机处从应用层108传递到传输层106,在传输层106处,根据诸如udp(“用户数据报协议”)或tcp(“传输控制协议”)的传输层协议将其分组成传输层分组。tcp是一种“可靠的”流传送服务,因为它涉及确认/重传机制,而udp是“不可靠的”流传送服务,因为它不涉及任何这样的机制。不可靠服务的分组称为数据报。然后将传输层分组的数据(例如,tcp分组/udp数据报)传递到该主机处的互联网层104,在该互联网层处根据互连网协议(这是互联网层协议),数据被进一步分组成ip数据报。然后,ip数据报的数据被传递到链路层102,以通过网络1传输到接收主机。当在接收主机处被接收到时,ip数据报的数据被向上传递到互联网层104,在该互联网层104处,从ip数据报的有效载荷中提取传输层分组的数据并向上传递到传输层106,在传输层106处,从传输层分组的有效载荷中提取应用数据并传递到应用层。
61.在图4中示出了传输层分组(例如,tcp分组或udp数据报)10。传输层分组106包括传输层头部(例如udp/tcp头部)10i——其被生成并附着在传输主机的传输层106处——以及传输层有效载荷(例如,udp/tcp有效载荷)10ii——其对从应用层108接收到的应用数据进行编码。
62.还示出了ip数据报11。ip数据报11包括在传输主机的互联网层104处生成并附着的ip头部11i和对从传输层接收到的传输层分组的数据进行编码的ip有效载荷11ii。ip头部包括作为ip分组11通过网络1所引导至的传输地址的目的地传输地址,以及作为生成ip数据报的主机本地(至少在分组生成的这个阶段)的传输地址的源传输地址。
63.在此使用术语“ip头部级别”和“ip有效载荷级别”以分别指代在ip头部和ip有效载荷中编码的信息。
64.对于在专用网络(例如5a/5b)内生成的分组,ip头部包括ip地址,该ip地址是该专用网络的专用地址空间中的专用网络地址(例如,5a/5b中的用户设备6a/6b的专用网络地址);传输层头部(例如,udp/tcp头部)包括与该ip私有地址相关联的端口的端口号。ip地址和相关端口一起构成“传输地址”,其可以用于在专用网络内识别不仅仅是特定设备,而是例如在该设备上运行的特定应用实例(例如通信客户端实例)。
65.如所指出的,这种专用地址空间在该专用网络之外是不可用的。因此,如果简单的路由器用于在该专用网络(例如5a/5b)和公共网络(例如2)之间转发ip数据报,该专用网络之外的节点将无法响应这些数据报,因为它们不会有ip头部中任何可用的源地址。
66.为此,可以使用nat来提供公共网络和专用网络之间的接口。
67.图5示出了nat 8(例如8a,8b)的操作。ip数据报11由nat经由专用网络5(例如5a,5b)从该网络的诸如用户设备6(例如,6a/6'a,6b/6'b)的节点接收。ip和tcp/udp头部11i,10i传送用户设备6的初始源传输地址,其包括用户设备6在私有网络5中的私有地址空间中的私有网络地址(其是私有ip地址)和与该私有地址相关联的端口。ip和udp/tcp头部11i,10i还传送ip数据报11已经由用户设备6引导至的目的地传输地址。
68.如图所示,对于每个ip数据报,nat 8修改ip和(在一些情况下)tcp/udp头部11i,101以用新的源传输地址替换初始源传输地址,由此生成修改的ip数据报11',修改的ip数
据报11'带有传送新的源传输地址的修改的ip和(在某些情况下)tcp/udp头部11'i,10'i。目的地传输地址和应用数据17未被nat 8修改。新的传输地址由nat 8在公共网络2的公共地址空间中的公共网络地址(其是公共ip地址)和与该公共ip地址关联的端口形成。
69.nat 8维持初始传输地址和新的传输地址之间的映射9,以便它可以将已经经由公共网络2被引导到新的传输地址的任何返回业务(并且这将在nat 8处终止)经由专用网络5转发到用户设备6的初始传输地址。
70.在最简单的示例中,nat简单地用它自己的公共ip网络地址替换私有ip地址,并且不改变端口。然而,nat实施地址空间伪装变得越来越普遍,因此私有地址空间隐藏在单个网络地址之后。为防止返回分组中出现歧义,nat通常必须更改其他信息,例如与源地址关联的端口。例如,nat可以具有单个公共ip地址并且用它自己的单个公共ip地址和唯一的(并且可能不同的)端口替换私有地址空间中的每个传输地址,从而在私有网络的专用网络节点之外仅通过与该单个公共ip地址相关联的端口而彼此区分。
71.通常,nat不修改ip有效载荷,而仅以上述方式修改ip头部和(在一些情况下)udp/tcp头部。对于简单地将响应引导至ip头部中的源地址的协议(例如http)而言,这通常是可以接受的。
72.然而,包括一些媒体会话协议(诸如sip)的其他协议也依赖于在ip有效载荷(而不是头部)级编码的端点的地址。例如,sip协议规定端点应使用包含在sip邀请/sip响应中的地址来建立媒体会话,媒体会话将在ip有效负载(而不是头部)级进行编码。如图5所示,这不会被nat 8修改。
73.因此,例如,假设图1中的第一用户设备6a要通过以ip有效负载级编码的第一nat 8a向第二用户设备6b发送媒体会话邀请。该nat 8a不会修改ip有效载荷,因此,在接收到该邀请的情况下,第二用户设备6b将尝试使用来自未修改的ip有效载荷(不是头部)的第一用户设备6a的未经修改的专用传输来响应邀请,这将会失败,因为该专用地址在专用网络5a之外不可用,并且因此将不可能建立会话。类似地,即使第一用户设备6a不在nat 8a之后而是具有其自己的公共ip地址,会话建立仍将失败,因为第二用户设备5b在nat 5b之后:在以会话邀请响应于邀请时,第二用户设备6b将以ip有效负载级编码的响应中在第二专用网络5b的第二地址空间中包括其自己的专用地址,这类似地不可由第一用户设备6a使用。
74.为此,已经开发了诸如stun(“用于nat的会话遍历实用程序”)和turn(“使用中继nat的遍历”)的协议以使sip会话等能够在由一个或多个nat分开的端点之间建立。
75.stun允许端点确定它是否位于nat之后,如果是,则nat的公共地址映射到发起端点的私有地址(即有效地赋予它对映射9的访问权),以便端点可以在ip有效载荷而不是其私有地址中包含该公共地址。通常,stun通过发起端点向stun服务器发送查询来工作,查询通过nat并通过公共网络中继到stun服务器作为ip数据报。由于nat将查询的ip头部中的私有地址替换为nat公共侧的相应公共地址,因此stun服务器可以从查询的ip头部中获取nat公共侧的相应公共地址,其可以进一步将nat公共侧的相应公共地址提供给发起端点。发起端点然后可以使用该公共地址而不是其自己的私有地址来建立会话,从而在会话请求中将ip有效负载级的可用地址传送到响应端点。响应端点可以类似地发现其相关联的公共地址,相关联的公共地址可以在响应而不是其自己的私有地址中以ip有效负载级别发送到发起端点。stun服务器的作用实际上是提供地址发现的功能之一,并且一旦建立,它通常不会
参与媒体会话。
76.如本领域中已知的,即使当nat的公共地址已知时,例如当发起和/或响应端点位于对称nat之后时,也存在这样的情况,即无法建立这样的会话。在这种情况下,一个或多个turn中继服务器通常可用于通过turn服务器中继媒体数据来遍历nat。
77.当端点需要使用turn中继时,它向turn中继发送请求,以请求将turn中继上的唯一公共传输地址分配给端点。如果请求被接受,则使用turn服务器的公共地址作为该端点的源地址来建立媒体会话。该端点向turn服务器发送它希望在包含在turn消息中的会话中发送的媒体。turn服务器从turn消息中提取媒体,并将其从已分配给该端点的turn服务器上的公共地址作为源地址向前中继。turn服务器还将旨在针对已经引导至turn服务器上分配的地址的该端点的数据中继到包含在turn消息中的该端点以供该端点提取。
78.如果两个端点都位于不允许stun的nat之后,则每个端点将需要其自己的相应传输地址被分配在turn服务器上,在这种情况下这两个分配的turn服务器地址之间建立媒体会话,并且每个端点在turn消息中继/接收数据,其中提供给turn服务器的数据从分配给媒体会话中的那些端点的两个turn服务器地址发送和接收。
79.turn中继需要在该(那些)服务器上至少在媒体会话期间分配资源(包括在turn服务器上分配的唯一公共传输地址),并且还意味着与当直接在端点之间或经由一个或多个nat建立媒体会话时相比,媒体会话的媒体通过不太直接的路径传播。因此,虽然turn中继可以或多或少地保证为媒体会话提供通过网络的可用路径,但这种中继的代价是服务器资源的使用增加以及由于路径的间接性而可能增加的等待时间。
80.stun和turn功能可以并入相同的服务器中,该服务器有时也简称为turn服务器,即使它也包括stun功能。
81.图1的媒体服务器14a和14b是turn服务器,其结合了stun和turn功能,并因此具有地址查找和媒体中继功能。可替代地,该功能和/或其他功能可以在分开的服务器之间拆分,或者由下面描述的媒体服务器14a,14b执行的功能可以由相同的服务器执行。
82.ice(“互动连接建立”)是一种已知的协议,用于建立穿过网络地址nat和防火墙的voip会话的连接,该连接试图建立媒体延迟方面最高效的路径以确保理想的媒体质量。ice协议的细节可以在公开可用的rfc5245,互动连接建立(ice):用于提供/回答协议的网络地址转换器(nat)遍历的协议,j.rosenberg(2010年4月)中找到。ice协议的某些扩展在[ms

ice2]互动连接建立(ice)扩展文档(http://msdn.microsoft.com/en

us/library/office/cc431504(v=office.12).aspx)中定义。
[0083]
在ice的上下文中,客户端之间具有直接连接的路径(直接路径)对于涉及使用中间中继服务器(例如通过turn服务器进行中继)的间接路径上的媒体会话是优选的。ice的上下文中的路径是指可用于在这些端点之间传输和接收数据的一组nat和/或媒体中继服务器(如果有的话:路径可以不包括nat或服务器)。如下所述,路径由一对传输地址标识,其中的一个传输地址用于由发起端点发送和接收数据,另一个传输地址用于响应端点发送和接收数据,它定义了这样一组nat和/或媒体中继服务器(如果有的话)。
[0084]
ice仅允许通过对称网络的路径。在该上下文中对称路径意味着从第一端点沿着该路径传输到第二端点的数据遍历与从第二端点沿该路径传输到第一端点的数据相同的一组nat和/或媒体中继服务器(如果有的话),但顺序相反。当然,在端点和nat、端点和服务
器、nat和nat、服务器和服务器,服务器和nat等之间采取的路由方面可能存在不对称,例如,对于互联网业务,数据可以在每个方向和/或不同时间遍历通过互联网的不同的单独网络,并且因此通过不同的路由器,但是仍然在两个方向通过相同的nat和/或turn服务器(如果有的话)。不包括服务器或nat的直接路径是对称的。
[0085]
图6a

6b示出了通过图1的网络1的路径的示例,这些路径是对称的并且在ice的上下文中被认为是直接的。
[0086]
图6a示出了在沿着从发送端点6(左手侧)到接收端点的第一路径在一个方向上传播的旨在针对接收端点6(右侧)的数据。第一路径不包括任何nat 8或中继服务器14。该路径是对称的,因为在另一方向传播的数据也不经过任何nat 8或中继服务器14,尽管它可以沿不同方向和/或在不同的时间通过不同路由器3。
[0087]
如图所示,一旦数据已经从传输层106作为传输层(例如udp/tcp)分组10通过发送端点传递到网络层104,它就保持在网络层104处或在网络层104之下,直到达到接收端点为止。也就是说,在沿着第一路径传播时不存在对数据的传输层(或更高)处理。传送数据的ip分组10可以沿着路径被分段,但是除了未修改的之外,传输层分组10因此以类似未修改的方式到达接收端点的传输层。
[0088]
图6b示出了沿着从发送端点6(左手侧)到接收端点的第二路径在一个方向上传播的旨在针对接收端点6(右侧)的数据。第二路径包括至少一个nat 8但不包括任何中继服务器14。该路径是对称的,因为在另一个方向上传播的数据经由相同的nat 8(以相反的顺序)而不是中继服务器14,尽管它可以经由不同的路由器3,但是它在任一方向和/或不同时间穿过的路由器可能不同。
[0089]
再次,一旦数据已经从传输层106作为传输层(例如,udp/tcp)分组10传递到发送端点处的网络层104,在该示例中,其保持在网络层104处或在网络层104之下,直到达到接收端点为止。与图6a的第一路径相比,传送数据的ip分组11在nat 8处被修改以改变ip头部中的源地址。此外,在一些情况下,tcp/udp头部也可以被修改以修改端口号,虽然在图6b中未明确示出。
[0090]
在图6b中修改的ip分组被标记为11'。然而,对传输层分组10进行编码的ip有效载荷未被修改,因此在接收端点的传输层处接收未被修改的传输层分组10。
[0091]
图6c示出了通过网络1的对称间接路径的示例。
[0092]
图6c示出了沿着从发送端点6(左手侧)到接收端点的第三路径在一个方向上传播的旨在针对接收端点6(右侧)的数据。第三路径包括至少一个媒体中继服务器14,并且还可以包括一个或多个nat(未示出)。路径是对称的,因为在另一方向传播的数据经由相同的中继器和nat(以相反顺序),但可以在不同方向上和/或在不同时间经由不同的路由器。
[0093]
如果将图6c所示的turn服务器14分配给发送端点6(左侧),则将数据包含在turn消息中从发送端点发送到服务器14,其中从turn消息中提取该数据并朝向接收端点中继,否则如果turn服务器被分配给接收端点,则将在中继服务器14处从发送端点接收到的数据封装到turn消息中以向接收端点传输。无论哪种情况,turn服务器都在传输层和应用层处运行,以便在通过第三路径时重新格式化数据,这使得第三路径是间接的。由于重新格式化,接收端点接收传输层分组10',该传输层分组10'不同于发送端点(10)最初发送的传输层分组。
[0094]
ice协议试图基于静态优先级来识别它认为是最高效的路径,静态优先级被分配给可以用于媒体会话的多个所谓的“候选对”中的每一个。候选者是与发起端点或响应端点相关联的传输地址。候选对是一对候选者(i,r),第一个候选者(i)与发起端点关联,第二个候选者(r)与响应端点关联。术语“候选者”涉及以下事实:ice机制最初假定与端点相关联的任何传输地址可以能够用于媒体会话(尽管由于上面讨论的原因它可能实际上不可用),然后ice协议涉及识别实际上可用的候选者。
[0095]
ice将候选者分为3类:主机候选者、反身候选者和中继候选者。
[0096]
主机候选者是所讨论端点本地的传输地址,即在直接附接到端点的网络接口上。例如,用户设备6a,6b的专用地址对于那些用户设备是本地的,并且因此是主机候选者,并且类似地,如果用户设备直接连接到公共网络2(而不是经由nat 8a,8b或除了经由nat 8a,8b之外),则他们将拥有在那些用户设备本地的自己的公共地址,这些公共地址也是主机地址。
[0097]
反身候选者是不在端点本地的传输地址,但它是nat公共侧上的转换后传输地址(例如,如图5的修改的ip头部11'i中所包括的)。这些分类分为两类:“服务器反射候选者”,它们是通过以上文所概述的方式查询服务器(例如stun服务器)发现的公共nat地址,以及在建立媒体会话期间由另一端点发现的“对等反身候选者”(例如,与响应端点发现的与发起端点相关联的公共侧nat地址,或反之亦然)。
[0098]
中继候选者是以上述方式从媒体中继服务器(例如,trun服务器)分配的传输地址。
[0099]
这在图7中针对图1的第一和第二用户设备6a,6b示意性地示出。在该示例中,第一用户设备6a是发起端点,第二用户设备6b是响应端点。
[0100]
第一用户设备6a与以下相关联:第一本地传输地址(其是主机候选者)40a;在第一nat 8a的公共侧上并映射到第一专用网络5a中的第一用户设备6a的专用传输地址的第一反身传输地址(其是反身候选者)42a;以及分配给服第一turn务器14a上的第一用户设备6a的第一中继传输地址44a(其是中继候选者)。类似地,第一用户设备6b与以下相关联:第二本地传输地址(其是主机候选者)40b;在第二nat 8b的公共侧上并映射到第二专用网络5b中的第二用户设备6b的专用传输地址的第二反身传输地址(其是反射候选者)42b;以及分配给第二turn服务器14b上的第二用户设备6b的第二中继传输地址44b(其是中继候选者)。
[0101]
潜在地,可以使用任何发起端点的候选传输地址来与任何响应端点的候选传输地址进行通信。也就是说,第一用户设备6a可以潜在地将数据从它自己的相关地址(40a,42a,44a)中的任何一个引导到与第二用户设备(40b,42b,44b)相关联的任何地址,反之亦然。在图6的示例中,这导致可以潜在地用于第一和第二用户设备6a,6b之间的通信的九个候选对:[(40a,40b),(40a,42b),...,(44a,42b),(44a,44b)]。
[0102]
然而,实际上,一些候选对将不是有效的(即将不起作用)。例如,如果端点都在nat之后,并且它们的主机候选者40a,40b是专用网络5a/5b中的专用地址,则出于上述原因,它们不可以直接使用那些地址40a,40b进行通信。然而,如果它们的主机候选者40a,40b是公共地址,则在使用时,其不涉及通过任何nat路由数据,则候选对(40a,40b)可以是有效的。
[0103]
类似地,取决于nat的类型(例如,如果它是对称nat),如所讨论的那样,反身候选者42a和/或42b的使用可以是不可能的。
[0104]
因此,每个候选对可能代表通过某种类型的网络的路径,但是如果候选对实际上有效,则这种路径将仅在实践中可用。
[0105]
一对主机候选者(例如(40a,40b))潜在地表示通过网络的直接路径,该路径是上面参考图6a描述的类型的第一直接路径,其不涉及任何nat或媒体中继服务器。然而,如果本地地址40a,40b中的任何一个是专用地址,则这种候选对将是无效的,其使用实际上涉及经由nat发送数据。
[0106]
一对候选者(其中至少一个是反身候选者)(例如40a,42b),(42a,40b),(42a,42b))潜在地表示通过网络的直接路径,其是上面参照图6b描述的类型的第二直接路径,其涉及nat但不涉及媒体中继服务器。然而,如果(任一个)反身地址在例如对称的nat的公共侧,则这样的候选对将是无效的。
[0107]
一对候选者(其中至少一个是中继候选者,例如(40a,44b),(42a,44b),(44a,44b),(44a,42b),(44a,40b)),表示通过上面参考图6c描述的类型的网络的间接路径,其有可能起作用,但代价是需要在媒体中继服务器上分配资源。
[0108]
作为ice媒体会话建立过程的一部分,发起端点和响应端点两者都尝试通过与适当的turn服务器(例如14a,14b)通信来发现它们的所有候选者,然后以所有可能的组合配对,例如如果发现了六个候选者40a

44b,则这将导致上面讨论的九个候选对。ice然后尝试发现哪些候选对是有效的。ice这样做的方式是以特定的排序顺序系统地尝试所有可能的对,直到找到一组一个或多个有效的(即起作用的)候选对为止,然后可以针对媒体会话选择其中一个。每当至少一个端点发现多于一个候选者从而引起多个候选对时,将存在多个通过网络的潜在可用的路径,通过该路径可以建立媒体会话(尽管不是所有这些路径实际上都可用,因为不是每个候选对都有效)。
[0109]
候选对的尝试顺序由ice静态优先级方案决定,其中较高优先级对在较低优先级对之前被尝试。
[0110]
根据ice协议,可以根据等式1为每个候选者(例如40a

44b)分配静态优先级:
[0111]
优先级=(2
24
)*(类型偏好)+(28)*(本地偏好)+(20)*(256

组件id)
[0112]
类型偏好(类型度量的一个示例)是从0到126(包括0和126)的整数,并且表示对候选类型(本地、服务器反身、对等反身和中继)的偏好。126是最高的偏好,0是最低的偏好。将该值设置为0意味着此类候选者只能用作最后的选择。对于相同类型的所有候选者,类型偏好是相同的,对不同类型的候选者而言,类型偏好是不同的。对于对等反身候选者的类型偏好高于对于服务器反身候选者的类型偏好。ice协议对于主机候选者推荐的值为126(除非这些来自虚拟专用网络接口,在该情况下推荐为0),对于服务器反身候选者为100,对于对等反身候选者为110,对于中继候选者为0。本地偏好是一个从0到65535的整数(包括0和65535),并且表示在端点是多重归属的(连接到多于一个计算机网络)时对于获得候选者的特定ip地址的偏好。当只有一个ip地址时,ice建议将其设置为最大值65535,这样在没有多重归属时有效地使该项变为冗余。组件id项是候选者的标识符。
[0113]
可以看出,到目前为止,等式1中最重要的项是基于候选类型的第一项。
[0114]
因此,ice优先级方案不优先考虑通过经中继的候选者的间接路径,其仅将其用作最后选择,并且还将静态优先级偏离反身候选者。
[0115]
一旦形成了候选对并且根据等式(1)分配了优先级,则可以根据等式2来计算每个
候选对的候选对静态优先级:
[0116]
对优先级=2
32
*min(g,d)+2*max(g,d)+(g>d?1:0)
[0117]
其中g是发起端点候选者的静态优先级,d是响应端点候选者的静态优先级,并且g>d?1:0是一个表达式,其中如果g大于d,则其值是1,否则为0。
[0118]
由于ice使中继候选者与未中继候选者相比不被优先考虑,所以包含中继候选者的候选对与不包含中继候选者的候选对相比不被优先考虑。因此,ice静态优先级方案相比于不太直接的路径而言优先考虑较直接路径。
[0119]
另外,由于ice与主机候选者相比反射候选者不被优先考虑,因此与仅包含主机候选者的候选对相比,包括反身候选者的候选对被优先排序。因此,ice静态优先级方案偏向于不涉及nat的路由。
[0120]
对于受控企业部署/拓扑,静态ice路径优先级划分方案通常是足够的。然而,实时媒体服务的大规模全球在线服务部署带来了完全不同的一系列挑战,对此,静态优先级方案可能不仅不够充分,而且在某些情况下也是不利的。在特定一组情况下寻找理想的连接路径对于确保为用户提供最佳体验以及确保订阅在线服务的用户的媒体质量sla(“服务水平协议”)得以满足是至关重要的。
[0121]
本主题的某些实施例减少了候选者和候选对的数量。探测候选对需要发送连接性检查分组(探测消息),这会使用带宽。通过减少候选者的数量并且因此减少了可用的候选对的数量,大大降低了呼叫建立的带宽利用率。
[0122]
即使利用减少的候选对,也可以通过基于静态已知的拓扑知识(例如,如果已知端点被配置为公共可达的例如会议服务器)和/或动态学习的信息(例如,检测到两个客户端都在nat之后)禁用不可能工作的路径(即,候选对)来获得进一步的优化。可替代地或另外地,在本主题的实施例中,可以通过基于这样的信息减少限制探测消息的数量(即,重试的次数)来节约带宽,其中如果响应于受限数量的探测消息没有接收到应答,则候选对被确定为无效的;和/或通过修改与ice协议有关的连接性检查的顺序,基于这些信息来不对不太可能工作的候选者进行优先排序。
[0123]
在这方面,本公开认识到,turn

turn路径提供最高的可靠性,但是最昂贵,因为所有业务将需要流过部署的turn服务器。在实践环境中,通过turn服务器将每个媒体流关联起来将是不切实际且非常昂贵的。也就是说,turn服务器应该被视为受限的网络资源。
[0124]
此外,本公开认识到,探测每个候选对伴随着带宽利用成本,其由于探测消息数量的增加而增加,这取决于在连接性检查中进行了多少次尝试来验证该对。
[0125]
所描述的实施例的目的是在利用所描述的优化成功建立呼叫方面改善可靠性奇偶校验。
[0126]
图8是功能框图,其中图8中的虚线下方的功能块(组件)表示在用户设备6(6a和/或6b)上执行时由客户端7(7a和/或7b——在该示例中,每个客户端分别实现所描述的功能)实现的功能。虚线上方的组件表示当在控制服务器12或turn/stun服务器14a,14b上执行时由控制代码13实现的“后端”功能。
[0127]
客户端7a实现路径选择系统50,其包括本地候选者收集组件51、候选对生成组件52、静态优先级生成组件53、检查列表生成组件54、本地控制器56、评估组件57和连接性检查组件58。
[0128]
请注意,图8是高度示意性的。这些框表示客户端7a的某些高级别软件组件。箭头之间的高级别交互并不表示任何特定的物理或逻辑连接安排。
[0129]
本地控制器56和评估组件57表示根据本主题的某些实施例实现的功能。具体而言,评估组件57确定是否应用一组预定的“修改的连接性检查”标准中的一个或多个,其性质在下面详细描述。在这方面,评估组件57分析本地存储的参数60,经由网络2和/或8a和/或8b远程存储的参数61访问,以及从服务器80接收的电子消息和/或从另一个端点接收到的电子消息62以及来自连接性检查组件58的关于连接性检查在进行时的进展和当前状态的反馈。
[0130]
本地控制器56从评估组件57接收该分析的结果,并且通过设置存储器20中可供连接性检查组件58访问并且用于执行连接性检查的一个或多个重试阈值(探测消息阈值)63使用所接收的结果来控制:(i)本地候选者收集组件51,和/或(ii)检查列表生成组件,和/或(iii)连接性检查组件54。
[0131]
例如,每个候选对可以具有在存储器20中实现的相应的相关联的探测消息阈值63,并且可以相应地修改一个或多个相关联的阈值63。一旦针对给定候选对发送的探测消息的数量达到最大值,就定义它的阈值(或者如果在连接性检查期间阈值本身减小了,使得在那时与已经针对该对发送了探测消息的减少的最大数量减少得更多),如通过比较发送的消息的数量和对应的阈值来确定的,该候选对从检查列表中被移除,由此防止针对该候选对发送更多的探测消息。
[0132]
如果这些标准中的至少一个被确定为由评估组件57应用,则本地控制器58使得由连接性检查组件58实现的连接性检查相对于考虑到端点可用的候选者而在没有任何标准被确定为适用的情况下本应执行的连接性检查而言被修改。
[0133]
也就是说,在一个或多个候选者的相应一组可用于每个端点的情况下,如果没有应用修改的连接标准,则基于这些可用组以某种方式进行连接性检查。相反,在终端可以使用完全相同的候选者组但至少有一个修改的连接性检查标准确实适用的情况下,结果连接性检查会以不同的方式进行,例如:
[0134]
1.具有较少候选对;
[0135]
2.具有针对某些候选对的重试次数较少;和/或
[0136]
3.以不同的顺序(具有不同的优先级)。
[0137]
在1和2的上下文中,修改的连接性检查标准在本文中被称为“减少的连接性检查标准”。
[0138]
注意,在这种情况下的“可用”候选者不一定意味着收集的候选者,可用候选者可以是端点可用但尚未收集(即端点能够收集)的候选者。
[0139]
因此,执行连接性检查的方式不仅取决于端点可用的候选者,而且取决于是否确定应用预定的减少的连接性检查标准中的任何一个。
[0140]
例如,如果没有标准被确定为应用,则可用候选的组被配对,并且可以根据ice协议针对每个可用的可能配对执行连接性检查(即,严格遵守由ice协议制定的规则)。相反,如果有相同的候选者可用,但至少有一个标准确实适用,则可以不检查ice协议指示应当检查的可用候选者的至少个配对;和/或根据其静态优先级,候选对的检查顺序可能偏离由ice协议规定的检查顺序。
[0141]
图9示出了媒体建立过程的流程图。该方法是计算机实现的方法,其在这个示例中由每个客户端7a,7b分开实现。
[0142]
在步骤s2,例如在呼叫者端点6b响应于来自用户的呼叫发起输入,或者在被呼叫者端点6b处,响应于从呼叫者端点6a接收到的呼叫请求消息,发起媒体会话建立过程。
[0143]
在步骤s4,评估组件57确定是否满足一组一个或多个修改的连接性检查标准中的任何一个。例如,该确定可以包括以下中的至少一个:
[0144]
·
确定端点6a,6b中的一个或两个是否位于防火墙或nat之后。
[0145]
·
确定至少一个端点的当前操作配置——例如,虽然在以上示例中,端点是用户设备,但在其他场景中,至少一个端点可以是服务器,并且可以在步骤s4确定该操作信息或相关操作信息。在步骤s4可以确定更具体的信息,例如,不仅可以确定端点正在操作服务器,而且可以确定它目前在公共互联网2上可公开访问。
[0146]
·
确定至少一个候选对的历史使用度量。该历史使用度量可以例如相对于该对的类型来定义——例如,历史使用度量可以基于跨相关本地网络5a/5b的该类型的候选对(不必是单个候选对)的历史使用来定义,例如,(反身,*)候选对的历史使用在例如如果nat 8a是对称的则为本地网络5a的情况下可以较低,这可以在步骤s4确定。为此,与本地网络8a/8b有关的历史使用数据可以集中存储在那些网络中或公共互连网2中。
[0147]
·
确定一个或多个当前的网络状况,例如当前可用于端点7a,7b中的一个或两个的带宽。可用带宽可以受到约束,特别是在本地网络8a/8b是或包括蜂窝网络的情况下。
[0148]
如图8中所示,所作出的这些确定中的每一个可以分别基于以下各项中的一项或多项:
[0149]
1.存储在端点的本地存储器60中的一个或多个本地参数60;
[0150]
2.保存在远程存储器位置(例如数据库)中的一个或多个远程参数61;
[0151]
3.从服务器(例如,控制服务器12和/或stun/turn服务器14)接收的一个或多个消息;
[0152]
4.从另一端点接收的一个或多个消息62。
[0153]
例如,参数60/61可以识别端点是否是公共互联网服务器。作为另一示例,可以使用从stun/turn服务器接收的消息来确定端点是否在防火墙或nat之后,即基于由端点发起的主动检测过程,或者控制服务器12可以将消息推送到端点将相关信息传递给它。
[0154]
基于这些确定中的一个或多个,确定是否满足任何修改的连接性检查标准,例如:
[0155]

关于至少一个端点的一个或多个网络拓扑标准,例如:
[0156]

至少一个网络拓扑标准,只有当至少一个端点位于防火墙或网络地址转换器之后时才得以满足,例如:
[0157]

仅当其中一个端点被配置为作为服务器运行并位于防火墙或网络地址转换器之后时(“第一网络拓扑标准”);
[0158]

仅当两个端点位于相应的防火墙或网络地址转换器之后(“第二网络拓扑标准”);
[0159]

第三网络拓扑标准,如果存在例如(直接,turn)路径和(turn,直接)路径两者,则第三网络拓扑标准得以满足,其中该接触中的“直接”表示反身或主机;
[0160]

仅当其中一个端点被配置为作为公共互联网的公共可达服务器进行操作时才
被满足的第三个第二网络拓扑标准;
[0161]

至少一个网络拓扑标准,仅当至少一个候选对是(中继,直接)候选对时才得以满足,其中“直接”表示主机或反身,即针对执行该方法的端点的该对的候选者是中继候选者,并且针对另一个端点的该对的候选者是一个直接的候选者,例如
[0162]

只有存在至少一个(中继,直接)候选对和至少一个(直接,中继)候选对时,即,执行该方法的网络的候选者是直接候选者,并且另一端点的候选者是中继候选者(“第四网络拓扑标准”)。
[0163]

关于至少一个候选对的至少一个历史网络使用标准,例如:
[0164]

仅当历史使用度量低于历史使用阈值时才满足的第一历史网络使用标准(“第一历史网络使用标准”);
[0165]

与至少一个端点的联网能力有关的至少一个网络能力标准,例如网络偏好标准,例如:
[0166]

仅当两个端点都能够根据诸如udp或tcp之一和/或ipv4和ipv6之一之类的网络协议中的优选网络协议进行操作才满足的第一网络能力标准。
[0167]

至少一个网络条件标准,与至少一个端点所经历的网络条件有关,例如:
[0168]

如果至少一个端点通过具有低于带宽阈值的可用带宽的连接而连接到网络则满足第一网络条件标准。也就是说,一个受限的带宽标准;
[0169]

与连接性检查有关的至少一个连接性检查进展标准,在连接性检查期间至少由第一端点评估一次。在这种情况下,连接性检查可以响应于该标准被满足而在它们被执行时适应,或者;例如:
[0170]

只有当至少一个其他候选对通过连接性检查被确定为有效时才会满足的第一连接性检查进展标准。
[0171]
请注意,以上是非穷举的示例。此外,如下所述,标准的评估不限于在连接性检查开始之前发生的预评估,例如,连接性检查修改标准只能在连接性检查期间满足,并且连接性检查只能在响应后进行修改。一个示例是,一旦找到有效的候选者,就会减少的连接性检查的其余部分执行的程度(见下文)。
[0172]
在步骤s6,该过程取决于在步骤s4是否已经确定满足任何修改的连接性检查标准而分支。如果不满足任何修改的连接性检查标准,则作为步骤s8a的一部分执行未修改(完整)的连接性检查,例如遵守由ms

ice2中定义的ice协议规定的所有规则。如果满足至少一个,则替代地作为s8b的一部分来执行修改的连接性检查标准(例如减少的和/或重新排序的连接性检查)。步骤s8a和s8b分别构成未修改的(完整的)和修改的(例如减少的)候选者收集、配对和连接性检查过程。
[0173]
如处理步骤s4a所示,在执行连接性检查s8a,s8b的同时,即可以重复地(例如,连续地)重新评估修改的连接性标准。在这方面,除了上面给出的示例之外或作为其替代,修改的连接性检查标准可以包括以下中的至少一个:
[0174]

一个或多个连接进展标准,例如:
[0175]

第一连接进展标准,其仅在至少一个候选对已被连接性检查确定为有效时才被满足
[0176]
显而易见,在连接性检查开始之前,该标准永远不会被满足,但是在连接性检查期
间可能会满足该标准。要注意的是,这可能不是唯一重复评估的标准,可替代地或附加地上述标准中的任何一个或多个可能会重复地重新评估。例如,带宽可能会被重复监控。
[0177]
在这方面,在步骤s4a,评估组件57随着方法的进展而监测s8a或s8b(如适用)的连接性检查,以确定是否以及何时在连接性检查开始时可能尚未满足的一个或多个标准在连接性检查期间得到满足,例如作为连接性检查的结果;例如,可以在步骤s4a确定至少一个候选对是否已经通过连接性检查被确定为有效,和/或是否在上面关于步骤s4列出的在s8a,s8b的检查开始时未被满足的任何标准自此已经得以满足。
[0178]
在最初执行未修改的连接性检查s8a的情况下,当满足至少一个标准时,处理切换到修改的连接性检查s8b。而且,即使最初执行了修改的连接性检查s8b,如果在满足哪些标准方面有任何改变(例如满足新的标准),连接性检查可以进一步修改——例如,当候选对被确定为有效时,例如通过减少至少一个剩余候选对的重试阈值(参见下文),可以进一步修改由减少数量的候选对发起的减少的连接性检查。
[0179]
当停止条件被满足时,例如,当最高优先级候选对已经被验证时或者在超时之后,即在达到预定的连接性检查持续时间的结束时,未修改或减少的连接性检查s8a,s8b终止。
[0180]
在步骤s10,使用通过连接性检查被确定为有效的候选对来建立媒体会话;即连接性检查中生成的“有效列表”中的候选对(见下文),可能是也可能不是发现的唯一有效的候选对。在连接性检查中仅发现一个有效候选对的情况下,该候选者用于建立媒体会话;如果显示多个候选对,则选择一个并用于建立媒体会话。例如,可以为媒体会话选择有效列表中的最高优先级候选对。
[0181]
图10是流程图,其为候选者收集,配对和连接性检查过程s8的某些单独步骤的流程图。该流程图适用于未修改和减少的程序s8a,s8b,尽管根据如下所述执行哪一个而不同地执行一个或多个独立步骤。
[0182]
在步骤s52,发起端点6a上的客户端7a(发起客户端)的本地候选者收集组件51与第一turn服务器14a通信以发现其候选者(本地候选者),即可能可以用于媒体会话的任何主机、服务器反身和中继候选者。发起客户端然后在会话邀请消息中将这些发送到响应端点6b。作为响应(s54),响应端点6b上的客户端7b(响应客户端)通过与返回到发起端点的第二turn服务器14b进行通信来收集候选者(远程候选者)。
[0183]
在未修改的过程s8a中,两个端点试图收集每个可能的候选者,即它试图收集全部三个本地、反身和中继候选者——后两者消耗带宽,因为它们分别需要与例如stun和turn服务器发信令。
[0184]
在一些情况下,在修改的过程s8b中,基于步骤s4的确定,在步骤s45中相对于未修改的过程s8b而减少收集的候选者的数量。例如,反身和/或中继候选者可能不会被端点6a,6b中的一个或两个端点收集,这减少了信令并因此节省了带宽本身。此外,这将减少被检查的候选对的数量,导致相对于完整过程s8a而言在连接性检查中节省第二带宽。
[0185]
也就是说,一个或两个端点可以减少它们提供的候选者的数量。例如,如果端点6a,6b中的一个被确定为可公开达到的服务器(即,在诸如互连网的网络2上),则它不会收集中继候选者。这将减少客户端需要设置和探测的候选对的数量,从而节省带宽。
[0186]
在s56,候选对生成组件52分别接收由发起端点和响应端点发现的本地候选者和远程候选者两者,从中产生并输出一组候选对。候选对生成组件53接收所生成的一组候选
对以及分配给本地候选者和远程候选者的ice静态优先级,并基于三个输入生成候选对的静态优先级。两个端点可以并行执行相同的候选对/优先级调整过程,或者一个端点可以执行这些并将结果传送给另一个。
[0187]
每个候选对潜在地对应于通过网络的可用路径,如果该候选对有效的话,则端点可以使用该路径进行媒体会话。
[0188]
在步骤s58,检查列表生成组件生成“检查列表”。检查列表是确定执行连接性检查的顺序的候选对的有序列表。
[0189]
在未修改的过程s8a中,根据ice协议计算检查列表,即,它是严格按照静态优先级排序的所有可能的候选对的完整列表(即,ice指定的所有候选对都是可能的)。
[0190]
在修改的过程s8a中,检查列表相对于完整组而言可以省略至少一个候选对。这可以是在收集步骤s54中排除某些候选者的结果,或者可以在步骤s58明确地从检查列表中排除收集的候选者的一个或多个配对。
[0191]
作为第一示例,可以“修剪”(即,禁用)路径,即,候选对可以基于拓扑知识从检查列表中排除,并因此从连接性检查中排除。例如:如果在步骤s4确定对等体是防火墙之后的服务器,则它将不能直接到达,并且可以禁用路径而甚至不用尝试它们。
[0192]
作为第二示例,turn候选者提供最大的连接性;如果两个端点都具有turn

turn例如udp候选对,则所有的tcp候选对可以被禁用。也就是说,如果存在对收集到的候选者的例如udp(中继,中继)配对,则这将被添加到检查列表中,并且所有tcp候选者配对都将排除在检查列表之外。udp通常是实时媒体的优选协议;然而,如果tcp是优选的,则udp候选对可以在该情况下被类似地禁用。
[0193]
作为第三示例,取决于是优选ipv4还是ipv6,可以完成禁用非优选版本的候选对。也就是说,所有ipv4或ipv6候选对都可能被排除在检查列表之外,这取决于哪一候选对是优选的。
[0194]
可替代地或另外地,不太可能有效的路径可以进一步在检查列表中向下放(即,不优先排序),以便首先检查其他候选对。在这种情况下,检查列表的排序偏离ice指定的格式。
[0195]
可替代地或另外地,在减少重试次数之后,在某些情况下不太可能工作的路径被禁用,以节约带宽。
[0196]
例如,如果呼叫者端点和被呼叫者端点都在nat之后,则端点不太可能使用他们的主机候选者彼此直接连接。该路径可以在几次重试,即有限次数的重试,即相对于完整过程s8a的更少的重试之后被修剪,即从检查列表中移除。在这方面,在步骤s60,端点设置一个或多个重试阈值,每个重试阈值用于检查列表中的一个或多个候选对;可替代地或另外地,(主机,主机)候选对可以在列表中向下放,或者在该情况下可选地从检查列表中全部排除。
[0197]
注意,如上所述,步骤s60的元素事实上可以在连接性检查(s62)正在进行时执行。例如,一旦通过连接性检查发现有效路径,则可以减少所有候选对的最大重试次数。这使端点的状态机能够更快地完成并减少带宽。重试的这个阈值被挑选以在可靠性和带宽利用率之间进行平衡。
[0198]
作为另一示例,在步骤s58可以改变检查列表的排序(相对于完整的过程s8a),以便在步骤s58相对于完整的过程s8a优选地探测direct

turn路径和/或将turn

direct路径
放在减少的重试上。
[0199]
即使两条路径提供相似的质量,但是探测turn

direct路径也比direct

turn路径更昂贵。因此,通过支持后者,可以节省带宽,而不会对质量产生任何重大影响。
[0200]
可替代地或另外地,候选对可以被设置为减少的重试和/或在检查列表中向下放,或者基于历史使用一起排除在检查列表之外,例如,例如在网络8a和/或8b内,该种类型的候选对的历史使用低的特定类型的候选对。
[0201]
可替代地或附加地,候选对可以被设置为减少的重试和/或在检查列表中向下放,或者基于当前可用带宽从检查列表中排除,例如其中带宽被限制,即低于带宽阈值。
[0202]
这些各种技术快速动态修剪不可达路径以减少带宽利用率,同时仍给路径提供合理的成功机会。
[0203]
在s6s处,客户端7a,7b执行连接性检查。连接性检查是按检查列表中出现的顺序对检查列表中的各个候选对进行的,从列表顶部的对开始。连接性检查一直持续到满足停止标准为止,例如直到一定数量(一个或多个)候选对(例如,最高优先级对)被确定为有效和/或在预定量的时间过去之后。对于所谓的“积极提名”,在找到第一个有效候选者时连接性检查结束;然而,“常规提名”允许连接性检查继续尝试查找多于一个的有效候选对(如果需要)。在连接性检查结束时,生成被确定为有效的一个或多个候选者的列表(有效列表)。
[0204]
如所指示的,候选对中的一些(可能多个)可能会在连接性检查中失败,例如,包括作为专用传输地址的主机候选者的候选对可能由于所讨论的原因而失败。
[0205]
注意,上面和下面描述了某些示例性情况,其中某些连接性检查修改标准在满足时会导致以下之一:候选对组的大小减小,探测消息阈值(重试阈值)减小,或候选者修复组的重新排序(以将候选对在检查列表中向下放)。为了避免疑问,应该注意到:
[0206]

对于上文或下文中公开的任何示例,其中对满足该标准的响应是从连接性检查中排除候选对,可替代地或另外地,可以减小该候选对的探测消息阈值和/或候选对可以降低排序,即,以便相对于候选对组中的第一候选对而言,使得对该候选对的连接性检查稍后被执行;
[0207]

对于上文或下文中公开的任何示例,其中对满足该标准的响应是减小该候选对的探测消息阈值,可替代地或另外地,该候选对可以被降低排序;或者可替代地,可以完全从连接性检查中排除该候选对;
[0208]
对于上文或下文中公开的任何示例,其中对满足标准的响应是减小将该候选对降低排序,可替代地或另外地,该候选对的探测消息阈值可以降低排序;或者可替代地,该候选对可以完全从连接性检查中排除。
[0209]
这里,使用术语“第一端点”和“第二端点”,其中任一个可以是发起端点或响应端点。也就是说,本公开的技术可以在发起端点、响应端点或两者处实现。在本公开的上下文中,候选对的“第一”候选网络地址是可供执行该方法的端点(第一端点)使用的网络地址,而“第二”候选网络地址是可供第二端点使用的网络地址。
[0210]
在各种实施例中,候选组可在两个端点6a,6b处减小,这导致候选对的总数进一步减少(相对于在仅一个端点处的候选者减少)。此外,可以使用额外的方法来减少候选组,例如,基于第一端点选择并传送给第二端点的候选组,第二端点可以使用该信息来进一步减小其自己的候选组,例如,如果第一端点仅提供tcp候选者(或udp)候选,则第二端点可修剪
其候选udp候选者(或tcp)候选。第二端点可以基于第一端点提供的候选组来调整其超时值。再次,如果仅提供了tcp候选者,则第二端点可以增加超时值以确保其可以获得tcp中继候选并且具有至少一个成功的路径。
[0211]
在这方面,端点可以以本文称为“减少的连接性检查”消息(或更一般地“修改的连接性检查”消息)的形式交换信息,将对连接性检查的任何修改通知彼此。这些消息可以采用任何适当的格式。
[0212]
请注意,对“较高”和“较低”优先级的引用不一定是指这些优先级的任何特定的数字(或任何其他)表示。相反,优先级方案的“更高优先级”意味着分配给该方案所喜欢的路径而不是指定为“较低优先级”的另一路径,而不管这些优先级被表示的方式(任何期望的表示可以使用,只要它提供必要的信息,例如作为一个简单的示例,较低的数值可以用来表示更高的优先级)。类似地,减小阈值(例如,探测消息阈值)或类似物的引用表示减少由该阈值定义的量(例如,探测消息的最大数量),而不管该阈值在存储器中如何表示。
[0213]
尽管在上面,根据等式1和2计算常规ice候选对优先级,然后基于选择数据修改以产生新的优先级,可替代地可以在计算候选对(按照等式2,但是应用于修改的地址优先级)之前修改单独的地址优先级(根据等式1计算),或者可以以其他方式计算类似的优先级,例如通过在取决于选择数据的等式1或2中的一者或两者中有效地包括修改项。
[0214]
这里注意,“专用”网络是指位于nat之后的任何网络。虽然这包括诸如家庭或商业网络(未示出)之类的网络,但是它也包括由例如互联网服务提供商(isp)运营的伪公共网络,具有潜在大量用户(后者在一些国家比其他国家更常见)。
[0215]
虽然以上参照互连网协议组进行了描述,但是本文中呈现的相关教导还适用于例如具有不同的分层架构的网络。此外,虽然以上是关于tcp/udp和ip描述的,但是应该意识到,该描述适用于可用于生成不同类型的网络层和/或传输层数据包的其他类型的传输层和/或网络层协议。
[0216]
一般来说,可使用软件、固件、硬件(例如,固定逻辑电路)或这些实施方式的组合来实施本文中所描述的功能中的任一者。这里使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件或其组合。在软件实现方式的情况下,模块、功能或逻辑表示在处理器(例如,一个cpu或多个cpu)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储设备中。下面描述的技术的特征是独立于平台的,这意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。
[0217]
例如,用户设备(用户终端)也可以包括使得用户终端的硬件执行操作(例如,处理器功能块)等的实体(例如软件)。例如,用户终端可以包括计算机可读介质,该计算机可读介质可以被配置为维护使得用户终端,并且更具体地使用户终端的操作系统和相关硬件执行操作的指令。因此,这些指令用于配置操作系统和相关硬件以执行操作,并且以这种方式导致操作系统和相关硬件变换执行功能。指令可以由计算机可读介质通过各种不同的配置提供给用户终端。
[0218]
计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为将指令(例如作为载波)诸如经由网络传输到计算设备。计算机可读介质还可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存、硬盘存储器以及其他存储设备,这些存储设备可以使
用磁性、光学和其他存储指令和其他数据的技术。
[0219]
本主题的第一方面涉及一种基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在第一端点的计算机上执行以下步骤:由至少第一端点确定是否满足一组一个或多个减少的连接性检查标准中的至少一个;如果由所述第一端点确定没有满足所述减少的连接性检查标准:则通过在所述第一端点和第二端点之间交换候选网络地址,执行完整候选配对过程以在所述第一端点处生成完整的一组候选对以进行连接性检查,每个候选对包括可用于第一端点的第一候选网络地址和可用于所述第二端点的第二候选网络地址;如果由所述第一端点确定所述减少的连接性检查标准中的至少一个被满足:执行减少的候选配对过程以在所述第一端点处生成与所述完整的一组候选对相比较少的减少的一组候选对以进行连接性检查;以及通过端点对所生成的候选对组的至少一个候选对执行连接性检查以确定候选对是否有效,使用被确定为有效的所生成的候选对组的候选对来建立媒体会话,由此如果确定满足减少的连接性检查标准中的至少一个,则不对在完整候选对组中的且不在减少的候选对组中的任何候选对进行连接性检查。
[0220]
在实施例中,完整候选配对过程可以根据ice协议来执行。在这种情况下,应按照ice协议(即,严格遵循由其规定的规则)应该包括在候选对组中并因此进行连接性检查的至少一个候选对被排除,从而不对该对执行连接性检查。
[0221]
每个减少的连接性检查标准可以是:
[0222]

关于至少一个端点的网络拓扑标准,或者
[0223]

关于至少一个候选对的历史网络使用标准,或者
[0224]

关于至少一个端点的联网能力的网络能力标准,或者
[0225]

关于至少一个端点所经历的联网条件的网络条件标准。
[0226]
至少一个标准可以是仅当至少一个端点位于防火墙或网络地址转换器之后时才满足的网络拓扑标准。
[0227]
标准之一可以是仅在第一端点被配置为作为服务器操作并且位于防火墙或网络地址转换器之后时才被满足的第一网络拓扑标准。
[0228]
如果确定第一网络拓扑标准被满足,则可以从减少的组中排除其第一候选网络地址是第一端点的主机候选网络地址的完整候选对组中的至少一个候选对,由此不针对该候选对执行连接性检查。
[0229]
标准之一可以是仅在两个端点都位于相应的防火墙或网络地址转换器之后时才被满足的第二网络拓扑标准。
[0230]
如果确定第二网络拓扑标准被满足,则可以从减少的组中排除其第一候选网络地址或第二候选网络地址分别是第一端点的主机候选网络地址或第二端点的主机候选网络地址的完整候选对组的至少一个候选对,由此在该情况下不对该候选对执行连接性检查。
[0231]
标准之一可以是仅在第一端点被配置为作为公共互联网的公共可达服务器进行操作时才被满足的第三网络拓扑标准。
[0232]
如果确定第三网络拓扑标准被满足,则可以从减少的组中排除其第一候选网络地址是对第一端点可用的中继候选网络地址的完整组的至少一个候选对,由此在该情况下不对该候选对执行连接性检查。
[0233]
标准之一可以是仅在针对至少一个候选对确定的历史使用度量低于历史使用阈值时才被满足的第一历史网络使用标准,其中如果满足第一历史使用标准,则将该候选对从减少的候选对组中排除,由此在该情况下不对该候选对执行连接性检查。
[0234]
每个候选对可以另外表示多个网络协议中的相应一个;标准之一可以是仅当两个端点都能够根据网络协议中的优选网络协议进行操作时才满足的第一网络能力标准。
[0235]
如果确定满足第一网络能力标准,则可以从减少的组中排除不表示优选网络协议的完整组中的至少一个候选对,由此在该情况下不对该候选对进行连接性检查。
[0236]
如果候选对中的一个表示优选协议并且该候选对的第一网络地址和第二网络地址都是中继候选网络地址,则可以满足第一网络能力标准。
[0237]
如果确定第一网络能力标准被满足,则可以从减少的组中排除不表示优选协议的完整组中的所有候选对,由此在该情况下不对这些候选对执行连接性检查。
[0238]
多个网络协议可以包括udp和tcp,其中优选的网络协议可以是udp或tcp中的一个,其中如果第一网络能力标准被确定为满足,则从减少的候选对组中排除表示udp或tcp中的另一个的至少一个候选对,由此在该情况下不对该候选对执行连接性检查。
[0239]
多个网络协议可以包括ipv4和ipv6,其中优选的网络协议可以是ipv4或ipv6中的一个,其中如果第一网络能力标准被确定为满足,则可以从减少的候选对组中排除表示ipv4或ipv6中的另一个的至少一个候选对,由此在该情况下不对该候选对执行连接性检查。
[0240]
标准之一可以是如果至少一个端点通过具有低于带宽阈值的可用带宽的连接而连接到网络则得以满足的第一网络条件标准。
[0241]
如果确定减少的连接性检查标准中的至少一个确实应用,则作为响应,第一端点可以向第二端点发送减少的连接性检查消息。
[0242]
减少的连接性连接消息可以使第二端点在交换中向第一端点发送减少数量的候选网络消息。
[0243]
对于一个或多个标准中的每一个,确定步骤可以包括:
[0244]

由第一端点发起检测过程以检测是否满足该标准;和/或
[0245]

由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,这些参数表示是否满足该标准;和/或
[0246]

由第一端点接收一个或多个电子信息,电子信息表示是否满足该标准。
[0247]
一个或多个电子消息可以包括从第二端点向第一端点发送的减少的连接性检查消息,由此可以至少部分地基于由第二端点提供的减少的连接性检查消息中的信息来做出所述确定。
[0248]
每个候选对可以另外表示多个网络协议中的相应一个;其中减少的连接性检查消息可以表示所述网络协议中优选的一个,响应于此,可以由所述第一端点从所述减少的组中排除不表示所述优选协议的至少一个候选对,由此在该情况下不对该候选对执行连接性检查。
[0249]
完整候选者配对过程和减少的候选者配对过程可以分别包括由第一端点执行的完整候选者收集过程和减少的候选者收集过程;
[0250]
完整候选者收集过程可以包括由第一端点确定可用于第一端点的网络地址的完
整候选组,其中完整候选组可以被第一端点使用以生成完整候选对组并且在交换中从第一端点发送到第二端点。
[0251]
减少的候选者收集过程可包括由第一端点确定与完整候选者组相比可用于第一端点的较少的候选网络地址的减少的候选者组,其中减少的候选者组可由第一端点使用以生成减少的候选对组并且在交换中从第一端点发送到第二端点,由此与在完整候选配对过程中相比,在减少的候选配对过程中从第一端点向第二端点发送较少的网络地址。
[0252]
例如,减少的候选对组中的每个候选对的第一候选网络地址可以是减少的候选者组的候选网络地址之一。
[0253]
完整候选者收集过程可以根据ice协议来执行,即如ice协议规则所规定的那样。在这种情况下,减少的候选者收集过程省略了至少一个根据ice协议应该被包括的候选者。
[0254]
完整候选者收集过程可以包括确定中继候选网络地址和反身候选网络地址两者,并且减少的候选者收集过程可以包括确定中继候选网络地址或服务器反射候选网络地址,但不包括两者。
[0255]
可以根据stun协议确定反身候选网络地址,并且可以根据turn协议确定中继候选网络地址。
[0256]
网络可以是公共互联网。
[0257]
本主题的第二方面涉及基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在第一端点的计算机上实现以下步骤:由至少第一端点确定是否满足一组一个或多个减少的连接性检查标准中的至少一个;通过在所述第一端点和第二端点之间交换网络地址,在所述第一端点处生成一组候选对以进行连接性检查,每个候选对包括可用于第一端点的第一网络地址和可用于第二端点的第二网络地址;基于所述确定步骤,由所述第一端点设置用于所述候选对中的至少一个候选对的探测阈值,如果确定所述减少的连接性检查标准中的至少一个被满足,则相比于确定无减少的连接性检查标准被满足,所述探测消息阈值较低;以及通过所述第一端点将来自所生成的组的被确定为有效的候选对的第一网络地址的、受所述探测阈值限制的多个探测消息发送到该对的第二网络地址,,使用通过所述端点基于所述探测阈值对于所述至少一个候选对执行连接性检查而被确定为有效的、所生成的组中的该候选对建立媒体会话。
[0258]
根据第二方面,在某些情况下,在连接性检查期间传输的探测消息的数量在某些情况下有意降低。每个探测消息使用带宽,因此通过减少探测消息的数量,可以节省带宽。
[0259]
在实施例中,减少的连接性检查标准中的每一个可以是:
[0260]

关于至少一个端点的网络拓扑标准,或者
[0261]

关于至少一个所述候选对的历史网络使用标准,或者
[0262]

关于至少一个所述端点的联网能力的网络能力标准,或者
[0263]

关于至少一个端点所经历的联网条件的网络条件标准,或者
[0264]

关于连接性检查的连接性检查进展标准,其在连接性检查期间由第一端点至少评估一次,由此如果在连接性检查期间该标准得以满足,则在连接性检查期间减小所述至少一个候选对的探测消息阈值。
[0265]
标准之一可以是仅在已经通过连接性检查将候选对组的至少一个其他候选对确
定为有效时才被满足的第一连接性检查进展标准。
[0266]
当通过连接性检查将候选对组的任何单个候选对确定为有效时,可以满足第一连接性检查进展标准。
[0267]
响应于第一连接性检查标准被满足,可以减小候选对组中的每个剩余候选对的探测消息阈值。
[0268]
至少一个标准可以是仅当至少一个端点位于防火墙或网络地址转换器之后时才满足的网络拓扑标准。
[0269]
如果确定至少一个网络拓扑标准被满足,则与如果被确定为不满足的情况相比,包括网络地址转换器或防火墙之后的端点的主机网络地址的至少一个候选对的探测阈值可以被设置为较低。
[0270]
标准之一可以是仅当两个端点都位于相应的防火墙或网络地址转换器之后时才满足的第二网络拓扑标准。
[0271]
如果第二网络拓扑标准被确定为满足,则与第二网络拓扑标准被确定为不满足相比,对于其第一网络地址和第二网络地址分别是第一端点和第二端点的主机网络地址的候选对组中的至少一个候选对的探测消息阈值可以被设置为较低。
[0272]
标准之一可以是仅在第一端点被配置为作为服务器操作并且位于防火墙或网络地址转换器之后时才被满足的第一网络拓扑标准。
[0273]
标准之一是在以下情况下满足的第三网络拓扑标准:
[0274]

所述组中的至少第一候选对包括:(i)作为所述第一端点的主机或反身候选网络地址的第一网络地址,以及(ii)作为所述第二端点的中继候选网络地址的第二网络地址,以及
[0275]

所述组中的至少第二候选对包括:(i)作为所述第一端点的中继候选网络地址的第一网络地址,以及(ii)作为所述第二端点的主机或反身候选网络地址的第二网络地址;
[0276]
如果第三网络拓扑标准被确定为满足,则与被确定为不满足相比,可用将第二候选对的探测消息阈值设置为较低。
[0277]
标准之一可以是如果至少一个端点通过具有低于带宽阈值的可用带宽的连接而连接到网络则满足的第一网络条件标准,其中如果第一网络条件标准被确定为满足,则与被确定为不满足相比,可用将至少一个候选对的探测消息阈值可以被设置为较低。
[0278]
第一端点可以确定在连接性检查期间网络连接性检查进展标准已经被满足,并且作为响应,在已经针对该候选对发生了多于由减少的阈值定义的减少的探测消息的最大数量之后的时间,可以减少该候选对的探测消息阈值,由此防止针对该候选对再发送任何更多的探测消息。
[0279]
对于一个或多个标准中的每一个,确定步骤可以包括:
[0280]

由第一端点发起检测过程以检测是否满足该标准;和/或
[0281]

由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,参数表示是否满足该标准;和/或
[0282]

由第一端点接收一个或多个电子信息,电子信息表示是否满足该标准。
[0283]
每个候选对可以另外表示多个网络协议中的相应一个;至少一个标准可以是仅当
两个端点都能够根据所述网络协议中的优选网络协议进行操作时才被满足的第一网络能力标准,其中,如果确定满足所述第一网络能力标准,则与确定不满足相比,针对不表示优选网络协议的、完整组中的至少一个候选对的探测消息阈值可以被设置为较低。
[0284]
如果候选对中的一个表示优选协议并且该候选对的第一和第二网络地址都是中继候选网络地址,则可以满足第一网络能力标准。
[0285]
如果第一网络能力标准被确定为满足,则与被确定为不满足相比,该组中的不表示优选协议的所有候选对的相应重试阈值可以被设置为较低。
[0286]
本主题的第三方面涉及一种基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在第一端点的计算机执行以下步骤:至少由第一端点确定一组一个或多个减少的连接性检查标准中的至少一个是否被满足;通过在所述第一端点和第二端点之间交换网络地址,在所述第一端点处生成候选对组以进行连接性检查,每个所述候选对包括可用于所述第一端点的第一网络地址和可用于所述第二端点的第二网络地址;由第一端点向候选对组中的每个候选对分配相应的优先级,其中:如果由第一端点确定任何一个连接性检查修改标准都不满足,则由第一端点根据如标准化联网协议所规定的标准化联网协议来分配优先级,并且如果由第一端点确定连接性检查修改标准中的任何一个满足,则由第一端点分配的优先级中的至少一个与标准化联网协议所规定的不同;以及使用通过端点对于所生成的组中的至少两个候选对依次按其确定的优先级的顺序执行连接性检查而被确定为有效的所生成的组中的候选对来建立媒体会话。
[0287]
根据各个第三方面,在某些情况下,相对于由标准化联网协议(例如但不限于ice协议)规定的顺序,在某些情况下有意改变进行连接性检查的顺序,以适应这些特定的情况。这允许更有可能有效的和/或更有可能被使用的候选对,即在该情况下更可行的候选对,比那些不太可能有效和/或被使用的候选对(即,在该情况下不太可行的候选对)更早被检查,即使可行性较低的候选对按照标准化协议所制订的严格规则被指定为比先前候选对更高优先级的候选对。以这种方式(以偏离协议的方式)优先考虑更可行的候选对,在连接性检查期间更高效地使用带宽,因为它降低了对不太可行的候选者进行连接性检查的可能性,因此降低了检查不太可行的候选者浪费带宽的可能性。
[0288]
在实施例中,所述一个或多个连接性检查修改标准中的每一个是:仅在至少一个端点位于防火墙或网络地址转换器之后时才被满足的网络拓扑标准,关于至少一个候选对的历史网络使用标准,或者关于至少一个端点的联网能力的网络能力标准。
[0289]
标准化网络协议可以是ice协议。
[0290]
至少一个标准可以是仅当至少一个端点位于防火墙或网络地址转换器之后时才满足的网络拓扑标准。
[0291]
标准之一可以是仅当第一端点被配置为作为服务器运行并且位于防火墙或网络地址转换器之后时才满足的第一网络拓扑标准。
[0292]
如果确定第一网络拓扑标准被满足,则其第一候选网络地址是第一端点的主机候选网络地址的完整候选对组中的至少一个候选对可以被分配与标准化的协议所规定的标准相比较低的优先级。
[0293]
标准之一可以是仅当两个端点都位于相应的防火墙或网络地址转换器之后时才
满足的第二网络拓扑标准。
[0294]
如果确定第二网络拓扑标准被满足,则其第一或第二候选网络地址分别是第一端点的主机候选网络地址或第二端点的主机候选网络地址的完整候选对组中的至少一个候选对可以分别被分配比标准化协议所规定的标准较低的优先级。
[0295]
其中一个标准可以是仅在第一端点被配置为作为公共互联网的公共可达服务器进行操作时才被满足的第三网络拓扑标准。
[0296]
如果确定第三网络拓扑标准被满足,则其第一候选网络地址是对第一端点可用的中继候选网络地址的完整组的至少一个候选对可以被分配与由标准化协议所规定的标准相比较低的优先级。
[0297]
其中一个标准可以是第一历史网络使用标准,其仅在针对至少一个候选对确定的历史使用度量低于历史使用阈值时才被满足,其中如果第一历史使用标准被确定为满足,该候选对可被分配与标准化协议规定的标准相比较低的优先级。
[0298]
每个候选对可以另外表示多个网络协议中的相应一个;其中所述标准中的至少一个标准可以是仅当所述端点都能够根据所述网络协议中的优选网络协议进行操作时才满足的第一网络能力标准。
[0299]
如果第一网络能力标准被确定为满足,则组中的不表示优选网络协议的第二候选对可以被分配比包括与第二候选对相同的第一和第二网络地址、但不表示优选协议的组的第一候选对较低的优先级。
[0300]
如果候选对中的一个表示优选协议并且该候选对的第一和第二网络地址都是中继候选网络地址,则可以满足第一网络能力标准。
[0301]
如果第一网络能力标准被确定为满足,则该组中的不表示优选协议的每个候选对可以被分配比该组中的表示优选协议的任何候选对较低的优先级,由此当对于表示优选协议的每个候选对执行连接性检查时,仅对不表示优选协议的候选对执行连接性检查。
[0302]
多个网络协议可以包括udp和tcp,其中优选网络协议可以是udp或tcp之一,其中如果为第一网络能力标准,表示udp或tcp中的另一个的至少一个候选对可以被分配比标准化协议规定的标准较低的优先级。
[0303]
多个网络协议可以包括ipv4和ipv6,其中优选的网络协议可以是ipv4或ipv6中的一个,其中如果第一网络能力标准被确定为满足,表示ipv4或ipv6中的另一个的至少一个候选对可以被分配比由标准化协议规定的标准较低的优先级。
[0304]
对于一个或多个标准中的每一个,确定步骤可以包括:
[0305]

由第一端点发起检测过程以检测是否满足该标准;和/或
[0306]

由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,该参数表示是否满足该标准;和/或
[0307]

由第一端点接收一个或多个电子信息,电子信息表示是否满足该标准。
[0308]
根据本主题的第四方面,用于经由通信网络在发起端点与响应端点之间实现媒体会话的计算机实现的方法包括在发起端点和响应端点中的至少一个的计算机处实现以下步骤:通过在发起端点和响应端点之间交换网络地址,在端点处生成一组候选对,每个候选对包括可用于发起端点的相应网络地址以及可用于响应端点的相应网络地址,所述媒体会话通过应用以下步骤使用被确定为有效的所述组中的候选对来建立:由所述第一端点确定
是否满足一组一个或多个连接性检查修改标准中的任何一个;接收与每个网络地址相关联并且指示将被穿过的通过网络的路径的直接性是要用于媒体会话的网络地址的相应类型度量;并且所述端点对从所述组中选择的至少一个候选对执行连接性检查以确定所述候选对是否有效,其中,基于所述类型度量和所述确定来选择所述至少一个候选对。
[0309]
在实施例中,所述一个或多个连接性检查修改标准中的每一个可以是:仅在至少一个端点位于防火墙或网络地址转换器之后时才被满足的网络拓扑标准,关于至少一个候选对的历史网络使用标准,或者关于至少一个端点的联网能力的网络能力标准。
[0310]
根据本主题的第五方面,基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法包括在所述第一端点的计算机上实现以下步骤:由所述第一端点确定是否满足一组一个或多个连接性检查修改标准中的任何一个;通过在所述第一和第二端点之间交换网络地址,在所述第一端点处生成一组候选对以进行连接性检查,每个候选对包括可用于所述第一端点的第一网络地址和可用于所述第二端点的第二网络地址;在所述第一端点处确定所述候选对组的排序,其中:如果所述第一端点确定任何一个所述连接性检查修改标准均不满足,则所述排序由所述第一端点根据由所述标准化联网协议所规定的标准化联网协议来确定,并且如果所述第一端点确定所述连接性检查修改标准中的任何一个满足,则由所述第一端点确定的顺序不同于由所述标准化联网协议规定的顺序;以及通过端点按确定的顺序对生成的组中的至少两个候选对进行连接性检查,由所述端点使用确定为有效的所生成的组的候选对来建立媒体会话,对于所述至少两个候选对的连接性检查根据确定的顺序依次执行。
[0311]
本主题的第六方面涉及用于基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的第一端点的计算机,该计算机包括:存储器,保存可执行代码;连接到所述存储器的处理器,其中所述代码被配置成在所述处理器上执行时实现本文公开的任何方法。
[0312]
本主题的第七方面涉及一种包括存储在计算机可读存储介质上的可执行代码的计算机程序产品,所述代码用于基于端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话并且被配置成在第一端点的计算机上执行时实现本文公开的任何方法。
[0313]
为了绝对避免疑问,再次重申,上述主题的任何方面的任何实施例可以在任何一个或多个其他方面的实施例中加以必要的修改而实现。因此,例如:
[0314]

关于包括排除候选对的第一方面描述的任何实施例可以在第二方面的实施例中通过降低该对的探测消息阈值来实现,或者在第三方面的实施例中通过降低该对的优先排序来实现;
[0315]

同样地,关于包括降低候选对的探测消息阈值的第二方面描述的任何实施例可以在第一方面的实施例中通过完全排除该候选对而实现,或者在第三方面的实施例中通过对该对进行去优先化而实现;
[0316]

同样地,关于包括对候选对进行去优先化的第三方面所描述的任何实施例可以在第一方面的实施例中通过完全排除该候选对而实现,或者在第二实施例中通过降低该对的探测消息阈值而实现。
[0317]
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所
附权利要求中限定的主题不一定限于上述特定特征或动作。相反,上述具体特征和行为是作为实现权利要求的示例形式公开的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1