3. 确定对Trickle ICE的支持 (Determining Support for Trickle ICE)
为了完全支持Trickle ICE,使用协议 (using protocols) 应该 (SHOULD) 合并以下机制之一,以便实现可以确定是否支持Trickle ICE:
- 提供能力发现方法 (capabilities discovery method),以便代理可以在发起会话之前验证对Trickle ICE的支持 (XMPP的服务发现 (Service Discovery) [XEP-0030] 就是这样一种机制)。
- 使对Trickle ICE的支持成为强制性的,以便用户代理可以假定支持。
如果使用协议没有提供提前确定是否支持Trickle ICE的方法,代理可以使用第16节中描述的半逐步传递程序。
在传递初始ICE描述之前,实现支持能力发现的使用协议的代理可以尝试验证远程方是否支持Trickle ICE。如果代理确定远程方不支持Trickle ICE,它必须 (MUST) 回退到使用常规ICE或放弃整个会话。
即使使用协议不包括能力发现方法,用户代理也可以通过传递'trickle'的ICE选项 (ICE option) 来在ICE描述中提供其支持Trickle ICE的指示。此令牌必须 (MUST) 在会话级别提供,或者如果在数据流级别提供,则必须为每个数据流提供 (代理禁止 (MUST NOT) 为某些数据流指定Trickle ICE支持而不为其他数据流指定)。注意: 'trickle' ICE选项的编码以及用于将其传递给对等方的消息是特定于协议的; 例如,SDP [RFC4566] 的编码在 [RFC8840] 中定义。
仅在ICE会话发起之前才需要专用发现语义和半逐步传递。在ICE会话建立并确认双方都支持Trickle ICE之后,任一代理都可以在后续交换中使用完全逐步传递 (另请参见第15节)。