首页 > 解决方案 > 在已建立的对话之间更改 SIP 传输协议需要做什么?

问题描述

给定一个通过 TCP 建立的 SIP 对话(INVITE,200 OK,ACK)。如何切换到UDP?

我认为它可以通过 RE-INVITE 来完成,改变 Via- 和 Contact-Header。


请注意,在rfc3665#3.7#F9中,RE-INVITE 更改了 IP 地址,所以我假设传输协议也可以切换。

标签: sip

解决方案


rfc3665#3.7#F9对您的用例没有帮助,因为它侧重于解释需要更新媒体 IP时发生的情况。

每个 SIP 事务都是独立的,并且每个事务都可以使用任何传输。但是,如果您更新对话(传输、联系),可以通过 re-INVITE 完成,但也可以通过 UPDATE 完成

我认为它可以通过 RE-INVITE 来完成,改变 Via- 和 Contact-Header。

这对我来说是正确的。在实践中:

Via: SIP/2.0/UDP XXX.XXX.XXX.XXX:XXXX;branch=z9hG4bKlkld5l
Contact: <sip:bob@XXX.XXX.XXX.XXX:XXXX>

应修改为

Via: SIP/2.0/TCP YYY.YYY.YYY.YYY:YYYY;branch=z9hG4bKlkld5l
Contact: <sip:bob@YYY.YYY.YYY.YYY:YYYY>

在现实生活中,您还可以在 Contact 中使用和/或 mofidy transport =UDP在 Via 中使用 rport 参数

旁注:强烈建议不要从 TCP 切换到 UDP。只有从 UDP 切换到 TCP 才能带来好处。


推荐阅读