8. 执行连接性检查 (Performing Connectivity Checks)
如 [RFC8445] 中所述,每当定时器Ta触发时,只有处于运行状态 (Running state) 的检查列表才会在为候选地址对安排连接性检查时被选中。因此,只要Trickle ICE代理期望候选地址对增量添加到检查列表中,它就必须 (MUST) 保持每个检查列表处于运行状态。之后,根据 [RFC8445] 中的程序设置检查列表状态。
每当定时器Ta触发并选择了一个空检查列表时,不对该列表执行任何操作。在不等待定时器Ta再次过期的情况下,代理根据 [RFC8445] 的 第6.1.4.2节 选择处于运行状态的下一个检查列表。
[RFC8445] 的 第7.2.5.4节 要求代理在完成连接性检查事务后更新检查列表和定时器状态。在此类更新期间,如果满足以下两个条件,常规ICE代理会将检查列表的状态设置为失败 (Failed):
- 检查列表中的所有候选地址对都处于失败 (Failed) 状态或成功 (Succeeded) 状态; 并且
- 对于数据流的每个组件,有效列表 (valid list) 中都没有候选地址对。
对于Trickle ICE,即使未来的检查很可能成功,当候选地址收集和逐步传递仍在进行时,上述情况也会经常发生。因此,Trickle ICE代理向上述列表添加以下条件:
- 所有候选地址收集已完成,并且代理不期望发现任何新的本地候选地址; 并且
- 远程代理已传递了该检查列表的候选地址结束指示 (end-of-candidates indication),如第13节所述。