直接路由 - 定义和 RFC 标准
本文介绍Teams 电话直接路由如何使用 Internet 工程任务组的注释请求 (RFC) 定义的标准协议。 本文适用于负责配置本地会话边界控制器 (SBC) 与会话初始协议 (SIP) 代理服务之间的连接的语音管理员。
客户 SBC 与 Microsoft Teams 后端中的以下组件交互:
用于信号的 SIP 代理。 此组件是直接路由的面向 Internet 的组件,用于处理 SBC 与直接路由之间的 SIP (TLS) 连接。
媒体的媒体处理器 。 此组件是处理媒体流量的面向 Internet 的直接路由组件。 此组件使用 SRTP 和 SRTCP 协议。
有关直接路由的详细信息,请参阅Teams 电话直接路由。
有关直接路由如何实现 SIP 协议的详细信息,请参阅 直接路由 - SIP 协议。
RFC 标准
直接路由符合 RFC 标准。 连接到直接路由的 SBC 还必须符合以下 RFC (或其后续) 。
适用于支持非媒体旁路模式的设备的标准
以下标准适用于仅支持非媒体旁路模式的设备:
- RFC 3261 SIP:会话初始协议
- RFC 3325 受信任网络中断言标识的会话初始协议的专用扩展--有关处理 P-Asserted-Identity 标头的部分。 直接路由使用隐私 ID 标头发送 P-Asserted-Identity。
- RFC 4244 会话初始协议的扩展 (SIP) ,以获取所需的历史记录信息。 另请参阅:路由 SIP 协议说明,了解详细信息。
- RFC 3892 会话初始协议 Referred-By 机制
- RFC 3891 会话初始协议 (SIP) “替换”标头
- RFC 6337 会话初始协议 (SIP) 套餐/应答模型的使用情况。 请参阅“与 RFC 的偏差”部分。
- RFC 3711 和 RFC 4771。 使用 SRTP 保护 RTP 流量。 SBC 必须能够使用 SDES 建立密钥。
- RFC 8035 会话描述协议 (SDP) RTP/RTCP 多路复用的套餐/应答说明
适用于支持媒体旁路模式的设备的标准
除了列出的适用于非bypass 模式的标准外,还使用以下标准用于媒体旁路模式:
-
RFC 5245 交互式连接建立 (ICE) 媒体旁路。 SBC 必须支持以下 ICE 元素:
- ICE Lite - Teams 客户端是完整的 ICE 客户端
- ICE 重启。 在 ICE 重启:将媒体旁路调用转移到不支持媒体旁路的终结点中详细了解 ICE 重启用例和示例
- RFC RFC 5589 会话初始协议 (SIP) 呼叫控制 - 转移。
- 会话初始协议 (SIP) 中的 RFC 3960 早期媒体和响铃音生成 ,请参阅第 3.1 节、分叉和 3.2 部分(铃声生成)
- 适用于 NAT (STUN) 的 RFC 5389 会话遍历实用工具
- RFC 5766 围绕 NAT 使用中继 (TURN) :NAT (STUN) 的会话遍历实用工具的中继扩展
适用于支持向 E911 提供商传送位置信息的标准
与 RFC 的偏差
下表列出了 RFC 中的部分,其中Microsoft SIP 或媒体堆栈的实现偏离了标准:
RFC 和节 | 说明 | 偏差 |
---|---|---|
RFC 6337,第 5.3 节保留和恢复媒体 | RFC 允许使用“a=inactive”、“a=sendonly”、a=recvonly“将呼叫置于保留状态。 | SIP 代理仅支持“a=inactive”,并且不了解 SBC 发送“a=sendonly”还是“a=recvonly”。 |
RFC 6337,第 5.4 节:接收 SDP 时的行为,c=0.0.0.0 | RFC3264 要求代理可以接收连接地址为 0.0.0.0 的 SDP,指示不向对等方发送 RTP 或 RTCP。 | SIP 代理不支持此选项。 |
RFC 3261,SIP 协议的第 25 节扩充的 BNF | “#”字符应作为“%23”发送 | SIP 代理以未转义的方式发送请求 URI 中的“#”字符。 |
RFC 3264,第 8.3.1 节:使用 SDP 的套餐/答案模型 | RFC 3264 详细介绍了 5 月 (可选) 媒体重定向机制,允许在建立会话后更改媒体端口、IP 地址或传输。 | 不支持可选的媒体重定向。 在通话期间,不支持更新媒体端口、IP 地址或传输的 SIP 请求。 不会将媒体发送到更新的会话目标;来自直接路由的媒体将继续流向原始目标。 |
RFC 支持选项的说明;产品/服务发送后,必须准备好在旧端口和新端口上接收媒体。 在收到答案并且媒体到达新端口之前,提供方不应停止侦听旧端口上的媒体。|
TCP/TLS 传输注意事项
当Microsoft的 SIP 代理 (新的或对话中) 发送 SIP 请求时,它可能会打开新的 TCP/TLS 连接,或者重用现有连接(如果存在)。
每个 SIP 代理虚拟机每个远程 FQDN/IP 最多允许两个 TCP/TLS 连接。 发送 SIP 请求之前,SIP 代理会检查与目标 SBC/中继 FQDN 解析的 IP 地址的活动 TCP 连接。 如果存在两个连接,则重复使用它们。 如果两个连接不存在,则会打开一个新连接。
此逻辑按 SIP 代理虚拟机执行。
SIP 代理 IP 由每个区域多个虚拟机提供服务。
从 SBC 的角度来看,可能有多个来自所有 SIP 代理区域的入站代理连接。
SIP 代理打开的 TCP/TLS 连接不一定只要调用就保持打开状态。 但是,在响应 SIP 请求后,连接不会立即关闭。 如果连接未超时,则可能会将其重新用于其他 SIP 请求。
SIP 代理不支持连接别名,如 RFC 5923:会话初始协议中的连接重用 (SIP) 中所述。
出站 SIP 代理 TCP 连接仅服务出站 SIP 代理请求 (SBC) 和相关响应。
来自 SBC 的入站 SIP 代理 TCP 连接 (,仅) 服务传入 SIP 请求和相关响应。
请注意,在某些情况下,第三方网关/SBC 可能会标记 O365 服务的 TLS 连接重置。 连接重置行为是预期的,因为新连接是动态构建的,而不会影响用户体验。
超时策略
SIP 代理 TCP 空闲超时为两分钟。 当通过连接发生 SIP 事务时,计时器会重置。
SIP 代理根据 RFC 5626 发送应用程序 CRLF 保持活动状态:在会话初始协议 (SIP) 中管理 Client-Initiated Connections。
保持连接不会重置 TCP 空闲计时器。
供应商 SBC 发送的 CRLF 保持活动会重置 TCP 空闲计时器。
由于前面提到的别名约束,供应商 SBC 不得使用对话内 SIP 请求重置 SIP 代理出站到供应商 SBC 创建的连接上的计时器。
在 (FIN 闲转两分钟后,ACK) 将在大约 10 到 20 秒内通过 SIP 代理传输到供应商 SBC。
注释
SBC 应主动重用连接,例如 SIP 代理。 此方法可节省时间,这是 TCP 和 TLS 连接所需的时间。
SBC 应每小时至少续订一次连接。
上传新的 SBC 证书时,SBC 必须续订所有连接。
更新域配置时,建议续订 SBC 的连接。 否则,在续订内部 SIP 代理缓存后,将应用新的配置 -- 最多 4 小时。
作模式
直接路由有两种作模式:
在没有媒体旁路 的情况下,所有 RTP 流量都在 Teams 客户端、媒体处理器和 SBC 之间流动。
使用媒体旁路 ,其中所有 RTP 媒体在 Teams 终结点和 SBC 之间流动。
SIP 流量始终流经 SIP 代理。
DTMF
媒体堆栈不支持带内 DTMF。