0

我试图了解转发在 IMS 部署中应该如何工作。转发由位于 SIP 路径中间的 AS 执行,例如当原始被叫用户不应答呼叫时。在这种情况下,AS 取消呼叫(发送 CANCEL),并向被转发用户发送新的 INVITE。然而,在发送 CANCEL 之前,原被叫方已经以可靠的方式发出了他的 SDP 应答(183 和 100rel)。

在新的INVITE中,使用了来自原主叫方的SDP提议,被转发用户发送自己的SDP应答,这显然与原被叫方不同。AS 在接收到这个答案时,并且由于它已经从原始被叫方发送了答案,而不是仅仅转发这个新答案,而是向主叫方发送一个带有新答案的 UPDATE。主叫方接受 UPDATE 并随后建立呼叫。

我担心的是,根据 RFC 3264,第 8 节“修改会话”:

当发出修改会话的提议时,新 SDP 的“o=”行必须与前一个 SDP 中的相同,除了源字段中的版本必须从前一个 SDP 增加一。

在这种情况下,查看跟踪,在 UPDATE 中发出的 SDP 完全不同,包括 o= 行,因为它来自不同的代理。AS 是否应该操纵新 SDP 答案的 SDP 以隐藏它来自另一个 UA 的事实?这个流程还有另一种更标准的方式吗?

感谢您的洞察力。

4

1 回答 1

0

我担心的是,根据 RFC 3264,第 8 节“修改会话”:

当发出修改会话的提议时,新 SDP 的“o=”行必须与前一个 SDP 中的相同,除了源字段中的版本必须从前一个 SDP 增加一。

前提是这是相同的 SIP 端点或 B2BUA。见下文理性。

在这种情况下,查看跟踪,在 UPDATE 中发出的 SDP 完全不同,包括 o= 行,因为它来自不同的代理。AS 是否应该操纵新 SDP 答案的 SDP 以隐藏它来自另一个 UA 的事实?这个流程还有另一种更标准的方式吗?

UPDATE 方法可以服务于几个目的:

  1. 更改信令信息(比如说 SIP 标头)
  2. 更改媒体信息(比如说 SDP 字段)
  3. 同时更新两者。

在第三种情况下,SIP 端点已更改,因此 SDP 必须不同。

从 AS 的角度来看,99% 的时间 AS 必须对这些更改透明并充当纯 SIP 代理,但在某些特定情况下,它可能充当 B2BUA 并使用 RTP 代理向呼叫者隐藏它。

于 2021-05-22T04:53:55.213 回答