论文部分内容阅读
随着嵌入式系统与网络的日益结合,具备网络通信能力的嵌入式设备已成为必不可少的需求。IPv4地址空间的严重不足,已不能满足数目庞大的嵌入式设备,能够支持下一代因特网的嵌入式设备已成为嵌入式领域重要的趋势之一。虽然IPv6必然会取代IPv4,但是IPv4互联网已具有相当规模和广泛的应用程序,因此从IPv4到IPv6仍需要一段过渡时期。而在这一段过渡时期,需要解决IPv4与IPv6网络互联的问题。互联网工程任务组提出了三大类解决方法:隧道技术、双协议栈技术、网络地址转换和协议转换技术,其中双协议栈技术是所有的主机和路由器同时运行IPv4和IPv6协议栈,这种技术被认为是过渡时期解决IPv4网络和IPv6网络互联最彻底、最简单有效的方法。随着嵌入式设备硬件性能的不断提升,以及应用程序对实时性要求的不断提升,可以对嵌入式设备的协议解析过程进行加速。在IPv6协议的解析过程中,会经常涉及字段检查、查表等操作,因此如果能将该些操作固化到硬件中,将能大幅度提高协议解析速度。直接将该系列操作固化并在协议解析过程中用来验证速度的提升存在一定的难度,但是可以通过FPGA来验证加速的效果。本文设计并实现了一个适用于嵌入式设备的精简嵌入式IPv6协议栈。该协议栈与流行的嵌入式协议栈--LwIP采用了相同的架构,根据RFC相关标准将协议栈分成应用层、传输层、网络层和链路层。在协议栈内容上,按照IETF制定的相关标准来实现,因此能够应用于现实的网络中。考虑到IPv6协议的复杂度和嵌入式设备的资源限制,本文在实现时,对IPv6功能进行了部分裁剪。裁剪后的协议栈实现了的IPv6协议的基本功能,如地址配置、数据包收发、路由器请求、错误处理等;另一方面,整个协议栈在代码量和运行消耗内存上,都能满足嵌入式设备的资源限制。考虑到对IPv4的支持,本文将自身实现的IPv6协议栈与LwIP融合成一个IPv4/IPv6双协议栈。融合后的双协议栈拥有共同的API层、TCP层以及网络接口层,而在网络层则存在有两套不同的协议。这种架构能够使融合后的双栈在代码量上保持精简。在融合过程中,充分考虑模块化和独立化,不仅能够使IPv4和IPv6互不干扰,而且可以通过关闭预编译的方式来退化成一个单协议栈。虽然针对协议的部分功能进行了裁剪,但是对资源有限的嵌入式设备来说,解析IPv6协议仍然需要花费大量系统时间。本文针对IPv6协议中的几个常用过程,用Verilog语言来描述成硬件可以识别的过程,并且采用FPGA技术来进行验证。实验证明单独模块或者过程的硬件加速是明显的,但是由于技术和时间的限制,没有将这些加速的模块连到整体的协议解析过程中,但相信这种硬件加速方式对提高嵌入式网络设备处理速度的效果是明显的。