会议多站点最大接收速率(ConferenceMaxMultisiteReceiveRate)
ICE简介
ICE是用于UDP媒体传输的NAT穿透协议(适当扩展也可以支持TCP),它需要利用STUN和TURN协议来完成工作。
STUN协议提供了获取一个内网地址对应的公网地址映射关系(NATBinding)的机制,并且提供了它们之间的保活机制。
TURN协议是STUN协议的一个扩展,允许一个peer只使用一个转发地址就可以和多个peer实现通信。其本质是一个中继协议。
在WebRTC中,ICE会在SDP中增加传输地址信息,利用这个信息进行NAT穿透及确定媒体流传输地址。
ICECandidate
WebRTC中的ICECandidate是用来描述可以连接的远端的基本信息,它至少包括(address,port,protocol)三元组,还有Candidate类型、用户名等。
WebRTC将Candidate分成四种类型,且类型间存在优先级次序,从高到低分别为host、srflx、prflx和relay。
host:从本机网卡上获取到的地址,一般来说,一个网卡对应一个地址。
srflx(serverreflexive):从STUN服务器获取到的地址。
relay:从TRUN服务器获取到的地址。
prflx(peerreflexive):在联通测试中从对端数据报文中获取到的地址。
其中,srflx和prflx地址可能是一样的,但获取的途径不一样。
ICE的基本流程
ICE的基本流程有三步:收集Candidate,交换Candidate,按优先级尝试连接。
收集Candidate
WebRTC在进行NAT穿透时(也就是俗称的打洞),首先会收集Candidate。客户端会按顺序先获取本地的host地址,然后从STUN服务器获取srflx地址,再从TRUN服务器获取relay地址。
交换Candidate
客户端收集到的这些地址会写到SDP报文中,之后通过信令系统将它们发送给对端。对端收到这些Candidate后,会与本地的Candidate组成CandidatePair。当然,这种组合也是有规则的,比如传输协议相同的Candidate才能组成CandidatePair。
需要说明的是WebRTC中的Candidate交换是使用的trickle方式,也就是边收集边交换。
按优先级尝试连接
WebRTC会将CandidatePair按优先级排序,然后按照这个顺序去进行连通性测试。如果有可以连通的CandidatePair就停止尝试,将它作为数据传输地址。后续开始建立连接,成功后就可以利用这个通道传输音视频数据了。
总结
WebRTC的ICE会选择出最好的连接通道来传输音视频数据。
WebRTC的连通率几乎是100%,因为即使无法完成P2P的连接,最终也能通过中继(relay)的方式来实现端到端的连接。
那么WebRTC具体是怎样利用ICE协议来实现P2P的NAT穿透的呢
以下是对这两项设置的详细解释:
1.MaxMultisiteTransmitRate(多站点最大传输速率)
适用场景:当使用设备内置的MultiSite功能(可选,用于举办多点视频会议)时生效。
功能:定义允许的最大聚合传输比特率,该比特率会在任意时刻所有活跃呼叫间公平分配。比如多个站点同时进行视频会议传输数据时,总传输速率不超这里设置的数值,且会动态调整单个呼叫的速率。
动态调整逻辑:有人加入/离开多站点会议、呼叫被置为保持(暂停)或恢复时,单个呼叫的传输速率会相应提高或降低。另外,单个呼叫的最大传输比特率由“ConferenceMaxTransmitCallRate”设置定义,当前设置值为6000,取值范围64-6000。简单说,就是控制多站点视频会议传输数据的总速率上限,还会智能分配给各呼叫,随会议人员、呼叫状态变化调整。
2.MaxReceiveCallRate(最大呼叫接收速率)
功能:定义进行呼叫(拨打或接听)时,可使用的最大接收比特率。一般而言,这是单个呼叫的最大接收比特率上限。
特殊情况(本地注册设备):对于本地注册的设备,单个呼叫的最大接收比特率为“ConferenceMaxReceiveCallRate”和“ConferenceMaxMultisiteReceiveRate”这两项设置中的较小值。
多站点会议场景:在MultiSite会议中,“ConferenceMaxMultisiteReceiveRate”是所有同时进行的活跃呼叫的聚合最大接收速率。当前设置值为6000,取值范围64-6000。简单理解,就是管控单个呼叫以及多站点会议中接收数据的速率限制,涉及不同场景下的速率规则,保障呼叫和会议的网络传输质量与稳定性。
这两项设置都是围绕视频会议及呼叫过程中的网络传输速率进行管控,通过限制传输、接收速率,结合动态调整和不同场景的规则,优化会议体验、适配网络环境。
MaxMultisiteTransmitRate(多站点最大传输速率)
值为6000(取值范围64至6000)
当使用设备内置的多站点(MultiSite)功能(可选)来举办多点视频会议时,此配置生效。定义允许的最大聚合传输比特率。该比特率会在任意时刻在所有活跃呼叫间公平分配。这意味着,当有人加入或退出多站点会议,或者当某个呼叫被置为保持(暂停)或恢复时,各个呼叫的速率会相应地提高或降低。单个呼叫的最大传输比特率由“会议最大呼叫传输速率(ConferenceMaxTransmitCallRate)”设置定义。
MaxReceiveCallRate(最大呼叫接收速率)
值为6000(取值范围64至6000)
定义进行呼叫(发起或接听呼叫)时要使用的最大接收比特率。一般来说,这是单个呼叫的最大接收比特率。对于本地部署的已注册设备,单个呼叫的最大接收比特率为“会议最大呼叫接收速率(ConferenceMaxReceiveCallRate)”和“会议多站点最大接收速率(ConferenceMaxMultisiteReceiveRate)”设置中的较小值。在多站点会议中,“会议多站点最大接收速率(ConferenceMaxMultisiteReceiveRate)”是所有同时进行的活跃呼叫的聚合最大值。