0

对于一个 UA 和另外两个 UA,是否可以并行执行许多 SIP 事务?例如,如果 UA1 在 INVITE 的中间,UA1 可以响应来自 UA3 的传入 INVITE 吗?独立交易呢?

4

2 回答 2

2

标准中没有任何内容阻止 SIP 设备处理多个并发事务,事实上 SIP 服务器需要这样做才能处理任何类型的负载。

至于 SIP 用户代理应该如何处理并发 SIP 事务,这是一个单独的考虑。如果 UA1 已经在通话并且一个新的 INVITE 请求来自 UA3,则处理它的典型方法是使用某种呼叫等待指示。使用软电话,可以看到指示,而使用 ATA,通过将一些音调注入 UA 的音频流,指示通常在音频通道上。

对于非 INVITE 交易,它通常会简单得多,因为大多数交易不需要任何用户操作。例如,UA 可以使用不同的 SIP 服务器维护六种不同的注册,并且各种注册和/或订阅事务(在这种情况下,事务只是请求和响应的组合)可以同时运行。

于 2012-05-29T05:30:58.313 回答
2

还有另一个 SIP 并行事务“gothca-to-watch-for”...

在 sip 对话中,如果在很短的时间空间(~0.5 秒)内启动了多个 UAC 事务并且您的传输不可靠(UDP),那么如果初始请求数据包丢失,则可能存在问题。

序列号 (CSeq) 'n' 的丢失数据包不会到达,但包含 CSeq n+1 的下一个数据包会到达。

这在接收端 (UAS) 是可以接受的,它会将“远程 cseq”的知识更新为“n+1”。

然后重新发送初始请求,但现在 CSeq 'n' 低于 remote-cseq,因此必须丢弃并且 UAS 以(500 服务器内部错误)响应。

可能不是预期的!

因此,如果您的传输“不可靠”,则需要考虑使用对话框序列化请求。

于 2012-12-03T15:00:22.197 回答