为什么我们需要通过TCP进行SIP“100尝试”响应?

时间:2014-11-02 17:19:25

标签: sip sip-server opensips

SIP over UDP :对于SIP over UDP,必须有SIP响应“100 Trying”才能关闭已经由调用者启动的Timer-A关闭,从而停止重新传输SIP消息。它非常重要,因为其他响应(临时和最终)可能需要一段时间用于初始INVITE消息,因为我们必须考虑分叉的情况,UE-B无法到达,回退......等可能需要一些时间。

SIP over TCP: Timer-A不会被调用者启动,因此不会重新传输消息。 TCP是可靠的,不需要重新传输。即便如此,为什么大多数实现都会发送100 Trying over TCP ???

2 个答案:

答案 0 :(得分:2)

SIP over TCP仍然需要100次尝试的原因很少。

  1. 拥有TCP连接并不能保证SIP应用程序正在运行,或者根本不保证它是SIP-Aware应用程序。 100 Trying为您提供SIP应用程序正在处理您的请求的反馈。

  2. 缺少100次尝试也可能是正确的触发器,不仅可以重新传输,还可以重新尝试在配置中使用不同的服务器。即使连接是TCP,您也可能不希望配置中的每个服务器都经过32秒。

  3. 在部署方案中,如果存在SBC或Load Balancer等元素,则会与它们建立TCP连接。它背后的应用程序可以是不同的实体,通常这些边缘元素传递所有消息传递或生成消息传递以指示处于操作状态的调用。

答案 1 :(得分:0)

可能是因为它使SIP堆栈实现更容易。如果SIP事务层是相同的,则无论使用何种SIP传输,它都会使生活更轻松。如果事务层对于不同的传输具有不同的规则,那么额外的代码没有真正的好处,即,通过不发送100尝试响应而节省的带宽在事物的方案中可以忽略不计。