我试图了解转发在 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 的事实?这个流程还有另一种更标准的方式吗?
感谢您的洞察力。