CN106716963A - 网络端点之间的媒体会话 - Google Patents

网络端点之间的媒体会话 Download PDF

Info

Publication number
CN106716963A
CN106716963A CN201580051881.2A CN201580051881A CN106716963A CN 106716963 A CN106716963 A CN 106716963A CN 201580051881 A CN201580051881 A CN 201580051881A CN 106716963 A CN106716963 A CN 106716963A
Authority
CN
China
Prior art keywords
candidate
network
end points
path
priority
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.)
Granted
Application number
CN201580051881.2A
Other languages
English (en)
Other versions
CN106716963B (zh
Inventor
R·贡纳兰
H·M·卡恩
T·M·穆尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN106716963A publication Critical patent/CN106716963A/zh
Application granted granted Critical
Publication of CN106716963B publication Critical patent/CN106716963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2564NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Abstract

经由通信网络建立发起端点和响应端点之间的媒体会话。生成候选对的集合,每个候选对包括通过在发起端点和响应端点之间交换网络地址而可用于发起端点的相应网络地址和可用于响应端点的相应网络地址。使用所述集合中的被确定为有效的候选对来建立媒体会话。对集合中的至少一个候选对执行连通性检查,以确定该候选对是否有效。根据与网络地址中的至少一个相关的、且指示假设该网络地址用于媒体会话则将被遍历的通过所述网络的路径的质量的选择数据来选择所述至少一个候选对。

Description

网络端点之间的媒体会话
背景技术
通信网络通常包括在网络内执行不同功能的不同类型的网络节点,诸如用户设备、路由器、网络地址转换器(NAT)、媒体中继服务器等。两个通信节点(端点,例如用户设备)之间的通信可以经由网络的其他节点(中间节点,诸如路由器、NAT和媒体中继服务器)。网络可以具有分层体系结构,由此不同的逻辑层提供不同类型的节点到节点通信服务。每个层由该层(除了最低层之外)的紧邻下方的层来服务,并且为该层(除了最高层之外)的紧邻上方的层提供服务。网络可以是基于分组的网络和/或互联网。
可以在经由通信网络连接的两个端点(例如用户设备)之间建立媒体会话,使得可以经由网络在这些端点之间发送和接收实时媒体。媒体会话的示例是SIP(“会话发起协议”)媒体会话。媒体会话可以是IP语音或视频(VOIP)会话,其中在VOIP会话的端点之间发送和接收呼叫的音频和/或视频。端点和其他类型的网络节点可以通过网络地址(例如IP(“互联网协议”)地址)来标识,其中在与端点相关联的传输地址之间建立会话。传输地址是网络地址(例如IP地址)和与该网络地址相关联的端口的组合。
为了建立媒体会话,端点之一可以向另一端点发送媒体会话请求。这里,发起对媒体会话(例如音频/视频通信)的请求的端点被称为“发起端点”或等效地称为“呼叫者端点”。接收和处理来自呼叫者的通信请求的端点被称为“响应端点”或“被叫端点”。每个端点可具有多个相关联的传输地址,例如本地传输地址、NAT公共侧上的传输地址、中继服务器上分配的传输地址等。在媒体会话建立期间,对于每个端点,选择相应的地址用于该端点以用于在媒体会话中发送和接收数据。例如,可以根据ICE(“交互式连接建立”)协议来选择地址。一旦建立了媒体会话,媒体可以在不同端点的那些所选地址之间流动。
发明内容
提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在确定所要求保护的主题的关键特征或主要特征,也不旨在用于限定所要求保护的主题的范围。
本主题的一个方面涉及一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机实现的方法。该方法包括在发起端点和响应端点中的至少一个的计算机处实现以下步骤。在端点处生成候选对的集合,每个候选对包括通过在发起端点与响应端点之间交换网络地址而可用于发起端点的相应网络地址和可用于响应端点的相应网络地址。通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立媒体会话。在与所述网络地址中的至少一个有关的所述端点处接收选择数据并且选择数据指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的质量。接收与每个网络地址相关联的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量。所述端点对所述集合中的至少一个候选对执行连通性检查以确定所述候选对是否有效,其中根据所述类型度量和所述选择数据来选择所述至少一个候选对。
附图说明
为了帮助理解主题并示出如何实现主题,现在将仅通过示例的方式参考以下附图,其中:
图1示出了通信系统;
图2示出了用户设备的框图;
图3示出了控制服务器的框图;
图4示出分层网络体系结构的表示;
图5示出了网络地址转换器的操作;
图6A-C分别示出了用于媒体会话的通过网络的第一路径、第二路径和第三路径;
图7示出了用于媒体会话的可能的地址配对的集合;
图8示出了功能上表示端点和控制服务器的功能框图;
图9是用于实现媒体会话的方法的流程图。
具体实施方式
现在将仅通过示例的方式描述实施例。
图1是通信系统的示意图,其包括:公共网络2,其是基于分组的互联网(即,互连的单独网络的系统),例如互联网,具有公共地址空间;第一端点和第二端点,第一端点和第二端点是由第一用户4a和第二用户4b操作的第一用户设备6a和第二用户设备6b;第三端点和第四端点,第三端点和第四端点是由第三用户4'a和第四用户4'b操作的第三用户设备6'a和第四用户设备6'b;第一媒体服务器14a和第二媒体服务器14b;和控制服务器(遥测服务器)12。公共网络2包括在公共网络2的不同单独网络(未示出)之间路由业务的多个路由器3。
用户设备6a,6'a连接到第一基于分组的专用网络5a且是其网络节点,并且用户设备6'a,6'b连接到第二基于分组的专用网络5b且是其网络节点。
专用网络的每个节点在该专用网络的专用地址空间中具有相应的专用网络地址,连接到同一专用网络的其他节点(并且仅这样的节点)可以使用该专用网络地址来通过该专用网络(并且仅通过该专用网络)与该节点通信。该地址是私有的,因为它不能用于通过未连接到同一专用网络的设备与该节点通信,例如它不能在公共网络2内使用。此外,尽管该地址在该专用网络内是唯一的,但是其他节点可以在不同网络内使用相同的网络地址(例如,第一用户设备5a和第二用户设备5b可能碰巧具有相同专用网络地址,但是其可用于仅在第一专用网络5a内与第一用户设备6a通信并且其可用于仅在第二专用网络5b内与第二用户设备6b通信)。
为了使第一专用网络5a(相应的第二专用网络5b)的节点能够与公共网络2通信,第一(相应的第二)专用网络经由第一网络地址转换器(NAT)8a(相应的第二NAT 5b)连接到公共网络2。每个NAT 5a,5b——以及分别在第一和第二专用网络5a,5b的第一和第二专用地址空间中具有相应的专用网络地址(称为该NAT的专用侧上的地址)——也在公共网络2的公共地址空间中具有相应的公共网络地址(称为该NAT的公共侧上的地址)。因此,不仅第一和第二专用网络5a,5b的节点能够使用那些NAT的专用网络地址分别与第一和第二NAT5a,5b通信,而且该专用网络外部的节点可以使用那些NAT的公共网络地址与那些NAT 5a,5b通信。
NAT(例如8a,8b)通过将专用网络的私有地址空间映射到公共网络的公共地址空间中,作为专用网络(例如,5a,5b)和公共网络(例如,2)之间的接口操作,从而使得专用网络的节点能够通过公共网络在专用网络之外进行通信。
专用网络(5a/5b)之一外部的节点可以使用该NAT的公共地址经由公共网络2将旨在用于该专用网络的特定节点的业务导向到相关NAT(8a/8b),该NAT然后经由该专用网络将业务转发到该节点。
下面详细描述NAT的操作。
专用网络5a,5b和公共网络2并且构成通信网络1,其中各种用户设备6a,…,6'b,NAT 8a,8b,服务器12,14a,14b和路由器3是网络节点。通信网络1也是互联网(其包括互联网2的各个网络以及专用网络5a,5b)。
用户设备6a,6b执行通信客户端软件7a,7b(客户端)的相应实例。客户端使得用户设备6a,6b能够通过网络1在用户设备6a,6b之间建立媒体会话,例如以便于用户的4a,4b之间的实时通信事件(例如,语音和/或视频呼叫),使得用户4a,4b可以通过网络1彼此通信,其中在媒体会话中的设备6a,6b之间发送和接收呼叫音频和/或视频。用户设备6'a,6'b还执行客户端软件7'a,7'b的相应实例以达到类似的效果。
用户设备可以通过不涉及任何NAT的一些其他机制连接到公共网络2,尽管这在图2中未示出。例如,用户设备可以经由Wi-Fi连接而连接到专用网络和经由没有涉及NAT的移动网络连接到公共网络。
控制服务器12执行控制代码13,用于以下面描述的方式监视和控制各种用户设备之间的通信的各方面。
图2是用户设备6(例如6a,6b,6'a,6'b)的示意性框图。用户设备6是计算机设备,其可以采取多种形式,例如,桌面或膝上型计算机,移动电话(例如智能电话),平板计算设备,可穿戴式计算设备,电视(例如智能电视),机顶盒,游戏控制台等。
用户设备6包括处理器22,存储器20、一个或多个输出设备(例如显示器24和扬声器26)、一个或多个输入设备(例如相机27和麦克风28)以及使得用户设备6能够连接到网络1的网络接口24(诸如以太网、Wi-Fi或移动网络(例如3G,LTE等)接口)连接到处理器22。显示器24可以包括触摸屏,其可以接收来自设备6的用户的触摸输入,在这种情况下,显示器24也是用户设备6的输入设备。连接到处理器的所示各种组件中的任何一个可以集成在用户设备6中,或者非集成且经由合适的外部接口(有线,例如以太网,或无线,例如Wi-Fi)连接到处理器22。
存储器20保存客户端7的副本,当在处理器24上执行时,该客户端7的副本使得用户设备6实现客户端7的功能。
客户端7具有用于从用户设备6的用户接收信息并向用户设备6的用户输出信息的用户接口,包括在诸如呼叫的通信事件期间。用户接口可以包括例如经由显示器24输出信息的图形用户接口(GUI)和/或自然用户接口(NUI),NUI使得用户能够以“自然”方式与设备交互,没有来自由诸如鼠标、键盘、遥控器等的某些输入设备施加的人为约束。NUI方法的示例包括利用触敏显示器、语音和语言识别、意图和目标理解、使用深度相机的运动姿势检测(例如立体或飞行时间相机系统、红外相机系统、RGB相机系统以及这些的组合)、使用加速度计/陀螺仪的运动姿势检测、面部识别、3D显示、头部、眼睛和注视跟踪、沉浸式增强现实和虚拟现实系统等的NUI方法。
图3是控制服务器12的示意性框图。控制器服务器12包括处理器32和网络接口34,处理器32连接到存储器30,网络接口34使得控制服务器12能够连接到网络1。存储器30保持控制软件13,当在处理器32上执行时,控制软件13使得控制服务器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,在该层处根据互联网协议(其是互联网层协议)数据被进一步分组成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报头包括作为该专用网络的专用地址空间中的专用网络地址的传输地址(例如在5a/5b中用户设备6a/6b的专用网络地址)和与该专用地址相关联的端口。如所指出的,这样的专用地址空间在该专用网络之外是不可用的。因此,假设是用于在该专用网络(例如5a/5b)和公共网络(例如2)之间转发IP数据报的简单路由器,该专用网络外部的节点将不能响应这样的数据报,因为它们不具有IP报头中的任何可用源地址。
为此,可以使用NAT来提供公共网络和专用网络之间的接口。
图5示出了NAT 8(例如,8a,8b)的操作。包括IP报头11i和IP有效载荷11ii的IP数据报11由NAT经由专用网络5(例如5a,5b)从该网络的节点接收,节点例如是用户设备6(例如6a/6'a,6b/6'b)。IP报头11i包含用户设备6的初始源传输地址,其包括用户设备6在专用网络5的专用地址空间中的专用网络地址(其是专用IP地址)和与该专用地址相关联的端口。IP报头11i还包含目的地传输地址,已由用户设备6将IP数据报11导向到该目的地传输地址。
如图所示,NAT 8修改IP报头11i以用新的源传输地址替换初始源传输地址,从而生成具有包含新的源传输地址的修改的报头11'i的修改的IP数据报11'(目的地传输地址和IP有效载荷11ii未被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报头。这对于简单地将响应导向到IP报头中的源地址的协议(诸如HTTP)通常是可接受的。
然而,包括一些媒体会话协议(诸如SIP)的其他协议也依赖于在IP有效载荷(非报头)级编码的端点的地址。例如,SIP协议规定端点应当使用包含在SIP邀请/SIP响应中的地址来建立将在IP有效载荷(非报头)级编码的媒体会话。如图5所示,这未被NAT 8修改。
因此,例如,假设图1中的第一用户设备6a要经由在IP有效载荷级编码的第一NAT8a向第二用户设备6b发送媒体会话邀请。该NAT 8a将不修改IP有效载荷,因此,已经接收到邀请,第二用户设备6b将尝试使用第一用户设备6a的未修改的专用传输从未修改的IP有效载荷(不是报头)响应邀请——这将失败,因为该专用地址在专用网络5a之外是不可用的,并且因此将不可能建立会话。类似地,即使第一用户设备6a不在NAT 8a之后,而是具有其自己的公共IP地址,会话建立仍将失败,因为第二用户设备5b在NAT 5b之后:利用会话邀请响应响应于邀请,第二用户设备6b将在IP有效载荷级处编码的响应中包括其自己在第二专用网络5b的第二地址空间中的专用地址,类似地,该专用地址对第一用户设备6a不可用。
为此,已经开发了诸如STUN(“用于NAT的会话遍历实用程序”)和TURN(“使用中继NAT的遍历”)的协议,以使得能够在被一个或多个的NAT分开的端点之间建立SIP会话等。
STUN允许端点确定其是否位于NAT之后,并且如果是,则NAT的公共地址被映射到发起端点的专用地址(即,有效地使其对映射9有访问权),使得端点可以在IP有效载荷中包括该公共地址,而不是其自己的私有地址。通常,STUN通过发起端点向STUN服务器发送查询来工作,查询作为IP数据报通过NAT并经由公共网络中继到STUN服务器。因为NAT将查询的IP报头中的专用地址替换为NAT的公共侧上的对应公共地址,所以STUN服务器可以从查询的IP报头获得后者,可以反过来将其提供给发起端点。然后,发起端点可以使用该公共地址而不是其自己的专用地址来建立会话,从而在会话请求中将IP有效载荷级处的可用地址传送到响应端点。响应端点可以类似地发现其可以在响应中的IP有效载荷级中传送给发起端点的其相关联的公共地址,而不是其自己的专用地址。STUN服务器的作用实际上是提供地址发现的作用,并且通常一旦建立,它就不参与媒体会话。
如本领域中已知的,存在这样的情况,其中即使当NAT的公共地址是已知时也不能建立这样的会话,例如当发起和/或响应端点在对称NAT之后时。在这种情况下,一个或多个TURN中继服务器通常可以用于通过经由TURN服务器中继媒体数据来遍历NAT。
当端点需要使用TURN中继时,它向TURN中继发送请求,请求将TURN中继上的唯一公共传输地址分配给端点。如果请求被接受,则使用TURN服务器的公共地址作为该端点的源地址来建立媒体会话。该端点向TURN服务器发送它希望在包含于TURN消息中的会话中发送的媒体。TURN服务器从TURN消息中提取媒体,并将其从TURN服务器上的公共地址向前转发,TURN服务器上的公共地址已经分配给该端点作为源地址。TURN服务器还将已经被导向到TURN服务器上所分配的地址的旨在用于该端点的数据中继到TURN消息中所包含的该端点已用于由该端点提取。
如果两个端点位于不允许STUN的NAT之后,则每个端点将需要其自己的相应传输地址以在TURN服务器上分配,在这种情况下,在那两个分配的TURN服务器地址之间建立媒体会话,并且每个端点中继/接收TURN消息中的数据,其中向TURN服务器提供的数据被发送到媒体会话中分配给这些端点的两个TURN服务器地址/从其接收。
TURN中继需要至少在该媒体会话的持续时间内在该(那些)服务器上分配的资源(包括在TURN服务器上分配的唯一公共传输地址),并且还意味着媒体会话的媒体经由比直接在端点之间或经由一个或多个NAT建立媒体会话时更不直接的路径传播。因此,尽管TURN中继可以或多或少地保证为媒体会话提供通过网络的可用路径,但是这种中继是以服务器资源的增加使用和由于路径的间接性而潜在增加的等待时间为代价的。
STUN和TURN功能可以并入同一服务器中,其有时也简称为TURN服务器,即使它也包括STUN功能。
图1的媒体服务器14a和14b是TURN服务器,其合并了STUN和TURN功能二者,并因此具有地址查找和媒体中继功能二者。可替代地,该功能和/或其他功能可以在单独的服务器之间分割,或者由下面描述的媒体服务器14a,14b执行的功能可以由相同的服务器执行。
ICE(“交互式连接建立”)是用于建立穿过网络地址NAT和防火墙的VOIP会话的连接的已知协议,其尝试在媒体时延方面建立最有效的路径以确保理想的媒体质量。ICE协议的细节可以在公开可用的RFC 5245,Interactive Connectivity Establishment(ICE):AProtocol for Network Address Translator(NAT)Traversal for Offer/AnswerProtocols,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的上下文中的“直接”路径意味着这样的路径,其中由发送端点沿着该路径发送的预期用于接收端点的数据在该路径的传输期间不在互联网层之上被处理,即,使得该数据是仅在被传递到互联网层进行传输之前在传输端点的传输层处/上方进行处理,并且在接收端点处接收到之后已经从互联网层向上传递后在接收端点的传输层处/上方进行处理。不包括任何媒体中继服务器(例如TURN服务器)的路径是直接的,包括具有NAT和/或路由器的路径,因为这些不在互联网层上方处理这样的数据(尽管它们可能仍然实现传输层和应用层,例如用于管理目的)。
在ICE的上下文中的“间接”路径意味着这样的路径,其中由发送端点沿着该路径发送的旨在用于接收端点的数据当在该路径的传输期间在互联网层上方被处理(例如在传输层和可能的更高层如应用层处)。也就是说,使得在由发送端点发送之后但在沿着路径某处的某个中间网络节点处的接收端点处接收之前,将数据向上传递到传输层以用于在该层或该层之上的层处处理。包括一个或多个媒体(例如TURN)中继服务器的路径是间接的。
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。
如图所示,一旦数据已经通过发送端点从传输层106作为传输层(例如,UDP/TCP)分组10传递到网络层104,则其保持在网络层104处或网络层104之下,直到到达接收端点。也就是说,当沿着第一路径游历时,没有传输层(或更高)的数据处理。传送数据的IP分组10可以沿着路线被分段,但是除了保持未修改之外,并且传输层分组10因此类似地未修改地到达接收端点的传输层。
图6B示出了沿着从发送端点6(左手侧)到接收端点6(右手侧)的第二路径在一个方向上游历的旨在用于接收端点6(右手侧)的数据。第二路径确实包括至少一个NAT 8,但不包括任何中继服务器14。该路径是对称的,因为沿另一方向游历的数据经过相同的NAT 8(以相反的顺序),但没有中继服务器14,尽管它可以经由不同的路由器3,但是它在任一方向和/或在不同时间穿过的路由器可以是不同的。
再者,一旦数据已经在发送端点处从传输层106作为传输层(例如,UDP/TCP)分组10传递到网络层104,则其保持在网络层104处或以下,直到到达接收端点。然而,与图6A的第一路径相反,传送数据的IP分组11在NAT 8处被修改以改变IP报头中的源地址。修改的IP分组在图7B中标记为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'。
ICE协议尝试基于静态优先级来识别它认为是最高效的路径,所述静态优先级被分配给可以用于媒体会话的多个所谓的“候选对”中的每一个。候选者是与发起端点或响应端点相关联的传输地址。候选对是一对候选者(i,r),第一(i)与发起端点相关联,第二(r)与响应端点相关联。术语“候选者”涉及这样的事实:ICE机制最初假定与端点相关联的任何传输地址可能可用于媒体会话(尽管由于上述原因它实际上可能不可用),则ICE协议涉及识别实际上可用的候选者。
ICE将候选者分类为3类别:主机候选者、反身候选者和中继候选者。
主机候选者是所讨论的端点本地的传输地址,即,在直接附连到端点的网络接口上。例如,用户设备6a,6b的专用地址对那些用户设备是本地的,并且因此是主机候选者,并且类似地,如果用户设备直接连接到公共网络2(而不是经由NATS 8a,8b,或作为NATS 8a,8b的附加),它们将具有那些用户设备本地的它们自己的公共地址,这些地址也是主机地址。
反身候选者是不在端点本地的的传输地址,但是在NAT的公共侧的转换的传输地址(例如,包括在图5的修改的IP报头11'i中)。这些被分类为两个子类别:“服务器反身候选者”,其是通过查询服务器而发现的公共NAT地址,例如以上述概括的方式的STUN服务器,以及在建立媒体会话期间由另一端点发现的“对等反身候选者”(例如与由响应端点发现的发起端点相关联的公共侧NAT地址,或反之亦然)。
中继候选者是从媒体中继服务器(例如以上述概括的方式的TURN服务器)分配的传输地址。
这在图7中针对图1的第一和第二用户设备6a,6b示意性地示出。在该示例中,第一用户设备6a是发起端点,并且第二用户设备6b是响应端点。
第一用户设备6a与第一本地传输地址(其是主机候选者)40a相关联;第一反身传输地址(其是反身候选者)42a在第一NAT 8a的公共侧上并且被映射到第一专用网络5a中的第一用户设备6a的专用传输地址;以及第一中继传输地址44a(其是中继候选者)在第一TURN服务器14a上分配给第一用户设备6a。类似地,第一用户设备6b与第二本地传输地址(其是主机候选者)40b相关联;在第二NAT 8b的公共侧上的第二反身传输地址(其是反身候选者)42b映射到第二专用网络5b中的第二用户设备6b的专用传输地址;以及第二中继传输地址44b(其是中继候选者)在第二TURN服务器14b上分配给第二用户设备6b。
潜在地,任何发起端点的候选传输地址可以用于与响应端点的候选传输地址中的任一个进行通信。也就是说,第一用户设备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)进行通信来发现它们的所有候选者,然后适当的TURN服务器在所有可能的组合中配对(例如,14a,14b),例如如果发现六个候选40a,44b,则这将导致上面讨论的九个候选对。ICE然后尝试发现哪些候选对是有效的。ICE这样做的方式是以特定的排序顺序系统地尝试所有可能的对,直到找到一个或多个有效(即工作)的候选对的集合,然后可以选择其中之一用于媒体会话。每当端点中的至少一个发现产生多个候选对的多于一个候选者时,将存在通过网络的多个可能可用的路径,经由所述路径可以建立媒体会话(但是不是所有的实际上都可用,因为不是每个候选对都有效)。
候选对被尝试的顺序由ICE静态优先级方案规定,其中较高优先级对在较低优先级对之前被尝试。
根据ICE协议,可以根据等式1向每个候选者(例如40a-44b)分配静态优先级:
优先级=(224)*(类型偏好)+(28)*(本地偏好)+(20)*(256-组件ID)
类型偏好(类型度量的一个示例)是从0到126(含)的整数,并且表示对候选者类型(本地,服务器反身,对等反身和中继)的偏好。126是最高优先级,0是最低优先级。将值设置为0意味着此类型的候选者将仅用作最后手段。类型偏好对于相同类型的所有候选者是相同的,并且对于不同类型的候选者是不同的。对等反身候选者的类型偏好高于服务器反身候选者的类型偏好。ICE协议对于主机候选者推荐值126(除非这些来自虚拟专用网络接口,在这种情况下推荐0),对于服务器反身候选者推荐100,对于对等反身候选者推荐110,对于中继候选者推荐0。本地偏好是从0到65535(含)的整数,并且表示当端点被多宿主(连接到多于一个计算机网络)时从其获得候选者的特定IP地址的偏好。当只有一个IP地址时,ICE建议将其设置为最大值65535,有效地使此项在没有多宿主时冗余。组件ID项是候选者的标识符。
可以看出,到目前为止,等式1中的最显著项是基于候选类型的第一项。
因此,ICE优先级方案通过经中继的候选者来对间接路径去优先化,其仅仅作为最后手段使用,并且还使静态优先级偏离反身候选者。
一旦形成候选对并且根据等式(1)分配优先级,则可以根据等式2来计算每个候选对的候选对静态优先级:
对优先级=232*MIN(G,D)+2*MAX(G,D)+(G>D?1:0)
其中G是发起端点的候选者的静态优先级,D是响应端点的候选者的静态优先级,并且G>D?1:0是如果G大于D则值为1否则为0的表达式。
因为与非中继候选者相比,ICE对中继候选者去优先级,所以包括中继候选者的候选对与没有中继候选者的候选对相比被去优先级。因此,ICE静态优先级方案使更直接的路径优先于较不直接路径。
此外,因为ICE使反身候选者与主机候选者相比去优先化,所以与仅包括主机候选者的候选对相比,包括反身候选者的候选对被去优先化。因此,ICE静态优先级方案偏向于不涉及NAT的路由。
静态ICE路径优先级化方案足以用于受控制的公司部署/拓扑。然而,实时媒体服务的大规模全球在线服务部署带来了完全不同集合的挑战,其中静态优先级方案不仅不足够,而且在某些情况下对媒体质量有害。寻找理想的连接路径对于确保为用户提供最佳的可能体验以及确保满足订阅在线服务的用户的媒体质量SLA(“服务水平协议”)至关重要。
下面是一些场景,其中仅仅基于由ICE定义的静态路径优先级选择最高效的路径可能不够或不理想。
1、作为在线服务合同的一部分,公司可能具有以更低的时延提供更好的媒体质量的MPLS(“多协议标签交换”)链路。即使ICE静态优先级方案确定通过MPLS链路的路径具有较低优先级,使用MPLS链路将实际上提供更好的媒体体验。
如本领域中已知的,MPLS是基于短路径标签而不是长的网络地址将数据从一个网络节点引导到下一个网络节点的机制,这避免了需要在路由表中执行查找(其需要时间和资源)。标签标识远端节点之间的虚拟路径(“MPLS链路”),而不是端点本身。在实现MPLS机制的网络中,针对分组的路由决定仅基于附加到该分组的标签做出而不检查分组本身,这被称为标签交换。这与例如在IP路由中使用的分组交换不同,其中路由器使用来自IP报头自身的IP分组的目的地地址来决定下一跳。ICE对这个较低层标签交换是看不见的,并且简单地将这些路径和涉及较低效率路由机制的路径视为同样“直接”,只要它们不涉及诸如中继服务器的较高层中间体。MPLS协议可以被认为是在传统上定义的OSI层2(数据链路)和层3(网络)之间操作,并且有时被称为“层2.5”协议。
2、区域ISP(“互联网服务提供商”)对等协议可以导致由于ICE具有极高时延所促成的路径。
术语“对等”是指互联网的两个自主网络之间的数据路由。对等协议规定了不同的网络运营商(例如ISP)可以利用彼此的网络的方式并因此规定数据通过这样的互联网路由的方式。
这种较低层(例如,互联网层)路由决策对于ICE也是不可见的,并且在ICE和本公开的上下文中,所得到的路径是“直接的”,因为它们不涉及更高层(例如传输/应用层)中间体,诸如媒体中继服务器。然而,实际上,这样的协议可以导致通过互联网的路径,例如地理上迂回或者其他方式低效(例如,其涉及互联网的不适当的网络),并且因此倾向于时延(因此具有低质量),但是该ICE高度优先,因为这样的路径仍然是“直接的”(如这里使用的术语)。
具体地,发明人已经认识到,不同ISP之间的路由决策通常不是优化的。有时,路由决策是为了商业的,而不是技术的原因而做出,即,做出一组特定的较低层路由决策不是因为它们将提供例如涉及单个网络之间的最少跳的最快的路由或者因为它们在某种其他意义上从技术角度是最优的,而是因为它们对于ISP更便宜。
这些次优路由决策在较高层基本上是不可见的(尽管它们在次优媒体传送方面的效果是明显的),它们也不能在ISP自己的域之外直接控制。然而,发明人已经认识到,通过使用受控的较高层中继,较低层行为仍然可以受到终端用户的优点的影响,例如以避免已知的网络路径采用不利的路由决策,如通过考虑随时间推移过去的媒体会话的网络质量度量所揭示的。
3、媒体路径的质量可以根据网络上的时间和负载而变化,并且可以不直接与ICE静态优先级相关。
4、ICE缺乏基于从先前建立的媒体会话采集的遥测数据来学习和适应连接路径的能力。
代替仅仅依赖于由ICE提供的静态优先级,本公开提供了一种机制,由此路径选择可以另外地受相关网络信息的影响。网络信息指示在发起端点和响应端点之间的媒体会话可用(或至少潜在可用)的路径的质量。在此上下文中的路径的“质量”是指当用于媒体会话时该路径能够递送的终端用户体验。降级终端用户体验的路径,例如因为它们容易受到分组丢失、过多的等待时间、过度的抖动等影响,并且因此降级沿着该路径接收的媒体(例如音频和/或视频)的感知质量(例如,从用户的角度),质量较低,而增强终端用户体验的路径,例如因为它们表现出最小的分组丢失、低等待时间、低抖动等,并且因此不会显著地降级媒体的感知质量,质量更高。
该网络信息可以由管理员配置或在媒体会话建立期间动态地确定,或者可替代地基于从先前建立的媒体会话所采集的遥测数据。该决定可以基于仅由做出选择的客户端采集的数据,或者客户端可以与具有关于连接路径和网络质量特性的更丰富的数据集的服务器协同工作。
除其他事项外,本公开将ICE协议扩展到:
a.包括拓扑/部署信息,以建立实时媒体(MPLS,ISP对等,等)的最佳连接路径。在此上下文中的“拓扑信息”是指与在网络层或下面的互联网的各个网络之间的数据路由有关的信息(例如,在某种意义上,MPLS路由在网络层下面执行,见上文)。该信息可以在客户端上配置,或者客户端可以从提供与媒体会话中涉及的实体(呼叫者/被叫者端点和中继服务器)相关的拓扑和呼叫质量遥测信息的遥测服务器发现该信息。MPLS和ISP对等协议两者都导致不影响路径的“直接性”的路由决策(如本文所使用术语),因为它们不引入任何更高层中间体(例如媒体中继服务器),并且因此该路由决策对ICE协议不可见,但是在路径质量(具有涉及趋于具有更高质量的MPLS路由的路径和涉及由潜在地较低质量的ISP对等协议规定的路由的路径,这取决于协议的性质)方面仍然高度相关;
b.包括在媒体会话的连接建立期间的路径质量的动态发现或在媒体会话期间的进行中的监视;
c.利用从先前建立的媒体会话采集的遥测数据,为后续呼叫建立更好的媒体连接路径;
d.使得具有更好质量的路径优先化并且使较低质量的路径去优先级化或完全去除;
e.如果当前媒体路径的质量降级为比另一可用媒体路径(通常在呼叫者和被叫者端点之间存在若干可行的媒体路径)更差,则使得在媒体会话期间切换媒体路径。
在ICE中,呼叫者端点通常被指定为控制端点,并且负责选择要用于媒体流的最终路径。根据以下内容,控制端点还并入上述拓扑信息,同时选择媒体流的最终路径。
图8是功能框图,其中图8中虚线下方的功能块(组件)表示当在用户设备6(6a和/或6b)上执行时由客户端7(7a和/或7b)实现的功能。虚线以上的组件表示当在控制服务器12上执行时由控制代码13实现的功能。
客户端7a实现路径选择系统50,其包括候选对生成组件52,静态优先级生成组件53,检查列表生成组件54和候选者修改组件56,本地选择组件57和连通性检查组件58,连通性检查组件58包括路径探测组件59。组件52、53和56构成优先级生成组件。
控制代码13实现控制系统62,其包括远程选择组件64、聚合组件66和监视组件68。
修改、检查列表生成和连通性检查组件56、54、58构成用于选择媒体会话的路径的路径选择组件。
现在将参考图9来描述用于实现发起端点6a和响应端点6b之间的媒体会话的方法,图9是该方法的流程图。两个端点6a,6b实现如在MS-ICE2中定义的ICE协议,添加了本文描述的额外功能。
在S2处,发起端点7a(发起客户端)上的客户端与第一TURN服务器14a通信以发现其候选者(本地候选者),即,其可能能够用于媒体会话的任何主机候选者、服务器反身候选者和中继候选者。然后,发起客户端在会话邀请消息中将它们发送到响应端点6b。作为响应(S4),响应端点6b(响应客户端)上的客户端7b通过与返回到发起端点的第二TURN服务器14b通信来采集其候选者(远程候选者)。
在S6处,候选对生成组件52分别接收由发起端点和响应端点发现的本地候选者和远程候选者二者,它从其中生成并输出候选对的集合。候选对生成组件53接收所生成的候选对的集合以及分配给本地候选者和远程候选者的ICE静态优先级,并且基于三个输入生成候选对的静态优先级。两个端点可以并行地执行相同的候选对/优先级调整过程,或者一个端点可以执行这些过程并将结果传送给另一个。
每个候选对可能对应于通过网络的可用路径,如果该候选对证明是有效的,则该可用路径可以由媒体会话的端点使用。
S2-S6是依照上述的正常ICE程序。
在S8处,端点6a,6b中的一者或两者将与至少一个端点有关的端点信息发送到控制服务器12,用于与保存在控制服务器12处的信息进行比较。端点信息包括路径信息,路径信息标识或以其它方式传达关于潜在可用路径的信息,例如,关于如果沿着该路径传输则数据将被路由通过的ISP的信息,标识或以其他方式传达关于任何通过其沿该路径路由数据的任何专用网络5a/5b的信息的信息,标识或以其他方式关于沿着该路径所包括的任何媒体中继服务器14a/14b的信息等。
在S10处,端点信息由选择组件64接收,选择组件64将所接收的信息与保存在遥测服务器12处的存储器30中的全局网络信息70进行比较。选择组件64然后使用该比较的结果来影响端点6a,6b选择通过网络的用于媒体会话的路径的方式,以确保它们选择具有适当高质量的路径,即使该路径不被ICE静态优先级方案支持并且已经被分配了低静态优先级(见下文)。
全局网络信息包括从网络2中的各种实体(节点)收集的网络拓扑/部署信息和呼叫质量遥测信息,其中一些可能与媒体会话中所涉及的实体(即呼叫者/被叫者端点6a,6b和中继服务器)相关。
全局网络信息70包括分别是来自聚合组件66和监视组件68的贡献的当前网络信息70和历史网络信息70b。贡献70a,70b随时间被更新,以便提供关于网络2的丰富的信息源,包括选择组件64可以用来影响路径选择的、关于潜在地可用于发起端点和响应端点6a,6b的路径的质量的信息。
聚合组件随时间推移从诸如其他端点例如6'a,6'b的网络节点接收并聚合信息,以提供历史网络信息70a。历史信息70a包括与先前建立的媒体会话有关的遥测信息。端点(例如6'a,6'b)在建立的媒体会话期间采集遥测信息,例如通过执行往返时间(RTT)、抖动、分组丢失等的测量。然后可以利用所采集的遥测数据来选择用于后续媒体会话的更好的媒体路径,包括端点6a,6b当前尝试建立的会话。
选择组件64然后可以比较从端点6a,6b接收的端点信息,并且如果遥测信息指示比如历史上其他端点先前已经沿着可能对端点6a,6b可用的路径之一或沿着与该路径重叠(即至少部分地重合)的一些其它路径经历差的质量,例如因为那些路径例如共同具有至少一个媒体服务器、专用网络/NAT和/或ISP等(但是可能另外不同),则选择组件可以影响选择以将其偏离该潜在可用的路径,即使得端点6a,6b不太可能为其媒体会话选择该路径。路径不必完全重叠,并且选择组件可以执行统计分析从关于在某种程度上与该路径重叠的多个路径的历史信息外推关于给定路径的信息。
例如,如果对端点6a,6b潜在可用的给定路径包括第一和第二媒体中继服务器,并且存在可用于包括第一中继但不包括第二中继的第一路径的历史信息,并且还存在可用于包括第二中继的第二路径的历史信息,则选择组件64可以从两组信息中外推关于该给定路径的信息。例如,如果第一路径和第二路径历史上都是高质量的,则可以合理地假设给定路径也可能具有高质量,相反受制于其他网络信息。可替代地,如果,例如,第二路径历史上是低质量的,这可能指示给定路径也是低质量的,尽管这个假设是某种跳跃。然而,如果历史信息显示出许多路径——所有这些路径都包括第二中继但是另外不同——历史上都是低质量的,则可以以相当高级别的统计确定性来推断第二中继是有问题的,并且由于第二中继的存在,给定路径可能是低质量的。
监视组件68从具有网络2的部分的当前可见性的网络节点接收网络信息,诸如具有其自己的操作的当前可见性的媒体中继服务器14。例如,媒体中继服务器14可以向监视组件68传达它们当前是否正确地执行,例如它们正在执行多好,例如在表示比如它们当前能够传送分组的速度或者它们丢失分组的可能性的性能度量方面所传达的,它们当前可用的资源等。基于该接收信息,监视组件68更新当前网络信息70b以反映网络2的当前状态,这可以改变选择组件64操作的方式。例如,当第一和第二媒体中继服务器中的一个正在耗尽资源(因此容易引入过多的分组延迟、丢失等),并且更新当前网络信息70b以反映这一点,并且选择组件然后可以影响路径选择以防止使用该媒体中继形式的路径被选为结果。
全局网络信息70因此包括来自网络2中的各种各样的节点的贡献,包括用户设备6,媒体中继14等,其具有网络2的部分的当前可见性和/或曾经具有网络2的部分的可见性,包括形成可能对端点6a,6b可用的路径的一部分的部分。
全局网络信息70还可以包括管理员配置的路径信息。这通常完成以用于具有MPLS链路的部署或已知关于ISP对等的信息或详细拓扑信息的部署。
管理员路径信息还可以包括关于在互联网2内进行的路由决策的信息(对于ICE而言,其当前是不可见的),其可以用于将路径选择偏离(相应地偏向)已知涉及对路径质量有害(相应地有益)的低效或其它不期望的(相应地有效或另外期望的)路由决策的路径。这里将选择偏向(相应地偏离)路径意味着影响选择以增加(相应地减小)选择该路径的概率。
例如,管理员路径信息可以包括关于MPLS链路的信息,其可以用于将路径选择偏向于包括MPLS链路(因为它们可能具有高质量)的路径,和/或关于ISP对等协议的信息,其可用于将选择偏离已知存在不利对等协议的路径。
在S12处,选择组件64生成用于影响路径选择的第一选择数据,其发送到端点6a,6b中的至少一个。
在S14处,检查列表生成组件生成“检查列表”。检查列表是确定执行连通性检查的顺序的候选对的有序列表(见下文)。
根据正常的ICE过程,检查表的排序仅基于候选对静态优先级,使得候选对按照它们的静态优先级的顺序排序。
相反,这里,修改组件56基于从选择组件64接收的选择数据并且还基于在进行选择的用户设备处所保持的本地网络信息20来控制检查列表的排序。本地选择部件57基于本地网络信息产生第二选择数据,其以类似于第一选择数据的方式提供给修改部件56,用于影响选择。该本地网络信息包括在客户端上针对该客户端参与的先前媒体会话所采集的本地遥测信息。以与在服务器12处所保持的方式(见上文)类似的方式采集本地遥测信息,但是反映客户端自己的历史经历,并且由监视它自己所参与的先前建立的媒体会话期间的路径质量(例如,RTT、抖动、分组丢失等)的客户端采集。本地网络信息60还可以包括类似于在服务器12处保存的管理员和/或用户配置的路径信息,并且远程管理员配置的信息的上述描述同样适用于其本地对应物。同样,这通常被完成以用于具有MPLS链路的部署或已知关于ISP对等或详细拓扑信息的信息的部署。
修改组件56的输入从候选对生成组件52接收候选对的集合,并且基于来自服务器12的选择数据和本地网络信息,移除被选择数据和/或本地网络信息指示具有不可接受的低质量的任何候选对。在一些情况下,移除的候选对可以具有高的甚至最高的静态优先级,但是仍然被移除是因为它们具有不可接受的低质量。
修改组件56的输入还接收候选对静态优先级(并因此构成已经对候选对静态优先级有访问权的访问组件),并且基于来自服务器12的选择数据和本地网络信息,对可以不同于它们的静态优先级的剩余的候选对分配新的优先级。例如,修改组件54可以向对应于比根据ICE协议分配的路径的静态优先级低(相应地高)的低(或相应地高)质量路径的候选对分配新的优先级。例如,如果采集的遥测数据(本地和/或在服务器12处)对于特定路径示出了较差的媒体质量的历史趋势,则对于后续的媒体会话,该路径可以被定优先级为较低。
在一些实施例中,可以仅执行候选删除和生成新优先级中的一个。
利用它们的新优先级将(剩余的)对提供给检查列表生成组件54,并且从这些中生成检查列表。生成的检查列表仅包含剩余的候选对,此外基于新的优先级(而不是静态优先级)来排序。因此,在检查列表中不存在不可接受的低质量的路径,此外,基于它们的较高(相应地较低)新优先级,较高(相应地较低)质量路径可以移向列表的顶部(相应地底部),即使路径具有较低的(相应地较高的)静态优先级。
注意,选择数据的生成可涉及一定程度的人工监督或引导。例如,人类操作者可以观察某些类型的路径的质量下降,例如,通过观察网络数据,例如网络中的节点(例如中继)的当前状态,和/或通过人工观察历史媒体会话质量度量,并且手动配置控制系统62以使媒体会话远离这样的路径,然后由配置的系统62生成适当的选择数据来实现(因此,选择数据生成对网络数据的依赖性可以至少部分地通过人类中介体引入)。为此,控制系统62可以具有用户接口,通过该用户接口可以手动配置系统62。
在S16处,客户端7a,7b执行连通性检查。对于检查列表中的单独的候选对,按照它们在检查列表中出现的顺序,从列表顶部的对开始(即,以新的优先级的顺序)执行连通性检查。因此,首先检查具有最高新优先级(但不一定是最高静态优先级)的对。连通性检查继续,直到满足停止标准为止,例如直到一定数量(一个或多个)候选对被揭示为有效和/或在经过预定量的时间之后。对于所谓的“积极提名”,连通性检查在找到第一个有效候选者时结束;然而“正常提名”允许连通性检查继续以尝试找到多于一个有效候选对(如果需要)。在连通性检查结束时,生成被显示为有效的一个或多个候选者的列表(有效列表)。
如所指示的,一些(可能许多)候选对可能不能通过连通性检查,例如包括作为专用传输地址的主机候选者的候选对可能由于讨论的原因而不能通过。
在S18处,使用来自有效列表的候选对(其可以是或可以不是被发现为有效的唯一候选对)来建立媒体会话。在连通性检查中仅找到一个有效候选对的情况下,该候选者用于建立媒体会话;如果显露有多个候选对,则选择一个并且用于建立媒体会话。例如,可以为媒体会话选择有效的集合中的最高优先级的候选对。
显而易见,基于新的(而不是静态的)优先级去除候选者和/或执行连通性检查可以导致具有较低的静态优先级但是具有较高质量的路径被选择用于媒体会话,优选于(infavour of)具有较高的静态优先级但质量较低的路径。
在S16的连通性检查期间,端点可以找到用于媒体流的若干潜在路径。作为连通性检查的一部分,除了建立媒体路径之外,端点还探测潜在路径的媒体质量。探测可以与在几秒钟内确定不同路径上的网络RTT、分组丢失、抖动等一样简单,或者可以执行更复杂的质量测量。控制端点然后可以基于由探测所指示的不同路径的质量而不是依赖于由ICE协议定义的静态优先级来选择最佳路径以确保媒体质量。
如果在所建立的媒体会话期间,当前正用于媒体会话的路径的质量改变——例如由监视组件66检测到,或者由端点本身检测到例如通过检测到等待时间、抖动和/或分组丢失等已经增加和/或通过在媒体会话正在进行时执行附加路径探测——则可以从先前生成的有效列表中选择不同的路径(如果存在多于一个),或通过再次重新启动连通性检查生成的新的有效列表,并且媒体会话继续使用该路径代替。
应当注意,这里,“可用”路径意味着实际上可以用于媒体会话的有效路径(例如,无效候选对不表示“可用”路径)。
虽然在上文中,根据等式1和2计算常规的ICE候选对优先级,然后基于选择数据修改以生成新的优先级,可替代地在计算候选对(根据等式2,但应用于修改后的地址优先级)之前可以修改单独的地址优先级(根据等式1计算),或者可以以其他方式计算类似的优先级,例如通过有效地包括取决于选择数据的等式1或2中的一者或两者中的修改项。
尽管已经在ICE静态优先级方案的上下文中描述了上述内容,但是主题不限于此。一般来说,相比于数据沿其在经过另一路径中遍历网络的较高层的该另一路径,优选数据沿其在经过路径中仅遍历网络的较低层的该路径的任何优先级方案,都被认为是使得更直接路径优先于较不直接的路径的静态优先级方案。此外,尽管上述呈现了ICE类型偏好形式的类型度量,但是也可以设想不根据ICE协议的其他类型度量。
注意,对“较高”和“较低”优先级的引用不一定指代这些优先级的任何特定数值(或任何其他)表示。相反,优先级方案的“较高优先级”意味着与被分配“较低优先级”的另一路径相比该方案更优选的路径所被分配的优先级,而不管表示这些优先级的方式(任何期望的表示可以被使用,只要它传达必要的信息,例如作为简单的示例,较低的数值可以用于表示较高的优先级)。
上述本地选择组件57和远程选择组件64构成生成选择数据(该选择数据包括第一选择数据和第二选择数据)的选择组件。虽然在上文中,第一选择数据由远程服务器12(其保存选择数据所基于的全局网络信息70)处的选择组件64生成,但是在其他实施例中,选择数据可以在本地生成,即选择组件64可以由用户设备来实现替代。例如,用户设备可以将全球网络信息70(一部分)存储在本地存储器中并且在本地存储器中访问它,或者如果它被存储在服务器12处,则它可以经由网络远程地访问它,并且用户设备可以从本地/远程访问的全局网络信息70生成选择数据,使得在本地接收选择数据。
在此注意,“专用”网络是指在NAT之后的任何网络。虽然这包括诸如家庭或商业网络(未示出)之类的网络,但是它也包括由例如具有可能大量用户的互联网服务提供商(ISP)操作的伪公共网络(后者在一些国家比在其他国家更常见)。
虽然以上是参考互联网协议组来描述的,但是本文给出的相关教导还适用于具有不同分层体系结构的网络。此外,尽管上面是关于TCP/UDP和IP来描述的,但是应当理解,本描述适用于可以用于生成不同类型的网络层和/或传输层分组的其它类型的传输层和/或网络层协议。
一般来说,本文中所描述的功能中的任一者可使用软件、固件、硬件(例如,固定逻辑电路)或这些实现方式的组合来实现。如本文所使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件或其组合。在软件实现方式的情况下,模块、功能或逻辑代表当在处理器(例如,一个CPU或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储器设备中。下面描述的技术的特征是平台无关的,意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。
例如,用户设备(用户终端)还可以包括使得用户终端的硬件执行操作的实体(例如软件),例如处理器功能块等等。例如,用户终端可以包括计算机可读介质,其可以被配置为保持使得用户终端,更具体地,用户终端的操作系统和相关联的硬件执行操作的指令。因此,指令用于配置操作系统和相关联的硬件以执行操作,并且以这种方式导致操作系统和相关联的硬件的变换以执行功能。指令可以由计算机可读介质通过各种不同的配置提供给用户终端。
计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为例如经由网络将指令(例如,作为载波)发送到计算设备。计算机可读介质还可以被配置为计算机可读存储介质,因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器,以及可以使用磁、光和其他技术存储指令和其他数据的其他存储设备。
本主题的第一方面涉及一种用于实现经由包括网络节点的通信网络连接的发起端点和响应端点之间的媒体会话的方法,存在可以经由其建立媒体会话的通过网络的多个可用路径,其中端点可以访问传达可用路径的直接性的与可用路径相关联的类型度量,用于对媒体会话的可用路径进行选择的类型度量,所述方法包括:访问指示可用路径的质量的网络信息,所述网络信息是从多个网络节点收集的,并且包括来自除了发起端点和接收端点之外的网络节点的贡献,所述网络节点具有可用路径的至少部分的当前可见性和/或曾经具有可用路径的至少部分的过去可见性;基于所述网络信息生成选择数据,所述选择数据用于影响所述选择;以及将所述选择数据发送到所述端点中的至少一个,以使所述端点为所述媒体会话选择较高质量但较不直接的可用路径,优选于更直接但较低质量的可用路径。
在实施例中,网络信息可以包括从先前建立的媒体会话所采集的遥测数据,该遥测数据包括来自除了发起端点和接收端点之外的端点的贡献。遥测数据的一部分可能是从先前经由与可用路径之一重叠的路径建立的媒体会话以及基于遥测数据的一部分而生成的选择数据中所采集的。遥测数据的第一部分可以是从先前经由与可用路径之一的一部分重叠的第一路径建立的第一媒体会话采集的,并且遥测数据的第二部分可能是从先前经由与该可用路径的不同部分重叠的第二路径建立的第二媒体会话采集的,并且可以基于遥测数据的第一部分和第二部分两者生成选择数据。
网络可以是互联网,其中数据在互联网的各个网络之间路由,并且网络信息可以包括拓扑信息,其针对可用路径中的至少一个传达假设沿该路径传输数据所要做出的路由决策的性质。互联网可以包括MPLS链路,并且拓扑信息可以将该可用路径标识为涉及MPLS链路,该选择数据用于将所述选择偏向该可用路径。数据可以根据ISP对等协议在各个网络之间路由,并且拓扑信息可以涉及ISP对等协议,ISP对等协议确定假设沿着该可用路径传输数据所将要做出的路由决策的性质。网络信息可以包括已经手动配置的拓扑信息。
网络信息可以涉及形成可用路径中的至少一个的一部分的至少一个网络节点的当前状态。
网络信息可以包括对于至少一个网络节点的当前资源可用性的测量;和/或指示所述至少一个网络节点的当前性能的性能度量;和/或指示所述至少一个网络节点当前是否正常工作的指示符。
类型度量可以根据ICE协议被分配给与可用路径相关联的网络地址。
为媒体会话选择的较高质量可用路径可以包括具有不包括任何媒体中继服务器的较低质量可用路径的媒体中继服务器。媒体中继服务器可以是不包括任何TURN服务器的具有较低质量路径的TURN服务器。
为媒体会话选择的较高质量可用路径可以包括具有不包括任何网络地址转换器的较低质量可用路径的网络地址转换器。
第二方面涉及一种包括存储在计算机可读存储介质上的代码的计算机程序产品,所述代码在被执行时被配置为实现用于实现经由通信网络连接的发起端点和响应端点之间的媒体会话的方法,所述通信网络包括网络节点,存在通过所述网络的多个可用路径,经由所述可用路径可以建立所述媒体会话,所述方法包括:访问传达所述可用路径的直接性的与可用路径相关联的类型度量,所述类型度量用于对用于媒体会话的可用路径做出选择;接收用于影响所述选择的选择数据,所述选择数据基于指示可用路径的质量的网络信息而生成,所述网络信息从多个网络节点收集并且包括来自除了发起端点和接收端点之外的具有可用路径的至少部分的当前可见性和/或曾经具有可用路径的至少部分的过去可见性的网络节点的贡献;基于所述选择数据,为所述媒体会话选择较高质量但较不直接可用的路径,优选于较低质量但较直接的可用路径,其中所述媒体会话经由所选择的路径建立。
该方法还可以包括:在媒体会话期间,检测所选择的路径的质量的降低;并且作为响应选择新的可用路径,所述媒体会话经由新选择的路径继续。
还可以基于在发起端点和响应端点中的至少一个处所保持的本地遥测信息来生成选择数据,本地遥测信息是针对该端点先前参与的至少一个先前媒体会话所采集的。
该方法可以包括基于类型度量和选择数据向可用路径分配优先级,其中,较高质量可用路径具有比较低质量可用路径高的优先级,并且在该基础上被选择。
该方法可以包括至少基于类型度量来向可用路径分配优先级,并且生成可用路径的集合,其中选择步骤被限制为从该集合中进行选择,并且较低质量可用路径在选择步骤之前从该集合中移除,以便使得选择较高质量的可用路径代替。
本主题的第三方面涉及一种用于经由通信网络在用户设备和另一端点之间实现媒体会话的用户设备,存在通过网络的多个可用路径,经由所述可用路径可以建立媒体会话,所述用户设备包括:访问组件,被配置为访问传达所述可用路径的直接性的分配给可用路径的类型度量,所述类型度量用于对用于所述媒体会话的可用路径做出选择;被配置为接收用于影响所述选择的选择数据的输入,所述选择数据基于指示可用路径的质量的网络信息而生成,所述网络信息从多个网络节点收集并且包括来自除用户设备和另一端点之外的网络节点的贡献,所述网络节点具有可用路径的至少部分的当前可见性和/或曾经具有可用路径的至少部分的过去可见性;路径选择组件,其被配置为基于所述选择数据为所述媒体会话选择较高质量可用但较不直接的路径,优选于更直接但较低质量的可用路径,其中所述媒体会话经由所选择的路径建立。
第四方面涉及一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机实现的方法,所述方法包括在发起端点和响应端点中的至少一个的计算机处实现以下步骤:在端点处生成候选对的集合,每个候选对包括通过在发起端点与响应端点之间交换网络地址而可用于发起端点的相应网络地址和可用于响应端点的相应网络地址,媒体会话通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立:在所述端点处接收与所述网络地址中的至少一个有关并且指示假设该网络地址要用于媒体会话则将被遍历的通过所述网络的路径的质量的选择数据;接收与每个网络地址相关联的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量;以及所述端点对所述集合中的至少一个候选对执行连通性检查以确定所述候选对是否有效,其中根据所述类型度量和所述选择数据来选择所述至少一个候选对。
第五方面涉及一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机,所述计算机体现在所述发起端点和响应端点之一处,所述计算机包括:候选对生成组件,被配置为生成候选对的集合,每一个候选对包括通过在所述发起端点和所述响应端点之间交换网络地址而可用于所述发起端点的相应网络地址和可用于所述响应端点的相应网络地址,所述媒体会话通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立:i)在端点处接收与网络地址中的至少一个相关的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过网络的路径的质量的选择数据,ii)接收与每个网络地址相关联的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量,以及iii)所述端点对所述集合中的至少一个候选对执行连通性检查,以确定所述候选对是否有效,其中根据所述类型度量和所述选择数据来选择所述至少一个候选对。
可以经由通信网络接收选择数据的至少一部分和/或可以基于在端点处本地保存的网络信息来生成选择数据的至少一部分。
第六方面涉及一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的代码,并且所述代码被配置为当在发起端点和响应端点中的一个的计算机上执行时,以使得执行以下步骤:在所述端点处生成候选对的集合,每个候选对包括通过在所述发起端点与所述响应端点之间交换网络地址而可用于所述发起端点的相应网络地址和可用于所述响应端点的相应网络地址,所述媒体会话通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立:在所述端点处接收与所述网络地址中的至少一个有关的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的质量的选择数据;接收与每个网络地址相关联的并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量;以及所述端点对所述集合中的至少一个候选对执行连通性检查以确定所述候选对是否有效,其中根据所述类型度量和所述选择数据来选择所述至少一个候选对。
在实施例中,类型度量与符合ICE协议的网络地址相关联。
可以根据类型度量和选择数据将相应的第一对优先级分配给每个候选对,所选择的至少一个候选对优选于该集合中的具有比所述至少一个候选对较低的第一对优先级的另一候选对,所述至少一个候选对在该基础上被选择。可以根据类型度量向候选对中的每个分配相应的第二对优先级,其中第二对优先级独立于选择数据,通过根据选择数据修改第二对优先级而分配第一对优先级,所述至少一个候选对具有比另一候选对低的第二对优先级,但具有比其高的第一对优先级。第二对优先级可以根据ICE协议分配。
可以根据选择数据从该集合中移除候选对,其中不对所移除的候选对执行连通性检查,所述至少一个候选对根据类型度量来选择,并且代替去除的候选对。
可以建立媒体会话以在发起端点和响应端点之间建立实时通信事件。实时通信事件可以是语音和/或视频呼叫。
虽然已经用对特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上面描述的具体特征和动作是作为实现权利要求的示例形式而公开的。

Claims (15)

1.一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机实现的方法,所述方法包括在所述发起端点和所述响应端点中的至少一个的计算机处实现以下步骤:
在所述端点处生成候选对的集合,每个候选对包括通过在所述发起端点与所述响应端点之间交换网络地址而可用于所述发起端点的相应网络地址和可用于所述响应端点的相应网络地址,所述媒体会话通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立:
在所述端点处接收与所述网络地址中的至少一个有关的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的质量的选择数据;
接收与每个网络地址相关联的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量;以及
所述端点对所述集合中的至少一个候选对执行连通性检查以确定所述候选对是否有效,其中,所述至少一个候选对是根据所述类型度量和所述选择数据来选择的。
2.根据权利要求1所述的方法,其中,所述类型度量根据ICE协议与所述网络地址相关联。
3.根据权利要求1所述的方法,包括根据所述类型度量和所述选择数据向所述候选对中的每一个候选对分配相应的第一对优先级,所选择的所述至少一个候选对优选于所述集合中的具有比所述至少一个候选对低的第一对优先级的另一候选对,所述至少一个候选对在该基础上被选择。
4.根据权利要求3所述的方法,包括根据所述类型度量向所述候选对中的每一个候选对分配相应的第二对优先级,其中,所述第二对优先级独立于所述选择数据,所述第一对优先级通过根据所述选择数据修改所述第二对优先级来分配,所述至少一个候选对具有比另一候选对低的第二对优先级但具有比所述另一候选对高的第一对优先级。
5.根据权利要求4所述的方法,其中,所述第二对优先级是根据ICE协议分配的。
6.根据权利要求1所述的方法,包括根据所述选择数据从所述集合中移除候选对,其中,对所移除的候选对不执行连通性检查,所述至少一个候选对根据所述类型度量被选择并且替代所移除的候选对。
7.根据权利要求1所述的方法,其中,所述媒体会话被建立以在所述发起端点和所述响应端点之间建立实时通信事件。
8.一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机,所述计算机在所述发起端点和所述响应端点中的一个处实施,所述计算机包括:
候选对生成组件,被配置为生成候选对的集合,每一个候选对包括通过在所述发起端点和所述响应端点之间交换网络地址而可用于所述发起端点的相应网络地址和可用于所述响应端点的相应网络地址,通过应用以下步骤,使用所述集合中的被确定为有效的候选对来建立所述媒体会话:i)在端点处接收与网络地址中的至少一个相关的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过网络的路径的质量的选择数据,ii)接收与每个网络地址相关联的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量,以及iii)所述端点对所述集合中的至少一个候选对执行连通性检查,以确定所述候选对是否有效,其中,所述至少一个候选对是根据所述类型度量和所述选择数据来选择的。
9.根据权利要求8所述的计算机,其中,所述选择数据的至少一部分经由所述通信网络被接收和/或所述选择数据的至少一部分基于在所述端点处本地保持的网络信息来生成。
10.一种用于经由通信网络在发起端点和响应端点之间实现媒体会话的计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的代码,并且所述代码被配置为当在所述发起端点和所述响应端点中的一个的计算机上执行时,使得执行以下步骤:
在所述端点处生成候选对的集合,每个候选对包括通过在所述发起端点与所述响应端点之间交换网络地址而可用于所述发起端点的相应网络地址和可用于所述响应端点的相应网络地址,所述媒体会话通过应用以下步骤利用所述集合中的被确定为有效的候选对来建立:
在所述端点处接收与所述网络地址中的至少一个有关的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的质量的选择数据;
接收与每个网络地址相关联的、并且指示假设该网络地址用于所述媒体会话则将被遍历的通过所述网络的路径的直接性的相应类型度量;以及
所述端点对所述集合中的至少一个候选对执行连通性检查以确定所述候选对是否有效,其中,所述至少一个候选对是根据所述类型度量和所述选择数据来选择的。
11.根据权利要求7所述的方法,其中,所述实时通信事件是语音和/或视频呼叫。
12.根据权利要求8所述的计算机,其中,所述类型度量根据ICE协议与所述网络地址相关联。
13.根据权利要求8所述的计算机,包括优先级生成组件,其被配置为根据所述类型度量和所述选择数据向所述候选对中的每一个候选对分配相应的第一对优先级,所选择的所述至少一个候选对优选于所述集合中的具有比所述至少一个候选对低的第一对优先级的另一候选对,所述至少一个候选对在该基础上被选择。
14.根据权利要求8所述的计算机,其中,所述优先级生成组件被配置为根据所述类型度量向所述候选对中的每一个分配相应的第二对优先级,其中,所述第二对优先级独立于所述选择数据,所述第一对优先级通过根据所述选择数据修改所述第二对优先级来分配,所述至少一个候选对具有比另一候选对低的第二对优先级但具有比所述另一候选对高的第一对优先级。
15.根据权利要求14所述的计算机,其中,所述第二对优先级是根据ICE协议分配的。
CN201580051881.2A 2014-09-25 2015-09-24 用于网络端点之间的媒体会话的方法及装置 Active CN106716963B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/497,141 2014-09-25
US14/497,141 US9596272B2 (en) 2014-09-25 2014-09-25 Media session between network endpoints
PCT/US2015/051972 WO2016049332A1 (en) 2014-09-25 2015-09-24 Media session between network endpoints

Publications (2)

Publication Number Publication Date
CN106716963A true CN106716963A (zh) 2017-05-24
CN106716963B CN106716963B (zh) 2020-09-08

Family

ID=54261122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580051881.2A Active CN106716963B (zh) 2014-09-25 2015-09-24 用于网络端点之间的媒体会话的方法及装置

Country Status (4)

Country Link
US (1) US9596272B2 (zh)
EP (1) EP3178211B1 (zh)
CN (1) CN106716963B (zh)
WO (1) WO2016049332A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10868841B1 (en) 2020-05-29 2020-12-15 Ringcentral, Inc. Voice over internet protocol (VoIP) call quality
WO2021072744A1 (en) * 2019-10-18 2021-04-22 Ringcentral, Inc. Improved voice over internet protocol (voip) call quality
CN113348651A (zh) * 2019-01-24 2021-09-03 威睿公司 切片的虚拟网络功能的动态云间放置
CN114844870A (zh) * 2022-03-25 2022-08-02 阿里巴巴(中国)有限公司 一种媒体流获取方法、装置、电子设备及存储介质
US11588733B2 (en) 2019-05-14 2023-02-21 Vmware, Inc. Slice-based routing
US11595315B2 (en) 2019-05-14 2023-02-28 Vmware, Inc. Quality of service in virtual service networks
US11902080B2 (en) 2019-05-14 2024-02-13 Vmware, Inc. Congestion avoidance in a slice-based network

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2016069908A1 (en) * 2014-10-29 2016-05-06 Kodiak Networks, Inc. System and method to leverage web real-time communication for implementing push-to-talk solutions
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
CN106411836B (zh) * 2016-05-30 2017-09-19 深圳市鼎盛智能科技有限公司 通话连接方法及客户端
US10511569B2 (en) * 2016-08-15 2019-12-17 Facebook, Inc. Techniques for providing multi-modal multi-party calling
US10958706B2 (en) 2018-11-02 2021-03-23 Infinite Convergence Solutions, Inc. Devices and method for voice over internet protocol call continuity
US10979314B2 (en) 2019-01-24 2021-04-13 Vmware, Inc. Dynamic inter-cloud placement of virtual network functions for a slice
US10897423B2 (en) 2019-05-14 2021-01-19 Vmware, Inc. Congestion avoidance in a slice-based network
US10958579B2 (en) 2019-05-14 2021-03-23 Vmware, Inc. Congestion avoidance in a slice-based network
CN113315823A (zh) * 2021-05-21 2021-08-27 广州赞赏信息科技有限公司 一种低延迟音视频传输方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101257433A (zh) * 2007-03-01 2008-09-03 华为技术有限公司 实现网络地址转换穿越的方法和系统
US20100165976A1 (en) * 2008-12-29 2010-07-01 Microsoft Corporation Handling early media in voip communication with multiple endpoints
US20110208802A1 (en) * 2010-02-19 2011-08-25 Microsoft Corporation Distributed connectivity policy enforcement with ice
CN102484887A (zh) * 2009-05-26 2012-05-30 诺基亚公司 用于传送媒体会话的方法和装置
CN103620605A (zh) * 2011-06-29 2014-03-05 微软公司 将搜索历史组织成合集

Family Cites Families (40)

* Cited by examiner, † Cited by third party
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
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
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
US7962621B2 (en) 2009-01-13 2011-06-14 Microsoft Corporation—One Microsoft Way Policy service system architecture for sessions created using STUN
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
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
WO2013107504A1 (en) 2012-01-17 2013-07-25 Telefonaktiebolaget L M Ericsson (Publ) Ice based nat traversal
CN102685268B (zh) 2012-05-22 2015-02-18 北京邮电大学 一种VoIP中基于ICE协议的快速私网穿越方法
US8982708B1 (en) 2012-09-24 2015-03-17 Rockwell Collins, Inc. Priority aware dynamic routing protocol for ad-hoc networks
US8601144B1 (en) 2012-11-27 2013-12-03 Sansay, Inc. Systems and methods for automatic ICE relay candidate creation
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101257433A (zh) * 2007-03-01 2008-09-03 华为技术有限公司 实现网络地址转换穿越的方法和系统
US20100165976A1 (en) * 2008-12-29 2010-07-01 Microsoft Corporation Handling early media in voip communication with multiple endpoints
CN102484887A (zh) * 2009-05-26 2012-05-30 诺基亚公司 用于传送媒体会话的方法和装置
US20110208802A1 (en) * 2010-02-19 2011-08-25 Microsoft Corporation Distributed connectivity policy enforcement with ice
CN103620605A (zh) * 2011-06-29 2014-03-05 微软公司 将搜索历史组织成合集

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113348651A (zh) * 2019-01-24 2021-09-03 威睿公司 切片的虚拟网络功能的动态云间放置
CN113348651B (zh) * 2019-01-24 2023-06-09 威睿公司 切片的虚拟网络功能的动态云间放置
US11588733B2 (en) 2019-05-14 2023-02-21 Vmware, Inc. Slice-based routing
US11595315B2 (en) 2019-05-14 2023-02-28 Vmware, Inc. Quality of service in virtual service networks
US11902080B2 (en) 2019-05-14 2024-02-13 Vmware, Inc. Congestion avoidance in a slice-based network
WO2021072744A1 (en) * 2019-10-18 2021-04-22 Ringcentral, Inc. Improved voice over internet protocol (voip) call quality
US10868841B1 (en) 2020-05-29 2020-12-15 Ringcentral, Inc. Voice over internet protocol (VoIP) call quality
CN114844870A (zh) * 2022-03-25 2022-08-02 阿里巴巴(中国)有限公司 一种媒体流获取方法、装置、电子设备及存储介质
CN114844870B (zh) * 2022-03-25 2024-03-26 阿里巴巴(中国)有限公司 一种媒体流获取方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US20160094589A1 (en) 2016-03-31
EP3178211B1 (en) 2019-10-23
CN106716963B (zh) 2020-09-08
WO2016049332A1 (en) 2016-03-31
US9596272B2 (en) 2017-03-14
EP3178211A1 (en) 2017-06-14

Similar Documents

Publication Publication Date Title
CN106716963A (zh) 网络端点之间的媒体会话
CN106716976B (zh) 网络端点之间的媒体会话
US10972510B2 (en) Media session between network endpoints
US11019117B2 (en) Conferencing server
EP3363186B1 (en) Media session between network endpoints
CN108702394B (zh) 网络端点间的媒体会话
US10230771B2 (en) Media session
EP2561670B1 (en) Multilevel routing
US11240140B2 (en) Method and system for interfacing communication networks
CN114866521B (zh) 会议服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant