17. 逐步传递时保持候选地址顺序 (Preserving Candidate Order While Trickling)
常规ICE的一个重要方面是,特定基础和组件的连接性检查由两个代理同时尝试,以便代理前面的任何防火墙或NAT将两个端点列入白名单,并允许除第一个("自杀")数据包之外的所有数据包通过。这对于在正确的时间解冻候选地址也很重要。虽然不是至关重要的,但在Trickle ICE中保持此行为可能会提高ICE性能。
为实现这一点,在逐步传递候选地址时,代理应该 (SHOULD) 尊重组件ID反映的组件顺序; 即,给定组件的候选地址不应该 (SHOULD NOT) 在同一基础内具有较低ID号的组件的候选地址之前传递。此外,候选地址应该 (SHOULD) 按照第12节中的程序以传递的相同顺序配对。
例如,以下SDP描述包含两个组件 (RTP和RTCP) 和两个基础 (主机和服务器反射):
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.0.1.1
s=
c=IN IP4 10.0.1.1
t=0 0
a=ice-pwd:asd88fgpdd777uzjYhagZg
a=ice-ufrag:8hhY
m=audio 5000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=candidate:1 1 UDP 2130706431 10.0.1.1 5000 typ host
a=candidate:1 2 UDP 2130706431 10.0.1.1 5001 typ host
a=candidate:2 1 UDP 1694498815 192.0.2.3 5000 typ srflx
raddr 10.0.1.1 rport 8998
a=candidate:2 2 UDP 1694498815 192.0.2.3 5001 typ srflx
raddr 10.0.1.1 rport 8998
对于此候选地址信息,RTCP主机候选地址不会在RTP主机候选地址之前传递。同样,RTP服务器反射候选地址将与RTCP服务器反射候选地址一起或在其之前传递。