CN108702394B - 网络端点间的媒体会话 - Google Patents
网络端点间的媒体会话 Download PDFInfo
- Publication number
- CN108702394B CN108702394B CN201680067746.1A CN201680067746A CN108702394B CN 108702394 B CN108702394 B CN 108702394B CN 201680067746 A CN201680067746 A CN 201680067746A CN 108702394 B CN108702394 B CN 108702394B
- Authority
- CN
- China
- Prior art keywords
- endpoint
- candidate
- network
- connectivity check
- pair
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2564—NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2589—NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
基于由端点执行的连接性检查,经由通信网络在第一端点与第二端点之间建立媒体会话。生成候选对集合,每个候选对包括第一端点可用的第一网络地址和第二端点可用的第二网络地址。根据是否确定一组一个或多个减少连接性检查标准中的至少一个减少连接性检查标准被满足,针对至少一个候选对的探测阈值。通过第一端点将来自该对的第一网络地址的多个探测消息发送到由该探测阈值限制的该对的第二网络地址来对至少一个候选对执行连接性检查。
Description
背景技术
通信网络通常包括不同类型的网络节点,诸如在网络内执行不同功能的用户设备、路由器、网络地址转换器(NAT)、媒体中继服务器等。两个通信节点(端点,如用户设备)之间的通信可以经由网络的其他节点(中间节点,如路由器、NAT和媒体中继服务器)进行。网络可以具有分层体系结构,由此不同的逻辑层提供不同类型的节点到节点通信服务。每个层都由紧接该层下方的层提供服务(除最低层以外),并向紧接该层上方的层提供服务(除最高层之外)。网络可以是基于分组的网络和/或互联网。
可以在经由通信网络连接的两个端点(诸如用户设备)之间建立媒体会话,使得可以经由网络在这些端点之间发送和接收实时媒体。媒体会话的示例是SIP(“会话发起协议”)媒体会话。媒体会话可以是IP语音或视频(VOIP)会话,其中在VOIP会话中的端点之间发送和接收呼叫的音频和/或视频。端点和其他类型的网络节点可以通过网络地址(例如IP(“互联网协议”)地址)来标识,其中会话在与端点相关联的传输地址之间建立。传输地址是网络地址(例如,IP地址)和与该网络地址关联的端口的组合。
为了建立媒体会话,端点中的一个端点可以向另一端点发送媒体会话请求。这里,发起对媒体会话(例如音频/视频通信)的请求的端点被称为“发起端点”或等同地称为“呼叫方端点”。接收和处理来自呼叫方的通信请求的端点称为“响应端点”或“被呼叫方端点”。每个端点可以具有多个关联的传输地址,例如,本地传输地址、NAT公共侧的传输地址、分配在中继服务器上的传输地址等。在媒体会话建立期间,对于每个端点,为该端点选择相应的地址以用于在媒体会话中发送和接收数据。例如,地址可以根据ICE(“交互式连接建立”)协议来选择。媒体会话一旦建立,媒体可以在不同端点的那些所选地址之间流动。为了选择路径,生成所谓的“候选对”的列表,其中每个包括可用于端点中的第一个的网络地址——从第一端点的角度来看是“本地”候选者,但是请注意“本地”在该上下文中不限于其本地接口上的主机地址,并且还可以包括NA的公共侧的反身地址或可以将媒体数据中继到第一端点的媒体中继服务器的中继网络地址——以及对第二端点可用的网络地址(从第一端点的角度看是“远程”候选者)。可以通过在所谓的“连接性检查”期间从本地地址向远程地址发送一个或多个探测消息来检查本地候选者和远程候选者的每一对可能的配对以确定其是否有效。
发明内容
提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在确定所要求保护的主题的关键特征或主要特征,也不旨在用于限定所要求保护的主题的范围。
本公开涉及经由通信网络在第一端点和第二端点之间建立媒体会话,使得媒体数据(音频和/或视频数据)可以在建立的媒体会话中在端点之间传输。媒体会话基于由端点执行的连接性检查而建立。
根据主题的各个方面,在某些情况下,在连接性检查期间传输的探测消息的数量在某些情况下有意减少。每个探测消息使用带宽,因此通过减少探测消息的数量,可以节省带宽。
至少第一端点(以及在一些情况下,第一端点和第二端点两者)确定是否满足一组一个或多个减少连接性检查标准中的至少一个。该确定可以以多种方式进行,例如基于第一端点的直接测量,例如根据TURN或STUN协议由第一端点引发;和/或通过访问由网络运营商或管理员(例如)设置的一个或多个本地和/或远程参数;和/或基于从第二端点和/或服务器接收的一个或多个消息,例如,第二端点和/或服务器基于其自己的直接测量和/或参数已经生成了消息。
在第一端点处,通过在第一端点和第二端点之间交换网络地址来生成用于连接性检查的候选对集合。该集合中的每个候选对包括可用于第一端点的第一网络地址和可用于第二端点的第二网络地址。基于确定步骤,第一端点为候选对中的至少一个设置探测阈值。如果确定满足减少连接性检查网络标准中的至少一个,则相比于确定不满足任何一个的情况,探测消息阈值较低。媒体会话是使用所生成的集合中的、通过端点基于探测阈值对至少一个候选对执行连接性检查而确定为有效的候选对来建立的,连接性检查是通过第一端点从该对的第一网络地址向该对的第二网络地址发送多个探测消息,其中,探测消息的数量受探测阈值限制。
附图说明
为了帮助理解主题并示出其如何实施,现在将仅通过示例的方式参考以下附图,其中:
图1示出了通信***;
图2示出了用户设备的框图;
图3示出了控制服务器的框图;
图4示出了分层网络体系结构的表示;
图5示出了网络地址转换器的操作;
图6A-C分别示出了用于媒体会话的通过网络的第一路径、第二路径和第三路径;
图7示出了媒体会话的一组可能的地址配对;
图8示出了表示端点和控制服务器的功能的功能框图;
图9是用于建立媒体会话的方法的流程图;
图10是连接性检查过程的流程图。
具体实施方式
实时呼叫通常分两个阶段进行:初始信令阶段,在该阶段期间确定有效的连接路径,例如基于ICE协议,以允许呼叫媒体(音频/视频数据)在随后的媒体流阶段中在端点之间流动。
ICE是用于建立穿透网络地址转换器(NAT)和防火墙的VOIP会话的连接性的协议。它侧重于建立媒体延迟方面最高效的路径,以确保理想的媒体质量。CE协议试图通过基于路径的“静态优先级”尝试不同的路径来识别最高效的路径。
随着移动端点数量的增加和VOIP技术的渗透,本主题的发明人已经观察到越来越多的用户尝试从具有非常有限的带宽的网络建立呼叫。对于这种带宽受限的网络,RFC5245中定义的ICE机制可能导致网络饱和,导致呼叫建立失败,选择次优路径并影响现有模式的质量。
本主题的所描述的实施例显著地减少了连接建立所需的带宽,使得能够成功建立呼叫(或其他媒体会话),并且对带宽受限网络具有特定的但并非排他的适用性。
ICE为呼叫信令阶段的一个方面提供通用框架,其指定从呼叫方和被呼叫方端点配对所有可能的“候选者”,并且在连接性检查中探测所有可能的连接路径。
候选者包括可用于端点之一的网络地址,其可以是该设备本地的网络接口的本地网络地址(“主机候选者”),后面定位有端点的NAT或防火墙的公共侧上的网络地址,其中NAT/防火墙可以在该地址处代表端点接收媒体数据并将其路由到端点(“反身候选者”)或可以在该地址处代表端点接收媒体数据的媒体中继服务器的网络,并将接收到的媒体数据中继到端点(“中继候选者”)。这些网络地址是“候选者”,因为在呼叫方可用的每个候选网络地址和被呼叫方可用的每个候选网络地址之间建立媒体会话可能并不总是可能的。例如,当呼叫方和被呼叫方位于不同的NAT后面时,通常不可能直接通过公共互联网在它们的主机网络地址之间建立连接(见下文)。
候选者可以另外指示特定的联网协议,特别是传输层或网络协议——例如,对端点之一可用的一个网络地址可以产生两个候选者,例如,针对该地址的TCP候选者和UDP候选者(TCP和UDP是传输层协议)。在某些情况下可能的是,例如,如果端点中的一个或两个位于UDP阻止防火墙之后,使用TCP而不是UDP在两个候选网络地址之间建立媒体会话。又例如,候选对可以指示IUPv6或IPv6之一,取决于它包含的IP地址是IPv4还是IPv6地址(IPv4和IPv6是网络层协议)
根据ICE,每个候选者执行候选者“收集”阶段,其中每个端点识别对其可用的每个候选者。然后,端点通过每个端点向其他端点发送其收集的候选者来交换候选者。
每个端点然后在候选者配对过程中确定其自己收集的候选者(从该端点的角度看是“本地”候选者)中的每个与从另一个端点接收的候选者(“远程”候选者)中的每个的每个可能的配对,准备连接性检查。每个候选者仅与指示相同网络协议的其他候选者配对,例如,TCP和UDP候选者分别仅与其他TCP和UDP候选者配对。除了该限制之外,每个可能的(‘本地候选者’、‘远程候选者’)候选对都有资格针对每个指定的协议进行连接性检查,即(主机,主机),(主机,反身),(主机,中继),(反身,主机),(反身,反身),(反身,中继),(中继,主机),(中继,反身),(中继,中继)。确定的候选对被组织成用于连接性检查的一组候选对(“候选对集合”)——所谓的“检查列表”(见下文),其是所确定的候选对的有序列表。排序由ICE协议定义,基于ICE协议定义的“静态优先级”(见下文)。
在连接性检查期间,通过本地端点从该对的本地候选者地址向该对的远程候选者地址发送多个探测消息来检查给定候选对。在该上下文中,“从”意味着将本地候选者指定为返回地址,即将其标识为远程端点应该将对探测消息的响应发送到的网络地址,例如,结合传出的IP和TCP/UDP报头——见下文。
如果本地端点在响应间隔内接收到响应于探测消息中的至少一个的答复,则该候选对被确定为有效的。
按照顺序(即,按照静态优先级的顺序)检查检查列表中的候选对——因此取决于情况,可以针对检查列表中的每个候选对发送至少一个探测消息(即,假设连接性检查在到达检查列表末尾之前不终止)。此外,本地端点可以发送针对检查列表中的任何候选对的多个探测消息,例如,它可以一直发送探测消息(重试),直到收到答复或连接性检查终止。
取决于实现方式,连接性检查通常在最高优先级路径被验证时或当达到预先确定的超时时结束。
一方面,这提供了高度鲁棒的媒体会话建立机制——如果存在在端点之间媒体可以经由其流动的路径,则几乎可以保证找到该路径。
另一方面,如本公开所认识到的,这确实意味着,在媒体数据甚至开始在端点之间流动之前,可以通过以下来消费显著的带宽:(i)收集多个反身候选者和中继候选者(由于这些需要信令——见下文),(ii)在端点之间交换多个收集的候选者,以及(iii)作为连接性检查的一部分传输针对多个候选对的多个探测消息。尤其是,尽管不是排他的,在带宽受限的网络(如蜂窝网络)中这是一个问题,在遵循这种常规ICE方法的情况下,连接性检查本身可以使带宽受限的链路饱和,导致呼叫建立失败或影响已经在共享相同网络的其他端点之间建立的现有媒体流的质量。
本公开认识到,在某些情况下,允许比ICE协议的严格规则所指定的灵活性更大的灵活性可以使得在呼叫建立的信令阶段期间,特别是在带宽受限网络中形成带宽节省。在本主题的实施例中,这样的带宽节省可以通过以下各种方式来实现:
1.修剪候选者和/或候选对,即排除某些候选者配对以使其没有资格进行连接性检查,从而保证不对该对执行连接性检查,即保证针对该候选对不发送探测消息,例如在候选对在该情况下不可能有效或者不太可能在当前的情况下使用的情况下;和/或
2.限制针对特定候选对执行连接性检查的程度,即,限制针对该候选对发送的探测消息的数量,即减少连接性检查中针对该对的重试次数,例如在候选对在当前情况下不可能有效或使用的情况下;和/或
3.改变检查候选对的顺序,即按照与ICE协议规定的顺序不同的顺序对检查列表排序,以便“去优先化”在当前情况下不太可能有效或使用的候选对。
在1的上下文中,在某些情况下,可以在候选者收集之前修剪某些类型的候选者,例如在某些情况下,终端可能根本不收集中继候选者(见下文)。这可以使得在以下所有三个过程中节省带宽:候选者收集过程,因为它消除了收集中继候选者所需的信令,例如在端点和TURN服务器之间;候选者交换过程,因为存在较少要交换的候选者;以及连接性检查阶段,因为存在较少要检查的候选者。在其他情况下,可以发生全面的候选者收集,但某些配对仍然可以被排除,这仍然会引起连接性检查阶段的带宽节省。
以下仅通过示例来描述实施例。首先描述可以有效应用实施例的上下文。
图1是通信***的示意图,其包括:公共网络2,其是基于分组的互联网(即,互连的各个网络构成的***),例如因特网,具有公共地址空间;第一和第二端点,它们是由第一和第二用户4a、4b操作的第一和第二用户设备6a、6b;第三和第四端点,它们是由第三和第四用户4'a、4'b操作的第三和第四用户设备6'a、6'b;第一和第二媒体服务器14a、14b;和控制服务器(遥测服务器)12。公共网络2包括多个路由器3,路由器3在公共网络2的不同的各个网络(未示出)之间路由业务。
用户设备6a、6'a连接到第一基于分组的私有网络5a并且是第一基于分组的私有网络5a的网络节点,并且用户设备6'a、6'b连接到第二基于分组的私有网络5b并且是第二基于分组的私有网络5b的网络节点。
私有网络的每个节点在该私有网络的私有地址空间中具有相应的私有网络地址,连接到同一私有网络的其他节点(以及仅这些节点)可以使用私有网络地址通过该私有网络(并且仅通过该私有网络)与该节点通信。该地址是私有的,因为它不能用于由未连接到该同一私有网络的设备与该节点进行通信,例如它不能在公共网络2内使用。而且,虽然该地址在该私有网络内是唯一的,但是其他节点可以在不同网络内使用相同的网络地址(例如,第一和第二用户设备5a、5b可能碰巧具有相同的私有网络地址,但其可用于仅在第一私有网络5a内与第一用户设备6a进行通信并且其可用于仅在第二私有网络5b内与第二用户设备6b进行通信)。
为了使第一私有网络5a(相应地第二私有网络5b)的节点能够与公共网络2通信,第一(相应地第二)私有网络经由第一网络地址转换器(NAT)8a(相应地第二NAT 8b)与公共网络2连接。每个NAT 5a、5b——以及分别在第一和第二私有网络5a、5b的第一和第二私有地址空间中具有相应的私有网络地址(称为该NAT的私有侧上的地址)——也具有公共网络2的公共地址空间中的相应的公共网络地址(称为在该NAT的公共侧的地址)。因此,不仅第一和第二私有网络5a、5b的节点可以使用那些NAT的私有网络地址分别与第一和第二NAT5a、5b进行通信,而且该私有网络外的节点可以使用那些NAT的公共网络地址与那些NAT5a、5b进行通信。
NAT(例如8a、8b)通过将私有网络的私有地址空间映射到公共网络的公共地址空间中而作为私有网络(例如5a、5b)和公共网络(例如2)之间的接口进行操作,从而使得私有网络的节点能够通过公共网络在私有网络之外进行通信。
私有网络中的一个(5a/5b)之外的节点可以使用该NAT公共地址经由公共网络2将想要送到该私有网络的特定节点的业务引导至相关NAT(8a/8b),NAT然后经由该私有网络将业务转发到该节点。
下面详细描述NAT的操作。
私有网络5a、5b和公共网络2构成通信网络1,其中各种用户设备6a、……、6'b,NAT8a、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的相应实例以达到类似的效果。
用户设备可以通过一些不涉及任何NAT的其他机制连接到公共网络2,尽管这在图2中未示出。例如,用户设备可以经由Wi-Fi连接连接到私有网络并且经由不涉及NAT的移动网络连接到公共网络。
控制服务器12以下面描述的方式执行用于监测和控制各种用户设备之间的通信的各方面的控制代码13。
图2是用户设备6(例如,6a、6b、6'a、6'b)的示意性框图。用户设备6是可以采取多种形式的计算机设备,例如,台式计算机或膝上型计算机、移动电话(例如智能电话)、平板计算设备、可穿戴计算设备、电视机(例如智能TV)、机顶盒、游戏控制台等。
用户设备6包括处理器22,存储器20、一个或多个输出设备(诸如显示器23和扬声器26)、一个或多个输入设备(诸如相机27和麦克风28)以及使得用户设备6能够连接到网络1的网络接口24(诸如以太网、Wi-Fi或移动网络(例如3G、LTE等)接口)连接到处理器22。显示器23可以包括触摸屏,其可以接收来自设备6的用户的触摸输入,在这种情况下,显示器23也是用户设备6的输入设备。示出的连接到处理器的各种组件中的任何组件可以集成在用户设备6中,或者非集成并经由合适的外部接口(有线,例如以太网,或无线,例如Wi-Fi)连接到处理器22。
存储器20保存客户端7的副本,当在处理器24上执行时,副本使用户设备6实现客户端7的功能。
客户端7具有用户接口,用于从用户设备6的用户接收信息并向用户设备6的用户输出信息,包括在诸如呼叫的通信事件期间。用户接口可以包括例如经由显示器23和/或自然用户接口(NUI)输出信息的图形用户接口(GUI),其使得用户能够以“自然”方式与设备交互,免受来自某些输入设备(如鼠标、键盘、遥控器等)施加的人为约束。NUI方法的示例包括利用触敏显示、话音和语音识别、意图和目标理解,使用深度相机的运动姿势检测(例如立体或飞行时间相机***、红外相机***、RGB相机***以及这些的组合)、使用加速度计/陀螺仪的运动姿势检测、面部识别、3D显示、头部、眼部和视线跟踪、沉浸式增强现实和虚拟现实***等的那些方法。
图3是控制服务器12的示意性框图。控制器服务器12包括处理器32,处理器32连接到存储器30和使控制服务器12能够连接到网络1的网络接口24。存储器30保存控制软件13,当在处理器32上执行时,使得控制服务器12实现控制软件13的功能。虽然被描绘为单个设备,但是控制服务器12的功能可以以分布式方式分布在多个服务器设备上,或者可替代地由一个或多个用户设备来实现,例如,以分布式的点对点方式。
网络1具有分层体系结构,由此网络1的功能被组织为抽象层。这在图4中示意性地示出。在该示例中,网络1实现因特网协议组,由此该功能被组织成四个层108-102:应用层108(与OSI(“开放***互连”)模型的层5、6和7的组合相当)、应用层108下面的传输层106(与OSI模型的层4相当)、网络层104(与OSI模型的层3相当),这是在传输层106下面的互联网层,以及在互联网层104下面的链路层102(与OSI模型的层1和层2的组合相当)。
应用层108提供在不同主机(即连接到网络1的通用计算机设备,诸如用户设备6和服务器12、14)上运行的进程之间的进程到进程通信(请注意,路由器3和NAT 8不是这里使用的术语“主机”)。传输层106提供不同主机之间的端对端通信,包括提供主机之间的端到端信道以供进程使用。互联网层104提供互联网1的不同的各个网络之间的路由,即通信,例如,经由在因特网层操作的路由器3/NAT 8,后者提供在互联网层的网络地址信息的转换(网络地址转换)。链路层102提供互联网1的相同单独网络中相邻节点的物理网络地址(例如MAC(“媒体访问控制”)地址)之间的通信,例如,经由在链路层102处操作的网络交换机和/或集线器等。
在传输主机处将要通过网络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包括传输层报头(例如UDP/TCP报头)10i——其在传输主机的传输层106处被生成并附加——以及传输层有效载荷(例如,UDP/TCP有效载荷)10ii——其对从应用层108接收到的应用数据进行编码。
还图示了IP数据报11。IP数据报11包括在传输主机的互联网层104处生成并附加的IP报头11i和对从传输层接收到的传输层分组的数据进行编码的IP有效载荷11ii。IP报头包括作为IP分组11通过网络1指向的传输地址的目的地传输地址和作为生成IP数据报的主机本地(至少在分组生成的这个阶段)的传输地址的源传输地址。
在此使用术语“IP报头级别”和“IP有效载荷级别”以分别指代在IP报头和IP有效载荷中编码的信息。
对于在私有网络(例如5a/5b)内生成的分组,IP头部包括IP地址,该IP地址是该私有网络的私有地址空间中的私有网络地址(例如,5a/5b中的用户设备6a/6b的私有网络地址);传输层报头(例如,UDP/TCP报头)包括与该IP私有地址相关联的端口的端口号。IP地址和相关端口一起构成“传输地址”,其可以用于在私有网络内识别不仅仅是特定设备,而是例如在该设备上运行的特定应用实例(例如通信客户端实例)。
如所指出的,这种私有地址空间在该私有网络之外是不可用的。因此,如果简单的路由器用于在该私有网络(例如5a/5b)和公共网络(例如2)之间转发IP数据报,该私有网络之外的节点将无法响应这些数据报,因为它们不会有IP报头中任何可用的源地址。
为此,可以使用NAT来提供公共网络和私有网络之间的接口。
图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指引到的目的地传输地址。
如图所示,对于每个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地址关联的端口形成。
NAT 8维持初始传输地址和新的传输地址之间的映射9,以便它可以将已经经由公共网络2被引导到新的传输地址的任何返回业务(并且这将因此在NAT 8处终止)经由私有网络5转发到用户设备6的初始传输地址。
在最简单的示例中,NAT简单地用它自己的公共IP网络地址替换私有IP地址,并且不改变端口。然而,NAT实施地址空间伪装变得越来越普遍,因此私有地址空间隐藏在单个网络地址后面。为防止返回分组中出现歧义,NAT通常必须更改其他信息,例如与源地址关联的端口。例如,NAT可以具有单个公共IP地址并且用它自己的单个公共IP地址和唯一的(并且可能不同的)端口替换私有地址空间中的每个传输地址,从而在私有网络的私有网络节点之外仅通过与该单个公共IP地址相关联的端口而彼此区分。
通常,NAT不修改IP有效载荷,而仅以上述方式修改IP报头和(在一些情况下)UDP/TCP报头。对于简单地将响应指向IP报头中的源地址的协议(例如HTTP)而言,这通常是可以接受的。
然而,包括一些媒体会话协议(诸如SIP)的其他协议也依赖于在IP有效载荷(而不是报头)级别编码的端点的地址。例如,SIP协议规定端点应使用包含在SIP邀请/SIP响应中的地址来建立媒体会话,所述地址将在IP有效负载(而不是报头)级别进行编码。如图5所示,这不会被NAT 8修改。
因此,例如,假设图1中的第一用户设备6a要经由在IP有效负载级别编码的第一NAT 8a向第二用户设备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将查询的IP报头中的私有地址替换为NAT公共侧的相应公共地址,因此STUN服务器可以从查询的IP报头中获取NAT公共侧的相应公共地址,进而STUN服务器可以将NAT公共侧的相应公共地址提供给发起端点。发起端点然后可以使用该公共地址而不是其自己的私有地址来建立会话,从而在会话请求中将IP有效负载级别的可用地址传达到响应端点。响应端点可以类似地发现其相关联的公共地址,响应端点可以在响应中将相关联的公共地址而不是其自己的私有地址在IP有效负载级别传达到发起端点。STUN服务器的角色实际上是提供地址发现的角色,并且一旦媒体会话建立,它通常不会参与媒体会话。
如本领域中已知的,即使当NAT的公共地址已知时,例如当发起和/或响应端点位于对称NAT之后时,也存在这样的情况,即无法建立这样的会话。在这种情况下,一个或多个TURN中继服务器通常可用于通过TURN服务器中继媒体数据来穿透NAT。
当端点需要使用TURN中继时,它向TURN中继发送请求,请求将TURN中继上的唯一公共传输地址分配给端点。如果请求被接受,则使用TURN服务器的公共地址作为该端点的源地址来建立媒体会话。该端点向TURN服务器发送它希望在包含在TURN消息中的会话中发送的媒体。TURN服务器从TURN消息中提取媒体,并将其从已分配给该端点的TURN服务器上的公共地址作为源地址向前中继。TURN服务器还将想要送到已经指向TURN服务器上分配的地址的该端点的数据中继到包含在TURN消息中的该端点以供该端点提取。
如果两个端点都位于不允许STUN的NAT后面,则每个端点将需要其自己的相应传输地址被分配在TURN服务器上,在这种情况下在这两个分配的TURN服务器地址之间建立媒体会话,并且每个端点在TURN消息中继/接收数据,其中,提供给TURN服务器的数据被发送到分配给媒体会话中的那些端点的两个TURN服务器地址以及从分配给媒体会话中的那些端点的两个TURN服务器地址接收提供给TURN服务器的数据。
TURN中继需要在该(那些)服务器上至少在媒体会话持续期间分配资源(包括在TURN服务器上分配的唯一公共传输地址),并且还意味着与当直接在端点之间或经由一个或多个NAT建立媒体会话时相比,媒体会话的媒体通过不太直接的路径传播。因此,虽然TURN中继可以或多或少地保证为媒体会话提供通过网络的可用路径,但这种中继的代价是服务器资源的使用增加以及由于路径的间接性而可能增加的等待时间。
STUN和TURN功能可以并入相同的服务器中,该服务器有时也简称为TURN服务器,即使它也包括STUN功能。
图1的媒体服务器14a和14b是TURN服务器,其结合了STUN和TURN功能二者,并因此具有地址查找和媒体中继功能二者。可替代地,该功能和/或其他功能可以在分开的服务器之间拆分,或者由下面描述的媒体服务器14a、14b执行的功能可以由相同的服务器执行。
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)。
在ICE的上下文中,对于媒体会话而言,客户端之间具有直接连接的路径(直接路径)相对于例如涉及使用中间中继服务器(例如通过TURN服务器进行中继)的间接路径是优选的。ICE上下文中的路径是指可用于在这些端点之间发送和接收数据的一组NAT和/或媒体中继服务器(如果有的话:路径可以不包括NAT或服务器)。如下所述,路径由一对传输地址标识——其中一个传输地址用于由发起端点发送和接收数据,而另一个传输地址用于响应端点发送和接收数据——它定义了这样一组NAT和/或媒体中继服务器(如果有的话)。
ICE仅允许对称的通过网络的路径。在该上下文中对称路径意味着这样的路径:其中,从第一端点沿着该路径传输到第二端点的数据穿透与从第二端点沿该路径传输到第一端点的数据相同的一组NAT和/或媒体中继服务器(如果有的话),但顺序相反。当然,在端点和NAT、端点和服务器、NAT和NAT、服务器和服务器,服务器和NAT等之间采取的路由方面可以适当存在不对称,例如,对于互联网业务,数据可以在每个方向和/或不同时间经过通过互联网的不同的各个网络,并且因此通过不同的路由器,但是尽管如此在两个方向通过相同的NAT和/或TURN服务器(如果有的话)。不包括服务器或NAT的直接路径是对称的。
图6A-6B示出了通过图1的网络1的路径的示例,这些路径是对称的并且在ICE的上下文中被认为是直接的。
图6A示出了在沿着从发送端点6(左手侧)到接收端点6(右手侧)的第一路径在一个方向上传播的想要送到接收端点6(右手侧)的数据。第一路径不包括任何NAT 8或中继服务器14。该路径是对称的,因为在另一方向传播的数据也不经过任何NAT 8或中继服务器14,尽管它可以沿不同方向和/或在不同的时间通过不同路由器3。
如图所示,一旦数据已经由发送端点作为传输层(例如UDP/TCP)分组10从传输层106传递到网络层104,它就保持在网络层104处或在网络层104之下,直到达到接收端点。也就是说,在沿着第一路径传播时不存在传输层(或更高)的数据处理。传达数据的IP分组10可以沿着路被分段,但是除了保持未修改的之外,并且传输层分组10因此以类似未修改的方式到达接收端点的传输层。
图6B示出了沿着从发送端点6(左手侧)到接收端点6(右手侧)的第二路径在一个方向上传播的想要送到接收端点6(右手侧)的数据。第二路径包括至少一个NAT 8但不包括任何中继服务器14。该路径是对称的,因为在另一个方向上传播的数据经由相同的NAT 8(以相反的顺序)但没有经由中继服务器14,尽管它可以经由不同的路由器3,但是它在任一方向和/或不同时间穿透的路由器可能不同。
再次,一旦数据已经在发送端点处作为传输层(例如,UDP/TCP)分组10从传输层106传递到网络层104,在该示例中,其保持在网络层104处或在网络层104之下,直到达到接收端点。与图6A的第一路径相比,传达数据的IP分组11在NAT 8处被修改以改变IP报头中的源地址。此外,在某些情况下,TCP/UDP报头也可以被修改以修改端口号,虽然这在图6B中未明确示出。
在图6B中修改的IP分组被标记为11'。然而,编码传输层分组10的IP有效载荷未被修改,因此传输层分组10在接收端点的传输层被接收而未被修改。
图6C示出了通过网络1的对称间接路径的示例。
图6C示出了沿着从发送端点6(左手侧)到接收端点6(右手侧)的第三路径在一个方向上传播的想要送到接收端点6(右手侧)的数据。第三路径确实至少一个媒体中继服务器14,并且还可以包括一个或多个NAT(未示出)。路径是对称的,因为在另一方向传播的数据经由相同的中继和NAT(以相反顺序),但可以在不同方向上和/或在不同时间经由不同的路由器。
如果将图6C所示的TURN服务器14分配给发送端点6(左手侧),则将数据包含在TURN消息中从发送端点发送到服务器14,从TURN消息中提取该数据并朝向接收端点继续中继,否则如果TURN服务器被分配给接收端点,则将在中继服务器14处从发送端点接收的数据封装到TURN消息中以向接收端点传输。无论哪种情况,TURN服务器都在传输层和应用层处操作,以便在通过第三路径时重新格式化数据,这使得第三路径是间接的。由于重新格式化,接收端点接收传输层分组10',该传输层分组10'不同于发送端点(10)最初发送的传输层分组。
ICE协议试图基于静态优先级来识别它认为是最高效的路径,静态优先级被分配给可以用于媒体会话的多个所谓的“候选对”中的每一个。候选者是与发起端点或响应端点相关联的传输地址。候选对是一对候选者(i,r),第一个候选者(i)与发起端点关联,第二个候选者(r)与响应端点关联。术语“候选者”涉及以下事实:ICE机制最初假定与端点相关联的任何传输地址可能能够用于媒体会话(尽管由于上面讨论的原因它可能实际上不可用)——然后ICE协议涉及识别实际上可用的候选者。
ICE将候选者分为3类:主机候选者、反身候选者和中继候选者。
主机候选者是所讨论的端点本地的传输地址,即在直接附接到端点的网络接口上。例如,用户设备6a、6b的私有地址对于那些用户设备是本地的,并且因此是主机候选者,并且类似地,如果用户设备直接连接到公共网络2(而不是经由NAT 8a、8b或除了经由NAT8a、8b之外),它们将拥有在那些用户设备本地的它们自己的公共地址,这些公共地址也是主机地址。
反身候选者是不在端点本地的传输地址,但它是NAT公共侧上的转换后的传输地址(例如,如图5的修改的IP报头11'i中所包括的)。这些分为两类:“服务器反身候选者”,它们是通过以上文所概述的方式查询服务器(例如STUN服务器)发现的公共NAT地址,以及在建立媒体会话期间由另一端点发现的“对等反身候选者”(例如,由响应端点发现的与发起端点相关联的公共侧NAT地址,或反之亦然)。
中继候选者是以上述方式从媒体中继服务器(例如,TRUN服务器)分配的传输地址。
这在图7中针对图1的第一和第二用户设备6a、6b示意性地示出。在该示例中,第一用户设备6a是发起端点,第二用户设备6b是响应端点。
第一用户设备6a与以下相关联:第一本地传输地址(其是主机候选者)40a;在第一NAT 8a的公共侧上并映射到第一私有网络5a中的第一用户设备6a的私有传输地址的第一反身传输地址(其是反身候选者)42a;在第一TURN服务器14a上分配给第一用户设备6a的第一中继传输地址44a(其是中继候选者)。类似地,第一用户设备6b与以下相关联:第二本地传输地址(其是主机候选者)40b;映射到第二私有网络5b中的第二用户设备6b的私有传输地址的第二NAT 8b的公共侧上的第二反身传输地址(其是反身候选者)42b;以及在第二TURN服务器14b上分配给第二用户设备6b的第二中继传输地址44b(其是中继候选者)。
潜在地,可以使用发起端点的候选者传输地址中的任何来与响应端点的候选者传输地址中的任何进行通信。也就是说,第一用户设备6a可以潜在地将数据从它自己的相关联地址(40a、42a、44a)中的任何一个引导到与第二用户设备相关联的地址(40b、42b、44b)中的任何一个,反之亦然。在图6的示例中,这产生可能潜在地用于第一和第二用户设备6a、6b之间的通信的九个候选对:[(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)通信来发现它们的所有候选者,然后以所有可能的组合配对,例如如果发现了六个候选者40a、44b,则这将产生上面讨论的九个候选对。ICE然后尝试发现哪些候选对是有效的。ICE这样做的方式是以特定的排序顺序***地尝试所有可能的对,直到找到一组一个或多个有效的(即起作用的)候选对,然后可以为媒体会话选择其中一个。每当端点中的至少一个发现引起多个候选对的多于一个候选者时,将存在多个可能的通过网络可用的路径,通过该路径可以建立媒体会话(尽管不是所有这些路径实际上都可用,因为不是每个候选对都有效)。
候选对的尝试顺序由ICE静态优先级方案决定,其中较高优先级对在较低优先级对之前被尝试。
根据ICE协议,可以根据等式1为每个候选者(例如40a-44b)分配静态优先级:
优先级=(224)*(类型偏好)+(28)*(本地偏好)+(20)*(256-组件ID)
类型偏好(类型度量的一个示例)是从0到126(包括0和126)的整数,并且表示对候选者类型(本地、服务器反身、对等反身和中继)的偏好。126是最高偏好,0是最低偏好。将该值设置为0意味着此类候选者只能用作最后的手段。对于相同类型的所有候选者,类型偏好是相同的,对不同类型的候选者而言,类型偏好是不同的。对于对等反身候选者的类型偏好高于对于服务器反身候选者的类型偏好。ICE协议建议主机候选者的值为126(除非这些来自虚拟私有网络接口,在该情况下建议为0),对于服务器反身候选者为100,对于对等反身候选者为110,对于中继候选者为0。本地偏好是从0到65535的整数(包括0和65535),并且表示在端点是多重归属的(连接到多于一个计算机网络)时对于从中获得候选者的特定IP地址的偏好。当只有单个IP地址时,ICE建议将其设置为最大值65535,这样在没有多重归属时有效地使该项冗余。组件ID项是候选者的标识符。可以看出,到目前为止,等式1中最重要的项是基于候选类型的第一项。
因此,ICE优先级方案去优先化通过中继候选者的间接路径,其仅将其用作最后手段,并且还将静态优先级偏离反身候选者。
一旦形成了候选对并且根据等式(1)分配了优先级,则可以根据等式2来计算每个候选对的候选对静态优先级:
对优先级(pair priority)=
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(“服务水平协议”)得以满足是至关重要的。
本主题的某些实施例减少了候选者和候选对的数量。探测候选对需要发送使用带宽的连接性检查分组(探测消息)。通过减少候选者的数量并且因此减少了可用的候选对的数量,大大降低了呼叫建立的带宽利用。
即使利用减少的候选对,也可以通过基于静态已知的拓扑知识(例如,如果已知端点被配置为公共可达的例如会议服务器)和/或动态学习的信息(例如,检测到两个客户端都在NAT后面)禁用不可能工作的路径(即,候选对)来获得进一步的优化。可替代地或另外地,在本主题的实施例中,可以通过基于这样的信息减少限制探测消息的数量(即,重试的次数)来节约带宽,其中如果响应于受限数量的探测消息没有接收到应答,则候选对被确定为无效;和/或通过修改与ICE协议有关的连接性检查的顺序,基于这些信息来不对不太可能工作的候选者进行去优先化。
在这方面,本公开认识到,TURN-TURN路径提供最高的可靠性,但是最昂贵,因为所有业务将需要流过部署的TURN服务器。在实践环境中,通过TURN服务器将每个媒体流关联起来将是不切实际且非常昂贵的。也就是说,TURN服务器应该被视为受限的网络资源。
此外,本公开认识到,探测每个候选对伴随着带宽利用成本,由于探测消息数量的增加,带宽利用成本取决于在连接性检查中进行了多少次尝试来验证该对而增加。
所描述的实施例的目的是在利用所描述的优化成功建立呼叫方面改善可靠性校验。
图8是功能框图,其中图8中的虚线下方的功能块(组件)表示客户端7(7a和/或7b——在该示例中,每个客户端分别实现所描述的功能)在用户设备6(6a和/或6b)上执行时实现的功能。虚线上方的组件表示控制代码13当在控制服务器12或TURN/STUN服务器14a、14b上执行时实现的“后端”功能。
客户端7a实现路径选择***50,其包括本地候选者收集组件51、候选对生成组件52、静态优先级生成组件53,检查列表生成组件54、本地控制器56、评估组件57和连接性检查组件58。
请注意,图8是高度示意性的。这些框表示客户端7a的某些高级别软件组件。箭头之间的高级别交互并不指示任何特定的物理或逻辑连接安排。
本地控制器56和评估组件57指示根据本主题的某些实施例实现的功能。具体而言,评估组件57确定是否应用一组预先确定的“修改后连接性检查”标准中的一个或多个,其性质在下面详细描述。在这方面,评估组件57分析本地存储的参数60,经由网络2和/或8a和/或8b访问的远程存储的参数61,以及从服务器80接收的电子消息和/或从另一个端点接收到的电子消息62以及来自连接性检查组件58的关于连接性检查在进行时的进展和当前状态的反馈。
本地控制器56从评估组件57接收该分析的结果,并且通过设置存储器20中可供连接性检查组件58访问并且连接性检查组件58用于执行连接性检查的一个或多个重试阈值(探测消息阈值)63,使用所接收的结果来控制以下的操作:(i)本地候选者收集组件51,和/或(ii)检查列表生成组件54,和/或(iii)连接性检查组件58。
例如,每个候选对可以具有在存储器20中实现的相应的相关联的探测消息阈值63,并且可以相应地适配相关联的阈值63中的一个或多个。一旦为给定候选对发送的探测消息的数量达到最大值,就定义它为其阈值(或者如果在连接性检查本身期间阈值减小了,使得到它减少的时间,已经针对该对发送多于减少的最大数量的探测消息),如通过比较发送的消息的数量和对应的阈值来确定的,该候选对从检查列表中被移除,由此防止针对该候选对发送任何更多的探测消息。
如果这些标准中的至少一个被确定为由评估组件57应用,则本地控制器58使得由连接性检查组件58实现的连接性检查相对于已经被执行的连接性检查被修改,考虑到端点可用的候选者,没有任何标准被确定为适用。
也就是说,在一个或多个候选者的相应集合可用于每个端点的情况下,如果没有应用修改的连接标准,则基于这些可用集合以某种方式进行连接性检查。相反,在终端可以使用完全相同的候选者集但至少有一个修改后的连接性检查标准确实适用的情况下,结果连接性检查会以不同的方式进行,例如:
1.候选对较少;
2.某些候选对的重试次数较少;和/或
3.以不同的顺序(具有不同的优先级)。
在1和2的上下文中,修改后的连接性检查标准在本文中被称为“减少连接性检查标准”。
注意,在该上下文中的“可用”候选者不一定意味着收集的候选者——可用候选者可以是端点可用但尚未收集(即端点能够收集)的候选者。
因此,执行连接性检查的方式不仅取决于端点可用的候选者,而且取决于是否确定应用预先确定的减少连接性检查标准中的任何一个。
例如,如果没有标准被确定为应用,则可用候选者集合被配对,并且可以根据ICE协议针对每个可用的可能配对执行连接性检查(即,严格遵守由ICE协议制定的规则)。相反,如果相同的候选者可用,但至少有一个标准确实适用,则可以不检查ICE协议指示应当检查的可用候选者的至少一个配对;和/或候选对的检查顺序可以偏离由ICE协议根据其静态优先级规定的检查顺序。
图9示出了媒体建立过程的流程图。该方法是计算机实现的方法,其在这个示例中由客户端7a、7b中的每个分开实现。
在步骤S2,例如在呼叫方端点6b响应于来自用户的呼叫引发输入,或者在被呼叫方端点6b处,响应于从呼叫方端点6a接收到的呼叫请求消息,引发媒体会话建立过程。
在步骤S4,评估组件57确定是否满足一组一个或多个修改连接性检查标准中的任何一个。例如,该确定可以包括以下中的至少一个:
·确定端点6a、6b中的一个或两个是否位于防火墙或NAT之后。
·确定端点中的至少一个的当前操作配置——例如,虽然在以上示例中,端点是用户设备,在其他场景中,至少一个端点可以是服务器,并且可以在步骤S4确定该操作配置或相关操作信息。在步骤S4可以确定更具体的信息,例如,不仅可以确定端点正在操作服务器,而且可以确定它目前在公共因特网2上可公开访问。
·确定至少一个候选对的历史使用度量。该历史使用度量可以例如相对于该对的类型来定义——例如,历史使用度量可以基于跨相关本地网络5a/5b的该类型的候选对(不必是单独的候选对)的历史使用来定义,例如,(反身,*)候选对的历史使用可能在例如如果NAT 8a是对称的本地网络5a的情况下较低,这可以在步骤S4确定。为此,与本地网络8a/8b有关的历史使用数据可以集中存储在那些网络中或公共因特网2中。
·确定一个或多个当前的网络状况,如可用于端点7a、7b中的一个或两个的当前带宽。可用带宽可能受到限制,特别是在本地网络8a/8b是或包括蜂窝网络的情况下。
如图8中所示,所作出的这些确定中的每一个可以基于以下各项中的相应一项或多项:
1.存储在端点的本地存储器60中的一个或多个本地参数60;
2.保存在远程存储器位置(例如数据库)中的一个或多个远程参数61;
3.从服务器(例如,控制服务器12和/或STUN/TURN服务器14)接收的一个或多个消息;
4.从另一端点接收的一个或多个消息62。
例如,参数60/61可以识别端点是否是公共因特网服务器。作为另一示例,可以使用从STUN/TURN服务器接收的消息来确定端点是否在防火墙或NAT之后,即基于由端点引发的主动检测过程,或者控制服务器12可以将消息推送到端点将相关信息传达给它。
基于这些确定中的一个或多个,确定是否满足修改连接性检查标准中的任何一个,例如:
·关于端点中的至少一个的一个或多个网络拓扑标准,例如:
о至少一个网络拓扑标准,只有当端点中的至少一个位于防火墙或网络地址转换器之后时才得以满足,例如:
■仅当其中一个端点被配置为作为服务器运行并位于防火墙或网络地址转换器之后时(“第一网络拓扑标准”);
■仅当两个端点都位于相应的防火墙或网络地址转换器之后时(“第二网络拓扑标准”);
■第三网络拓扑标准,如果存在比如(直接,TURN)路径和(TURN,直接)路径两者,则第三网络拓扑标准得以满足,其中该接触中的“直接”表示反身或主机;
о第三个第二网络拓扑标准,仅当其中一个端点被配置为作为公共因特网的公共可达服务器进行操作时才得以满足;
о至少一个网络拓扑标准,仅当至少一个候选对是(中继,直接)候选对时才得以满足,其中“直接”表示主机或反身,即针对执行该方法的端点的该对的候选者是中继候选者,并且针对另一个端点的该对的候选者是直接候选者,例如
■仅当存在至少一个(中继,直接)候选对和至少一个(直接,中继)候选对时,即,执行该方法的网络的候选者是直接候选者,并且另一端点的候选者是中继候选者(“第四网络拓扑标准”)。
·关于候选对中的至少一个的至少一个历史网络使用标准,例如:
о仅当历史使用度量低于历史使用阈值时才满足的第一历史网络使用标准(“第一历史网络使用标准”);
·关于端点中的至少一个的联网能力的至少一个网络能力标准,例如,网络偏好标准,例如:
о仅当两个端点都能够根据诸如UDP或TCP之一和/或IPv4和IPv6之一之类的网络协议中的优选网络协议进行操作才满足的第一网络能力标准。
·至少一个网络条件标准,与端点中的至少一个所经历的网络条件有关,例如:
о如果端点中的至少一个通过具有低于带宽阈值的可用带宽的连接而连接到网络则满足第一网络条件标准。也就是说,受限制的带宽标准;
·与连接性检查有关的至少一个连接性检查进展标准,在连接性检查期间由第一端点至少评估一次。在这种情况下,连接性检查可以响应于该标准被满足而在它们被执行时被适配,或者;例如:
о仅当至少一个其他候选对通过连接性检查被确定为有效时才会满足的第一连接性检查进展标准。
请注意,以上是非穷举的示例。此外,如下所述,标准的评估不限于在连接性检查开始之前发生的预评估,例如,连接性检查修改标准只能在连接性检查期间满足,并且连接性检查只能在其后作为响应进行修改。一个示例是,一旦找到有效的候选者,就会减少连接性检查的其余部分执行的程度(见下文)。
在步骤S6,该过程根据在步骤S4是否已经确定满足任何修改连接性检查标准而分支。如果不满足任何修改连接性检查标准,则作为步骤S8a的一部分执行未修改(完整)连接性检查,例如遵守由MS-ICE2中定义的ICE协议规定的所有规则。如果至少一个满足修改连接性检查标准作为步骤S8b的一部分作为替代执行修改的连接性检查(例如,减少的和/或重新排序的连接性检查)。步骤S8a和S8b分别构成未修改的(完整的)和修改的(例如减少的)候选者收集、配对和连接性检查过程。
如处理步骤S4a所示,在执行连接性检查S8a、S8b的同时,即可以重复地(例如,连续地)重新评估修改后的连接性标准。在这方面,除了上面给出的示例之外或作为其替代,修改连接性检查标准可以包括以下中的至少一个:
·一个或多个连接进展标准,例如:
о第一连接进展标准,其仅在至少一个候选对已被连接性检查确定为有效时才被满足。
显而易见,在连接性检查开始之前,该标准不会被满足,但是在连接性检查期间可以满足该标准。请注意,这可能不是唯一重复评估的标准——可替代地或附加地上述标准中的任何一个或多个可以重复地重新评估。例如,带宽可以被重复监测。
在这方面,在步骤S4a,评估组件57在进展时监测S8a或S8b(如适用)的连接性检查,以确定是否以及何时在连接性检查开始时可能尚未满足的一个或多个标准在它们期间得到满足,例如作为连接性检查的结果;例如,可以在步骤S4a确定是否至少一个候选对已经通过连接性检查被确定为有效,和/或是否在上面关于步骤S4列出的、在S8a,S8b的检查开始时未被满足的标准中的任何一个自此已经得以满足。
在最初执行未修改的连接性检查S8a的情况下,当满足至少一个标准时,处理切换到修改后的连接性检查S8b。而且,即使最初执行了修改后的连接性检查S8b,如果在满足哪些标准方面有任何改变(例如满足新的标准),连接性检查可以进一步修改——例如,当候选对被确定为有效时,例如通过减少至少一个剩余候选对的重试阈值(参见下文),可以进一步修改由减少数量的候选对引发的减少的连接性检查。
当停止条件被满足时,例如,当最高优先级候选对已经被验证时或者在超时之后,即在达到预先确定连接性检查持续时间的结束时,未修改或减少的连接性检查S8a、S8b终止。
在步骤S10,使用通过连接性检查确定为有效的候选对来建立媒体会话;即,连接性检查中生成的“有效列表”中的候选对(见下文),可能是也可能不是唯一发现有效的候选对。在连接性检查中只发现一个有效候选对的情况下,该候选者用于建立媒体会话;如果显示有多个候选对,则选择一个并用于建立媒体会话。例如,可以为媒体会话选择有效列表中的最高优先级候选对。
图10是流程图,其为候选者收集、配对和连接性检查过程S8的某些单独步骤的流程图。该流程图适用于未修改和减少的程序S8a,S8b,尽管根据如下所述执行哪一个而不同地执行各个步骤中的一个或多个。
在步骤S52,发起端点6a上的客户端7a(发起客户端)的本地候选者收集组件51与第一TURN服务器14a通信以发现其候选者(本地候选者),即它可能能够用于媒体会话的任何主机、服务器反身和中继候选者。发起客户端然后在会话邀请消息中将这些发送到响应端点6b。作为响应(S54),响应端点6b上的客户端7b(响应客户端)通过与第二TURN服务器14b进行通信来收集其返回给发起端点的候选者(远程候选者)。
在未修改的过程S8a中,两个端点试图收集每个可能的候选者,即它试图收集全部三个本地、反身和中继候选者——后两者消耗带宽,因为它们分别需要用例如STUN和TURN服务器发信令。
在一些情况下,在修改的过程S8b中,基于步骤S4的确定,在步骤S45中相对于未修改的过程S8b减少收集的候选者的数量。例如,反身和/或中继候选者可能不会被端点6a、6b中的一个或两个端点收集,这减少了信令并因此本身节省带宽。此外,这将减少被检查的候选对的数量,产生相对于完整过程S8a在连接性检查中的第二带宽节省。
也就是说,端点中的一个或二者可以减少它们提供的候选者的数量。例如,如果端点6a、6b中的一个被确定为可公开达到的服务器(即,在诸如因特网的网络2上),则它不会收集中继候选者。这将减少客户端需要设置和探测的候选对的数量,从而节省带宽。
在S56,候选对生成组件52分别接收由发起端点和响应端点发现的本地候选者和远程候选者两者,从中产生并输出一组候选对。候选对生成组件53接收所生成的一组候选对以及分配给本地候选者和远程候选者的ICE静态优先级,并基于三个输入生成候选对的静态优先级。两个端点可以并行执行相同的候选对/优先级调整过程,或者一个端点可以执行这些并将结果传送给另一个。
每个候选对可能对应于通过网络的可用路径,如果该候选对结果是有效的话,端点可以使用该路径进行媒体会话。
在步骤S58,检查列表生成组件生成“检查列表”。检查列表是确定执行连接性检查的顺序的候选对的有序列表。
在未修改的过程S8a中,根据ICE协议计算检查列表,即,它是严格按照静态优先级排序的所有可能的候选对的完整列表(即,ICE指示的所有候选对都是可能的)。
在修改的过程S8a中,检查列表可以省略相对于完整集合的至少一个候选对。这可以是在收集步骤S54中排除某些候选者的结果,或者可以在步骤S58明确地从检查列表中排除收集的候选者的一个或多个配对。
作为第一示例,可以“修剪”(即,禁用)路径,即,候选对可以基于拓扑知识从检查列表中被排除,并因此从连接性检查中排除。例如:如果在步骤S4确定对等体是防火墙后面的服务器,则它将不能直接到达,并且可以禁用路径而甚至不用尝试它们。
作为第二示例,TURN候选者提供最大的连接性;如果两个端点都具有TURN-TURN例如UDP候选对,那么所有的TCP候选对可以被禁用。也就是说,如果有收集到的候选者的例如UDP(中继,中继)配对,这将被添加到检查列表中,并且所有TCP候选者配对都将排除在检查列表之外。UDP通常是实时媒体的优选协议;然而,如果TCP是优选的,那么UDP候选对可以在该情况下被类似地禁用。
作为第三示例,取决于是优选IPV4还是IPV6,可以完成禁用非优选版本的候选对。也就是说,所有IPv4或IPv6候选对都可能被排除在检查列表之外,具体取决于哪个是优选的。
可替代地或另外地,不太可能有效的路径可以进一步顺着检查列表向下放(即,去优先化),以便首先检查其他候选对。在这种情况下,检查列表的排序偏离ICE指定的排序。
可替代地或另外地,在减少重试次数之后,在某些情况下不可能工作的路径被禁用,以节约带宽。
例如,如果呼叫方和被呼叫方端点都在NAT后面,则端点不太可能使用他们的主机候选者彼此直接连接。该路径可以在几次重试,即有限次数的重试,即相对于完整过程s8a的较少的重试之后被修剪,即从检查列表中移除。在这方面,在步骤S60,端点设置一个或多个重试阈值,每个重试阈值用于检查列表中的一个或多个候选对;可替代地或另外地,(主机,主机)候选对可以顺着列表向下放,或者可替代地在该事件中从检查列表中全部排除。
注意,如上所述,步骤S60的元素事实上可以在连接性检查(s62)正在进行时执行。例如,一旦通过连接性检查发现有效路径,则可以减少所有候选对的最大重试次数。这允许端点的状态机能够更快地完成并减少带宽。重试的这个阈值被挑选以在可靠性和带宽利用之间进行平衡。
作为另一示例,在步骤S58可以改变检查列表的排序(相对于完整的过程S8a),以便在步骤S58相对于完整的过程S8a优选地探测Direct-TURN路径和/或将TURN-Direct路径放在减少的重试上。
即使两条路径提供相似的质量,探测TURN-Direct路径也比Direct-TURN路径更昂贵。因此,通过支持后者,可以节省带宽,而不会对质量产生任何重大影响。
可替代地或另外地,候选对可以被设置为减少重试和/或顺着检查列表向下放,或者基于历史使用一起排除在检查列表之外,例如,例如在网络8a和/或8b内的该类型的候选对的历史使用低的特定类型的候选对。
可替代地或附加地,候选对可以被设置为减少重试和/或顺着检查列表向下放,或者基于当前可用带宽一起从检查列表中排除,例如其中带宽被限制,即低于带宽阈值。
这些各种技术快速动态修剪不可达路径以减少带宽利用率,同时仍给路径提供合理的成功机会。
在S6s处,客户端7a、7b执行连接性检查。连接性检查是按检查列表中候选对出现的顺序对检查列表中的各个候选对进行的,从列表顶部的对开始。连续性检查一直持续到满足停止标准为止,例如直到一定数量(一个或多个)候选对(例如,最高优先级对)被确定为有效和/或在预先确定量的时间过去之后。对于所谓的“积极提名”,连接性检查在找到第一个有效候选者时结束;然而,“正常提名”允许连接性检查继续尝试查找多于一个的有效候选对(如果需要)。在连接性检查结束时,生成一个或多个确定为有效的候选者的列表(有效列表)。
如所指示的,候选对中的一些(可能多个)可以在连接性检查中失败,例如,包括作为私有传输地址的主机候选者的候选对可能由于所讨论的原因而失败。
注意,上面和下面描述了某些示例性情况,其中某些连接性检查修改标准在满足时会导致以下之一:候选对集合的大小缩小,探测消息阈值(重试阈值)减小,或候选对集合重新排序(以将候选对顺着检查列表向下放)。为了避免疑问,应该注意到:
·对于上文或下文中公开的任何示例,其中对满足该标准的响应是从连接性检查中排除候选对,可替代地或另外地,可以减小用于该候选对的探测消息阈值和/或候选对可以降低排序,即,以便相对于候选对集合中的第一候选对,使得该候选对的连接性检查较迟被执行;
·对于上文或下文中公开的任何示例,其中对满足该标准的响应是减小该候选对的探测消息阈值,可替代地或另外地,该候选对可以被降低排序;或者可替代地,该候选对可以完全从连接性检查中排除;
对于上文或下文中公开的任何示例,其中对满足标准的响应是减小将该候选对降低排序,可替代地或另外地,用于该候选对的探测消息阈值可以降低排序;或者可替代地,该候选对可以完全从连接性检查中排除。
这里,使用术语“第一端点”和“第二端点”,其中任一个可以是发起端点或响应端点。也就是说,本公开的技术可以在发起端点、响应端点或两者处实现。在本公开的上下文中,候选对的“第一”候选网络地址是可供执行该方法的端点(第一端点)使用的网络地址,而“第二”候选网络地址是可供第二端点使用的网络地址。
在各种实施例中,候选者集合可在两个端点6a、6b处减小,这使得候选对的总数进一步减少(相对于在仅一个端点处的候选者减少)。此外,其他方法可以用于候选者减少,例如,基于第一端点选择并传送给第二端点的候选者集合,第二端点可以使用该信息来进一步减小其自己的候选者集合,例如,如果第一端点仅提供TCP候选者(或UDP)候选,则第二端点可修剪其候选UDP候选者(或TCP)候选者。第二端点可以基于第一端点提供的候选者集合来调整其超时值。再次,如果仅提供了TCP候选者,则第二端点可以增加超时值以确保其可以获得TCP中继候选并且具有至少一个成功的路径。
在这方面,端点可以以本文称为“减少连接性检查”消息(或更一般地“修改连接性检查”消息)的形式交换信息,将对连接性检查的任何修改通知彼此。这些消息可以采用任何适当的格式。
请注意,对“较高”和“较低”优先级的引用不一定是指这些优先级的任何特定的数字(或任何其他)表示。相反,优先级方案的“较高优先级”意味着分配给该方案所喜欢的路径而不是指定为“较低优先级”的另一路径,而不管这些优先级被表示的方式(任何期望的表示可以使用,只要它传达必要的信息,例如作为一个简单的示例,较低的数值可以用来表示较高的优先级)。类似地,减小阈值(例如,探测消息阈值)或类似物的引用表示减少由该阈值定义的量(例如,探测消息的最大数量),而不管该阈值在存储器中如何表示。
尽管在上面,根据等式1和2计算常规ICE候选对优先级,然后基于选择数据修改以产生新的优先级,可替代地可以在计算候选对(按照等式2,但是应用于修改后的地址优先级)之前修改各个地址优先级(根据等式1计算),或者可以以其他方式计算类似的优先级,例如通过取决于选择数据在等式1或2中的一者或两者中有效地包括修改项。
这里注意,“私有”网络是指位于NAT后面的任何网络。虽然这包括诸如家庭或商业网络(未示出)之类的网络,但是它也包括由例如互联网服务提供商(ISP)运营的伪公共网络,具有潜在大量用户(后者在一些国家比其他国家更常见)。
虽然以上参照因特网协议组进行了描述,但是本文中呈现的相关教导还适用于例如具有不同的分层体系结构的网络。此外,虽然以上是关于TCP/UDP和IP描述的,但是应该意识到,该描述适用于可用于生成不同类型的网络层和/或传输层分组的其他类型的传输层和/或网络层协议。
一般来说,可使用软件、固件、硬件(例如,固定逻辑电路)或这些实施方式的组合来实施本文中所描述的功能中的任一者。这里使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件或其组合。在软件实现方式的情况下,模块、功能或逻辑表示在处理器(例如,一个CPU或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储设备中。下面描述的技术的特征是独立于平台的,这意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。
例如,用户设备(用户终端)也可以包括使得用户终端的硬件执行操作的实体(例如软件),例如,处理器功能块等。例如,用户终端可以包括计算机可读介质,该计算机可读介质可以被配置为维护使得用户终端,并且更具体地使用户终端的操作***和相关硬件执行操作的指令。因此,这些指令用于配置操作***和相关硬件以执行操作,并且以这种方式使得操作***和相关硬件变换执行功能。指令可以由计算机可读介质通过各种不同的配置提供给用户终端。
计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为将指令(例如作为载波)诸如经由网络传输到计算设备。计算机可读介质还可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及其他存储器设备,这些存储设备可以使用磁性、光学和其他技术来存储指令和其他数据。
本主题的第一方面涉及一种基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在第一端点的计算机上执行以下步骤:通过至少第一端点确定是否一组一个或多个减少连接性检查标准中的至少一个被满足;如果由所述第一端点确定没有满足任何所述减少连接性检查标准:则通过在第一端点和第二端点之间交换候选网络地址,执行完整候选者配对过程以在所述第一端点处为连接性检查生成完整候选对集合,每个候选对包括可用于第一端点的第一候选网络地址和可用于所述第二端点的第二候选网络地址;如果由所述第一端点确定所述减少连接性检查标准中的至少一个被满足:执行减少候选者配对过程以在所述第一端点处为连接性检查生成比所述完整候选对集合少的减少候选对集合;以及使用所生成的候选对集合中的、通过端点对于所生成的候选对集合的至少一个候选对执行用于确定候选对是否有效的连接性检查而被确定为有效的候选对来建立媒体会话,从而如果确定减少连接性检查标准中的至少一个被满足,则不对在全部候选对集合中的、没有也在减少候选对集合中的任何候选对执行连接性检查。
根据第一方面,在某些情况下,仅对“减少”候选对集合执行连接性检查。用探测消息检查候选对使用带宽,因此通过减少候选对的数量,可以节省带宽。
在实施例中,完整候选者配对过程可以根据ICE协议来执行。在这种情况下,应按照ICE协议(即,严格遵循由其规定的规则)应该包括在候选对集合中并因此进行连接性检查的至少一个候选对被排除,从而不对该对执行连接性检查。
减少连接性检查标准中的每个可以是:
·关于端点中的至少一个的网络拓扑标准,或者
·关于候选对中的至少一个的历史网络使用标准,或者
·关于端点中的至少一个的联网能力的网络能力标准,或者
·关于端点中的至少一个所经历的联网条件的网络条件标准。
标准中的至少一个可以是仅当端点中的至少一个位于防火墙或网络地址转换器之后时才满足的网络拓扑标准。
标准中的一个可以是第一网络拓扑标准,其仅在第一端点被配置为作为服务器操作并且位于防火墙或网络地址转换器后面时才被满足。
如果确定第一网络拓扑标准被满足,则可以从减少集合中排除完整候选对集合中的、其第一候选网络地址是第一端点的主机候选网络地址的至少一个候选对,由此不对该候选对执行连接性检查。
标准中的一个可以是第二网络拓扑标准,其仅在端点中的二者位于相应的防火墙或网络地址转换器后面时才被满足。
如果确定第二网络拓扑标准被满足,则完整候选对集合中的、其第一或第二候选网络地址分别是第一端点的主机候选网络地址或第二端点的主机候选网络地址的至少一个候选对可以从减少集合中排除,由此在该事件中不对该候选对执行连接性检查。
标准中的一个可以是第三网络拓扑标准,其仅在第一端点被配置为作为公共因特网的公共可达服务器进行操作时才被满足。
如果确定第三网络拓扑标准被满足,则完整集合中的、其第一候选网络地址是对第一端点可用的中继候选网络地址的至少一个候选对可以从减少集合中排除,由此在该事件中不对该候选对执行连接性检查。
标准中的一个可以是第一历史网络使用标准,其仅在针对候选对中的至少一个确定的历史使用度量低于历史使用阈值时才被满足,其中如果满足第一历史使用标准,该候选对从减少候选对集合中排除,由此在该事件中不对该候选对执行连接性检查。
每个候选对可以另外指示多个网络协议中的相应一个;标准中的至少一个可以是仅当端点中的二者都能够根据网络协议中的优选网络协议进行操作时才满足的第一网络能力标准。
如果确定满足第一网络能力标准,则可以从减少集合中排除完整集合中的、不指示优选网络协议的至少一个候选对,由此在该事件中不对该候选对进行连接性检查。
如果候选对中的一个指示优选协议并且该候选对的第一和第二网络地址二者都是中继候选网络地址,则可以满足第一网络能力标准。
如果确定第一网络能力标准被满足,那么完整集合中的、不指示优选协议的所有候选对可以从减少集合中排除,由此在该事件中不对这些候选对执行连接性检查。
多个网络协议可以包括UDP和TCP,其中优选的网络协议可以是UDP或TCP中的一个,其中如果第一网络能力标准被确定为满足,则从减少候选对集合中排除指示UDP或TCP中的另一个的至少一个候选对,由此在该事件中不对该候选对执行连接性检查。
多个网络协议可以包括IPv4和IPv6,其中优选的网络协议可以是IPv4或IPv6中的一个,其中如果第一网络能力标准被确定为满足,则可以从减少候选对集合中排除指示IPv4或IPv6中的另一个的至少一个候选对,由此在该事件中不对该候选对执行连接性检查。
标准中的一个可以是在端点中的至少一个通过具有低于带宽阈值的可用带宽的连接而连接到网络的情况下得以满足的第一网络条件标准。
如果确定减少连接性检查标准中的至少一个确实应用,则作为响应,第一端点可以向第二端点发送减少连接性检查消息。
减少连接性连接消息可以使第二端点在所述交换中向第一端点发送减少数量的候选网络消息。
对于一个或多个标准中的每个,确定步骤可以包括:
·由第一端点引发检测过程以便检测是否满足该标准;和/或
·由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,这些参数指示是否满足该标准;和/或
·由第一端点接收一个或多个电子信息,电子信息指示是否满足该标准。
一个或多个电子消息可以包括从第二端点向第一端点发送的减少连接性检查消息,由此可以至少部分地基于由减少连接性检查消息中的第二端点提供的信息来做出所述确定。
每个候选对可以另外指示多个网络协议中的相应一个;其中所述减少连接性检查消息可以指示所述网络协议中优选的一个,响应于此,可以由所述第一端点从所述减少集合中排除不指示所述优选协议的至少一个候选对,由此在该事件中不对该候选对执行连接性检查。
完整候选者配对过程和减少候选者配对过程可以分别包括由第一端点执行的完整候选者收集过程和减少候选者收集过程;
完整候选者收集过程可以包括由第一端点确定可用于第一端点的完整候选网络地址集合,其中完整候选者集合可以被第一端点使用以生成完整候选对集合并且在所述交换中从第一端点发送到第二端点。
减少候选者收集过程可包括由第一端点确定与完整候选者集合相比可用于第一端点的较少候选网络地址的减少候选者集合,其中减少候选者集合可由第一端点用于生成减少候选对集合并且在所述交换中从第一端点发送到第二端点,由此在减少候选者配对过程中从第一端点向第二端点发送与在完整候选者配对过程中相比较少的网络地址。
例如,减少候选对集合中的每个候选对的第一候选网络地址可以是减少候选者集合的候选网络地址中的一个。
完整候选者收集过程可以根据ICE协议来执行,即如ICE协议规则所规定的那样。在这种情况下,减少候选者收集过程省略了根据ICE协议应该被包括的至少一个候选者。
完整候选者收集过程可以包括确定中继候选网络地址和反身候选网络地址二者,并且减少候选者收集过程可以包括确定中继候选网络地址或服务器反身候选网络地址,但不是两者。
可以根据STUN协议确定反身候选网络地址,并且可以根据TURN协议确定中继候选网络地址。
网络可以是公共因特网。
本主题的第二方面涉及基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括:在第一端点的计算机上实现以下步骤:通过至少第一端点确定是否一组一个或多个减少连接性检查标准中的至少一个被满足;通过在第一端点和第二端点之间交换网络地址,在所述第一端点处为连接性检查生成候选对集合,每个候选对包括所述第一端点可用的第一网络地址和所述第二端点可用的第二网络地址;基于所述确定步骤,由所述第一端点设置用于所述候选对中的至少一个候选对的探测阈值,如果确定所述减少连接性检查标准中的至少一个被满足,则相比于确定没有减少连接性检查标准被满足,所述探测消息阈值较低;以及使用所生成的集合中的、通过端点基于探测阈值对至少一个候选对执行连接性检查而确定为有效的候选对来建立媒体会话,连接性检查是通过第一端点从该对的第一网络地址向该对的第二网络地址发送多个探测消息,其中,探测消息的数量受探测阈值限制。
在实施例中,减少连接性检查标准中的每个可以是:
·关于端点中的至少一个的网络拓扑标准,或者
·关于所述候选对中的至少一个的历史网络使用标准,或者
·关于所述端点中的至少一个的联网能力的网络能力标准,或者
·关于端点中的至少一个所经历的联网条件的网络条件标准,或者
·关于连接性检查的连接性检查进展标准,在连接性检查期间由第一端点至少对其评估一次,由此如果在连接性检查期间该标准得以满足,则在连接性检查期间减小所述至少一个候选对的探测消息阈值。
标准中的一个可以是第一连接性检查进展标准,其仅在通过连接性检查候选对集合中的至少一个其他候选对被确定为有效时才被满足。
当候选对集合中的任何单个候选对通过连接性检查被确定为有效时,可以满足第一连接性检查进展标准。
响应于第一连接性检查标准被满足,可以减小用于候选对集合中的每个剩余候选对的探测消息阈值。
标准中的至少一个可以是仅当端点中的至少一个位于防火墙或网络地址转换器之后时才满足的网络拓扑标准。
如果确定至少一个网络拓扑标准被满足,则用于包括网络地址转换器或防火墙后面的端点的主机网络地址的至少一个候选对的探测阈值可以被设置为与未确定满足网络拓扑标准的情况相比较低。
标准中的一个可以是仅当端点中的二者均位于相应的防火墙或网络地址转换器之后时才满足的第二网络拓扑标准。
如果第二网络拓扑标准被确定为满足,用于候选对集合中的、其第一和第二网络地址分别是第一和第二端点的主机网络地址的至少一个候选对的探测消息阈值可以被设置为与第二网络拓扑标准未被确定为满足的情况相比较低。
标准中的一个可以是仅在第一端点被配置为作为服务器操作并且位于防火墙或网络地址转换器之后时才被满足的第一网络拓扑标准。
标准中的一个是在以下情况下满足的第三网络拓扑标准:
·所述集合中的至少第一候选对包括:(i)作为所述第一端点的主机或反身候选网络地址的第一网络地址,以及(ii)作为所述第二端点的中继候选网络地址的第二网络地址,以及
·所述集合中的至少第二候选对包括:(i)作为所述第一端点的中继候选网络地址的第一网络地址,以及(ii)作为所述第二端点的主机或反身候选网络地址的第二网络地址;
如果第三网络拓扑标准被确定为满足,则第二候选对的探测消息阈值可以被设置为相比于第三网络拓扑标准未被确定为满足的情况较低。
标准中的一个可以是如果端点中的至少一个通过具有低于带宽阈值的可用带宽的连接而连接到网络则满足的第一网络条件标准,其中如果第一网络条件标准被确定为满足,则用于至少一个候选对的探测消息阈值可以被设置为相比于第一网络条件标准未被确定为满足的情况较低。
第一端点可以确定在连接性检查期间网络连接性检查进展标准已经被满足,并且作为响应,可以在已经针对该候选对发送了多于由减少后的阈值定义的减少后的探测消息最大数量之后的时间减少用于该候选对的探测消息阈值,由此防止针对该候选对再发送更多的探测消息。
对于一个或多个标准中的每个,确定步骤可以包括:
·由第一端点引发检测过程以便检测是否满足该标准;和/或
·由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,参数指示是否满足该标准;和/或
·由第一端点接收一个或多个电子信息,电子信息指示是否满足该标准。
每个候选对可以另外指示多个网络协议中的相应一个;标准中的至少一个可以是仅当端点中的二者都能够根据网络协议中的优选网络协议进行操作才满足的第一网络能力标准,其中如果第一网络能力标准被确定为满足,用于完整集合中的、不指示优选网络协议的至少一个候选对的探测消息阈值可以被设置为与第一网络能力标准未被确定为满足的情况相比较低。
如果候选对中的一个指示优选协议并且该候选对的第一和第二网络地址都是中继候选网络地址,则可以满足第一网络能力标准。
如果第一网络能力标准被确定为满足,则用于集合中的、不指示优选协议的所有候选对的相应重试阈值可以被设置为相比于第一网络能力标准未被确定为满足的情况较低。
本主题的第三方面涉及一种基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在所述第一端点的计算机上执行以下步骤:至少通过第一端点确定是否一组一个或多个连接性检查修改标准中的任何一个被满足;通过在第一端点和第二端点之间交换网络地址,在所述第一端点处生成候选对集合用于连接性检查,每个候选对包括所述第一端点可用的第一网络地址和所述第二端点可用的第二网络地址;通过第一端点向候选对集合中的每个候选对分配相应的优先级,其中:如果第一端点确定连接性检查修改标准中的任何一个都不被满足,则由第一端点根据如标准化联网协议所规定的标准化联网协议来分配优先级,并且如果第一端点确定连接性检查修改标准中任何一个被满足,则由第一端点分配的优先级中的至少一个与标准化联网协议所规定的优先级不同;以及使用生成的集合中的、通过端点对于所生成的集合中的至少两个候选对依次按它们的确定的优先级的顺序执行连接性检查而被确定为有效的候选对来建立媒体会话。
根据第二方面,在某些情况下,相对于由标准化联网协议(例如但不限于ICE协议)规定的顺序,在某些情况下有意改变进行连接性检查的顺序,以适应那些特定的情况。这允许更可能有效的和/或更有可能被使用的候选对,即在该情况下更可行的候选对,比那些不太可能有效和/或被使用的候选对(即,在该情况下不太可行的候选对)较早被检查,即使可行性较低的候选对按照标准化协议所制订的严格规则被指定为比前者候选对优先的候选对。以这种方式(以偏离协议的方式)优先化更可行的候选对,在连接性检查期间更高效地使用带宽,因为它降低了对不太可行的候选者进行连接性检查的可能性,因此降低了检查不太可行的候选者浪费带宽的可能性。
在实施例中,所述一个或多个连接性检查修改标准中的每个是:仅在端点中的至少一个位于防火墙或网络地址转换器后面时才被满足的网络拓扑标准,关于候选对中的至少一个的历史网络使用标准,或者关于端点中的至少一个的联网能力的网络能力标准。
标准化联网协议可以是ICE协议。
标准中的至少一个可以是仅当端点中的至少一个位于防火墙或网络地址转换器后面时才满足的网络拓扑标准。
标准中的一个可以是仅当第一端点被配置为作为服务器运行并且位于防火墙或网络地址转换器后面时才满足的第一网络拓扑标准。
如果确定第一网络拓扑标准被满足,则完整候选对集合中的、其第一候选网络地址是第一端点的主机候选网络地址的至少一个候选对可以被分配与标准化协议所规定的优先级相比较低的优先级。
标准中的一个可以是仅当端点中的二者都位于相应的防火墙或网络地址转换器后面时才满足的第二网络拓扑标准。
如果确定第二网络拓扑标准被满足,则完整候选对集合中的、其第一或第二候选网络地址分别是第一端点的主机候选网络地址或第二端点的主机候选网络地址的至少一个候选对可以被分配比标准化协议所规定的优先级较低的优先级。
标准中的一个可以是第三网络拓扑标准,其仅在第一端点被配置为作为公共因特网的公共可达服务器进行操作时才被满足。
如果确定第三网络拓扑标准被满足,则完整集合中的、其第一候选网络地址是对第一端点可用的中继候选网络地址的至少一个候选对可以被分配比由标准化协议所规定的优先级较低的优先级。
标准中的一个可以是第一历史网络使用标准,其仅在针对候选对中的至少一个确定的历史使用度量低于历史使用阈值时才被满足,其中,如果第一历史使用标准被确定为满足,该候选对可被分配相比于标准化协议规定的优先级较低的优先级。
每个候选对可以另外指示多个网络协议中的相应一个协议;其中所述标准中的至少一个标准可以是仅当所述端点中的二者都能够根据所述网络协议中的优选网络协议进行操作时才满足的第一网络能力标准。
如果第一网络能力标准被确定为满足,则集合中的、不指示优选网络协议的第二候选对可以被分配比集合中的、包括与第二候选对相同的第一和第二网络地址、但不指示优选协议的第一候选对低的优先级。
如果候选对中的一个指示优选协议并且该候选对的第一和第二网络地址二者都是中继候选网络地址,则可以满足第一网络能力标准。
如果第一网络能力标准被确定为满足,则该集合中的、不指示优选协议的每个候选对可以被分配比该集合中的、指示优选协议的任何候选对低的优先级,由此仅当已对于指示优选协议的每个候选对执行连接性检查时,对不指示优选协议的候选对执行连接性检查。
多个网络协议可以包括UDP和TCP,其中优选的网络协议可以是UDP或TCP中的一个,其中在第一网络能力标准的情况下,指示UDP或TCP中的另一个的至少一个候选对可以被分配比标准化协议规定的优先级较低的优先级。
多个网络协议可以包括IPv4和IPv6,其中优选的网络协议可以是IPv4或IPv6中的一个,其中,如果第一网络能力标准被确定为满足,指示IPv4或IPv6中的另一个的至少一个候选对可以被分配比由标准化协议规定的优先级较低的优先级。
对于一个或多个标准中的每个,确定步骤可以包括:
·由第一端点引发检测过程以便检测是否满足该标准;和/或
·由第一端点访问至少一个存储器位置以便访问一个或多个存储的参数,该参数指示是否满足该标准;和/或
·由第一端点接收一个或多个电子信息,电子信息指示是否满足该标准。
根据本主题的第四方面,用于经由通信网络在发起端点与响应端点之间实现媒体会话的计算机实现的方法包括在发起端点和响应端点中的至少一个的计算机处实现以下步骤:通过在发起端点和响应端点之间交换网络地址,在端点处生成候选对集合,每个候选对包括发起端点可用的相应网络地址以及响应端点可用的相应网络地址,所述媒体会话通过应用以下步骤使用所述集合中的、被确定为有效的候选对来建立:由第一端点确定是否一组一个或多个连接性检查修改标准中的任何一个被满足;接收与每个网络地址相关联的相应类型度量,并且相应类型度量指示假设该网络地址用于媒体会话将被穿透的通过网络的路径的直接性;并且所述端点对从所述集合中选择的至少一个候选对执行连接性检查以确定所述候选对是否有效,其中,基于所述类型度量和所述确定来选择所述至少一个候选对。
在实施例中,所述一个或多个连接性检查修改标准中的每个可以是:仅在端点中的至少一个位于防火墙或网络地址转换器后面时才被满足的网络拓扑标准,关于候选对中的至少一个的历史网络使用标准,或者关于端点中的至少一个的联网能力的网络能力标准。
根据本主题的第五方面,基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法包括在所述第一端点的计算机上实现以下步骤:由所述第一端点确定是否一组一个或多个连接性检查修改标准中的任何一个被满足;通过在第一端点和第二端点之间交换网络地址,在所述第一端点处生成用于连接性检查的候选对集合,每个候选对包括所述第一端点可用的第一网络地址和所述第二端点可用的第二网络地址;在所述第一端点处确定所述候选对集合的排序,其中:如果所述第一端点确定任何一个所述连接性检查修改标准均不满足,则所述排序由所述第一端点根据由标准化联网协议所规定的标准化联网协议来确定,并且如果所述第一端点确定所述连接性检查修改标准中的任何一个被满足,则由所述第一端点确定的顺序不同于由所述标准化联网协议规定的顺序;以及使用所生成的集合中的、通过端点按确定的顺序对生成的集合中的至少两个候选对进行连接性检查而确定为有效的候选对来建立媒体会话,针对所述至少两个候选对的连接性检查根据确定的顺序依次执行。
本主题的第六方面涉及用于基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的第一端点的计算机,该计算机包括:存储器,其保存可执行代码;连接到所述存储器的处理器,其中所述代码被配置成在所述处理器上执行时实现本文公开的方法中的任何一个。
本主题的第七方面涉及一种包括存储在计算机可读存储介质上的可执行代码的计算机程序产品,所述代码用于基于端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话并且被配置成在第一端点的计算机上执行时实现本文公开的方法中的任何一个。
为了绝对避免疑问,再次重申,上述主题的任何方面的任何实施例可以在任何一个或多个其他方面的实施例中加以必要的修改而实现。因此,例如:
·关于包括排除候选对的第一方面描述的任何实施例可以在第二方面的实施例中通过降低该对的探测消息阈值来实现,或者在第三方面的实施例中通过对该对进行去优先化来实现;
·同样地,关于包括减小候选对的探测消息阈值的第二方面描述的任何实施例可以通过完全排除该候选对而在第一方面的实施例中实现,或者通过对该对进行去优先化而在第三方面的实施例中实现;
·同样地,关于包括对候选对进行去优先化的第三方面所描述的任何实施例可以通过完全排除该候选对而在第一方面的实施例中实现,或者通过降低该对的探测消息阈值而在第二实施例中实现。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述特定特征或动作。相反,上述具体特征和行为是作为实现权利要求的示例形式公开的。
Claims (15)
1.一种基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话的计算机实现的方法,所述方法包括在所述第一端点的计算机上实现以下步骤:
至少由所述第一端点确定是否关于所述第一端点和所述第二端点中的至少一个所经历的网络条件的网络条件标准通过具有低于带宽阈值的可用带宽的连接而被满足;
通过在所述第一端点和所述第二端点之间交换网络地址,在所述第一端点处生成用于连接性检查的候选对集合,每个候选对包括所述第一端点可用的第一网络地址和所述第二端点可用的第二网络地址;
基于所述确定步骤,由所述第一端点设置用于所述候选对中的至少一个候选对的探测消息阈值,与确定不满足任何减少连接性检查标准的情况相比,如果确定所述减少连接性检查标准中的至少一个被满足,则所述探测消息阈值较低;以及
使用所生成的集合中的、通过所述第一端点对所述至少一个候选对执行连接性检查而确定为有效的候选对来建立所述媒体会话,连接性检查是通过所述第一端点从每个对的所述第一网络地址向每个对的所述第二网络地址发送多个探测消息,其中,针对所述至少一个候选对发送的探测消息的数量受所述探测消息阈值限制。
2.根据权利要求1所述的方法,其中,所述减少连接性检查标准中的每个是:
关于所述端点中的至少一个的网络拓扑标准,或者
关于所述候选对中的至少一个的历史网络使用标准,或者
关于所述端点中的至少一个的联网能力的网络能力标准,或者
关于所述连接性检查的连接性检查进展标准,在所述连接性检查期间由所述第一端点至少对其评估一次,由此如果在所述连接性检查期间该标准得以满足,则在连接性检查期间减小用于所述至少一个候选对的探测消息阈值。
3.根据权利要求2所述的方法,其中,所述连接性检查进展标准是这样的标准:其仅当所述连接性检查已经确定所述候选对集合中的至少一个其他候选对是有效的时才得以满足。
4.根据权利要求3所述的方法,其中,所述连接性检查进展标准当所述连接性检查确定所述候选对集合中的任何单个候选对是有效的时得以满足。
5.根据权利要求3或4所述的方法,其中,响应于所述连接性检查标准得以满足,用于所述候选对集合中的每个剩余候选对的所述探测消息阈值被减小。
6.根据权利要求2所述的方法,其中,所述网络拓扑标准是这样的第一网络拓扑标准:其仅当所述第一端点位于防火墙或网络地址转换器之后时才得以满足。
7.根据权利要求6所述的方法,其中,如果所述第一网络拓扑标准被确定为满足,则用于包括位于网络地址转换器或防火墙之后的所述端点的主机网络地址的至少一个候选对的所述探测消息阈值被设置为与未确定为满足所述网络拓扑标准的情况相比较低。
8.根据权利要求6或7所述的方法,其中,所述网络拓扑标准是这样的第二网络拓扑标准:其仅当所述第一端点和所述第二端点中的二者位于相应的防火墙或网络地址转换器之后时才得以满足。
9.根据权利要求8所述的方法,其中,用于所述候选对集合中的、其第一网络地址和第二网络地址分别是第一端点和第二端点的主机网络地址的至少一个候选对的所述探测消息阈值被设置为与所述第二网络拓扑标准被确定为满足的情况相比较低。
10.根据权利要求6所述的方法,其中,所述第一网络拓扑标准仅当所述第一端点被配置为作为服务器进行操作并且位于防火墙或网络地址转换器之后时才得以满足。
11.根据权利要求2所述的方法,其中,所述网络拓扑标准是这样的第三网络拓扑标准:其以下条件下得以满足:
所述集合中的至少第一候选对包括:(i)作为所述第一端点的主机候选网络地址或反身候选网络地址的第一网络地址,以及(ii)作为所述第二端点的中继候选网络地址的第二网络地址,以及
所述集合中的至少第二候选对包括:(i)作为所述第一端点的中继候选网络地址的第一网络地址,以及(ii)作为所述第二端点的主机候选网络地址或反身候选网络地址的第二网络地址;
其中,相比于所述第三网络拓扑标准被确定为不满足的情况,如果所述第三网络拓扑标准被确定为满足,用于所述第二候选对的所述探测消息阈值被设置为较低。
12.根据权利要求2所述的方法,其中,所述第一端点确定在连接性检查期间网络连接性检查进展标准已得以满足,并且作为响应在一时间处针对该候选对减小所述探测消息阈值,所述时间在已经针对该候选对发送多于由减小后的阈值所定义的、减少的最大数量的探测消息之后,由此防止针对该候选对再发送更多的探测消息。
13.根据权利要求1所述的方法,其中,所述确定步骤包括:
由所述第一端点引发检测过程以便于检测是否满足所述网络条件标准;和/或
由所述第一端点访问至少一个存储器位置,以便访问一个或多个存储的参数,所述参数指示是否满足所述网络条件标准;和/或
由所述第一端点接收一个或多个电子消息,所述电子消息指示是否满足所述网络条件标准。
14.一种用于基于由端点执行的连接性检查经由通信网络在第一端点与第二端点之间建立媒体会话的第一端点的计算机,所述计算机包括:
存储器,其保存可执行代码;
连接到所述存储器的处理器,其中,所述代码在所述处理器上执行时被配置为实施前述权利要求中的任一项所述的方法。
15.一种存储可执行代码的计算机可读存储介质,所述代码用于基于由端点执行的连接性检查经由通信网络在第一端点和第二端点之间建立媒体会话,并且所述代码被配置为在所述第一端点的计算机上执行时实现权利要求1-13中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/945,302 | 2015-11-18 | ||
US14/945,302 US10079863B2 (en) | 2015-11-18 | 2015-11-18 | Media session between network endpoints |
PCT/US2016/061774 WO2017087302A1 (en) | 2015-11-18 | 2016-11-14 | Media session between network endpoints |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108702394A CN108702394A (zh) | 2018-10-23 |
CN108702394B true CN108702394B (zh) | 2021-12-21 |
Family
ID=57406366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680067746.1A Active CN108702394B (zh) | 2015-11-18 | 2016-11-14 | 网络端点间的媒体会话 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10079863B2 (zh) |
EP (1) | EP3363185A1 (zh) |
CN (1) | CN108702394B (zh) |
WO (1) | WO2017087302A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171511B2 (en) | 2014-09-25 | 2019-01-01 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10244003B2 (en) | 2014-09-25 | 2019-03-26 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10158679B2 (en) | 2015-11-18 | 2018-12-18 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10079863B2 (en) | 2015-11-18 | 2018-09-18 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US11323376B2 (en) * | 2016-05-25 | 2022-05-03 | Avaya Inc. | Bandwidth control in a network address translation (NAT) environment |
US10200110B2 (en) * | 2016-06-30 | 2019-02-05 | Ge Aviation Systems Llc | Aviation protocol conversion |
US10397271B2 (en) | 2017-07-11 | 2019-08-27 | Cisco Technology, Inc. | Distributed denial of service mitigation for web conferencing |
EP3588892B1 (en) | 2018-06-27 | 2021-11-03 | Unify Patente GmbH & Co. KG | Method and system for selecting a communication connection candidate for transmission of a media stream |
US11272423B2 (en) * | 2020-04-29 | 2022-03-08 | Microsoft Technology Licensing, Llc | Live video analytics over high frequency wireless networks |
US11456941B2 (en) * | 2020-07-24 | 2022-09-27 | Nvidia Corporation | Extensible network traffic engineering platform for increasing network resiliency in cloud applications |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2591183A1 (en) * | 2007-06-08 | 2008-12-08 | Avaya Canada Corp. | Determining connectivity between endpoints in a network |
CN102273142A (zh) * | 2009-01-13 | 2011-12-07 | 微软公司 | 对于使用stun创建的会话的策略服务***体系结构 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115580A (en) | 1998-09-08 | 2000-09-05 | Motorola, Inc. | Communications network having adaptive network link optimization using wireless terrain awareness and method for use therein |
US8363744B2 (en) | 2001-06-10 | 2013-01-29 | Aloft Media, Llc | Method and system for robust, secure, and high-efficiency voice and packet transmission over ad-hoc, mesh, and MIMO communication networks |
US8060626B2 (en) | 2008-09-22 | 2011-11-15 | Sony Computer Entertainment America Llc. | Method for host selection based on discovered NAT type |
US7020087B2 (en) | 2003-01-13 | 2006-03-28 | Motorola, Inc. | Segmented and distributed path optimization in a communication network |
US7616584B2 (en) | 2004-11-12 | 2009-11-10 | Cisco Technology, Inc. | Minimizing single points of failure in paths with mixed protection schemes |
US20070002740A1 (en) | 2005-06-30 | 2007-01-04 | Scott Evans | Biasing of network node prioritization to improve per-hop behavior based on performance necessary for a packet to meet end-to-end QoS goals |
US8432896B2 (en) | 2005-07-22 | 2013-04-30 | Cisco Technology, Inc. | System and method for optimizing communications between session border controllers and endpoints in a network environment |
US7912040B2 (en) | 2006-02-27 | 2011-03-22 | At&T Intellectual Property I, Lp | Systems and methods for dynamically allocating bandwidth of a subscriber line that carries voice over Internet Protocol (VoIP) telephone calls and Internet Protocol Telephone (IPTV) transmissions |
CN101119299A (zh) | 2006-08-02 | 2008-02-06 | 华为技术有限公司 | 导通媒体流的方法、导通检测方法及其*** |
US8601155B2 (en) | 2006-08-16 | 2013-12-03 | Oracle America, Inc. | Telemetry stream performance analysis and optimization |
US9374263B2 (en) | 2006-09-29 | 2016-06-21 | Avaya Ecs Ltd. | Latency differential mitigation for real time data streams |
CN101257433B (zh) | 2007-03-01 | 2011-09-14 | 华为技术有限公司 | 实现网络地址转换穿越的方法和*** |
EP1973305A1 (en) | 2007-03-22 | 2008-09-24 | Siemens Enterprise Communications GmbH & Co. KG | Method, terminal and media-relay for establishing a multimedia connection |
US8289845B1 (en) | 2007-05-15 | 2012-10-16 | Avaya Inc. | Assured path optimization |
US20080304419A1 (en) | 2007-06-08 | 2008-12-11 | Eric Cooper | Determining connectivity between endpoints in a network |
EP2003858A1 (en) | 2007-06-14 | 2008-12-17 | Nokia Siemens Networks Oy | Performing interactive connectivity checks in a mobility environment |
US7788383B2 (en) | 2007-10-30 | 2010-08-31 | Cisco Technology, Inc. | Communicating a selection of a potential configuration |
TW200924439A (en) | 2007-11-23 | 2009-06-01 | D Link Corp | Portable ICE relay server and its method thereof |
GB0802371D0 (en) | 2008-02-09 | 2008-03-12 | Nortel Networks Ltd | PLSB-VPLS interworking |
US20090245234A1 (en) | 2008-03-31 | 2009-10-01 | Microsoft Corporation | Dynamic rerouting of voip sessions |
US8125907B2 (en) | 2008-06-12 | 2012-02-28 | Talari Networks Incorporated | Flow-based adaptive private network with multiple WAN-paths |
US7953010B2 (en) | 2008-07-30 | 2011-05-31 | Avaya Inc. | System and method of controlling in-bound path selection based on historical and continuous path quality monitoring, assessment and predictions |
US8385326B2 (en) | 2008-12-29 | 2013-02-26 | Microsoft Corporation | Handling early media in VoIP communication with multiple endpoints |
US7941551B2 (en) | 2009-02-25 | 2011-05-10 | Microsoft Corporation | Tunneling of remote desktop sessions through firewalls |
US8185660B2 (en) | 2009-05-12 | 2012-05-22 | Cisco Technology, Inc. | Inter-working between network address type (ANAT) endpoints and interactive connectivity establishment (ICE) endpoints |
US9203872B2 (en) * | 2010-02-19 | 2015-12-01 | Microsoft Technology Licensing, Llc | Distributed connectivity policy enforcement with ICE |
US8639844B2 (en) | 2010-07-20 | 2014-01-28 | Cisco Technology, Inc. | System for establishing a media stream |
US8700782B2 (en) | 2010-08-18 | 2014-04-15 | Microsoft Corporation | Directing modalities over different networks in multimodal communications |
US8977730B2 (en) | 2010-11-18 | 2015-03-10 | International Business Machines Corporation | Method and system for reducing message passing for contention detection in distributed SIP server environments |
US8588233B1 (en) | 2010-12-31 | 2013-11-19 | Akamai Technologies, Inc. | Peer-to-peer connection establishment using TURN |
GB2488122A (en) | 2011-02-15 | 2012-08-22 | Metaswitch Networks Ltd | System and method for monitoring network link quality |
US8767716B2 (en) | 2011-09-19 | 2014-07-01 | Vonage Network, Llc | Systems and methods of routing IP telephony data packet communications |
US8526334B2 (en) | 2011-12-09 | 2013-09-03 | Ixia | Choosing connectable end points for network test |
BR112014014114A2 (pt) | 2012-01-17 | 2017-06-13 | Ericsson Telefon Ab L M | travessia de nat com base em ice |
CN102685268B (zh) | 2012-05-22 | 2015-02-18 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
US8805382B2 (en) | 2012-07-23 | 2014-08-12 | At&T Intellectual Property I, L.P. | System and method for quality of service in a wireless network environment |
US8982708B1 (en) | 2012-09-24 | 2015-03-17 | Rockwell Collins, Inc. | Priority aware dynamic routing protocol for ad-hoc networks |
US9413792B2 (en) | 2012-11-09 | 2016-08-09 | Microsoft Technology Licensing, Llc | Detecting quality of service for unified communication and collaboration (UC and C) on internetworks |
US8601144B1 (en) | 2012-11-27 | 2013-12-03 | Sansay, Inc. | Systems and methods for automatic ICE relay candidate creation |
US9197586B2 (en) | 2012-12-18 | 2015-11-24 | Mellanox Technologies Ltd. | Maintaining consistent quality of service between subnets |
WO2014144837A1 (en) | 2013-03-15 | 2014-09-18 | A10 Networks, Inc. | Processing data packets using a policy based network path |
US9356875B2 (en) | 2013-07-22 | 2016-05-31 | Cisco Technology, Inc. | Using statistical and historical information of topology metrics in constrained networks |
GB2520231B (en) | 2013-07-23 | 2020-12-16 | Metaswitch Networks Ltd | Media sessions |
US9515995B2 (en) | 2013-12-27 | 2016-12-06 | Futurewei Technologies, Inc. | Method and apparatus for network address translation and firewall traversal |
US8917311B1 (en) | 2014-03-31 | 2014-12-23 | Apple Inc. | Establishing a connection for a video call |
US9917781B2 (en) | 2014-06-05 | 2018-03-13 | KEMP Technologies Inc. | Methods for intelligent data traffic steering |
US10374871B2 (en) | 2014-09-16 | 2019-08-06 | CloudGenix, Inc. | Methods and systems for business intent driven policy based network traffic characterization, monitoring and control |
US9596272B2 (en) | 2014-09-25 | 2017-03-14 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10244003B2 (en) | 2014-09-25 | 2019-03-26 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10171511B2 (en) | 2014-09-25 | 2019-01-01 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
DE102014018873A1 (de) * | 2014-12-16 | 2016-06-30 | Unify Gmbh & Co. Kg | Telekommunikationsanordnung und Verfahren zum Herstellen einer RTC-Verbindung zwischen einem ersten Endpunkt und einem zweiten Endpunkt |
US10079863B2 (en) | 2015-11-18 | 2018-09-18 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
US10158679B2 (en) | 2015-11-18 | 2018-12-18 | Microsoft Technology Licensing, Llc | Media session between network endpoints |
-
2015
- 2015-11-18 US US14/945,302 patent/US10079863B2/en active Active
-
2016
- 2016-11-14 EP EP16801936.2A patent/EP3363185A1/en not_active Ceased
- 2016-11-14 WO PCT/US2016/061774 patent/WO2017087302A1/en active Application Filing
- 2016-11-14 CN CN201680067746.1A patent/CN108702394B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2591183A1 (en) * | 2007-06-08 | 2008-12-08 | Avaya Canada Corp. | Determining connectivity between endpoints in a network |
CN102273142A (zh) * | 2009-01-13 | 2011-12-07 | 微软公司 | 对于使用stun创建的会话的策略服务***体系结构 |
Non-Patent Citations (2)
Title |
---|
Interactive Connectivity Establishment (ICE):A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols;Rosenberg jdrosen net J;《Internet Engineering Task Force (IETF)》;20100430;全文 * |
Session Traversal Utilities for NAT (STUN);J.Rosenberg, R. Mahy,D. Wing;《Network Working Group》;20081001;全文 * |
Also Published As
Publication number | Publication date |
---|---|
US10079863B2 (en) | 2018-09-18 |
US20170142165A1 (en) | 2017-05-18 |
EP3363185A1 (en) | 2018-08-22 |
WO2017087302A1 (en) | 2017-05-26 |
CN108702394A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716976B (zh) | 网络端点之间的媒体会话 | |
CN108702394B (zh) | 网络端点间的媒体会话 | |
US10972510B2 (en) | Media session between network endpoints | |
CN106716963B (zh) | 用于网络端点之间的媒体会话的方法及装置 | |
CN108293076B (zh) | 用于网络端点间的媒体会话的方法和装置 | |
US10855654B2 (en) | Session identifier for a communication session | |
US20160380966A1 (en) | Media Relay Server | |
US10230771B2 (en) | Media session | |
US20160380789A1 (en) | Media Relay Server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |