为什么SCTP不常使用/已知(Why is SCTP not much used/known)

2019-06-26 15:09发布

我最近检查出的书“UNIX网络编程,第1卷”由理查德·史蒂文斯,我发现有除了TCP和UDP第三传输层标准:SCTP。

总结:SCTP是传输级协议,该协议是消息驱动像UDP,但可靠如TCP。 这是一个从IBM developerWorks上简短的介绍 。

老实说,我从来没有听说过SCTP之前。 我不记得阅读关于它在任何网络书籍或在我采取了班听到它。 阅读其他计算器的问题是提到SCTP表明,我不是一个人有这种知识的缺乏。

为什么这么SCTP未知? 为什么不多用?

Answer 1:

事实上,SCTP主要用于在电信领域。 传统上,电信交换机使用SS7( 7号信令系统 )的电信网中互连不同的实体。 例如 - 电信提供商的订户数据库(HLR),具有开关(MSC),该用户被连接太(MSC)。

电信领域正在向更高的速度和更可达环境。 其中一个变化是由一些更优雅,快速和灵活的基于IP的协议,以取代SS7协议。

电信领域是非常保守的。 SS7网络已经在这里使用了几十年。 这是非常可靠的和封闭的网络。 这意味着一个普通用户无法对其进行访问。

IP网络,相反,是开放的,不可靠的,和电信不会转换成它,如果它不能处理至少是SS7处理负荷。 这就是为什么SCTP开发。 它会尝试:

  • 模仿积累几十年的SS7网络的所有优点。
  • 在速度,安全性和冗余比TCP更好创建一个面向连接的协议

Linux的最新版本已经有SCTP的支持。



Answer 2:

我们一直在部署在几个应用SCTP,以及遇到各种家用路由器SCTP支持显著的问题。 他们根本就没有正确处理SCTP。 我认为这主要是一个性能问题(SCTP协议的规范要求校验和重新计算所有分组而不是只为头)。

像其他许多有前途的协议SCTP是在水中黯然死去,直到d-Link和Netgear的修复他们破碎的NAT设备。



Answer 3:

SCTP需要在应用程序中更多的设计得到的尽其用。 还有比TCP更多的选择,在套接字类API后来,这是年轻的。 不过我认为,花时间最多的人去了解它(谁知道TCP的缺点),欣赏它 - 这是一个精心设计的协议,进一步巩固了我们〜30岁的TCP和UDP的知识。

其中一个需要一些思考的方面就是流。 流提供(通常情况下,我认为你可以将其关闭)在它们的订单保证(很像一个TCP连接),但可以有每个SCTP连接多个数据流。 如果您的应用程序的数据可以发送到多个流,那么你避免头的线端阻塞,其中接收器饿死由于一个放错地方的分组。 有效地不同的对话就可以了在不影响彼此相同的连接。

另一种有用的另外的是,多归属支持 - 一个连接可以是在多个接口上两端,并将其与故障对应。 您可以在TCP仿效这一点,但在应用层。

适当的链接心跳,这是第一件事就是使用TCP的非暂时性的连接工具的任何应用程序,有没有免费的。

我个人SCTP的总结是,它没有做任何事情你不能做的另一种方式(在TCP或UDP)有大量的应用支持。 它提供的东西是不必执行代码(严重)自己的能力。

仅供参考,如支持直径(CF RADIUS下一代)SCTP的任务。 参见RFC 3588

   Diameter clients MUST support either TCP or SCTP, while agents and
   servers MUST support both.  Future versions of this specification MAY
   mandate that clients support SCTP.


Answer 4:

SCTP是不是很知名,而不是使用/部署了很多,因为:

  • 普遍的:不广泛集成在TCP / IP协议栈(2013年:人仍下落不明原生支持最新的Mac OSX和Windows)
  • 图书馆:少数高级别绑定在易于使用的语言(免责声明:我的维护者pysctp ,Python的SCTP易栈支持)
  • NAT:不穿越NAT很好的/在所有的(小于1%的互联网家庭及企业级路由器做NAT上SCTP)。
  • 人气:无一般公众的应用程序使用它
  • 编程模式:它改变了一点:它仍然是一个插座,但你可以多台主机连接到多台主机(多宿主),数据包是有序的,可靠的,ERC ...
  • 复杂性:SCTP栈是复杂的实现(由于上文)
  • 竞争:多路径TCP快到了,应该解决的多宿主需求/能力使人们如果有可能实现SCTP避免,等待MTCP
  • 小生:需要SCTP填充是非常特殊的(有序可靠数据报,多信息),而不是很多应用程序所需
  • 安全性:SCTP逃避安全控制(一些防火墙,入侵检测系统大部分,所有的DLP,不会出现在除CentOS的/红帽/ Fedora的netstat的...)
  • 审计能力:喜欢的东西3家公司在世界上经常做SCTP安全审计(声明:我在其中的一个工作)
  • 学习曲线:没有太多的工具链与SCTP玩(检查优异withsctp与netcat的或使用socat很好结合)
  • 引擎盖下:技术主要用于电信,每次您发送短信,开始网上冲浪在您的手机或拨打电话网,你经常触发该流过SCTP(消息SIGTRAN / SS7与GSM / UMTS,口径LTE / IMS / RCS,与LTE S1AP / X2AP),所以你实际使用它了很多,但你永远不知道它;-)


Answer 5:

P1。 SCTP直接映射在IPv4需要NAT网关,它从来没有被广泛部署在任何地方的支持,没有它典型的NAT网关将只允许每个公共地址一个专用主​​机采用SCTP同时要。

P2。 SCTP映射在UDP / IPv4的允许每公网地址更多的私人主机,但在支持IPv4 / NAT网关UDP映射是出了名的棘手的建立和保持维持,由于这样的事实,UDP是没有任何明确的状态的连接传输的NAT追踪。

P3。 SCTP直接映射在IPv6需要......好了IPv6。 你有没有试过部署IPv6? 如果是这样,你试图买一个IPv6防火墙? 它支持SCTP? 如何负载均衡? 一个SSL加速器?

P4。 最后,大量的互联网是相当多的限制什么可以通过TCP端口80和443配合,所以任何味道SCTP往往失去存在。 因此,你看到这样的努力MPTCP在IETF工作组。



Answer 6:

我们许多人将很快采用SCTP,因为它使用的WebRTC datachannels建立在UDP上一个类似TCP可靠层- SCTP在DTLS通过UDP: https://tools.ietf.org/html/draft-ietf -rtcweb数据信道-13#部-6-



Answer 7:

读SCTP维基百科页面我会说,主要的原因是,SCTP是一个非常年轻的协议(2000年提出),这是目前主流的操作系统(WindowsOS X,Linux) 不支持。

如果“非常年轻”似乎不合适你,想想IPV6 :“在2008年12月,虽然标志着其10周年作为标准跟踪协议,IPv6的只是在它的一般全球部署方面处于起步阶段。”



Answer 8:

它可能不是众所周知的,但它不是使用。 就在最近出现了一个草案在公布的IETF有关使用SCTP作为HTTP传输层协议



Answer 9:

SCTP是4G LTE网络,其中直径用于AAA中广泛使用。



Answer 10:

在谈到所有关于商用路由器的意见被打破或缺乏SCTP的支持,问题是与NAT是SCTP仍然是与IETF草案形式。 因此,有他们来实现它没有RFC规范。

https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09



Answer 11:

SCTP出生太晚了,而且许多情况下TCP就够了。

另外,因为我知道大部分使用的是电信领域。



文章来源: Why is SCTP not much used/known