基于硬件描述语言的IPv6报文解析器设计

时间:2022-03-26 03:59:15

基于硬件描述语言的IPv6报文解析器设计

摘要:本文针对IPv6网络协处理器中应用普遍的IPv6解析器,提出一种解析器的硬件实现方法,分析了各个模块的功能和实现方式。并用硬件描述语言verilog搭建HDL模型,进行了仿真和逻辑综合。同时使用相关的EDA工具加以验证。

关键词:ipv6;网络协处理器;报文解析;UDP校验

中图分类号:TP393 文献标识码:A文章编号:1007-9599 (2011) 16-0000-02

IPv6 Message Parser Design Based on Hardware Description Language

Li You,Luo Yilin

(School of Optoelectronic Information,University of Electronic Science and Technology of China,Chengdu610054,China)

Abstract:This paper present a implementations method of a IPv6 analyzer based on Verilog HDL language,which is integrated in IPv6 network coprocessor extensively,and analyzes the fuction of each module.The HDL module is coded by Verilog language,simulated and synthesized by EDA tools.

Keywords:IPv6;Network coprocessor;Message analyzer;UDP checksum

一、解析器在网络处理器中的位置

图1

由图1可以看出,网络处理器主要由四部分组成,物理层的接收/发送、以太网帧解析、数据报文管理和内部总线接口。而数据报文管理模块则是根据报文解析器的结果,对相应的数据流进行管理,如:数据报文的转发、重组、过滤等。最终利用网络处理器内部的数据总线接口将数据报文存储到RAM中,并且上报中断给CPU,等待CPU的处理。CPU在将数据处理后,重新写入RAM中,并通知上行总线接口来取数据,数据在经过上行通道的过程中,也会经过报文解析器,将某些不符合过则的报文过滤,最终通过物理层接口发送到网络接口。

二、IPv6以太报文解析器的设计

解析器通过读取数据接收缓存中的内容,首先解析出以太报文的一层和二层协议,如果判断为IPv6报文,则在IPv6校验模块做相应的校验,并将最终的报文数据写入内部FIFO缓存中。数据流计数器,记录已经接收到的数据报文字接收,用于指示定位当前接收到的数据报文的字节位置,并在每一个报文接收完毕后清零。

(一)IPv6报文扩展头校验

和IPv4报文协议不一样,IPv6的IP成包括IP头和扩展头两部分。每个扩展头中的Next Header域标示的下一个扩展头类型,长度域标示当前扩展头的长度,根据上述的两个信息可以准确的指示下一个扩展头的位置和类型。

扩展头校验模块设计框图,如图2:

图2

当以太帧二层协议解析的结果为IPV6报文时,开启IPv6扩展头校验。

1.Next Header域更新:当数据流计数器和扩展头位置相等时,在数据流上截取最新的Next Header值。

2.Next Header域校验:校验最新的Next Header值,如果校验错误则输出Error信号;校验正确,将数据流下一个字节的长度域信息取出。

3.扩展头位置计算:根据当前的Next Header类型和长度域信息可以计算出,下一个扩展头的位置。

4.数据流计数器和扩展头位置比对:当数据流计数器和扩展头位置一致时,给出相应的使能信号,通知Next Header域需要更新。

(二)IPv6 UDP报文Checksum域校验

IPv6 UDP报文的Checksum域校验覆盖两个部分的数据:IPv6 UDP伪头和IPv6 UDP净荷。

内部总线一般需要扩展为多字节的并行数据总线,提高内部数据传输的速率,这里以32bit为例。

图3

图3中,数据流计数器送出的enable校验指示信号,主要是根据数据流中每个协议域的位置送出相应的加法器使能信号。指示信号的产生分为两个部分,一部分在数据流的IP头位置时有效,用于获取伪头需要的IPv6源IP地址和目的IP地址;第二部分是在数据流的UDP报文位置时有效,此时可以在UDP头中获取伪头需要的UDP报文长度和UDP报文的内容。

对于32bit位宽的IPv6 UDP报文校验的算法介绍:将32bit对齐的UDP伪头和UDP净核累加,将得到的结果按16bit对齐的方式进行高16bit和低16bit位相加,如此循环相加得到一个16bit的校验结果。在发送报文解析器中,需要将计算出来的checksum值按2进制取反码,并且添加到UDP报文的checksum域;而在接受报文解析器中,如果最终的得到的16位结果为16’hFFFF,则校验正确,否则校验错误。

UDP校验器的结构由两组并行的加法器组成,加法器a和加法器b为一组加法器,在enable有效时,计算当前输入的数据流的高16bit和低16bit加法结果;而累加器c和加法器d分为一组,将前一组加法器计算的结果,累加到当前的加法器值中,并且通过加法器d送出中最终的checksum值给校验判断模块判断。校验判断模块在UDP报文的结尾,判断加法器d送出的结果是否为16’hFFFF,并送出UDP校验的结果。

三、IPv6以太报文解析器的仿真

为了验证解析器的功能,搭建了IPv6报文发生器的模型。根据解析模块的接口时序,将IPv6 UDP报文输入到解析器中,检验解析器功能设计的正确性。对于输入正确的IPv6 UDP报文,解析器在二层报文解析结果IPv6报文的状态下,在对应的enable信号指示下,解析器中2组并行的加法器(加法器a、b、c、d)同步的计算UDP报文checksum的值,并且在报文结束时加法器d最后输出为16’hFFFF,校验结果正确。

四、结束语

本文用硬件方式实现了IPv6以太报文的解析器功能,并在仿真器上验证了解析器对IP层协议和高层UDP协议的解析和检验功能。由于硬件实现的解析器可集成性高,可以同时满足多种功能的网络处理器要求,具有广泛的应用特点。

参考文献:

[1]DEERING.S,HINDERR Internet Protocol,Version 6(IPv6)Specification,RFC2460[S].1998,12

[2]Network Working Group,S.Kent,RFC2402:IP athentiaction header[S].1998S

上一篇:用汇编语言实现数据排序 下一篇:计算机教学中实训课程教学的探索与实践