你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
呼叫流基础知识
以下部分提供 Azure 通信服务中的呼叫流概述。 信号和媒体流取决于用户所进行的呼叫的类型。 呼叫类型的示例包括一对一 VoIP、一对一 PSTN 以及包含 VoIP 和 PSTN 连接的参与者组合的群呼。 查看呼叫类型。
关于信号和媒体协议
建立对等呼叫或群呼时,会在后台使用两种协议:HTTPS (REST) 用于信号,SRTP 用于媒体。
SDK 之间或 SDK 与通信服务信号控制器之间的信号使用 HTTPS REST (TLS) 进行处理。 Azure 通信服务使用 TLS 1.2。 对于实时媒体流量 (RTP),首选用户数据报协议 (UDP)。 如果防火墙阻止使用 UDP,则该 SDK 会对媒体使用传输控制协议 (TCP)。
让我们来查看各种方案中的信号和媒体协议。
呼叫流事例
案例 1:可在两个设备之间实现直接连接的 VoIP
在一对一 VoIP 或视频呼叫中,流量首选最直接的路径。 “直接路径”是指如果两个 SDK 可以直接相互联系,则它们会建立直接连接。 当两个 SDK 处于同一个子网中(例如,在子网 192.168.1.0/24 中)时,或者当两个设备各自处于可以相互看到的子网中(子网 10.10.0.0/16 和 192.168.1.0/24 中的 SDK 可以相互联系)时,这通常可以实现。
案例 2:无法在设备之间实现直接连接,但是可以在 NAT 设备之间实现连接的 VoIP
如果两个设备位于无法相互联系的子网中(例如,Alice 在咖啡店中工作,而 Bob 在家庭办公室中工作),但是可以在 NAT 设备之间实现连接,则客户端的 SDK 会通过 NAT 设备建立连接。
对于 Alice,它会作为咖啡店的 NAT,而对于 Bob,它会作为家庭办公室的 NAT。 Alice 的设备会发送其 NAT 的外部地址,Bob 的设备会执行相同操作。 该 SDK 从 Azure 通信服务免费提供的 STUN(适用于 NAT 的会话遍历实用工具)服务了解外部地址。 处理 Alice 与 Bob 之间的握手的逻辑将嵌入到 Azure 通信服务提供的 SDK 中。 (无需任何其他配置)
案例 3:无法实现直接和 NAT 连接的 VoIP
如果一个或两个客户端设备位于对称 NAT 后面,则需要一个用于在两个 SDK 之间中继媒体的单独云服务。 此服务称为 TURN(围绕 NAT 使用中继进行遍历),也由通信服务提供。 通信服务呼叫 SDK 会基于检测到的网络条件自动使用 TURN 服务。 TURN 费用包含在通话的价格中。
案例 4:使用 PSTN 的群呼
PSTN 呼叫的信号和媒体都使用 Azure 通信服务电话服务资源。 此资源与其他运营商互连。
PSTN 媒体流量会通过一个称为媒体处理器的组件进行流动。
注意
对于熟悉媒体处理的人,我们的媒体处理器也是背靠背用户代理(如RFC 3261 SIP:会话初始协议中定义),这意味着它可以在处理 Microsoft 和运营商网络之间的呼叫时转换编解码器。 Azure 通信服务信号控制器是 Microsoft 根据相同 RFC 实现的 SIP 代理。
对于群呼,媒体和信号始终通过 Azure 通信服务后端进行流动。 来自所有参与者的音频和/或视频都在媒体处理器组件中混合。 群呼的所有成员会将其音频和/或视频流发送到媒体处理器,后者会返回混合媒体流。
群呼的默认实时协议 (RTP) 是用户数据报协议 (UDP)。
注意
媒体处理器可以充当多点控制单元 (MCU) 或选择性转发单元 (SFU)
如果由于防火墙限制,该 SDK 无法对媒体使用 UDP,则会尝试使用传输控制协议 (TCP)。 请注意,媒体处理器组件需要 UDP,因此当发生这种情况时,通信服务 TURN 服务会添加到群呼中,用于将 TCP 转换为 UDP。 TURN 费用包含在通话的价格中。
案例 5:计划的 Teams 会议中的通信服务 SDK 和 Microsoft Teams
信号流经信号控制器。 媒体流经媒体处理器。 信号控制器和媒体处理器在通信服务和 Microsoft Teams 之间共享。
案例 6:早期媒体
指在被呼叫用户接受特定会话之前交换的媒体(例如音频和视频)。 如果存在早期媒体流,SBC 必须封存到启动流式处理媒体的第一终结点;媒体流可以在提名候选人之前启动。 SBC 应在此阶段支持发送 DTMF,以启用 IVR/语音邮件方案。 如果提名尚未完成,SBC 应使用其已收到检查的最高优先级路径。
后续步骤
你可能会对下列文档感兴趣:
- 详细了解呼叫类型
- 了解客户端-服务器体系结构
- 了解呼叫流拓扑