
本文共 989 字,大约阅读时间需要 3 分钟。
在物联网开发中,WebSocket、TCP和UDP的传输能力一直是热门话题。人们经常关注它们之间的协议差异,却很少探讨它们的传输能力。为了优化物联网微服务器的吞吐量,我们对WebSocket、TCP和UDP的传输能力进行了深入测试。
此次测试基于STM32F746处理器和Arm Mbed OS 5.0系统,搭配lwIP协议栈进行tcp/ip协议实现。测试结果表明:
- TCP/IP协议表现稳定,最高达2.5Mbps,与之前实验数据一致。
- UDP协议最大可达25Mbps,即使在northbound条件下仍能接近这一速度。
这种高速差异的原因在于传输数据的包装复杂程度。IP包作为基础,其本质是一个传输单位。尽管TCP和WebSocket通过添加控制机制增加了功能,但也导致了更多的软件处理逻辑。这相对于UDP来说,确实增加了传输延迟。
在以太网传输中,IP包与以太网帧的设计非常接近,这使得驱动层能够充分利用DMA技术进行快速数据传输。我们对STM32的以太网HAL库进行了优化,优先使用DMA和内联Memcpy操作,硬件CRC校验已经实现,每个1400字节的数据包在以太网上可以达到30Mbps的传输速率。
从协议特性来看,UDP的包装最为简洁,与原始以太网帧结构最为接近,这种结构使得它的传输效率最高。而TCP协议由于增强了数据可靠性机制(如数据重发),软件干预较多,传输速率自然受到影响。WebSocket虽然基于HTTP协议运送数据,但其传输效率更趋近于TCP的性能。
在产品开发过程中,我们面临一个关键问题——如何在保持WebSocket灵活性的同时,又能充分发挥UDP的高效率。因此,我们设计了directStream模式:
- � Sampling-WEBsocketapis传输命令数据
- Stream-Wise Data运输出统通过UDP协议发送至应用层(如上图所述)。
此模式的优势在于,虽然命令仍通过WebSocket发送,但数据流实时通过UDP协议发送。经过实际测试,直连设备的最大实测速率为8Mbps,特定场景下可以达到更高。
这种架构设计的另一个优势是简化了协议栈的复杂性。通过去中心化的数据传输方式,不仅减少了额外协议处理的负担,还避免了繁琐的转发机制。
经过多次测试,directStream模式展现出良好的性能。我们认为,这是一个值得深入开发的方向。
发表评论
最新留言
关于作者
