CN101179581A - 一种采用ice中继候选地址进行媒体传输的方法 - Google Patents
一种采用ice中继候选地址进行媒体传输的方法 Download PDFInfo
- Publication number
- CN101179581A CN101179581A CNA2007101794450A CN200710179445A CN101179581A CN 101179581 A CN101179581 A CN 101179581A CN A2007101794450 A CNA2007101794450 A CN A2007101794450A CN 200710179445 A CN200710179445 A CN 200710179445A CN 101179581 A CN101179581 A CN 101179581A
- Authority
- CN
- China
- Prior art keywords
- address
- candidate site
- port numbers
- agency
- stun server
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
一种采用ICE中继候选地址进行媒体传输的方法,是客户端代理在向STUN服务器发送了Allocate请求并收到携带中继候选地址的Allocate应答后,再向该服务器分配的中继候选地址发送一个携带自定义的、符合国际通信标准的CHANGED-TUPLE属性的Binding请求,以便STUN服务器接收到带有CHANGED-TUPLE属性的Binding请求后,用该请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址(即包含IP地址和端口号的STUN服务器为其分配的中继候选地址),以及传输协议的新5元组替代原先由Allocate请求产生的、包含STUN服务器的监听地址的内部5元组。该方法不占用STUN服务器的监听地址来转发媒体流,大大提高了STUN服务器的转发效率,改善了媒体流的传送效率,降低了媒体的传输时延。
Description
技术领域
本发明涉及一种采用交互式连接建立ICE的中继候选地址穿越网络地址转换器NAT进行媒体传输的方法,属于计算机网络技术领域。
背景技术
交互式连接建立ICE(Interactive Connectivity Establishment)是近几年来IETF提出的解决NAT(Network Address Translator)穿越的技术方案。ICE适用于任何采用offer/answer模型的协议,集成了STUN和TURN两种技术,不需要对这两个协议做任何扩展就可以实现媒体流穿越所有类型的NAT。因此,ICE已经成为IETF组织的当前研究热点之一。
为了解决NAT穿越问题,IETF组织曾经提出过应用层网关ALG(Application Layer Gateway)、中间箱通信MIDCOM(MiddleboxCommunications)、UDP穿越NAT的简单方法STUN(Simple Traversal of UDPThrough NAT)和使用中继方式穿越NAT(TURN,Traversal Using Relay NAT)等多种方案,但是,这些技术各有利弊,且只有在特定拓扑结构的网络中才能发挥各自的功能,因此通用性不强。ICE是一种通用的方案,既实现了STUN不能解决的对称型NAT的穿越,又解决了单独使用TURN所带来的资源巨额消耗的问题,能够综合利用这两种协议的优点并加以简化,是一种有广阔应用前景的NAT穿越方案。
ICE的主要思想是在建立媒体流信道前搜集多种候选地址,并按照设定的算法和规则给出这些候选地址的优先级,再经过通信双方一系列的信息交互与连通性检测,选出最佳的候选对地址来完成媒体的通信。
但是,ICE的现有机制中存在以下问题:在对称型NAT环境中,只有对中继候选对地址的连通性检测是成功的。其结果是,一侧的客户端使用STUN服务器(该服务器同时具有STUN和TURN服务器的功能)的中继候选地址接收和发送媒体,而另一侧的客户端使用STUN服务器的监听地址来收发媒体包。由于占用了服务器的监听地址,导致媒体传输的效率低,传输时延大,整体性能差。
下面,对使用ICE穿越对称型NAT的过程作具体介绍和分析。
先简单介绍NAT的类型,按照NAT处理UDP包的方式,现有的NAT可以分为四种类型:完全圆锥型NAT(Full Cone NAT)、地址受限圆锥型NAT(Address Restricted Cone NAT)、端口受限圆锥型NAT(Port Restricted ConeNAT)和对称型NAT(Symmetric NAT)。前三种类型的NAT又统称为圆锥型NAT,NAT地址映射只与源地址有关,而对称型NAT的NAT地址映射则与源地址和目的地址都有关,是最难穿越的一种NAT类型。
由于对称型NAT的限制最为严格,只有内网的地址(IP地址+端口)向外网的地址(IP地址+端口)发送包后才能接受该外网的地址(IP地址+端口)发来的包,针对每一对源端/目的地址都在NAT上单独分配一个映射地址。因此,对称型NAT对于包的过滤性更强,安全性也更高,能够更加有效地阻止外网主机向内网主机发起的攻击。但是,正是由于这种每个连接都需要在NAT穿“洞”的机制使得对称型NAT非常不易穿越。
下面针对对称型NAT,进一步分析在现有的ICE机制中,采用中继候选地址来传送媒体流所带来的问题。(先对图中英文缩写或标识说明如下:“S”和“D”分别代表请求或应答消息的源地址和目的地址,“MAP”和“RELAY”分别代表服务器反身候选地址和中继候选地址,“L/R-PRIV”是代理L或R的主机候选地址,“L/R-NAT-PUB i”是代理L或R在NAT上映射的公网地址,序号i为自然数。“L/R-REL-PUB”是代理L或R的中继候选地址,“STUN-LISTEN”是STUN服务器的监听地址。)
首先通过图1~图6的流程图来说明ICE的过程:假设代理L和代理R(这是根据流程图中代理的位置关系所采用的标识,左、右两个代理分别以代理L和代理R表示)都位于对称型NAT后,共用一个公网上的STUN服务器。这个例子中只分析了RTP情况,RTCP的情况类似,不再列出。在对候选对地址进行提名时采用常规提名方式。现在使用ICE方案穿越对称型NAT的具体流程如下:
(1)代理L搜集候选地址(参见图1):使用STUN的扩展方法的Allocate分配请求来实现该操作,此后向代理R发送携带L候选地址的offer;
STUN服务器收到Allocate请求后,会为该代理分配一个中继候选地址“L-REL-PUB”,同时存储该请求消息的源、目的地址(包括IP地址和端口号)和传输协议,即TURN机制中的内部5元组,并将该内部5元组记为“内L”。在图1的例子中,“内L”包括代理L的服务器反身候选地址L-NAT-PUB1的IP地址和端口号,STUN服务器的监听地址STUN-LISTEN的IP地址和端口号,传输协议。代理L搜集的候选地址包括:主机候选地址“L-PRIV”、服务器反身候选地址“L-NAT-PUB1”和中继候选地址“L-REL-PUB”。代理L进行优先级计算后,从高到低的排列结果是:L-PRIV、L-NAT-PUB1和L-REL-PUB,这也是ICE中推荐的顺序。然后,代理L会将这三个地址填写在offer中发送给代理R。
(2)代理R收到代理L的offer后,触发其搜集候选地址的过程,并且将自身的候选地址列入answer中发送给代理L(参见图2):
STUN服务器在收到代理R的Allocate请求后,同样会分配一个中继候选地址“R-REL-PUB”来存储一个内部5元组信息,即该Allocate请求的源、目的地址和传输协议,并将该5元组记为“内R”,“内R”包括代理R的服务器反身候选地址R-NAT-PUB1的IP地址和端口号,STUN服务器的监听地址STUN-LISTEN的IP地址和端口号,传输协议。代理R搜集的候选地址包括:主机候选地址“R-PRIV”、服务器反身候选地址“R-NAT-PUB1”和中继候选地址“R-REL-PUB”。经过优先级排序后,从高到低得到的结果是:R-PRIV、R-NAT-PUB1和R-REL-PUB。同样,代理R将这些候选地址填写在answer中发送给代理L。
(3)代理L收到代理R的answer后,通过STUN服务器的绑定Binding请求,开始进行候选对地址的连通性检测(参见图3):
在检测候选对地址(代理L的主机候选地址L-PRIV和代理R的主机候选地址R-PRIV)时,由于代理R的主机候选地址R-PRIV为私有地址,该检测包在L端的NAT处被丢弃。在检测候选对地址(代理L的主机候选地址L-PRIV和代理R的服务器反身候选地址R-NAT-PUB1)的过程中,虽然检测包穿过了L端的NAT,但是到达R端的对称型NAT时,由于代理R此前只通过服务器反身候选地址R-NAT-PUB1向STUN服务器的监听地址发送过包,所以只能从R-NAT-PUB1地址接收从STUN服务器的监听地址发过来的包,对于其他地址发送过来的包(例如,图3中第二次连通性检测时从代理L的NAT发送给R的NAT的包)作丢弃处理。所以,该检测包在穿越R侧的NAT时会被丢弃。
因此,候选对地址(代理L的主机候选地址L-PRIV和代理R的中继候选地址R-REL-PUB)检测成功。首先检测包通过L端的NAT到达目的端代理R的中继候选地址R-REL-PUB,该R-REL-PUB是STUN服务器分配给代理R的中继候选地址,在这个地址收到包后,形成了和内部5元组“内R”对应的外部5元组信息,即该Binding请求消息的源、目的地址和传输协议,记为“外R”。在图3中,“外R”包括代理L的服务器反身候选地址L-NAT-PUB3的IP地址和端口号,代理R的中继候选地址R-REL-PUB,传输协议。STUN服务器存储该对内/外5元组的关联信息,然后STUN服务器将检测包通过内部5元组的映射关系从STUN服务器监听地址STUN-LISTEN发往代理R在NAT侧映射的公网地址R-NAT-PUB1。最后该检测请求穿过R端的NAT,正确到达目的端地址R-PRIV。
(4)代理L结束连通性检测后,触发代理R进行连通性检测(参见图4):
代理L检测成功后,产生了一个对端候选地址:STUN-LISTEN,代理R发现这个对端候选地址不在此前代理L的候选地址中,所以将该候选地址添加到代理L的候选地址中,并触发该候选对地址(代理R的主机候选地址R-PRIV和STUN服务器监听地址STUN-LISTEN)的连通性检测。
说明一下该候选对地址的检测过程:由于ICE集成了TURN技术,TURN会为每个连接保存对应的内部5元组和外部5元组,并且,在代理L检测连通性时也保存了对应的“内R”和“外R”的关系,所以STUN服务器根据保存的地址映射关系,就可以把请求发送到代理L侧的NAT公网地址L-NAT-PUB3。检测成功后返回的应答中带有对端反身候选地址R-REL-PUB。
(5)在代理R侧还有一对候选对地址(代理R的主机候选地址R-PRIV和代理L的中继候选地址L-REL-PUB)没有进行检测,于是代理R再次发起连通性检测(参见图5):
代理R再次发起连通性检测,Binding请求从R发送到L的原理和图3的第3个Binding请求一样。代理L侧收到该请求后回送应答,并产生对端候选地址“STUN-LISTEN”,代理L检测该候选地址不在R侧的候选地址中,则将该地址添加到R的候选地址中。然后,触发代理L对候选对地址(代理L的主机候选地址L-PRIV和STUN服务器监听地址STUN-LISTEN)的连通性检测,检测同样成功。
(6)代理L和代理R连通性检测完毕后,假定代理L是主控代理,则由其进行提名候选对地址(参见图6):
提名候选对地址也是通过发送绑定请求来实现的,但在绑定请求中必需包含“USE-CANDIDATE”属性,以表明该绑定请求是用于提名候选对地址的。提名后,代理L将使用该请求的源地址和目的地址对,即代理L的主机候选地址L-PRIV和代理R的中继候选地址R-REL-PUB来收发媒体;代理R将使用收到的该请求的目的地址和源地址对,即代理R的主机候选地址R-PRIV和STUN服务器监听地址STUN-LISTEN来收发媒体。由于使用的不是默认候选对地址,因此发起offer/answer请求,以表明使用更新的候选对地址。
从上述分析可知,如果采用中继候选地址的话,由于Allocate请求形成的内部5元组信息中包含有STUN服务器的监听地址,在和外部5元组形成映射关系时,必将占用STUN服务器的监听地址来转发媒体包。虽然对于圆锥型NAT而言,不使用中继候选地址就足以穿越NAT,但是具体选用何种候选地址毕竟是取决于未知的应用,所以如果采用了中继候选地址,遵照TURN内外5元组的映射机制,必然导致占用STUN服务器的监听地址来传输媒体的后果。因此,如果要做到不占用STUN服务器的监听地址,就不能在内部5元组中出现STUN服务器的监听地址。如何实现这个目标,就成为业内科技人员关注的一个热点。
发明内容
有鉴于此,本发明的目的是提供一种采用ICE中继候选地址进行媒体传输的方法,该方法提出一种创新的传输机制:收发两端的客户端通过替换内部5元组而共用STUN服务器的一个中继候选地址来发送和接收媒体流,媒体流不再占用STUN服务器的监听地址进行转发,从而大大提高了STUN服务器的转发效率,改善了媒体流的传送效率,降低了媒体的传输时延。
为了达到上述目的,本发明提供了一种采用ICE中继候选地址进行媒体传输的方法,其特征在于,对代理获取候选对地址的过程进行改进:客户端代理在向STUN服务器发送了分配Allocate请求并收到携带中继候选地址的Allocate应答后,再向STUN服务器分配的中继候选地址发送一个携带自定义的、符合国际通信标准的CHANGED-TUPLE属性的绑定Binding请求,以便STUN服务器接收到带有CHANGED-TUPLE属性的Binding请求后,用该请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器为其分配的中继候选地址,以及传输协议的新5元组替代原先由Allocate请求产生的内部5元组,即替换Allocate请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器的监听地址,以及传输协议。
本发明是一种采用ICE中继候选地址进行媒体传输的方法,本发明技术特别适用于使用ICE方案穿越对称型NAT的场景。众所周知,使用ICE方案穿越对称型NAT时,媒体包必须通过公网上的包含TURN(Traversal Using RelayNAT,使用中继方式穿越NAT)功能的STUN(Simple Traversal ofUDP ThroughNetwork Address Translators,UDP穿越NAT的简单方法)服务器进行中转,这种传输方式的一个很大缺陷,是在中转过程中需要占用服务器的监听地址来转发媒体包,由此给STUN服务器的性能和处理能力都带来了非常大的影响。本发明方法较好地解决了上述问题,通过对ICE方案中代理获取候选对地址的过程进行改进,使得在中转包的过程中不再占用服务器的监听地址,大大提升了服务器的处理能力。
本发明方法的创新之处是通过替换内部5元组来消除占用STUN服务器监听地址转发媒体包的问题。也就是在处理对称型NAT的媒体包转发过程中,来自多个主叫用户代理的多个媒体流不再通过STUN服务器的监听地址STUN-LISTEN端口进行集中转发,而是针对不同的目的地,由不同的中继候选地址分别进行转发。这样,可以大大提高媒体流的转发实时性能,同时减轻了STUN服务器的处理压力。
本发明是个双赢的技术方案:不论对于客户端的用户体验,还是服务器的性能改善方面,都予以了很大的支持和改进,因此具有很好的推广应用前景。
附图说明
图1是现有技术的代理L搜集候选地址的过程示意图。
图2是现有技术的代理R搜集候选地址的过程示意图。
图3是现有技术的代理L进行连通性检测的过程示意图。
图4是现有技术的代理R进行连通性检测的过程示意图。
图5是现有技术的代理R再次发起连通性检测的过程示意图。
图6是现有技术的代理L提名候选对地址的过程示意图。
图7是本发明采用ICE的中继候选地址穿越NAT进行媒体传输的方法操作步骤流程图。
图8是本发明采用的Binding请求的新属性格式示意图。
图9是新属性CHANGED-TUPLE的属性值字节示意图。
图10是本发明中的代理L侧获取候选地址的流程图。
图11是本发明中的代理R侧获取候选地址的流程图。
图12是本发明中的代理L侧进行候选对地址连通检测过程的示意图。
图13是本发明中的代理R侧进行候选对地址连通检测过程的示意图。
图14是本发明最后形成媒体流传输结果的过程示意图。
图15是本发明搜集候选地址过程中代理侧的处理流程示意图。
图16是本发明搜集候选地址过程中STUN服务器侧的处理流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
先介绍几个概念或术语:候选地址是媒体传输地址,包括IP地址和端口号,候选地址是由ICE过程进行测试,以决定其是否适合用于收发媒体。代理或主机候选地址是该代理或主机的自身地址,包括IP地址和端口号。服务器反身候选地址是由代理或主机从主机候选地址发送STUN请求到STUN服务器而得到,该地址是代理或主机候选地址映射在NAT处的公网地址。中继候选地址也是由代理或主机从主机候选地址发送STUN请求到STUN服务器而得到的,该中继候选地址驻留在STUN服务器中,以供STUN服务器藉由该地址中继转发出/入该代理或主机的媒体包。候选对地址是收发两侧代理或主机将各自搜集并经过ICE过程测试成功、符合连通性要求的包含IP地址和端口号的两侧客户端代理的候选地址对。
本发明是一种采用ICE中继候选地址进行媒体传输的方法,其主要创新之处是:客户端代理在向支持中继功能的STUN服务器发送了Allocate请求并收到携带中继候选地址的Allocate后,再向STUN服务器分配的中继候选地址发送一个携带自定义的、符合国际通信标准的CHANGED-TUPLE属性的Binding请求,以便STUN服务器接收到带有CHANGED-TUPLE属性的Binding请求后,用该请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器为其分配的中继候选地址,以及传输协议的新5元组替代原先由Allocate请求产生的内部5元组,即替换Allocate请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器的监听地址,以及传输协议。
由上述介绍可知,本发明方法的适用场景是STUN服务器必须要支持中继功能,即客户端在发完Allocate请求后,如果收到的应答中包含中继候选地址,则才发送一个带有“CHANGED-TUPLE”属性的Binding请求。
参见图7,介绍本发明方法的下述五个操作步骤:
步骤1,遵循国际通信标准RFC 3489自定义一个新的属性,该属性的名字为:CHANGED-TUPLE,用于指示服务器将客户端代理的内部5元组信息修改为包含该客户端代理的中继候选地址的新5元组信息。
参见图8,介绍该自定义的CHANGED-TUPLE属性的格式,它设有三个字段:2字节的Type类型字段,用于定义该属性的类型值:0×000c;2字节的Length长度字段,用于定义该属性的值的长度为32;32比特的Value属性值字段,用于定义该属性值的每个bit都为0(参见图9)。
步骤2,收发两侧客户端代理搜集候选地址并发送给对方:客户端代理先获取自己的网络拓扑结构信息,为此后能够顺利地传输媒体流做好准备;再将各自搜集的候选地址分别通过offer/answer携带发送给对端的客户端代理。
因该步骤是本发明方法的创新和改进关键,下面详细介绍其具体操作步骤:
(21)其中一侧的代理以STUN客户端的角色向STUN服务器的监听地址发送Allocate分配请求,利用STUN的绑定机制和分配机制获取服务器反身候选地址和中继候选地址;
(22)STUN服务器对接收到的客户端代理发来的Allocate请求进行处理,在有空闲资源的前提下为该客户端分配一个中继候选地址,并通过应答消息返回给该客户端代理;同时,STUN服务器保存内部五元组信息,即该Allocate请求的源IP地址和端口号、即该侧代理的服务器反身候选地址的IP地址和端口号,Allocate请求的目的端IP地址和端口号、即STUN服务器的监听地址的IP地址和端口号,以及传输协议;
(23)该侧的代理收到Allocate应答后,检查服务器的应答内容中是否携带中继候选地址;如果在Allocate应答中携带中继候选地址,则该代理向STUN服务器为其分配的中继候选地址发送一个携带CHANGE-TUPLE属性的Binding请求,请求以该Binding请求的源IP地址和端口号、即该侧代理的服务器反身候选地址的IP地址和端口号,目的IP地址和端口号、即STUN服务器为其分配的中继候选地址的IP地址和端口号,以及传输协议的新5元组替代STUN服务器在收到Allocate请求后存储的该代理侧的原内部五元组;如果在Allocate应答中没有携带中继候选地址,则按照STUN标准设定的规范处理流程处理该应答消息;
(24)STUN服务器从给该侧的代理分配的中继候选地址收到该代理的请求消息后,先判断该请求是否为Binding请求,如果是,则跳转执行步骤(26)的操作;否则,执行步骤(25)的操作;
(25)STUN服务器按照STUN标准设定的规范处理流程处理该请求消息,流程结束;
(26)STUN服务器检查Binding请求是否携带有CHANGE-TUPLE属性,如果没有该属性,则执行步骤(25)的操作;否则,执行步骤(27)的操作;
(27)STUN服务器执行替换内部5元组的操作,并向代理返回Binding应答:用Binding请求的源端的IP地址和端口号,目的端的IP地址和端口号、即STUN服务器为其分配的中继候选地址的IP地址和端口号,以及传输协议的新5元组替换与该分配的中继候选地址相对应的原来的内部五元组,即步骤(22)中STUN服务器存储的内部五元组;
(28)经过上述四条消息的交互后,该侧的代理完成候选地址的搜集过程,再对候选地址进行排序后,将候选地址携带在offer中发送给另一侧的代理;
(29)另一侧的代理收到offer后,被触发进行包括(21)~(27)同样操作步骤的候选地址的搜集过程;然后,该另一侧的代理用answer携带搜集的候选地址,发送给对侧代理。
步骤3,收发两侧的客户端代理都获知对方的候选地址后,进行连通性检测:双方代理根据各个候选地址的优先级顺序分别进行排序配对,通过Binding请求进行连通性的检测;先由一侧的代理执行该检测过程,在该侧代理完成连通性检测后,再触发另一侧代理执行检测过程;
步骤4,完成连通性检测后,由主控方代理提名候选对地址:该主控方代理从符合连通性要求的候选对地址中选出一个适宜的候选对地址,并通过携带USE-CANDIDATE属性的Binding请求通知另一侧代理所选的候选对地址;
步骤5,收发两侧的客户端代理通过再次的offer/answer交互,确定用于RTP/RTCP媒体传输的候选对地址,再使用该选定的候选对地址传输RTP/RTCP媒体包。
本发明主要是对代理获取候选对地址的过程进行改进,下面结合附图,介绍本发明方法的实施例试验情况:
参见图10,代理L向STUN服务器发送Allocate请求后,STUN服务器为其分配了一个中继候选地址“L-REL-PUB”,同时保存了和这个中继候选地址相对应的内部5元组信息(Allocate请求的源地址和端口号、即代理L的服务器反身候选地址“L-NAT-PUB1”的IP地址和端口号,Allocate请求的目的地址和端口号、即STUN服务器监听地址“STUN-LISTEN”的IP地址和端口号,传输协议)。可以看出,这个内部5元组中包含了STUN服务器的监听地址,这就是导致中转包占用STUN监听地址的原因。STUN服务器从代理L的中继候选地址“L-REL-PUB”收到带有“CHANGED-TUPLE”属性的Binding请求后,将这个内部5元组信息修改为新的五元组(Binding请求的源地址和端口号、即代理L的新的服务器反身地址“L-NAT-PUB4”的IP地址和端口号,Binding请求的目的地址和端口号、即代理L的中继候选地址“L-REL-PUB”的IP地址和端口号,传输协议),这样就替换了原有的内部五元组,也就替换了STUN服务器的监听地址。L侧收集的候选地址不变,一起以offer形式携带发送给客户端代理R。
图9展示的是L侧的过程,R侧同样需要经过这样的过程,STUN服务器将原先R侧的内部5元组(代理R的服务器反身候选地址“R-NAT-PUB1”的IP地址和端口号、STUN服务器的监听地址STUN-LISTEN的IP地址和端口号、传输协议)替换成新的内部5元组(代理R的新的服务器反身候选地址R-NAT-PUB4的IP地址和端口号、代理R的中继候选地址R-REL-PUB的IP地址和端口号、传输协议)。同样代理R收集的候选地址不变,用answer携带发送给L。其具体过程参见图11。
接着,进行L侧的连通性检测时(参见图12),当L侧的Binding请求到达STUN服务器为代理R分配的中继候选地址“R-REL-PUB”时,产生的外部5元组(Binding请求的源地址和端口号、即代理L的服务器反身候选地址L-NAT-PUB3的IP地址和端口号,Binding请求的目的地址和端口号、即代理R的中继候选地址R-REL-PUB的IP地址和端口号,传输协议)将和图11提到的新的内部5元组(代理R的新的服务器反身候选地址R-NAT-PUB4的IP地址和端口号、代理R的中继候选地址R-REL-PUB的IP地址和端口号、传输协议)进行配对,然后通过代理R的中继候选地址“R-REL-PUB”向R的服务器反身候选地址“R-NAT-PUB4”发送Binding请求到达代理R。应答消息按照原路返回。
同样地,在R侧的连通性检测过程时(参见图13),当代理R的Binding请求到达STUN服务器为代理L分配的中继候选地址“L-REL-PUB”时,STUN服务器会绑定该外部五元组(Binding请求的源地址和端口号、即代理R的服务器反身候选地址“R-NAT-PUB2”的IP地址和端口号,Binding请求的目的地址和端口号、即代理R的中继候选地址“L-REL-PUB”的IP地址和端口号,传输协议)和图10中内部五元组(代理L的服务器反身候选地址“L-NAT-PUB4”的IP地址和端口号、代理L的中继候选地址“L-REL-PUB”的IP地址和端口号、传输协议)。当代理R收到的Binding应答后,发现对端候选地址L-REL-PUB已经在代理L的候选地址队列中,所以不需要再次进行类似图5中对新增的候选对地址进行检测的过程。
最后,在进行图6所示的提名候选对地址的过程中形成的媒体流传输的最后结果如图14所示,从图14中可以看出,在本发明方法所形成的结果中,媒体流的传输将不再占用STUN服务器的监听地址:
上述分析介绍了采用本发明方法后的整个ICE过程,总结上述过程,下面再对步骤1中代理搜集候选地址过程中的左右两侧代理分别与STUN服务器进行交互,完成候选地址的搜集过程;并发给对方代理的细化过程如下(参见图15)。
(1)代理向STUN服务器的监听地址发送Allocate请求,请求获取服务器反身候选地址和中继候选地址;
(2)代理收到STUN服务器的Allocate应答后,检查Allocate应答的内容;
(3)判断该应答是否携带中继候选地址,如果没有携带,执行步骤(4)的操作;否则,执行步骤(5)的操作;
(4)按照ICE协议标准规定的方式进行正常处理应答;
(5)向STUN服务器分配的中继候选地址发送携带CHANGE-TUPLE属性的Binding请求,请求STUN服务器用该Binding请求的源IP地址和端口号、目的IP地址和端口号(即中继候选地址的IP地址和端口号)、传输协议的新的5元组替代旧的内部五元组(即STUN服务器在收到Allocate请求后存储的Allocate请求的源IP地址和端口号,Allocate请求的目的IP地址和端口号、即STUN服务器的监听地址的IP地址和端口号,传输协议)。
下面参见图16说明STUN服务器的细化过程:
(1)STUN服务器收到代理发来的Allocate请求后,进行处理,在还有空闲资源的前提下为客户端分配一个中继候选地址,并通过应答消息返回给客户端。同时STUN服务器保存内部五元组信息,即Allocate请求的源IP地址和端口号、Allocate请求的目的端IP地址和端口号(即STUN服务器的监听地址的IP地址和端口号)、传输协议;
(2)STUN服务器从给代理分配的中继候选地址收到请求消息后,判断该请求是否为Binding请求;如果是Binding请求,执行步骤(4)的操作;否则,执行步骤(3)的操作;
(3)STUN服务器按照STUN协议标准的规范流程处理该请求消息,结束流程;
(4)STUN服务器检查Binding请求的属性,判断其中是否存在有CHANGED-TUPLE属性,如果存在,则执行步骤(5)的操作;否则,返回执行步骤(3)的操作;
(5)STUN服务器执行替换内部5元组的操作:用Binding请求的源IP地址和端口号、目的端的IP地址和端口号(即STUN分配的中继候选地址的IP地址和端口号)以及传输协议替换与该分配的中继候选地址相对应的旧的内部五元组,即步骤(1)中存储的内部五元组。
Claims (8)
1.一种采用ICE中继候选地址进行媒体传输的方法,其特征在于,对代理获取候选对地址的过程进行改进:客户端代理在向STUN服务器发送了分配Allocate请求并收到携带中继候选地址的Allocate应答后,再向STUN服务器分配的中继候选地址发送一个携带自定义的、符合国际通信标准的CHANGED-TUPLE属性的绑定Binding请求,以便STUN服务器接收到带有CHANGED-TUPLE属性的Binding请求后,用该请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器为其分配的中继候选地址,以及传输协议的新5元组替代原先由Allocate请求产生的内部5元组,即替换Allocate请求的包含IP地址和端口号的源地址,包含IP地址和端口号的目的地址、即包含IP地址和端口号的STUN服务器的监听地址,以及传输协议。
2.根据权利要求1所述的进行媒体传输的方法,其特征在于:所述方法适用于支持中继功能的STUN服务器,即客户端在发完Allocate请求后,如果收到的应答中包含中继候选地址,则才发送一个带有“CHANGED-TUPLE”属性的Binding请求。
3.根据权利要求1所述的进行媒体传输的方法,其特征在于:所述方法包括下列操作步骤:
(1)遵循国际通信标准自定义一个新的属性,该属性的名字为:CHANGED-TUPLE,用于指示服务器将客户端代理的内部5元组信息修改为包含该客户端代理的中继候选地址的新5元组信息;
(2)收发两侧客户端代理搜集候选地址并发送给对方:客户端代理先获取自己的网络拓扑结构信息,为顺利地传输媒体流做好准备,并将各自搜集的候选地址分别通过提议offer/应***swer携带发送给对端的客户端代理;
(3)收发两侧的客户端代理都获知对方的候选地址后,进行连通性检测:双方代理根据各个候选地址的优先级顺序分别进行排序配对,通过Binding请求进行连通性的检测;先由一侧的代理执行该检测过程,在该侧代理完成连通性检测后,再触发另一侧代理执行检测过程;
(4)完成连通性检测后,由主控方代理提名候选对地址:该主控方代理从符合连通性要求的候选对地址中选出一个适宜的候选对地址,并通过携带USE-CANDIDATE属性的Binding请求通知另一侧代理所选的候选对地址;
(5)收发两侧的客户端代理通过再次的offer/answer交互,确定用于RTP/RTCP媒体传输的候选对地址,再使用该选定的候选对地址传输RTP/RTCP媒体包。
4.根据权利要求1或3所述的进行媒体传输的方法,其特征在于:所述自定义的CHANGED-TUPLE属性格式设有三个字段:2字节的Type类型字段,用于定义该属性的类型值:0×000c;2字节的Length长度字段,用于定义该属性的值的长度为32;32比特的Value属性值字段,用于定义该属性值的每个bit都为0。
5.根据权利要求3所述的进行媒体传输的方法,其特征在于:所述步骤(2)进一步包括下列操作内容:
(21)其中一侧的代理以STUN客户端的角色向STUN服务器的监听地址发送Allocate分配请求,利用STUN的绑定机制和分配机制获取服务器反身候选地址和中继候选地址;
(22)STUN服务器对接收到的客户端代理发来的Allocate请求进行处理,在有空闲资源的前提下为该客户端分配一个中继候选地址,并通过应答消息返回给该客户端代理;同时,STUN服务器保存内部五元组信息,即该Allocate请求的源IP地址和端口号,Allocate请求的目的端IP地址和端口号、即STUN服务器的监听地址的IP地址和端口号,以及传输协议;
(23)该侧的代理收到Allocate应答后,检查服务器的应答内容中是否携带中继候选地址;如果在Allocate应答中携带中继候选地址,则该代理向STUN服务器为其分配的中继候选地址发送一个携带CHANGE-TUPLE属性的Binding请求,请求以该Binding请求的源IP地址和端口号,目的IP地址和端口号、即STUN服务器为其分配的中继候选地址的IP地址和端口号,以及传输协议的新5元组替代STUN服务器在收到Allocate请求后存储的该代理侧的原内部五元组;如果在Allocate应答中没有携带中继候选地址,则按照STUN标准设定的规范处理流程处理该应答消息;
(24)STUN服务器从给该侧的代理分配的中继候选地址收到该代理的请求消息后,先判断该请求是否为Binding请求,如果是,则跳转执行步骤(26)的操作;否则,执行步骤(25)的操作;
(25)STUN服务器按照STUN标准设定的规范处理流程处理该请求消息,流程结束;
(26)STUN服务器检查Binding请求是否携带有CHANGE-TUPLE属性,如果没有该属性,则执行步骤(25)的操作;否则,执行步骤(27)的操作;
(27)STUN服务器执行替换内部5元组的操作,并向代理返回Binding应答:用Binding请求的源端的IP地址和端口号,目的端的IP地址和端口号、即STUN服务器为其分配的中继候选地址的IP地址和端口号,以及传输协议的新5元组替换与该分配的中继候选地址相对应的原来的内部五元组,即步骤(22)中STUN服务器存储的内部五元组;
(28)经过上述四条消息的交互后,该侧的代理完成候选地址的搜集过程,再对候选地址进行排序后,将候选地址携带在offer中发送给另一侧的代理;
(29)另一侧的代理收到offer后,被触发进行包括(21)~(27)同样操作步骤的候选地址的搜集过程;然后,该另一侧的代理用answer携带搜集的候选地址,发送给对侧代理。
6.根据权利要求3所述的进行媒体传输的方法,其特征在于:所述步骤(22)中STUN服务器保存的内部五元组信息是该Allocate请求的源IP地址和端口号、即该侧代理的服务器反身候选地址的IP地址和端口号,Allocate请求的目的端IP地址和端口号、即STUN服务器的监听地址的IP地址和端口号,以及传输协议。
7.根据权利要求3所述的进行媒体传输的方法,其特征在于:所述步骤(23)中携带CHANGE-TUPLE属性的Binding请求中的五元组信息的源IP地址和端口号是该侧代理的服务器反身候选地址的IP地址和端口号,目的IP地址和端口号是STUN服务器为该侧代理分配的中继候选地址的IP地址和端口号,以及传输协议。
8.根据权利要求1或3或6所述的进行媒体传输的方法,其特征在于:所述候选地址是包括IP地址和端口号的媒体传输地址,该候选地址是由交互式连接建立ICE过程进行测试,以决定其是否适合用于收发媒体;所述代理或主机候选地址是该代理或主机的包括IP地址和端口号的自身地址;所述服务器反身候选地址是由代理或主机候选地址发送STUN请求到STUN服务器而得到,该地址即为NAT给代理或主机自身地址映射的公网地址;所述中继候选地址是由代理或主机候选地址发送STUN请求到STUN服务器而得到的,该中继候选地址驻留在STUN服务器中,以供STUN服务器藉由该地址中继转发出/入该代理或主机的媒体包;所述候选对地址是收发两侧代理或主机将各自搜集并经过ICE过程测试成功、符合连通性要求的包含IP地址和端口号的两侧客户端代理的候选地址对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101794450A CN101179581B (zh) | 2007-12-13 | 2007-12-13 | 一种采用ice中继候选地址进行媒体传输的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101794450A CN101179581B (zh) | 2007-12-13 | 2007-12-13 | 一种采用ice中继候选地址进行媒体传输的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101179581A true CN101179581A (zh) | 2008-05-14 |
CN101179581B CN101179581B (zh) | 2010-06-09 |
Family
ID=39405666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101794450A Expired - Fee Related CN101179581B (zh) | 2007-12-13 | 2007-12-13 | 一种采用ice中继候选地址进行媒体传输的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101179581B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447749A (zh) * | 2010-10-15 | 2012-05-09 | 中兴通讯股份有限公司 | 支持nat穿越的集中式p2p***、nat穿越的方法 |
CN102457580A (zh) * | 2010-10-18 | 2012-05-16 | 中兴通讯股份有限公司 | Nat穿越方法及*** |
CN102685268A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
CN103139209A (zh) * | 2013-02-01 | 2013-06-05 | 杭州常春藤软件科技有限公司 | 媒体码流获取方法、unisaf服务器及软交换通信*** |
US8725885B1 (en) * | 2012-11-27 | 2014-05-13 | Sansay, Inc. | Securely establishing ice relay connections |
CN104104741A (zh) * | 2013-04-10 | 2014-10-15 | 友讯科技股份有限公司 | 通过二网络装置的协助完成stun技术的网络***及其方法 |
WO2014190487A1 (zh) * | 2013-05-28 | 2014-12-04 | 华为技术有限公司 | 一种会话连接建立的方法、装置和*** |
CN104811435A (zh) * | 2014-01-27 | 2015-07-29 | 阿瓦亚公司 | 用于隐藏使用中继穿越网络地址转换连接的方法和*** |
CN105187567A (zh) * | 2015-06-24 | 2015-12-23 | 东莞市南星电子有限公司 | 一种基于sip和ice的音视频通信方法 |
CN105262853A (zh) * | 2015-09-23 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 一种p2p连接nat穿越的路径建立方法、装置及*** |
CN105659568A (zh) * | 2013-10-23 | 2016-06-08 | 高通股份有限公司 | 用于对称nat的对等通信 |
CN105827748A (zh) * | 2016-05-12 | 2016-08-03 | 东莞市南星电子有限公司 | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 |
CN108141409A (zh) * | 2015-10-14 | 2018-06-08 | Ntt通信公司 | 通信***、地址通知装置、通信控制装置、终端、通信方法以及程序 |
CN108781209A (zh) * | 2015-12-22 | 2018-11-09 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN112118207A (zh) * | 2019-06-20 | 2020-12-22 | 华为技术有限公司 | 数据传输方法、服务器以及电子设备 |
CN114844870A (zh) * | 2022-03-25 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种媒体流获取方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7738468B2 (en) * | 2005-03-22 | 2010-06-15 | Logitech Europe S.A. | Method and apparatus for packet traversal of a network address translation device |
KR100765325B1 (ko) * | 2006-02-13 | 2007-10-09 | 삼성전자주식회사 | Stun을 이용한 대칭형 네트워크 주소 변환 시스템 및그 방법 |
CN100521663C (zh) * | 2006-04-18 | 2009-07-29 | 华为技术有限公司 | 点对点通信中穿越网络地址转换的方法 |
-
2007
- 2007-12-13 CN CN2007101794450A patent/CN101179581B/zh not_active Expired - Fee Related
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447749A (zh) * | 2010-10-15 | 2012-05-09 | 中兴通讯股份有限公司 | 支持nat穿越的集中式p2p***、nat穿越的方法 |
CN102447749B (zh) * | 2010-10-15 | 2015-10-28 | 中兴通讯股份有限公司 | 支持nat穿越的集中式p2p***、nat穿越的方法 |
CN102457580A (zh) * | 2010-10-18 | 2012-05-16 | 中兴通讯股份有限公司 | Nat穿越方法及*** |
CN102457580B (zh) * | 2010-10-18 | 2016-06-08 | 中兴通讯股份有限公司 | Nat穿越方法及*** |
CN102685268A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
CN102685268B (zh) * | 2012-05-22 | 2015-02-18 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
US8725885B1 (en) * | 2012-11-27 | 2014-05-13 | Sansay, Inc. | Securely establishing ice relay connections |
CN103139209A (zh) * | 2013-02-01 | 2013-06-05 | 杭州常春藤软件科技有限公司 | 媒体码流获取方法、unisaf服务器及软交换通信*** |
CN103139209B (zh) * | 2013-02-01 | 2016-01-13 | 杭州常春藤软件科技有限公司 | 媒体码流获取方法、unisaf服务器及软交换通信*** |
CN104104741B (zh) * | 2013-04-10 | 2017-08-29 | 友讯科技股份有限公司 | 通过二网络装置的协助完成stun技术的网络***及其方法 |
CN104104741A (zh) * | 2013-04-10 | 2014-10-15 | 友讯科技股份有限公司 | 通过二网络装置的协助完成stun技术的网络***及其方法 |
WO2014190487A1 (zh) * | 2013-05-28 | 2014-12-04 | 华为技术有限公司 | 一种会话连接建立的方法、装置和*** |
CN104521211B (zh) * | 2013-05-28 | 2018-04-27 | 大唐电商技术有限公司 | 一种会话连接建立的方法、装置和*** |
CN104521211A (zh) * | 2013-05-28 | 2015-04-15 | 华为技术有限公司 | 一种会话连接建立的方法、装置和*** |
CN105659568A (zh) * | 2013-10-23 | 2016-06-08 | 高通股份有限公司 | 用于对称nat的对等通信 |
CN104811435A (zh) * | 2014-01-27 | 2015-07-29 | 阿瓦亚公司 | 用于隐藏使用中继穿越网络地址转换连接的方法和*** |
CN104811435B (zh) * | 2014-01-27 | 2019-08-13 | 阿瓦亚公司 | 用于隐藏使用中继穿越网络地址转换连接的方法和*** |
CN105187567B (zh) * | 2015-06-24 | 2019-01-08 | 东莞市南星电子有限公司 | 一种基于sip和ice的音视频通信方法 |
CN105187567A (zh) * | 2015-06-24 | 2015-12-23 | 东莞市南星电子有限公司 | 一种基于sip和ice的音视频通信方法 |
CN105262853A (zh) * | 2015-09-23 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 一种p2p连接nat穿越的路径建立方法、装置及*** |
CN108141409A (zh) * | 2015-10-14 | 2018-06-08 | Ntt通信公司 | 通信***、地址通知装置、通信控制装置、终端、通信方法以及程序 |
CN108781209A (zh) * | 2015-12-22 | 2018-11-09 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN108781209B (zh) * | 2015-12-22 | 2022-03-01 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN105827748B (zh) * | 2016-05-12 | 2019-03-15 | 东莞市南星电子有限公司 | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 |
CN105827748A (zh) * | 2016-05-12 | 2016-08-03 | 东莞市南星电子有限公司 | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 |
CN112118207A (zh) * | 2019-06-20 | 2020-12-22 | 华为技术有限公司 | 数据传输方法、服务器以及电子设备 |
CN112118207B (zh) * | 2019-06-20 | 2021-12-28 | 华为技术有限公司 | 数据传输方法、服务器以及电子设备 |
CN114844870A (zh) * | 2022-03-25 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种媒体流获取方法、装置、电子设备及存储介质 |
CN114844870B (zh) * | 2022-03-25 | 2024-03-26 | 阿里巴巴(中国)有限公司 | 一种媒体流获取方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101179581B (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101179581B (zh) | 一种采用ice中继候选地址进行媒体传输的方法 | |
CN106936709B (zh) | 远程服务访问路径控制方法和相关设备 | |
CN103957287B (zh) | 一种基于nat穿透适配器的物联网设备p2p连接方法 | |
US9288113B2 (en) | Method and device for establishing structure of a communication network system | |
JP5044607B2 (ja) | ウェブ・コンテンツの高性能配信の方法 | |
CN1607781B (zh) | 利用连接操作进行网络负载平衡 | |
US8677011B2 (en) | Load distribution system, load distribution method, apparatuses constituting load distribution system, and program | |
CN101741914B (zh) | 一种p2p网络中穿透nat建立覆盖网的方法和*** | |
CN105162900B (zh) | 一种多节点协作的域名解析和缓存方法及*** | |
US20090006648A1 (en) | Network Address Translation Traversals for Peer-to-Peer Networks | |
CN104618243B (zh) | 路由方法、装置及***、网关调度方法及装置 | |
CN101800781B (zh) | 一种穿越nat的隧道过渡方法及*** | |
US20090040941A1 (en) | Method and system for measuring network performance | |
CN101321128B (zh) | 通信设备、通信网络***和通信方法 | |
CN102668467A (zh) | 计算机***和监视计算机***的方法 | |
CN104883390A (zh) | 一种访问第三方视频监控设备的方法及装置 | |
CN103297324A (zh) | 一种网络数据即时传输中的局域网定位方法 | |
Halepovic et al. | JXTA performance study | |
CN108347379A (zh) | 基于区域集中存储的内容中心网络路由方法 | |
TWI527414B (zh) | 資料交互的方法、裝置及系統 | |
CN107888710A (zh) | 一种报文转发方法及装置 | |
CN103581361A (zh) | 一种域名解析代理方法、设备及*** | |
CN102594839B (zh) | 一种识别伪dhcp服务器的方法和交换机 | |
CN102469017A (zh) | 一种中继选择方法及中继控制*** | |
CN104660728B (zh) | 基于智能家居控制***的nat穿透方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100609 Termination date: 20101213 |