SIP-分叉


有时,代理服务器会将单个 SIP 呼叫转发到多个 SIP 端点。这个过程称为分叉。这里,单个呼叫可以同时振铃多个端点。

通过 SIP 分叉,您可以让桌面电话与您的软件电话或手机上的 SIP 电话同时响铃,从而使您可以轻松地从任一设备接听电话。

一般来说,在办公室,假设老板无法接听电话或离开,SIP 分叉允许秘书接听他的分机的电话。

如果有可用的有状态代理,则分叉是可能的,因为它需要执行并响应它收到的许多代理。

我们有两种类型的分叉 -

  • 并行分叉
  • 顺序分叉

并行分叉

在这种情况下,代理服务器将一次将 INVITE 分叉到两个设备(UA2、UA3)。两台设备都会生成 180 Ringing,无论谁接到呼叫,都会生成 200 OK。首先到达发起者的响应(假设 UA2)将与 UA2 建立会话。对于其他响应,将触发取消。

并行分叉

如果发起者同时收到两个响应,则根据 q 值,它将转发响应。

顺序分叉

在这种情况下,代理服务器会将 INVITE 分叉到一台设备 (UA2)。如果 UA2 当时不可用或繁忙,则代理会将其分叉到另一台设备 (UA3)。

顺序分叉

分支机构 - ID 和标签

分支 ID 帮助代理将响应与分叉请求进行匹配。如果没有分支 ID,代理服务器将无法理解分叉响应。Branch-id 将在 Via 标头中提供。

UAC 使用标签来区分来自不同 UAS 的多个最终响应。UAS 无法判断请求是否已分叉。因此,需要添加一个标签。

如果代理生成最终响应,也可以添加标签,它们从不将标签插入到它们转发的请求或响应中。

单个请求也可能被多个代理服务器分叉。因此,要分叉的代理应将自己的唯一 ID 添加到它创建的分支中。

呼叫线路和呼叫 ID

呼叫支路是指两个用户代理之间一对一的信令关系。呼叫ID是SIP消息中携带的表示呼叫的唯一标识符。呼叫是呼叫线路的集合。

UAC 通过发送 INVITE 开始。由于分叉,它可能会收到来自不同UA的多个200 OK。每个对应于同一呼叫中的不同呼叫支路。

因此,呼叫是一组呼叫支路。呼叫支路是指UA之间的端到端连接。

呼叫支路两个方向上的CSeq空间是独立的。在单个方向内,每次交易的序列号都会递增。

呼叫支线 ID

语音信箱

如今,语音邮件对于企业用户来说非常常见。这是一个电话应用程序。如图所示,当被叫方无法接听电话或无法接听电话时,PBX 会通知主叫方留言。

如果被叫方的号码无法接通,用户代理将收到 3xx 响应或重定向到语音邮件服务器。然而,需要某种 SIP 扩展来向语音邮件系统指示要使用哪个邮箱,即播放哪个问候语以及在哪里存储录制的消息。有两种方法可以实现这一目标 -

  • 通过使用 SIP 标头字段扩展

  • 通过使用 Request-URI 来表示此信息

假设用户sip:Tom@tutorialspoint.com在 sip:voicemail.tutorialspoint.com 有一个语音邮件系统,该系统提供语音邮件,当 INVITE 转发到语音邮件服务器时,它的请求 URI 可能如下所示:

sip:voicemail.tutorialspoint.com;target = sip:Tom@tutorialspoint.com;cause = 486

下图显示了Request-URI如何携带邮箱标识符和原因(此处为486)。

SIP语音信箱