基于FPGA的报文数据分析模块的设计
根据其工作原理,本文设计了报文数据分析模块的结构,如图3所示。
图中网络PHY芯片将网络上的MAC数据帧接收下来后,按先后顺序存放在数据缓冲区中,然后由FPGA实现数据预处理单元的工作。
数据预处理实现网络报文的统计、分类、定位、分析和缓存操作,分类指的是报文属于哪种类型,定位指的是报文由哪个网络设备发送和发往哪个网络设备,统计指的是报文所处以太网的流量统计,分析指的是对特定类型的报文进行简单分析,缓存操作指的是经过前述所有操作后将报文按指定格式进行重组放置于数据缓存区。
数据缓冲区A的任务是暂存由网络PHY芯片接收的MAC数据帧。当网络中的MAC数据帧被PHY芯片接收下来后,数据帧的前导码和帧开始符将被PHY芯片识别并丢弃。从目的MAC地址开始,后面的所有数据将进行重组并发送到数据缓冲区A中。此项工作由PHY芯片完成。
数据缓冲区A中的数据经过FPGA的接收和分析后,必须进行重组,按照事先约定好的数据格式存储到数据缓冲区B中,以便后端的CPU准确地接收到数据,方便CPU进行处理。
在FPGA接收一帧网络报文并分析后,生成一个32个字节的包头。包头初始化时,logo字段置0x58,macno字段置对应的MAC编号,dmuno字段置DMU板编号,len字段置报文长度,type字段置‘C’,sec和nsec字段置报文的时间戳的秒和纳秒,flag字段置0xFF,result字段置0x0000。包头所有字段都由数据预处理单元负责填写,包头type字段表明报文所属类型,报文类型分为A(0x40)、B(0x41)、C(0x41)三类,默认为C类。
数据分析处理系统从数据缓冲区A中取出一帧加入包头的网络报文,并开始分析操作。这一过程可以使用流水线式作业,启用几条流水线由选定的FPGA的资源来决定。
根据报文处理流程,将整个模块分为3个功能子单元,如图4所示。由于MAC地址是由6个字节的数据构成,数据较长,分析起来比较困难,为了简化CPU的分析过程,提高CPU的使用率,将6个字节的MCA地址简化为2个字节的地址标记,这样就大大减轻了CPU的工作负担。根据MAC地址不同,将其分为A、B、C三类地址:A类终端信息链表定义为ATMList;B类终端信息链表定义为BTMList;C类终端信息链表定义为CTMList。
fpga相关文章:fpga是什么
通信相关文章:通信原理
交换机相关文章:交换机工作原理
评论