回复:UDP的可靠传输与应用

已锁定

宝冬

  • 帖子

    201
  • 精华

    26
  • 被关注

    248

论坛等级:奇侠

注册时间:2016-07-06

黄金 黄金 如何晋级?

发布于 2021-10-02 14:58:02

23楼

网络环境不好,反而不应该用TCP,而是用UDP。这有点和通常的直觉相反,为什么呢?

TCP的是以连接通道为基础,而连接是由很多数据包构成的。当丢包严重,连接的基础设施就可能被破坏。由于通道机制的反弹,更多的数据包会涌现、就会出现更多的丢包,雪上加霜。如果连接不能维护好,数据传输就有问题,无论如何这个通道的维护代价是必须的。而做为用户而言,要的是数据包中的数据到达,目的不在于通道本身,通道只是手段。在很多情况下,通道的代价已经超越用户目标本身了,喧宾夺主。PLC是位于车间地面的局部小型CPU,数据吞吐通常来说比互联网低很多,而且干扰多,TCP的优劣值得权衡。

UDP的基础设施存在于每一个数据包内部,每一个数据包的发送本身就是在不断尝试建立新连接。快手的基于UDP的KTP协议,可以做到20%丢包无感知,这并不是铜导线或光纤的物理效率提高造成的。UDP天生就是为弱网而存在的。

退一步看,TCP协议其实已经有些落伍了。历史中TCP的确解决了可靠传输的问题,只不过它是站在多年前对于互联网的应用发展的预见作出的,所以把自认为完善的安全机制固化到了用户无法改变的传输层里。而现今的硬件高速发展,场景灵活多变,已经有些不适应了,表现上千疮百孔。只不过TCP/IP已经绑架了全球的互联网基础设施。


相比之下,华为鸿蒙的软总线就是创新。前不久发布的矿鸿1.0在矿山项目的应用中,30%工业现场丢包率无感知,应用层端到端时延不超过10ms,可见实力。其实这是重建工业互联网底层的一个开端案例。在鸿蒙的IDE(DevEco)中编程,简短的几句代码,在线设备就拿到了。现在它支持扩展的TypeScript(微软开源)来开发前端。OpenHarmony(前端场景)、矿鸿(工业场景的一个实现)、Euler(服务器和云),的确是在搞全场景覆盖。关于软总线,从网上拷贝了一点内容如下。

操作系统自动发现设备硬件。设备上线后会向网络层注册,同时网络层会与设备建立通道连接,实时检测设备的变换。网络层负责管理设备的上线下线变换,设备间可以监听自己感兴趣的设备,设备上线后可以立即与其建立连接,实现零等待体验。软总线可以自动构建一个逻辑全连接网络,用户或者业务开发者无需关心组网方式与物理协议。

通信上,将OSI模型中间的四层协议栈精简为一层,提升有效载荷,有效传输带宽提升20%。极简协议在传统网络协议的基础上进行增强:

流式传输:基于UDP实现数据的保序和可靠传输;

双轮驱动:颠覆传统TCP每包确认机制;

不惧网损:摒弃传统滑动窗口机制,丢包快速恢复,避免阻塞;

不惧抖动:智能感知网络变化,自适应流量控制和拥塞控制;

看到中间四层的精简,是否想到Profinet?只不过软总线玩儿的更大。如果它愿意为工业的高速应用衍生一个子集,就可以实现PN的效果。传统那些工业现场总线的创造者,还没人能在操作系统的层面上重塑整个网络。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15110条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。