Skip to main content

1. 简介 (Introduction)

交互式连接建立 (Interactive Connectivity Establishment, ICE) 协议 [RFC8445] 描述了ICE代理如何收集候选地址 (candidates)、与对等ICE代理交换候选地址以及创建候选地址对 (candidate pairs)。一旦收集到这些候选地址对,ICE代理将执行连接性检查 (connectivity checks),并最终提名和选择将用于在通信会话中发送和接收数据的候选地址对。

遵循 [RFC8445] 中的程序可能会导致通信会话建立时间较长,因为候选地址收集通常涉及查询NAT会话穿越实用程序 (Session Traversal Utilities for NAT, STUN) 服务器 [RFC5389] 和在NAT中继穿越 (Traversal Using Relay NAT, TURN) 服务器 [RFC5766] 上分配中继候选地址。尽管许多ICE程序可以并行完成,但仍需遵循 [RFC8445] 中的速率控制要求 (pacing requirements)。

本文档定义了"Trickle ICE",这是ICE操作的一种补充模式,其中候选地址可以在可用时立即增量交换 (与收集其他候选地址同时进行)。连接性检查也可以在创建候选地址对后立即开始。由于Trickle ICE使候选地址收集和连接性检查能够并行完成,因此该方法可以大大加速建立通信会话的过程。

本文档还定义了如何发现对Trickle ICE的支持、在使用Trickle ICE时如何修改或补充 [RFC8445] 中的程序,以及Trickle ICE代理如何与符合 [RFC8445] 的ICE代理互操作。

本文档不定义Trickle ICE的任何特定协议使用方式。相反,Trickle ICE的特定协议细节在单独的使用文档中定义。此类文档的示例包括 [RFC8840] (定义了与会话发起协议 (Session Initiation Protocol, SIP) [RFC3261] 和会话描述协议 (Session Description Protocol, SDP) [RFC4566] 的使用) 和 [XEP-0176] (定义了与可扩展消息和状态协议 (Extensible Messaging and Presence Protocol, XMPP) [RFC6120] 的使用)。但是,文档中的一些示例使用SDP和提议/应答模型 (Offer/Answer model) [RFC3264] 来解释基本概念。

下图展示了使用遵循提议/应答模型的协议的成功Trickle ICE交换:

        Alice                                            Bob
| Offer |
|---------------------------------------------->|
| Additional Candidates |
|---------------------------------------------->|
| Answer |
|<----------------------------------------------|
| Additional Candidates |
|<----------------------------------------------|
| Additional Candidates and Connectivity Checks |
|<--------------------------------------------->|
|<========== CONNECTION ESTABLISHED ===========>|

本文档的主体结构化描述了Trickle ICE代理在ICE会话期间按操作和交互的大致顺序的行为:

  1. 确定对Trickle ICE的支持
  2. 生成初始ICE描述
  3. 处理初始ICE描述并生成初始ICE响应
  4. 处理初始ICE响应
  5. 形成检查列表 (checklists)、修剪候选地址、执行连接性检查等
  6. 在初始ICE描述和响应之后收集和传递候选地址
  7. 处理入站逐步传递的候选地址 (inbound trickled candidates)
  8. 生成和处理候选地址结束指示 (end-of-candidates indication)
  9. 处理ICE重启

Trickle ICE背后的技术有相当多的运营经验,可以追溯到2005年 (当时XMPP Jingle扩展定义了"逐滴模式" (dribble mode),如 [XEP-0176] 中所述); 本文档整合了多年来实施和部署该技术人员的反馈。