我为我的公司开发了一个SIP堆栈。它远非完美,而且它缺少来自RFC的很多东西,但它的功能很好,适用于许多经过测试的软电话和其他SIP硬件和软件。
我的问题是:有多少SIP软件可以真正说出它们完全符合SIP标准(你可以在互联网上找到的软电话)?
答案 0 :(得分:2)
好问题。
从许多SIP堆栈开始,无法实现TCP,因此不符合RFC3261第18节:
所有SIP元素必须实现UDP和TCP。 SIP元素可以实现其他协议。
Asterisk就是一个很好的例子。它通常声称符合RFC3261,但最近才包含TCP支持,并且仍然有很多错误。有更好的SIP产品,例如SER派生的产品,我怀疑它们符合RFC3261,我从来没有审核过任何产品,但SER有一个声誉,因为它是领先的SIP服务器。
要记住的另一件事是“SIP标准”现在包括8个已更新或废弃原始RFC3261的RFC。此外,还有一个multitude of other RFCs用于NAT等扩展和修复。我认为可以肯定地说,不可能有任何符合所有SIP RFC的SIP协议栈。
我也写了一个SIP堆栈并跟着你走的路径;让它与您可以轻松测试的设备一起使用,然后随着时间的推移或在需要时添加更多深奥的标准部分。我甚至开始documenting which SIP RFCs我正在努力实施。
答案 1 :(得分:1)
我也承认自己编写SIP堆栈。
SIP Interoperability Test事件会产生大量的互操作数据。例如,去年从SIPit 25我们发现:
Implementations using each transport for SIP messages:
UDP 98%
TCP 83%
TLS 38% server-auth, 24% mutual-auth
SCTP 7%
DTLS 2%
36% of the implementations supported IPv6.
答案 2 :(得分:0)
两个SIP端点可以符合SIP标准,但仍然无法互操作。因此,“完全符合SIP标准”是不足以让您能够在不进行互操作测试的情况下说“能够工作”。但是,这可能足以让你从初始选择中删除一些。