一种嵌入式系统UDPIP协议栈的优化设计
嵌入式系统中的网络通信协议研究与优化

嵌入式系统中的网络通信协议研究与优化第一章简介嵌入式系统是指嵌入到各种设备中的计算机系统,它们通常被设计用于某一个特定的应用领域。
网络通信在现代嵌入式系统中越来越重要,网络通信协议研究和优化成为关键技术。
本文将研究和探讨嵌入式系统中的网络通信协议研究与优化。
第二章嵌入式系统中的网络通信协议2.1 传统协议在嵌入式系统中,传统的网络通信协议包括TCP/IP协议、UDP协议、PPP协议等。
这些协议从传输层和网络层的角度优化了数据传输和网络通信效率,但是也存在诸多缺点,其中包括:(1)资源占用过大:TCP/IP协议采用了较为复杂的传输控制机制,因此在资源占用上较高,容易引起内存等资源紧缺情况。
(2)数据传输安全性低:传统的协议并没有为数据传输的安全性做出保障,容易被黑客攻击和非法获取数据。
(3)协议复杂性高:传统协议的复杂度非常高,且极具可扩展性。
2.2 物联网协议物联网协议是指为满足物联网特殊通信需求而量身定制的专用协议,在嵌入式系统中,物联网协议的应用非常广泛,包括MQTT协议、CoAP协议、ZigBee协议等。
(1)MQTT协议是一种轻量级的消息发布和订阅协议,使用MQTT协议可以实现设备间的长连接通信和低功耗消耗。
(2)CoAP协议是一种专门为物联网设计的应用层协议,使用CoAP协议可以实现UDP协议一样的低功耗特性,支持安全传输和多种载体传输。
(3)ZigBee协议是一种高效率,低功耗且低成本的协议,主要应用于低速短距离设备之间的通信。
第三章网络通信协议优化在嵌入式系统中,为了优化网络通信,需要对协议进行优化,包括以下方面:3.1 传输层优化深入根源解决网络通信的资源占用问题,对传输层进行优化避免内存紧缺情况的发生。
3.2 安全层优化提供网络通信的安全保证,实现数据加密和用户认证,保障数据安全性。
3.3 数据压缩技术在传输大量数据的时候,降低网络带宽消耗,提高数据传输效率,压缩传输的数据以减少传输的带宽消耗。
嵌入式系统实时通信协议设计与优化研究

嵌入式系统实时通信协议设计与优化研究第一章:引言嵌入式系统是现代信息技术中一种重要的应用手段,它被广泛应用于自动控制、通信、医疗、军事等领域。
实时通信是嵌入式系统中的核心需求之一,它要求系统能够在预定的时间内完成通信任务,并且能够在实时性要求下保持高可靠性和稳定性。
为了实现这一目标,需要设计和优化适用于嵌入式系统的实时通信协议。
本文将重点研究嵌入式系统实时通信协议的设计与优化问题。
第二章:嵌入式系统实时通信需求分析在设计实时通信协议之前,首先需要对嵌入式系统的实时通信需求进行深入分析,包括通信性能要求、延迟要求、数据可靠性要求等。
通过对不同嵌入式系统的通信需求进行详细的分析,可以为后续的协议设计和优化提供指导。
第三章:常见嵌入式系统实时通信协议综述本章将对常见的嵌入式系统实时通信协议进行综述,包括CAN 协议、FlexRay协议、Ethernet协议等。
对这些协议的特点、优缺点进行分析,为后续的设计与优化提供借鉴。
第四章:嵌入式系统实时通信协议设计原则在设计嵌入式系统实时通信协议时,需要遵循一些基本原则。
本章将介绍这些原则,如可预测性原则、通信效率原则、容错原则等。
通过合理应用这些原则,可以提高协议的实时性和可靠性。
第五章:嵌入式系统实时通信协议设计框架本章将提出一种嵌入式系统实时通信协议设计框架。
该框架包括协议的层次结构、协议的数据结构和消息传递机制等。
通过这样的设计框架,可以使协议的设计与实现更具有可扩展性和实用性。
第六章:嵌入式系统实时通信协议优化方法在当前嵌入式系统中,通信需求日益复杂,对协议的实时性和效率要求也越来越高。
为了提高现有协议的性能,本章将介绍一些常见的优化方法,如流量控制、拥塞控制、丢包恢复等。
通过合理应用这些优化方法,可以进一步提高实时通信协议的性能。
第七章:实验与分析本章将设计并实现一个嵌入式系统实时通信协议,并进行实验与分析。
针对已有的嵌入式系统实时通信协议进行性能测试比较,验证新设计协议的优势和可行性。
一种嵌入式系统UDPIP协议栈的优化设计

一种嵌入式系统UDPIP协议栈的优化设计裴朝;李华;马明礼【期刊名称】《电子技术应用》【年(卷),期】2011(37)12【摘要】提出了一种简化高效的UDPIP协议栈的优化设计方法.从嵌入式系统所要求的高速传输效率出发,优化设计了协议栈的BUFFER管理系统、BSD接口、路由模块以及数据重组机制.从协议栈的可移植性出发,实现了UDPIP协议栈与标准ETH驱动的挂接,以及同基于其他物理介质的虚拟ETH驱动的挂接.与VXWORKS 协议栈的性能对比结果表明,本协议栈具有高效率和低资源占有率,具有很大的实用价值.%This paper presents a simplified and efficient method for optimizing UDPIP protocol stack. Considering the requirement of embedded systems for high-speed transmission, we improve the design of the management system of protocol stack buffer, BSD interfaces, data routing module and data re-organizing mechanism. Considering the portability of the protocol stack, we implement the mounting from UDPIP stack to ETH-driven, as well as to other physical medium based virtual ETH-driven. Comparing to the performance of VXWORKS stack protocol, ours takes advantages on high efficiency and low resource cost, thus has greater practical value.【总页数】5页(P114-117,121)【作者】裴朝;李华;马明礼【作者单位】北京航空航天大学物理科学与核能工程学院,北京100191;北京航空航天大学物理科学与核能工程学院,北京100191;大唐移动通信设备有限公司,北京100083【正文语种】中文【中图分类】TN915.04【相关文献】1.基于TCP/IP协议栈的嵌入式系统通信方案设计研究 [J], 张小寒2.基于嵌入式系统的以太网TCP/IP协议栈概述 [J], 吕涛3.一种轻量级的TCP/IP协议栈LwIP在嵌入式系统中的应用 [J], 王亚军4.基于嵌入式系统的以太网TCP/IP协议栈概述 [J], 高有德; 王金翔5.嵌入式系统中Modbus/TCP协议栈的设计和实现 [J], 柳青因版权原因,仅展示原文概要,查看原文内容请购买。
uIP中UDP协议实现的改进

uIP中UDP协议实现的改进
曹欲晓;韩磊
【期刊名称】《微型机与应用》
【年(卷),期】2010(029)021
【摘要】uIP作为一种广泛使用的轻量级嵌入式TCP/IP协议栈,其UDP协议的实现还不够完善,目前最新的1.0版本中仅实现了UDP客户端,尚没有实现UDP服务端.为此,对其进行了以下三方面的改进:UDP服务端口的初始化;接收到UDP客户端数据包后的端口号判断及匹配;UDP服务端发送报文后目的端口的释放.经过以上改进后,实验证明,uIP 1.0中的UDP实现了服务端的功能.
【总页数】3页(P52-54)
【作者】曹欲晓;韩磊
【作者单位】南京工程学院计算机工程学院,江苏南京211167;南京工程学院计算机工程学院,江苏南京211167
【正文语种】中文
【中图分类】TP393.04
【相关文献】
1.UDP协议在风电机组通信系统中的实现 [J],
2.嵌入式系统中UDP协议可靠数据传输的实现 [J], 方娇莉;刘明
3.基于NTP的uIP协议栈改进与实现 [J], 陈硕;于春海;潘丰
4.C#中利用UDP协议实现信息的广播和组播 [J], 陈建华
5.基于UDP协议的网络通信在VxWorks操作系统中的实现 [J], 王芙蓉; 张平
因版权原因,仅展示原文概要,查看原文内容请购买。
浅谈uIP中UDP协议改进方案

UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理,数据包。
在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
由于嵌入式系统的软硬件资源都较为有限,大多数嵌入式系统中运行的TCP/IP协议栈均根据嵌入式系统的特点进行了相应的裁剪。
目前应用比较广泛的嵌入式TCP/IP协议栈有:ucTCP-IP、LWIP、uIP、Linux TCP/IP等。
其中uIP是专为8 bit和16 bit的嵌入式微控制器设计的微型TCP/IP协议栈,运行时需要的内存很少,实现了常用的TCP/IP协议;代码注释详尽,可以用于商业或非商业用途。
由于具有上述特点,uIP被广泛应用在嵌入式系统的网络互联中。
1 uIP协议栈的体系结构uIP协议栈往掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保存了网络通讯必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。
由于uIP协议栈专门为嵌进式系统而设计,因此还具有如下优越功能:(1)代码非常少,其协议栈代码不到6K,很方便阅读和移植。
(2)占用的内存数非常少,RAM占用仅几百字节。
(3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。
(4)支持多个主动连接和被动连接并发。
(5)其源代码中提供一套实例程序:web服务器,web客户端,电子邮件发送程序(SMT P客户端),Telnet服务器,D NS主机名解析程序等。
实现高效能嵌入式系统网络通信的关键优化策略

实现高效能嵌入式系统网络通信的关键优化策略随着技术的不断进步和智能设备的普及,嵌入式系统在各个领域中的应用变得越来越广泛。
而网络通信作为嵌入式系统的重要功能之一,对于系统的性能和稳定性至关重要。
为了实现高效能的嵌入式系统网络通信,我们需要采取一些关键的优化策略。
本文将从硬件优化、协议选择和数据传输三个方面进行讨论。
首先,硬件优化是实现高效能嵌入式系统网络通信的关键之一。
对硬件设备进行优化可以显著提高系统的性能和响应速度。
首先,选择高性能的处理器和芯片组对于嵌入式系统的网络通信非常关键。
高性能的处理器能够提供更多的计算资源,加快数据处理的速度。
同时,优化网络接口模块,例如网络芯片和以太网接口,也能提高系统的网络传输效率。
此外,合理划分和配置系统的内存资源,对于数据的存储和传输也起到关键作用。
其次,协议选择是优化嵌入式系统网络通信的另一个关键策略。
不同的应用场景和需求,需要选择合适的网络通信协议。
例如,对于实时性要求较高的场景,可以选择UDP协议,因为UDP协议的传输速度较快,但可靠性较差;而对于对可靠性要求较高的场景,可以选择TCP协议,因为TCP协议能够提供可靠的数据传输保证。
此外,对于大规模数据的传输,可以考虑使用更高效的传输协议,例如HTTP/2或者MQTT等。
最后,数据传输的优化也是实现高效能嵌入式系统网络通信的关键策略。
在传输过程中,数据的压缩和加密是常用的优化手段。
数据压缩可以减小数据的传输量,降低网络传输的带宽需求。
同时,数据加密可以提高数据的安全性,保护数据的机密性和完整性。
此外,合理使用缓存和分片技术也可以提高数据的传输效率。
通过将大数据拆分成小块进行传输,并在接收端进行组装,可以减少传输过程中的延迟和丢包的可能性。
总结起来,实现高效能嵌入式系统网络通信的关键优化策略包括硬件优化、协议选择和数据传输优化。
通过选择高性能的处理器和优化网络接口模块,可以提高系统的性能和响应速度。
对于不同的应用场景和需求,选择合适的网络通信协议非常重要。
基于FPGA的UDP_IP协议栈的设计与实现

第13卷㊀第6期Vol.13No.6㊀㊀智㊀能㊀计㊀算㊀机㊀与㊀应㊀用IntelligentComputerandApplications㊀㊀2023年6月㊀Jun.2023㊀㊀㊀㊀㊀㊀文章编号:2095-2163(2023)06-0007-06中图分类号:TP393文献标志码:A基于FPGA的UDP_IP协议栈的设计与实现商艳娟,徐卓汀,王成群(浙江理工大学信息学院,杭州310018)摘㊀要:工业控制现场复杂性的提升增加了对数据传输性能的要求,为了提高工业控制现场设备之间数据传输的实时性和确定性,本文对TCP/IP协议的基础架构进行研究,设计了一种UDP_IP网络通信协议栈,支持ARP协议㊁ICMP协议以及UDP协议通信;通过使用CycloneIV系列FPGA芯片和以太网PHY芯片RTL8201CP实现了各种网络协议通信㊂经过测试,验证本文设计的UDP_IP协议栈能够正确的发送和接收各种协议报文数据,设计灵活,具有较好的稳定性和较强的可移植性㊂关键词:FPGA;UDP_IP协议栈;UDP协议;以太网DesignandimplementationofUDP_IPprotocolstackbasedonFPGASHANGYanjuan,XUZhuoting,WANGChengqun(SchoolofInformation,ZhejiangSci-TechUniversity,Hangzhou310018,China)ʌAbstractɔTheimprovementofthecomplexityoftheindustrialcontrolfieldincreasestherequirementsfordatatransmissionperformance.Toimprovetheefficiencyandcertaintyofdatatransmissionamongdevicesinindustrialcontrolfield,weconductdetailedstudyonthebasicstructureoftheTCP/IPprotocolandproposeanewUDP_IPnetworkcommunicationprotocolstackwhichsupportsARPprotocol,ICMPprotocolandUDPprotocolcommunication.VariousnetworkprotocolcommunicationisrealizedbyusingCycloneIVseriesFPGAchipandEthernetPHYchipRTL8201CP.ThedesignedprotocolstackisflexiblewithgoodstabilityandstrongportabilityandthetestexperimentsverifythatthedesignedUDP_IPprotocolstackcancorrectlysendandreceivevariousprotocolmessagedata.ʌKeywordsɔFPGA;UDP_IPprotocolstack;UDPprotocol;ethernet基金项目:浙江省级重点研发计划(2021C01047);流程工业综合自动化国家重点实验室开放课题基金(2021-KF-21-06,2020-KF-21-09)㊂作者简介:商艳娟(1997-),女,硕士研究生,主要研究方向:物联网㊁工业互联网;徐卓汀(1998-),男,硕士研究生,主要研究方向:嵌入式与物联网技术;王成群(1981-),男,博士,讲师,主要研究方向:工业互联网㊁AI及其在行业中的应用㊂通讯作者:王成群㊀㊀Email:cqwang@zstu.edu.cn收稿日期:2022-06-210㊀引㊀言网络通信技术的快速发展,为大量数据的传输提供了可能[1]㊂总线按照传输数据的方式可以分为串行总线和并行总线㊂并行总线控制复杂,传输距离有限,串行总线设计简单,但是传输速率低[2]㊂以太网技术的发展克服了总线传输的缺点,接口速度快,传输的距离远,在复杂的工业控制系统中受到广泛应用[3]㊂传统的以太网在主控芯片内部编写以太网协议或者使用嵌入式处理器运行操作系统,在操作系统下完成协议的通信[4]㊂使用主控芯片和嵌入式处理器来实现以太网通信协议无法保证较高的数据传输实时性和确定性㊂使用现场可编程门阵列(FPGA,FieldProgrammableGateArray)实现数据的通信,因为通过硬件固化协议的处理逻辑,可以有效地提高数据传输系统的性能,FPGA芯片与物理层(PHY,Physical)芯片相连,连接结构简单,不需要外部设备驱动与大量的外围控制电路,可移植性强,系统集成度高[5]㊂基于综上的一些研究,本文设计了一款UDP_IP协议栈,将其移植到FPGA芯片中,使用以太网线将包含FPGA芯片和PHY芯片的电路板与电脑相连,完成数据的传输㊂本设计具有以下功能:(1)实现ARP请求和应答报文的发送,完成IP地址和MAC地址的映射;(2)支持ICMP报文的ping操作;(3)实现UDP回环通信㊂1㊀UDP_IP协议栈结构和功能UDP_IP协议栈模型是将开放式系统互联通信参考模型(OpenSystemInterconnectionReferenceModel,OSI)7层结构简化成4层,从上往下分别是应用层㊁传输层㊁网络层㊁网络接口层,如图1所示㊂应用层支持SMTP㊁HTTP㊁TFTP等协议传输[6];传输层包含TCP协议和UDP协议,TCP协议是一种基于3次握手机制的可靠传输协议,UDP是一种不可靠的传输协议,该协议实现简单,适用于低时延㊁数据量大的快速传输场景;网络层可以实现IP协议㊁ICMP协议通信,IP协议负责将数据报通过互联网发送出去,ICMP协议主要是采用错误侦测和回馈机制,为通信环境提供可能发生的问题反馈信息;网络接口层支持ARP协议传输,将已知的IP地址解析成MAC地址,使得交换机可以通过MAC地址进行相应的通信㊂本文设计的UDP_IP协议栈可以实现ARP请求㊁ARP响应㊁ICMP响应㊁UDP回环多种协议传输㊂S M T P 、H T T P 、T F T PT C P 、U D P I P (I C M P )A R P应用层传输层网络层网络接口层图1㊀UDP_IP协议栈参考模型Fig.1㊀UDP_IPprotocolstackmodel2㊀UDP_IP协议栈设计本文采用模块化的思想设计UDP_IP协议栈,整个UDP_IP协议栈由6个模块组成,分别是MAC数据解析模块㊁IP数据解析模块㊁ARP处理模块㊁ICMP处理模块㊁UDP处理模块㊁MAC数据封装模块,UDP_IP协议栈总体架构如图2所示㊂M A C 数据封装模块U D P 处理模块I C M P 处理模块A P P 处理模块I P 数据解析模块M A C 数据解析模块M A C 接口图2㊀UDP_IP协议栈总体架构Fig.2㊀OverallarchitectureoftheUDP_IPprotocolstack2.1㊀MAC数据解析模块设计MAC数据解析模块的作用是分离出ARP报文和IP报文,在这个模块中使用异步先入先出队列(FirstInputFirstOutput,FIFO)进行数据的跨时钟域处理,MAC数据解析模块处理报文的流程图如图3所示㊂首先,调用异步FIFO的IP核,将接收的数据以及接收使能信号全部缓存进FIFO中;根据FIFO中存储数据的个数产生FIFO读使能信号,将数据和接收使能信号读出;根据读出的使能信号驱动计数器计数,当计数到相应的值时,解析在该值处接收的数据,该数据即是以太网协议类型;判断协议的类型是否为IP或ARP协议类型,如果不是,直接丢弃该数据帧,如果类型值为0x0800,则判断该报文属于IP报文,如果类型值为0x0806,则该报文属于ARP报文,根据不同类型报文的判断结果,将数据送入不同的后级模块㊂将A R P 报文数据寄存将I P 报文数据寄存协议类型==0x 0800丢弃是是否协议类型==0x 0800或者0x 0806根据计数值,解析协议类型根据读出接收使能信号,计数器计数F I F O 缓存数据和接收使能信号开始结束否图3㊀MAC数据解析模块流程图Fig.3㊀FlowchartoftheMACdataparsingmodule2.2㊀ARP处理模块设计ARP处理模块的主要功能是对接收的ARP报文进行分析,更新ARP缓存表,具体实现过程如图4所示㊂当上级MAC数据解析模块将ARP报文发送到ARP处理模块后,对ARP接收报文进行解析,得到ARP报文中的操作码㊁发送方IP地址㊁发送方MAC地址㊁接收方IP地址㊂当接收的操作码为1,8智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀同时报文中的目的IP等于本地设置的IP,说明接收的是ARP请求报文,将该报文中的发送方IP地址和MAC地址寄存,用作ARP缓存列表的更新值,同时还用于发送ARP应答报文中目的IP地址和目的MAC地址㊂当接收的操作码为2,同时报文中的目的IP等于本地设置的IP,判断接收的是ARP应答报文,应答报文只需将报文中发送方IP地址和MAC地址寄存,用来ARP缓存列表信息的更新㊂图4虚线部分实现了ARP列表的更新,本设计定义了一个数组存储ARP信息,每当接收一个ARP请求或者是ARP应答报文时,定义的数组单元会更新IP地址和MAC地址,每8条ARP缓存满时,会自动覆盖之前的信息,进行下一轮的更新㊂另外,本设计还自定义了一个固定的目的IP地址,协议栈会自动地向这个自定义的目的IP地址主机定时发送ARP请求报文㊂结束更新A R P 缓存更新A R P 缓存,提供A R P 应答发送使能操作码==1&&目的I P ==本地I P否是解析A R P 报文开始图4㊀ARP处理模块流程图Fig.4㊀FlowchartofARPprocessingmodule2.3㊀IP数据解析模块设计IP数据解析模块有两个作用:将UDP报文和ICMP报文分离;进行IP层校验和计算,检测接收报文的IP层是否正确,IP数据解析模块流程图如图5所示㊂由MAC分离出的IP报文被送入IP数据解析模块,对IP报文的头部进行解析,得到上层协议类型,目的IP地址㊂在报文解析的同时,对IP的报头信息进行校验和计算,得到的正确值为16 hffff,如果校验和的计算不是该值,说明接收到的IP报文是错误的,丢弃该报文㊂根据报文解析的上层协议类型㊁目的IP地址㊁IP校验和来判断该报文是UDP报文还是ICMP报文,将不同类型的报文数据使用存储器寄存,传输到接下来的ICMP处理模块或者是UDP处理模块㊂结束U D P 报文存储I C M P 报文存储上层协议类型==0x 11&&目的I P ==本地I P &&校验和==16’h f f f f解析I P 报文开始否是图5㊀IP数据解析模块流程图Fig.5㊀FlowchartofIPdataanalysismodule2.4㊀ICMP处理模块设计ICMP处理模块能够对ICMP请求报文作出响应,同时将接收的ICMP报文数据部分缓存,然后转发㊂在该模块中整个报文的处理过程经历3个不同的状态,如图6所示㊂当IP数据解析模块没有发送任何数据给ICMP处理模块时,该模块一直处于空闲状态,一旦接收到上级模块发送ICMP报文,ICMP报文接收开始使能信号跳变为高电平,状态跳转到接收状态;接收状态下,对接收的ICMP报文进行解析,得到ICMP报文的类型和代码值分别为0x08和0x00,则接收的是ICMP请求报文,直到ICMP报文接收结束使能信号变为高电平时,状态跳转到发送状态,如果接收的是ICMP应答报文时,状态一直保持接收状态;接收状态下,另一个操作是使用同步随机存取存储器(RandomAccessMemory,RAM)存储报文,等到发送状态下取出报文数据部分内容,发送回电脑㊂等到发送的数据正好等于接收的数据长度时,ICMP报文发送结束信号跳变为高电平,由发送状态跳转到空闲状态,等待IP数据解析模块发送下一个ICMP报文㊂I D L ES E N DR E C E I V E发送结束使能信号为高电平接收开始使能信号为高电平接收结束使能信号为高电平图6㊀ICMP处理模块状态机图Fig.6㊀StateofICMPprocessingmodule2.5㊀UDP处理模块设计UDP处理模块完成UDP报文的解析并且为发9第6期商艳娟,等:基于FPGA的UDP_IP协议栈的设计与实现送UDP回包封装UDP首部信息,整个UDP处理模块状态跳转如图7所示㊂首先,如果IP数据解析模块没有发送任何UDP报文,状态机一直会处于空闲状态,直到接收到有效的UDP报文,UDP报文接收开始使能信号跳为高电平,状态机随后跳转到接收状态;等到所有数据报文接收完成后,UDP报文接收结束使能信号变为高电平,状态机跳转到计算UDP校验和状态,等到校验和的计数器计数到9时,状态会跳转到发送状态;当发送的数据长度正好等于接收的数据长度时,UDP报文发送结束使能信号变为高电平,表示发送完成,状态机跳转到空闲状态,等待IP数据解析模块传输下一个UDP报文数据㊂在整个状态机跳转过程中,数据处于接收状态时,解析UDP报文,得到目的端口号㊁源端口号㊁UDP数据长度㊁发送方IP地址,为UDP回环的实现提供目的端口号和源端口号㊂数据需要返回给发送端,必须将接收的UDP数据缓存下来,调用一个同步RAM的IP核进行数据的缓存㊂在UDP报头校验和计算状态下,计算校验和为发送UDP回包提供正确的UDP校验和㊂I D L ES E N DR E C E I V EG E N _C H E C K S U M 接收开始使能信号为高电平接收结束使能信号为高电平校验结束使能信号为高电平发送结束使能信号为高电平图7㊀UDP处理模块状态机Fig.7㊀StateofUDPprocessingmodule2.6㊀MAC数据封装模块设计ARP处理模块提取的目的IP和目的MAC地址,ICMP处理模块重新打包的ICMP应答报文以及UDP处理模块重新封装的UDP报文都传入MAC数据封装模块合流㊂具体选择返回哪一种协议报文在MAC数据封装模块需要进行仲裁,具体的MAC数据封装模块流程图如图8所示㊂首先,判断发送使能信号,如果是ARP报文发送使能信号,还需要判断发送的是ARP应答报文还是ARP请求报文㊂如果ARP应答报文发送使能信号为高电平,按照ARP数据格式组帧整个ARP报文内容;如果是ARP请求发送使能信号为高电平,依照同样的组帧方式设置ARP请求报文内容,传输到MAC数据封装模块㊂ARP报文前面再封装以太网首部信息,最终发送给目标主机㊂如果判断是IP报文发送使能信号为高电平,根据发送的上层协议类型,得到发送的报文是ICMP报文还是UDP报文,如果协议类型是0x11,则表示发送UDP报文,将UDP处理模块传输过来的内容作为整个以太网帧的数据部分,如果协议类型是0x01,则表示发送ICMP报文,将ICMP处理模块传输过来的内容作为整个以太网帧的数据部分㊂以太网帧其他部分使用以太网首部以及IP首部信息填充㊂数据按照标准以太网协议帧封装完成后,可以将这些数据直接传输给MAC接口,MAC将这些数据传回给发送端㊂以太网帧和I P 帧封装U D P 报文以太网帧和I P 帧封装I C M P 应答报文A P P 应答发送信号==1协议类型==0x 11A R P 报文发送I P 报文发送开始A P P 发送使能信号==1以太网帧封装A P P 应答报文以太网帧封装A P P 请求报文结束否是是否否是图8㊀MAC数据封装模块流程图Fig.8㊀FlowchartofMACdataencapsulationmodule3㊀设计验证本设计在QuartusII13.0软件中使用Verilog语言编写整个UDP协议栈代码,设计完成后使用modelsim仿真软件对整个UDP_IP协议栈进行功能验证㊂ICMP请求报文和应答报文的仿真时序图如图9和图10所示㊂从图9可以看到两个报文发送的以太网协议类型都是0x0800,ICMP报文的首部符合协议数据的设定值,接收数据与发送数据是相同的,报文的结尾都是使用FCS校验码封装,验证了本协议栈可以正确接收ICMP请求报文和发送ICMP应答报文;此外,关于ARP协议和UDP协议的接收和发送功能仿真验证也是正确的㊂01智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀图9㊀ICMP请求报文接收图Fig.9㊀ICMPreceptiondiagram图10㊀ICMP应答报文发送图Fig.10㊀ICMPmessagesendingdiagram㊀㊀仿真验证后进行板级验证,使用CycloneIV系列FPGA芯片电路板㊂通过电脑发送不同的协议报文,然后使用wireshark软件抓取电脑发送的报文以及接收的报文,验证UDP_IP协议栈设计的功能㊂当使用小兵以太网发送ARP请求报文和ARP应答报文时,ARP报文测试结果如图11所示㊂电脑每发送一个ARP广播报文,板子会返回一个ARP应答报文给电脑㊂当电脑发送ARP应答报文给板子时,板子不会立即返回请求报文,但是本设计设置了一个电脑IP地址存储在ARP处理模块,会定时发送ARP请求报文给电脑㊂使用ping命令后,ICMP报文测试结果图如图12所示,可以看到当发送一个ICMP请求报文,会传回一个ICMP应答报文㊂接收报文数据和发送报文数据内容完全相同,证明了接收的数据在协议栈中能够正确缓存并转发㊂图11㊀ARP报文测试结果图Fig.11㊀ARPpackettestresult图12㊀ICMP报文测试结果图Fig.12㊀ICMPpackettestresultdiagram㊀㊀为了评估本设计UDP_IP协议栈发送UDP回环报文的性能,使用网络调试助手每1ms发送一次UDP报文,测试的结果如图13所示㊂发送UDP报文次数达到10万次,每一次的发送都能正确接收,说明本文设计的UDP_IP协议栈具有可靠稳定的传输性能,传回电脑的数据与电脑发送出去的数据是完全一致的,验证了数据能够在该协议栈内完成正确的数据接收和发送㊂图13㊀UDP报文测试结果图Fig.13㊀UDPpackettestresultdiagram11第6期商艳娟,等:基于FPGA的UDP_IP协议栈的设计与实现4 结束语本文设计了一种基于FPGA的UDP_IP协议栈,ICMP报文和UDP报文数据部分在该协议栈内完成了正确的缓存和转发,当发送ARP报文时,在该协议栈内能够及时进行ARP列表的更新㊂本设计具有良好的稳定性和可靠性,为高速以太网通信提供了一个很好的解决方案,有着广泛的应用前景㊂参考文献[1]武朋,黄虎,王兴.基于FPGA的TCP/IP协议设计与实现[J].软件导刊,2013,12(5):22-23.[2]朱明辉,司斌,张从霞,等.FPGA与88E1111的千兆以太网接口设计[J].单片机与嵌入式系统应用,2017,17(3):60-63,66.[3]李勋,刘文怡.基于FPGA的以太网接口设计与实现[J].自动化与仪表,2014,29(5):57-60.[4]董永吉,王钰,袁征.基于FPGA的万兆以太网UDP_IP硬件协议栈设计与实现[J/OL].计算机应用研究:1-4[2022-04-25].[5]韩剑南,胡辽林.基于FPGA和UDP/IP协议的千兆网络图传系统[J].计算机系统应用,2018,27(3):99-104.[6]刘源,张刚.可靠UDP协议栈的FPGA实现[J].火力与指挥控制,2017,42(7):139-143.(上接第6页)文研究了基于该环境下的服务迁移问题,并对服务迁移过程中产生的计算成本㊁迁移成本和能耗建模,将迁移决策规划为部分迁移而非二元迁移,同时考虑了车辆移动性带来的问题㊂本文将服务迁移建模为MDP问题,并提出了基于深度强化学习的服务迁移算法来降低服务的平均时延和能耗㊂实验结果表明,本文提出的算法在学习率为0.005时能够较快达到收敛,并且与其他算法相比在20km/h和60km/h时分别有8.6%和15.3%的性能提升,同时当移动速度处于60km/h时,在能耗方面有14.4%的优势㊂在未来工作中,将车辆加速度引入以预测用户驾驶车辆的移动意图,从而进行更精确的迁移决策㊂参考文献[1]ABBASN,ZHANGY,TAHERKORDIA,etal.Mobileedgecomputing:Asurvey[J].IEEEInternetofThingsJournal,2018,5(1):450-465.[2]BIJ,YUANH,DUANMUS,etal.Energy-optimizedpartialcomputationoffloadinginmobile-edgecomputingwithgeneticsimulated-annealing-basedparticleswarmoptimization[J].IEEEInternetofThingsJournal,2020,8(5):3774-3785.[3]ZHANGQ,ZHENGH,ZHONGZ,etal.Energyminimizationforfogcomputing-enabledhierarchicalnetworkswithdynamicTDD[C]//2019IEEE/CICInternationalConferenceonCommunicationsinChina(ICCC).IEEE,2019:590-595.[4]WANGK,HUZ,AIQ,etal.Jointoffloadingandchargecostminimizationinmobileedgecomputing[J].IEEEOpenJournaloftheCommunicationsSociety,2020,1:205-216.[5]WUF,LIX,LIH,etal.Energy-timeefficienttaskoffloadingformobileedgecomputinginhot-spotscenarios[C]//ICC2021-IEEEInternationalConferenceonCommunications.IEEE,2021:1-6.[6]SINGHS,KIMDH.Profitoptimizationformobileedgecomputingusinggeneticalgorithm[C]//2021IEEERegion10Symposium(TENSYMP).IEEE,2021:1-6.[7]KIMS.Bargaininggamebasedoffloadingservicealgorithmforedge-assisteddistributedcomputingmodel[J].IEEEAccess,2022,10:63648-63657.[8]OUYANGT,ZHOUZ,CHENX.Followmeattheedge:Mobility-awaredynamicserviceplacementformobileedgecomputing[J].IEEEJournalonSelectedAreasinCommunications,2018,36(10):2333-2345.[9]VUTT,NGUYENDN,HOANGDT,etal.Optimalenergyefficiencywithdelayconstraintsformulti-layercooperativefogcomputingnetworks[J].IEEETransactionsonCommunications,2021,69(6):3911-3929.[10]ALBONDAHDR,PéREZ-ROMEROJ.AnefficientRANslicingstrategyforaheterogeneousnetworkwitheMBBandV2Xservices[J].IEEEAccess,2019,7:44771-44782.[11]KSENTINIA,TALEBT,CHENM.AMarkovdecisionprocess-basedservicemigrationprocedureforfollowmecloud[C]//2014IEEEInternationalConferenceonCommunications(ICC).IEEE,2014:1350-1354.[12]TANGZ,ZHOUX,ZHANGF,etal.Migrationmodelingandlearningalgorithmsforcontainersinfogcomputing[J].IEEETransactionsonServicesComputing,2019,12(5):712-725.[13]WILDMANJ,NARDELLIPHJ,LATVA-AHOM,etal.Onthejointimpactofbeamwidthandorientationerroronthroughputindirectionalwirelesspoissonnetworks[J].IEEETransactionsonWirelessCommunications,2014,13(12):7072-7085.[14]LIZ,XIANGL,GEX,etal.LatencyandReliabilityofmmWaveMulti-HopV2VCommunicationsUnderRelaySelections[J].IEEETransactionsonVehicularTechnology,2020,69(9):9807-9821.[15]BELLMANR.Amarkoviandecisionprocess[J].JournalofMathematicsandMechanics,1957,6(5):679-684.[16]SUTTONRS,BARTOAG.Reinforcementlearning:Anintroduction[M].MITpress,2018:472-475.21智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀。
基于LwIP协议栈的UDP协议分析与优化

基于LwIP协议栈的UDP协议分析与优化徐鑫;曹奇英【摘要】近年来,LwIP协议栈已经在嵌入式系统上得到了广泛的应用,但由于嵌入式处理器性能及实时操作系统效率的影响,应用于嵌入式上的LwIP协议栈的实测性能和理论值之间一直存在较大差距.分析了UDP协议的结构,并在富士通H60高清机顶盒(ARM11体系架构、100M以太网控制器)平台下,通过调用精确到1us的系统时钟,测量了UDP协议接收1KB报文的每个环节所用时间,发现制约UDP协议性能的主要瓶颈之一是内存拷贝,最后,针对内存拷贝给出了一个优化算法.经测试,整体效率提高了32%.%In recent years, LwIP protocol stack has been widely used in embedded systems. However, because of the impacts of embedded processor performance and RTOS efficiency, the measured performance of LwIP protocol stack applied in embedded system is actually far below the theoretical value. In this paper we analyse the structure of UDP protocol, and measure on Fujitsu H60 HD Set Top Box ( ARM11 architecture and 100M Ethernet controller) platform the time cost of every link when receiving 1 KB message by UDP protocol through revoking a system timer with 1 us accuracy. It is found that one of the most time-consuming parts turned out to be the memory copy, so an optimised algorithm for memory copy is finally given. According to the final test, the overall system efficiency increased 32%.【期刊名称】《计算机应用与软件》【年(卷),期】2011(028)003【总页数】4页(P246-249)【关键词】LwIP;嵌入式系统;UDP协议;优化【作者】徐鑫;曹奇英【作者单位】东华大学计算机科学与技术学院,上海,201620;东华大学计算机科学与技术学院,上海,201620【正文语种】中文0 引言随着嵌入式处理器速度的飞速提高和成本的不断降低,嵌入式系统在生活中的应用已经越来越广泛,与此同时,网络技术和嵌入式的紧密结合也成为了一种发展的趋势[1],各种用于嵌入式系统的小型协议栈应运而生,如uC/IP、uIP、LwIP、TinyTCP 等,这几种协议栈都派生于BSD TCP/IP[2]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种嵌入式系统UDPIP协议栈的优化设计一种嵌入式系统UDPIP协议栈的优化设计摘要:提出了一种简化高效的UDPIP协议栈的优化设计方法。
从嵌入式系统所要求的高速传输效率出发,优化设计了协议栈的BUFFER管理系统、BSD接口、路由模块以及数据重组机制。
从协议栈的可移植性出发,实现了UDPIP协议栈与标准ETH驱动的挂接,以及同基于其他物理介质的虚拟ETH驱动的挂接。
与VXWORKS协议栈的性能对比结果表明,本协议栈具有高效率和低资源占有率,具有很大的实用价值。
关键词:UDPIP;协议栈;高效传输;ETH驱动挂接随着网络技术的发展,集成网络外设的嵌入式系统越来越多,对于目前大多数中低端的MCU来说,若运行较大型复杂网络协议栈,如VXWORKS、LINUX系统自带协议栈等,存在多种困难。
由于上述协议栈均与各自操作系统绑定,需要同时移植相应操作系统(OS),另外对于一些低端MCU来说,其硬件限制也无法运行大型协议栈。
本文在嵌入式系统中设计实现了一种简化的UDPIP协议栈,该协议栈运行占用资源少,数据传输效率高,便于移植,并且可以运行在无操作系统的微型嵌入式系统中。
1设计原理及整体架构UDPIP协议栈对数据的处理过程,即对数据的发送和接收流程,主要完成对承载数据添加、剥离协议头的操作。
在兼顾UDPIP协议栈功能的基础上,为了达到高效的目的,对协议栈的数据收发流程以及所涉及的重要数据结构进行优化。
在数据发送流程,用户数据传入协议栈以及协议栈将数据递交给ETH控制器两个步骤耗时最多,尤其是大于MTU的数据。
通过优化协议栈BUFFER结构以及协议栈与ETH驱动的挂接方式,改进了这两部分的效率;对于大于MTU数据的接收,需要进行重组,所涉及的定时机制以及重组数据的整合,是影响效率的关键所在,需对其进行重新设计。
根据优化协议栈时流程简化、功能不简化的原则,设计开发了协议栈的控制模块,以支持属性设置,参数配置以及ETH设备的控制等功能。
协议栈的整体架构。
2关键技术2.1BUFFER管理在数据收发过程中,内存分配、释放、拷贝是耗时最多的部分,尽可能减少内存操作,特别是减少数据在收发流程中的内存拷贝次数能大幅提高协议栈效率,合理的BUFFER池结构是实现高效协议栈的关键。
为了配合设计流程的实现,便于协议栈数据BUFFER、系统BUFFER管理,提高协议栈数据传输效率,协议栈实现类LINUX系统中SLAB CACHE模式管理协议栈数据BUFFER和系统控制BUFFER。
在系统初始化中分配大块内存,按照不同BUFFER SIZE建立CACHE,其拓扑结构。
在数据发送流程中,应用程序通过BSD接口将数据传入UDPIP协议栈后,协议栈直接将其拷贝到协议栈BUFFER,若数据长度大于一个MTU,则分片后依次拷贝到多个协议栈BUFFER,相比于复杂协议栈,该协议栈在处理发送流程时,没有按照先加UDP头后分片的顺序,而是先将数据分片,之后在第一分片头添加UDP头,由此省去了一次内存拷贝。
用户数据传入协议栈的示意图。
在数据接收过程中,特有的BUFFER结构支持链表式数据重组,减少一次数据拷贝,有效地提高了数据的接收效率。
从协议栈对数据的处理来讲,接收流程是发送流程的逆过程,即发送流程将用户数据传入协议栈(大于MTU要分片),添加UDP头,IP头以及ETH头,接收流程相反,首先对ETH提交上来的数据进行剥离ETH头,解析IP头(大于MTU的包完成重组),解析UDP头,最终提交给用户。
2.2BSD接口实现从通用性考虑,简化的UDPIP协议栈实现BSD面向UDP协议的所有接口。
BSD接口基于SOCKET与PORT管理本地资源,包括存储、分配、回收等操作。
为了提高SOCKET和PORT资源较多时上述操作的执行效率,采用位图方式管理可用资源,以比特位的0和1状态标识资源是否可用,采用比特操作方式,实现对资源的分配和释放。
在分配资源时,采用二分法查询可用资源,即遍历比特为0状态的位置(第几个比特),也就获取了可用资源的Index。
该算法保证在资源较多时,查找可用资源耗时为常量且算法复杂度较低,同时也能够实现资源的重复利用。
遍历查找方式。
在标准BSD接口中recvfrom涉及数据拷贝,且每次只能接收一个数据包,效率低且耗时。
一般应用程序调用recvfrom接口的应用流程为:为了能够获取完整的数据包,特别是保证特大包(约64KB)也能成功接收,应用程序在调用recvfrom接口时传入的BUFFER要足够大,一般设为64KB。
为了提高应用程序BUFFER的利用率,该BUFFER不是由应用程序提供,而是用一专门接受数据的缓存保存recvfrom的返回值,之后将该数据拷贝至应用程序提供的BUFFER 进行处理。
从上面流程可见,存在的主要问题是增加一次内存拷贝,特别是在协议栈满负荷运行时,对协议栈性能影响巨大。
在recvfrom读取数据时,可以同时检查SOCKET接收缓存是否还有数据包待接收,若有将其长度返回,应用程序在获取当前数据时即可知道下一个数据包的长度,据此动态分配内存,既不浪费BUFFER空间也减少了一次拷贝。
为了保持标准的recvfrom接口兼容性,考虑不通过扩展参数的情况下完成后续待接收数据长度提示信息的传递:接口recvfrom在每次拷贝一次数据到用户缓存时,在拷贝完数据后,将后续是否有数据包待接收以及数据长度信息附于其后,应用程序可以提取该信息。
上述设计方案越是在协议栈繁忙时越能体现其优越性,当每次接收数据时下一个数据均已到达SOCKET接收缓存时,可以保证每次数据接收均可以减少一次拷贝;若协议栈比较清闲,则该方案失效,但此时系统欠载,多拷贝一次对系统效率也无影响。
2.3简单路由设计路由查询需要确定数据包内所要填入的源IP地址,查找所要经过的协议栈网口,网口由协议栈数据接口描述。
该结构对应于ETH驱动面向的物理网口或虚拟网口,使数据包在物理上或逻辑上分流和隔离,达到负荷分担,优先级控制等目的。
路由查询同时需要获取数据包下一跳所要发往的节点以及该节点的MAC地址,用于封装ETH头。
UDPIP协议栈支持简单多网口路由,策略如下:协议栈支持多网口挂接,网口个数取决于ETH向协议栈注册的网口个数,每个网口可以拥有多个IP地址,但每个IP地址唯一地属于一个网口。
数据发送时,根据目的IP地址,依次考虑其子网掩码和网络掩码,采取网段位数最大匹配原理,选取网段最大匹配的本地IP所在的网口作为发送网口,若网段不能匹配,说明目的主机与本地主机不属于同一网络,UDPIP协议栈此时采取默认网关方式,选取任一ETH网口作为发送网口,将数据发往网关。
针对上述缺陷,优化的UDPIP协议栈在实现上述简单路由机制的基础上,简化了ARP协议,采用ARP表现静态配置的方式,将有通信需求的对端IP及MAC地址静态配置到本地,在通过简单路由机制获取下一跳IP地址后,通过查询该静态配置表,将IP地址解析为MAC地址,进而封装ETH头,将数据发送出去。
整个流程。
2.4重组机制当第一次收到某报文的分片时,需要将分片暂存并启动重组机制,直到该报文的所有分片到齐,重组成功,方能继续执行后续处理。
在某些情况下,分片报文在传输过程中丢弃将导致数据永远重组不全,已经收上来的分片将长期占着资源不能释放,因此必须防止此类情况发生。
在标准协议栈中采用定时机制,在收到第一个分片时启动重组定时器,若在定时期间内不能完成重组则将已收到的分片释放,防止资源泄露。
在简化UDPIP协议栈中,考虑到定时机制相对复杂,而且增加定时器则会引入异步事件,增加了不可控因素,因此采用计数重组法保证重组机制的正常工作。
计数重组法的工作原理:正常情况下,定时重组机制在所设时间内所有分片应该可以收齐,计数重组法则假定在某数据报的所有分片应该在所设定的IP报文个数内收齐。
如定时重组机制中每收到该报文的任何一个分片重启定时器,计数重组机制中则将计数器复位,重新计数。
因此,首先应该给出假定的数据报文个数,此处设为N,在收到某个数据报的第一个分片时开始计数,当收到第N个数据报文时该数据报仍没有重组完成,则认为该数据报重组失败,需要将已收上来的分片释放。
在实现上,计数重组法与无符号数的计数溢出原理相结合,极大地提高了重组效率,系统声明一无符号全局变量作为全局计数器,每收到一个IP报文,该计数器加1。
当收到数据报D的第一个分片frag1时,若此时全局计数器的值为n,则初始化m 对应的重组计数器基值为(0-n),之后在每次收到IP报文时,将全局计数器的当前值n1与其基值相加,获取的值与设定的最大容限个数N比较,若大于N 则认为数据重组失败,否则继续等待后续的分片。
该算法具体实现原理。
2.5与驱动挂接协议栈若能实现正常通信,需要设备驱动与之配合,在一些稍高端的微处理器上,配有ETH外设,可实现ETH驱动与协议栈挂接,ETH驱动以BD(Buffer Descriptor)的方式管理以太数据的收发。
为了提高数据传输效率,在数据接收方向BD采取替换方式以避免拷贝,接收流程;在数据发送方向,协议栈将数据封装成ETH帧,挂接到发送BD上,启动ETH控制器完成发送,在发送完成后释放数据BUFFER。
一些中低端的微控制器不支持ETH外设,若需要与UDPIP协议栈挂接,则必须实现虚拟的ETH驱动,底层物理传输可以承载于串口、SPI、GPIO等普遍存在的外设之上。
虚拟驱动也需要提供类BD的管理模式,完成数据的发送、接收、缓存,由于物理承载的限制,要求通信的对端设备物理介质相同,否则需要通过硬件转换电路实现不对等的物理设备间的ETH 通信。
3性能测试协议栈的综合性能取决于其接收方面的性能,因为数据接收流程要完成的工作相对于发送流程更为繁杂。
将UDPIP协议栈与VXWORKS协议栈进行了性能对比测试,测试平台为PPC85XX处理器,工作频率为800MHz,测试模型为发包仪器SmartBit与PPC85XX通过网线连接,ETH工作在千兆全双工模式。
SmartBit做为数据源向PPC发包,PPC应用程序接收到数据并处理。
由于PPC硬件平台处理能力较强,若应用程序调用recvfrom后不做任何处理,无论是Vxworks协议栈还是简化UDPIP协议栈均能轻松达到单向900Mb/s,区别在于CPU占用率不一样。
为了达到直观的效果,测试用例采取附加应用程序处理数据,使CPU工作在满负荷情况下,测试数据收发性能对比如表1所示。
UDPIP协议栈为实现更高的传输效率,同时兼容各种硬件平台,优化设计了协议栈BUFFER管理系统,SOCKET接口模块,采用简洁快速的路由策略及重组机制,充分利用以太BD的特性,采取BUFFER替换方式完成ETH数据向协议栈的提交,尽可能减少数据拷贝。