6. ICE Candidate Processing (ICE候选处理)
本节描述ICE代理如何处理从对等方接收的候选信息。
6.1. Procedures for Full Implementation (完整实现的过程)
6.1.1. Determining Role (确定角色)
ICE中的角色 (role) 用于解决连通性检查过程中的冲突。有两个角色:控制代理 (controlling agent) 和被控制代理 (controlled agent)。控制代理负责选择最终用于通信的候选对。
对于Offer/Answer模型,发起Offer的代理必须 (MUST) 承担控制角色,接收Offer的代理必须 (MUST) 承担被控制角色。
6.1.2. Forming Candidate Pairs (形成候选对)
ICE代理通过将其自己的候选 (本地候选) 与从对等方接收的候选 (远程候选) 配对来形成候选对 (candidate pairs)。
对于每个数据流的每个组件,代理将该组件的所有本地候选与对等方为同一组件提供的所有远程候选配对。这样就产生了候选对的集合。
6.1.3. Computing Pair Priority and Ordering Pairs (计算候选对优先级和排序)
候选对的优先级使用以下公式计算:
pair priority = 2^32 * MIN(G,D) + 2 * MAX(G,D) + (G>D?1:0)
其中:
- G 是控制代理的候选优先级
- D 是被控制代理的候选优先级
候选对按照优先级从高到低排序。
6.1.4. Pruning the Pairs (修剪候选对)
代理将修剪候选对列表以消除冗余并限制要执行的连通性检查的数量。修剪使用候选的 foundation (基础) 值执行。