当信令由SIP完成时,为什么要为rtp协商多个ip端口对

当信令由SIP完成时,为什么要为rtp协商多个ip端口对,sip,rtp,Sip,Rtp,当信令由SIP完成时,为什么要为RTP协商多个ip端口对。协商的ip端口数的最大值是多少 ip:端口对的最大数量取决于客户端的SDP。如果在SDP中发布多条m线,则客户端需要为每个m线条目分配ip:端口 SDP描述中的每个媒体行描述SDP描述中一个媒体的一个RTP流:对于每个媒体(音频、视频、桌面共享等),您将需要两个连接:一个用于RTP(ip:port from c=line),一个用于RTCP(ip:port+1)。媒体行数没有最大值 此外,SDP可以包含ICE()候选,它还可以为交换介质提

当信令由SIP完成时,为什么要为RTP协商多个ip端口对。协商的ip端口数的最大值是多少

ip:端口对的最大数量取决于客户端的SDP。如果在SDP中发布多条m线,则客户端需要为每个m线条目分配ip:端口

SDP描述中的每个媒体行描述SDP描述中一个媒体的一个RTP流:对于每个媒体(音频、视频、桌面共享等),您将需要两个连接:一个用于RTP(ip:port from c=line),一个用于RTCP(ip:port+1)。媒体行数没有最大值

此外,SDP可以包含ICE()候选,它还可以为交换介质提供可选的本地ip:端口和可选的目标ip:端口。例如:

a=candidate:4273728266 1 udp 2122260223 192.168.1.125 43897 typ host generation 0
a=candidate:4273728266 2 udp 2122260223 192.168.1.125 43897 typ host generation 0
a=candidate:779251937 1 udp 2122194687 192.168.1.107 55273 typ host generation 0
a=candidate:779251937 2 udp 2122194687 192.168.1.107 55273 typ host generation 0
a=candidate:2956466170 1 tcp 1518280447 192.168.1.125 0 typ host generation 0
a=candidate:2956466170 2 tcp 1518280447 192.168.1.125 0 typ host generation 0
a=candidate:1626442769 1 tcp 1518214911 192.168.1.107 0 typ host generation 0
a=candidate:1626442769 2 tcp 1518214911 192.168.1.107 0 typ host generation 0
在最近的rfc中,您可以找到SDP扩展以最小化连接数。a=rtcp mux(中定义)允许您在单个端口上多路传输RTP和rtcp数据。然后,您只需要一个端口,而不是每个介质两个端口

第二个扩展仅作为草稿(草案ietf mmusic sdp捆绑协商)发布,可与sdp提供/应答机制一起使用,协商接收介质的单个地址:端口组合(捆绑地址)的使用,称为捆绑介质,与多个sdp介质描述相关联(“m=”行)


使用最后两个扩展,您可以只为所有媒体线路和SDP描述的所有RTP/RTCP流建立一个ip:port连接。

为什么要发送备用ip端口对?在ip:端口对上建立连接后,备用对会发生什么情况?它们将被释放用于其他连接还是保留?它们将在创建连接后使用提供替代连接以让应用程序搜索最佳连接(即p2p连接)。请注意,在实践中,所有UDP连接通常共享同一个“本地端口”,因此在使用同一套接字时无需释放任何内容。对于TCP替代方案,我认为(待验证)应该保留它们,因为如果所选连接在将来不再工作,其他连接可能仍然是好的替代方案。如果端口不同怎么办?根据我的观察,UDP的端口不同。“可选端口可用于搜索最佳连接”。你能解释一下什么是最好的连接吗,因为所有的端口都可以使用。共享的备用端口数是否有上限?您可以查看ICE/rfc5245规范。通常,您将有多个UDP候选端口使用相同的本地端口:一个用于本地网络接口,另一个用于查找,最后一个用于查找。在实践中,如果您有多个本地网络接口,您还可以使用另一个带有翻转TCP的接口。因此,通常情况下,您会得到4个RTP候选者和4个RTP候选者,但据我所知,没有限制。