为什么在 SIP 完成信令时为 rtp 协商多个 ip-port 对

Why multiple ip-port pair are negotiated for rtp when signaling is done by SIP

当 SIP 发出信号时,为什么要为 RTP 协商多个 ip-port 对。协商的 ip-port 数量的最大值是多少。

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

SDP 描述中的每个媒体行都描述了 SDP 描述中一种媒体的一个 RTP 流:对于每种媒体(音频、视频、桌面共享等),您将需要 2 个连接:一个用于 RTP( ip:port 来自 c= 行)和一个用于 RTCP (ip:port+1)。媒体行数没有上限。

此外,SDP 可以包含 ICE (rfc5245) 候选,它还可以提供替代 LOCAL ip:port 和替代 DESTINATION ip:port 来交换媒体。例如:

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(在 rfc5761 中定义)允许您在单个端口上多路复用 RTP 和 RTCP 数据。然后,您只需要一个,而不是每个媒体 2 个端口。

第二个扩展,仅作为草案发布 (draft-ietf-mmusic-sdp-bundle-negotiation),可与 SDP Offer/Answer 机制一起使用来协商单个 address:port 用于接收媒体的组合(BUNDLE 地址),称为捆绑媒体,与多个 SDP 媒体描述(“m=”行)相关联。

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