CN107689931B - 一种基于国产fpga的实现以太网交换功能系统及方法 - Google Patents
一种基于国产fpga的实现以太网交换功能系统及方法 Download PDFInfo
- Publication number
- CN107689931B CN107689931B CN201710887984.3A CN201710887984A CN107689931B CN 107689931 B CN107689931 B CN 107689931B CN 201710887984 A CN201710887984 A CN 201710887984A CN 107689931 B CN107689931 B CN 107689931B
- Authority
- CN
- China
- Prior art keywords
- module
- network
- mac
- data
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/40—Constructional details, e.g. power supply, mechanical construction or backplane
Abstract
本发明公开了一种基于国产FPGA的实现以太网交换功能系统及方法,系统包括依次连接的网口物理层模块、现场可编程逻辑FPGA器件、微处理器和外置SRAM存储器;其中,所述网口物理层模块用于连接网口和处理网口物理层的数据,并将数据传输至所述现场可编程逻辑FPGA器件;所述现场可编程逻辑FPGA器件用于完成网口MAC的缓冲及网络包的二层/三层转发处理过程;所述微处理器用于实现对FPGA内部寄存器空间的配置和状态查询功能,并可对以太网数据包进行处理;所述外置SRAM存储器用于用于临时存储转发的网络包。本发明通过软件配置FPGA的相应寄存器即可实现以太网交换的设置,并提供了CPU软件处理以太网数据的接口,可方便灵活地支持常用以太网交换的业务处理。
Description
技术领域
本发明涉及电子信息通信技术领域,尤其涉及一种基于国产FPGA的实现以太网交换功能系统及方法。
背景技术
以太网接口的物理/电气特性的规范符合802.3协议,是目前国际上普遍采用的标准通信接口。在通信设备的机箱中常使用的以太网接口为千兆速率的1000Base-T,其物理速率为1000Mbps。以太网接口作为OSI七层协议中物理层的一种实现方式,得到了广泛的应用。
MAC即Media Access Control,即媒体访问控制子层协议,该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。该层协议是以太网MAC由IEEE-802.3以太网标准定义。
由于以太网交换技术实现上的复杂性,现实设备中往往只能针对某项特定使用方式提供功能,采用专用的以太网交换芯片实现网络交换的业务处理,缺乏灵活性更强的、适应各种用途的和具备高扩展性的设计模块。同时,由于组网功能的协议仍在快速演进,特别是SDN(软件定义网络)技术的发展,使得固定功能的交换芯片难以满足未来不断发展的要求。为了使网络交换体制适应组网功能发展的需求,支持灵活的功能裁剪和扩展,急需一种设计技术用以实现较强的自主性和可编程性。因此,为了使以太网交换设备可以在同一种硬件平台上,支持灵活可变的交换能力,急需一种设计技术用以兼容实现以太网交换的业务处理,而不是固化地处理传统的交换模式。
现场可编程逻辑FPGA器件即现场可编程门阵列,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。现场可编程逻辑FPGA器件作为专用集成电路ASIC领域中的一种半定制电路而出现,可以解决定制电路灵活性的不足,按照需要定制需要的功能。因此,现场可编程逻辑FPGA器件作为一种开发原型研制系统的手段,有利于满足网络交换技术及SDN不断发展的需求。
本方法构建了一种搭建国产FPGA及国产CPU的自主嵌入式交换板卡,基于自主程度较高的软硬件平台实现了网络交换技术体制,可通过可编程、易定制的方式针对应用灵活实现相应的网络交换需求,并为未来的SDN网络交换技术提供可定制、可演进的IP交换技术基础平台。
发明内容
为了克服现有技术存在的缺点与不足,本发明提供一种基于国产FPGA的实现以太网交换功能系统及方法,通过软件配置现场可编程逻辑FPGA器件的相应寄存器即可实现以太网交换的设置,并提供了CPU软件处理以太网数据的接口,可方便灵活地支持常用的以太网交换的业务处理,同时具备自定义扩展业务的能力,从而使得装配了该现场可编程逻辑FPGA器件处理模块的设备具备丰富可扩展的以太网交换应用。
为解决上述技术问题,本发明提供如下技术方案:包括依次连接的网口物理层模块、现场可编程逻辑FPGA器件、微处理器和外置SRAM存储器;其中
所述网口物理层模块用于连接网口和处理网口物理层的数据,并将数据传输至所述现场可编程逻辑FPGA器件;
所述现场可编程逻辑FPGA器件用于完成网口MAC的缓冲及网络包的二层/三层转发处理过程;
所述微处理器用于实现对FPGA内部寄存器空间的配置和状态查询功能,并可对以太网数据包进行处理;
所述外置SRAM存储器用于用于临时存储转发的网络包。
进一步地,所述网口物理层模块通过GMII接口或RGMII接口连接所述现场可编程逻辑FPGA器件;所述现场可编程逻辑FPGA器件通过SPI接口连接所述微处理器。
进一步地,所述网口物理层模块包括若干以太网隔离变压器和若干以太网PHY芯片;所述以太网隔离变压器一端外接网口、另一端连接所述以太网PHY芯片,所述以太网PHY芯片通过GMII接口或RGMII接口连接现场可编程逻辑FPGA器件。
进一步地,所述现场可编程逻辑FPGA器件包括网络交换处理单元、SRAM控制器、SPI控制器和DMA控制器,所述网络交换处理单元连接所述网口物理层模块,所述SRAM控制器、SPI控制器和DMA控制器均连接所述网络交换处理单元;所述网络交换处理单元用于完成网口MAC的接入、网络数据包的二层/三层转发处理及配置管理功能,所述SRAM控制器用于完成外部SRAM器件的读写访问接口,所述SPI控制器用于完成微处理器的SPI接口的适配处理以及提供微处理器到所述现场可编程逻辑FPGA器件内部数据空间操作处理的功能,所述DMA控制器用于完成四路虚拟DMA通道的数据队列处理以及提供微处理器与所述现场可编程逻辑FPGA器件之间的高速DMA通道。
进一步地,所述网络交换处理单元包括若干MAC RxQ模块、输出端口查找模块、若干MAC TxQ模块、配置管理寄存器模块以及网络交换引擎,所述网络交换引擎包括输入队列调度模块和输出队列调度模块;所述MAC RxQ模块均连接所述网口物理层模块和所述输出队列调度模块,所述输出队列调度模块连接所述输出端口查找模块和所述DMA控制器,所述输出端口查找模块连接所述输出队列调度模块,所述输出队列调度模块连接是MAC TxQ模块和所述SRAM控制器;其中
所述MAC RxQ模块用于完成网口接收数据的MAC层处理,并通过内部FIFO对接收数据进行缓存后,将数据继续送往网络交换引擎的输入调度模块;
所述输入队列调度模块用于接收MAC层收到的以太网数据包和微处理器的DMA数据,完成调度接收处理;
所述输出端口查找模块用于决定网络数据包的转发路径,过程包括进行网络数据包的分析/处理、检查数据包内容、过滤各种错误的数据包、根据目的MAC或目的IP地址查找对应的转发表、确定数据包的下一跳设备和输出端口以及最后根据需要对数据包进行修改和封装、将数据包发往输出队列调度模块;
所述输出队列调度模块用于接收输出端口查找模块处理完成的数据包,并将数据包放入所述SRAM控制器的SRAM缓存区,根据数据包的控制信息将数据包分别送入相应的MAC层发送模块和微处理器的DMA数据通道;
所述MAC TxQ模块用于通过其内部FIFO对输出队列调度模块送来的网口发送数据进行缓存,并完成MAC层处理,将发送数据送往以太网PHY芯片,完成以太网数据包的转发;
所述配置管理寄存器模块用于完成网络交换处理单元的上述各模块功能的配置;
所述网络交换引擎、输入调度模块和输出队列调度模块负责输入输出队列的调度处理。
进一步地,所述输出端口查找模块包括包缓存队列模块、包校验模块、包头解析模块、二层查找模块、MAC转发表模块、IP查找模块、三层转发表模块、ARP查找模块、ARP表模块和包转发模块,其中
所述包缓存队列模块用于缓存数据包;
所述包校验模块用于检查源MAC是否与端口匹配、检查IP头的CRC校验和是否正确以及查看TTL值是否为0;
所述包头解析模块用于解析数据包头、提取目标MAC地址、VLAN及目的IP地址等信息、确定网络数据帧类型以及输出匹配的三层交换模块的端口号;
所述二层查找模块用于处理二层交换功能,具体为:根据包头解析模块的目的MAC和VLAN,实现MAC地址转发表的查找,同时维护MAC地址转发表的自动学习和老化;
所述MAC转发表模块用于存储MAC地址转发表;
所述IP查找模块用于根据包头解析模块的结果查找三层转发表,实现三层交换的LPM,输出下一跳IP地址和输出端口号,并将结果传送给包转发模块;
所述三层转发表模块用于存储三层转发表;
所述ARP查找模块包括ARP查找引擎,用于根据IP查找模块的查找后得到的下一跳IP地址查找对应的MAC地址;
所述ARP表模块用于存储ARP表;
所述包转发处理模块用于汇聚上述各模块的处理结果,实现网络数据包的转发,并丢弃掉出错的网络数据包;当判断报文是二层交换时,根据MAC转发表的查找结果,将数据包从包缓存队列模块模块中取出,送入对应的转发端口;当进行三层交换时,则根据IP查找模块和ARP查找模块的查找结果,将数据包从包缓存队列模块模块中取出,将TTL值减1,并设置数据包的目标MAC地址和源MAC地址,送入对应的转发端口;如果包校验模块的结果出错,则不对数据包进行修改,而是将数据包送入端口对应的DMA队列,进而传给CPU软件层处理。
进一步地,所述现场可编程逻辑FPGA器件采用国产化的PG30芯片或PG180芯片,所述微处理器采用国产化的龙芯1A芯片。
本发明另一目的是提供一种基于国产FPGA的实现以太网交换功能方法,包括下述步骤:
1)、微处理器发送操控指令给配置管理寄存器模块,配置管理寄存器模块对网络交换处理单元中MAC RxQ模块、输入队列调度模块、输出端口查找模块、输出队列调度模块、若干MAC TxQ模块以及网络交换引擎进行功能配置;
2)、MAC RxQ模块完成网口接收数据的MAC层处理,并将数据继续送往网络交换引擎的输入调度模块;
3)、输入队列调度模块接收MAC层收到的以太网数据包和微处理器的DMA数据,完成调度接收处理,并将数据继续送往输出端口查找模块;
4)、输出端口查找模块决定网络数据包的转发路径,这个过程包括进行网络数据包的分析和处理、检查数据包内容、过滤各种错误的数据包、根据目的MAC或目的IP地址查找对应的转发表、确定数据包的下一跳设备和输出端口以及最后根据需要对数据包进行修改和封装、将数据包发往输出队列调度模块;
5)、输出队列调度模块将数据包放入所述SRAM控制器的SRAM缓存区,根据数据包的控制信息将数据包分别送入相应的MAC层发送模块和微处理器的DMA数据通道;
6)、MAC TxQ模块完成以太网数据的转发:这个过程包括通过其内部FIFO对输出队列调度模块送来的网口发送数据进行缓存,并完成MAC层处理,将发送数据送往底层PHY器件;
7)、SPI控制器完成微处理器的SPI接口的适配处理以及提供微处理器到现场可编程逻辑FPGA器件内部数据空间操作处理的功能,用于步骤1)中对配置管理寄存器模块的配置;
8)、DMA控制器完成四路虚拟DMA通道的数据队列处理以及提供微处理器与现场可编程逻辑FPGA器件之间高速DMA通道;
9)、SRAM控制器完成外部SRAM器件的读写访问接口,用于步骤5)中输出队列调度模块将数据包放入SRAM缓存区。
采用上述技术方案后,本发明至少具有如下有益效果:
(1)本发明采用国产的现场可编程逻辑FPGA器件和微处理器,并自主嵌入式交换板卡,基于自主程度较高的软硬件平台实现了网络交换技术体制;
(2)本发明软硬件方案灵活,支持多种硬件互连接口,对微处理器、现场可编程逻辑FPGA器件、外围物理层芯片等硬件型号不存在严格依赖关系,可根据实际情况选用其他厂家的器件或新的型号;
(3)本发明通过现场可编程逻辑FPGA器件实现以太网交换的业务处理,可以解决传统专用以太网交换芯片功能单一、固化难升级的缺点,可以在相同的硬件平台上通过软件的配置或升级以实现多种以太网交换功能的处理,并提供了强大灵活的自定义交换表的模式;
(4)本发明使用现场可编程逻辑FPGA器件实现了对以太网交换的转发处理,使得后续CPU部分的设计不用考虑底层转发的细节,而是针对具体的交换协议应用进行处理,将底层硬件转发与软件定义有机地结合在了一起;
(5)本发明的现场可编程逻辑FPGA器件实现的网络交换功能丰富,可同时支持二层/三层交换,并提供了CPU软件处理以太网数据的接口,可方便灵活地支持常用的以太网交换的业务处理;
(6)本发明实现方案的可扩展性强,具备自定义扩展业务的能力,可通过可编程、易定制的方式针对应用灵活实现相应的网络交换需求,并为未来的SDN网络交换技术提供可定制、可演进的IP交换技术基础平台。
附图说明
图1为本发明一种基于国产FPGA的实现以太网交换功能系统的整体结构示意图;
图2为本发明一种基于国产FPGA的实现以太网交换功能系统中现场可编程逻辑FPGA器件的结构示意图;
图3为本发明一种基于国产FPGA的实现以太网交换功能系统中网络交换处理单元的结构示意图;
图4为本发明一种基于国产FPGA的实现以太网交换功能系统中输出端口查找模块的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。
本发明提供一种基于国产FPGA的实现以太网交换功能系统,其硬件主要包括网口前端物理电路(PHY)、国产化的现场可编程逻辑FPGA器件(下面内容中可将现场可编程逻辑FPGA器件简称FPGA)、外置SRAM存储器和国产化的微处理器(下面内容中可将微处理器简称CPU),其中网口前端物理电路负责网口物理层的数据处理,为以太网接口的标准电路,包括了以太网隔离变压器和以太网PHY芯片。现场可编程逻辑FPGA器件完成网口MAC的缓冲及网络包的二层/三层转发处理。外置的SRAM用于临时存储转发的网络包。微处理器实现对现场可编程逻辑FPGA器件内部寄存器空间的配置和状态查询功能,并可对以太网数据包进行处理。本方法的主要设计部分为以太网交换功能的FPGA实现方法。
本发明的实现前提是,将传统进行以太网交换的网络交换专用芯片进行替换,使用现场可编程逻辑FPGA器件,通过现场可编程逻辑FPGA器件软件实现以太网交换的业务处理,并提供了一种适合于嵌入式应用的通用SPI接口,使得CPU可以通过SPI通道访问现场可编程逻辑FPGA器件的寄存器配置项,方便而灵活地实现现场可编程逻辑FPGA器件进行以太网交换的配置,此外还提供了现场可编程逻辑FPGA器件自定义交换表的扩展适配模块,具备较强的可扩展性和广泛的应用推广。
本发明的实现方案是,在以太网接口前端硬件后的现场可编程逻辑FPGA器件内部实现兼容的以太网接口处理单元,并通过网络交换引擎单元实现以太网数据包的MAC层帧处理,根据以太网数据包的信息,动态维护以太网转发表,并按照组网要求对以太网数据包进行一定的编辑处理转发或相应处理,完成以太网数据包的交换处理业务。此外,还提供嵌入式CPU通过SPI总线访问现场可编程逻辑FPGA器件寄存器的接口处理单元,可以实现对现场可编程逻辑FPGA器件的配置以及状态查询。
在现场可编程逻辑FPGA器件中完成以太网交换的业务处理后,CPU支持对交换业务进行必要的上层处理,如交换表的管理、未识别报文的处理、状态日志记录等。
通过现场可编程逻辑FPGA器件实现以太网交换的业务处理,一方面解决了传统专用以太网交换芯片功能单一、固化难升级的缺点,可以在相同的硬件平台上通过软件的配置或升级以实现多种以太网交换功能的处理,并提供了强大灵活的自定义交换表的模式,另一方面又在现场可编程逻辑FPGA器件内实现了对以太网交换的转发处理,使得后续CPU部分的设计不用考虑底层转发的细节,而是针对具体的交换协议应用进行处理,将底层硬件转发与软件定义有机地结合在了一起。
实施例
如图1所示,以太网交换业务处理在通信机箱设备中的实现,硬件由网口物理层模块(PHY)、现场可编程逻辑FPGA器件(FPGA交换模块)、外置SRAM存储器和微处理器CPU(或CPU模块)器件组成。其中网口前端物理电路为以太网接口的标准电路,由隔离变压器和专用的以太网PHY芯片(GE PHY)组成,此处的以太网PHY芯片可采用BCM5464或者88E1111。现场可编程逻辑FPGA器件完成网口MAC的缓冲及网络包的二层/三层转发处理,可采用国产化的PG30芯片及PG180芯片。外置的SRAM用于临时存储转发的网络包,可采用通用的SRAM芯片。微处理器实现对现场可编程逻辑FPGA器件内部寄存器空间的配置和状态查询功能,并可对以太网数据包进行处理,可采用龙芯1A芯片。网口物理层模块通过标准的GMII(Gigabit Medium Independent Interface,千兆媒体独立接口,其符合IEEE 802.3定义的以太网标准,用于物理层与MAC层的连接)或RGMII接口(Reduced GMII接口,简化的GMII接口)连接现场可编程逻辑FPGA器件;现场可编程逻辑FPGA器件通过SPI接口连接所述微处理器。本方法的主要设计部分为以太网交换功能的现场可编程逻辑FPGA器件软件的实现方法。
如图2所示,在现场可编程逻辑FPGA器件划分为多个独立的内部模块,主要包含了网络交换处理单元、SRAM控制器和DMA控制器,分别说明如下:
1)、网络交换处理单元:完成网口MAC的接入、网络数据包的二层/三层转发处理及配置管理功能,是逻辑设计的重点部分。该网络交换处理单元又可以划分为三个模块,即以太网MAC收发缓存模块、网络交换引擎及配置管理寄存器模块。其中以太网MAC收发缓存模块包含MAC RxQ模块和MAC TxQ模块,实现了以太网收发两个方向数据包的MAC层处理以及FIFO队列缓存。网络交换引擎是现场可编程逻辑FPGA器件实现网络数据转发的核心模块,将在后续详细说明。配置管理寄存器模块完成网络交换处理单元的各子模块功能的配置;
2)、SRAM控制器:完成外部SRAM器件的读写访问接口,主要是当现场可编程逻辑FPGA器件内部缓存资源不足的情况下,扩充以太网数据的存储能力,为预留模块;
3)、SPI控制器:完成CPU SPI接口的适配处理,提供CPU到现场可编程逻辑FPGA器件内部数据空间操作处理的功能,当CPU提供PCI或LocalBus接口时,也可以用相应接口进行替换;
4)、DMA控制器:完成现场可编程逻辑FPGA器件到CPU之间四路虚拟DMA通道的数据队列处理,提供CPU与现场可编程逻辑FPGA器件之间高速DMA通道,可以将收到的网络数据包加上端口标签后上送到CPU,并将CPU的网络数据包送入交换引擎,主要用于现场可编程逻辑FPGA器件网络交换处理单元无法处理的数据及路由包的上报。
由此可见,本发明的重点处理部分为网络交换处理单元,如图3所示,网络交换处理单元包括的各个模块及其处理流程如下:
1、以太网MAC收发缓存模块的MAC RxQ模块:完成网口接收数据的MAC层处理,并通过内部FIFO对接收数据进行缓存后,将数据继续送往网络交换引擎的输入队列调度模块。由于MAC模块通过RGMII接口与网口前端物理电路相连,因此在设计中需要考虑高速RGMII接口总线的设计方法,通过现场可编程逻辑FPGA器件器件的IOB配置完成接口时序的约束;
2、网络交换引擎的输入队列调度模块:接收MAC层收到的以太网数据包(4个缓冲队列)和CPU DMA数据(4个缓冲队列),共完成对应8个缓冲队列的调度接收处理。处理的机制为轮询试处理,依次读取每个队列,完成完整一帧的接收后才转到处理下一个队列;
3、网络交换引擎的输出端口查找模块:主要负责决定网络数据包的转发路径。具体进行网络数据包的分析/处理,检查数据包内容(包括目的MAC地址、帧类型、版本号、TTL生存时间、CRC校验等),过滤各种错误的数据包;并根据目的MAC(二层交换)或目的IP地址(三层交换),查找对应的转发表,确定数据包的下一跳设备和输出端口;最后根据需要对数据包进行修改和封装,将数据包发往输出队列调度模块;
4、网络交换引擎的输出队列调度模块:接收输出端口查找模块处理完成的数据包,并将数据包放入SRAM缓存区,根据数据包的控制信息将数据包分别送入相应的MAC层发送模块和CPU DMA数据通道。由此可知现场可编程逻辑FPGA器件采取了共享的SRAM缓存区,实现了存储转发的交换机制;
5、以太网MAC收发缓存模块的MAC TxQ模块:通过内部FIFO对输出队列调度模块送来的网口发送数据进行缓存,并完成MAC层处理,将发送数据送往底层PHY器件,完成以太网数据包的转发;
6、配置管理寄存器模块:完成网络交换处理单元的各子模块功能的配置,主要是提供CPU用来配置管理的接口。
在现场可编程逻辑FPGA器件网络交换引擎中,输入调度模块和输出队列调度模块的功能相对固定,主要负责输入输出队列的调度处理,本部分的设计使用了IP交换机制里共享内存方式的交换结构。
在现场可编程逻辑FPGA器件网络交换引擎中,输出端口查找模块负责完成了二层/三层/自定义交换的数据包处理主要处理流程,是最核心的转发引擎,也是现场可编程逻辑FPGA器件网络交换引擎的关键模块和设计重点。输出端口查找模块(转发引擎)需要实现二层/三层交换机制,包括完成网络包的接收、包缓存、帧头解析、校验、包内容修改及转发等处理,并采用存储转发方式的桥接技术
如图4所示,输出端口查找模块由包缓存队列模块、包校验模块、包头解析模块、二层查找模块、MAC转发表模块、IP查找模块、三层转发表模块、ARP查找模块、ARP表模块和包转发模块等组成,并与外部输入队列调度模块、输出端口查找模块和配置管理寄存器模块相连接。
输出端口查找模块包括的各模块功能分别说明如下:
1)包缓存队列模块:缓存数据包,保证了网络数据的线速处理,等待其它模块完成操作后将网络报文数据送入最终的包转发处理模块,完成网络数据的转发功能,可使用fifo存储器实现;
2)包校验模块:检查源MAC是否与端口匹配,检查IP头的CRC校验和是否正确,查看TTL值是否为0;
3)包头解析模块:解析数据包头,提取目标MAC地址、VLAN及目的IP地址等信息,确定网络数据帧类型(ARP或IP),输出匹配的三层交换模块的端口号;
4)二层查找模块:专门处理二层交换功能,根据包头解析模块的目的MAC和VLAN,实现MAC地址转发表的查找,同时维护MAC地址转发表的自动学习和老化;
5)MAC转发表模块:存储MAC地址转发表,表项内容包括MAC、VLAN ID及对应端口,并提供配置管理寄存器接口,可使用CAM存储器实现;
6)IP查找模块:根据包头解析模块的结果查找三层转发表,实现三层交换的LPM(Longest Prefix Matches,最长前缀匹配),输出下一跳IP地址和输出端口号,并将结果传送给包转发模块;
7)三层转发表模块:存储三层转发表,表项内容包括目的IP及对应端口,并提供配置管理寄存器接口,支持表项的配置更新,可使用片上TCAM存储器实现;
8)ARP查找模块:ARP查找引擎,根据IP查找模块的查找后得到的下一跳IP地址查找对应的MAC地址;
9)ARP表模块:存储ARP表,表项内容包括IP地址及对应的MAC地址,并提供配置管理寄存器接口,支持表项的配置更新,可使用CAM存储器实现;
10)包转发处理模块:汇聚前端各子模块的处理结果,实现网络数据包的转发,并丢弃掉出错的网络数据包。当判断报文是二层交换时,根据MAC转发表的查找结果,将数据包从包缓存队列模块模块中取出,送入对应的转发端口。当进行三层交换时,则根据IP查找模块和ARP查找模块的查找结果,将数据包从包缓存队列模块模块中取出,将TTL值减1,并设置数据包的目标MAC地址和源MAC地址,送入对应的转发端口。如果包校验模块的结果出错,则不对数据包进行修改,而是将数据包送入端口对应的DMA队列,进而传给CPU软件层处理;
在现场可编程逻辑FPGA器件中完成以太网交换的业务处理后,CPU支持对交换业务进行必要的上层处理,如交换表的管理、未识别报文的处理、状态日志记录等。CPU完成相应处理后,可通过SPI通道完成现场可编程逻辑FPGA器件配置的更新管理,并通过现场可编程逻辑FPGA器件最终完成未成功交换以太网数据包的业务处理。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。
Claims (6)
1.一种基于国产FPGA的实现以太网交换功能系统,其特征在于,包括依次连接的网口物理层模块、现场可编程逻辑FPGA器件、微处理器和外置SRAM存储器;其中
所述网口物理层模块用于连接网口和处理网口物理层的数据,并将数据传输至所述现场可编程逻辑FPGA器件;
所述现场可编程逻辑FPGA器件用于完成网口MAC的缓冲及网络包的二层/三层转发处理过程;具体如下:所述现场可编程逻辑FPGA器件包括网络交换处理单元、SRAM控制器、SPI控制器和DMA控制器,所述网络交换处理单元连接所述网口物理层模块,所述SRAM控制器、SPI控制器和DMA控制器均连接所述网络交换处理单元;所述网络交换处理单元用于完成网口MAC的接入、网络数据包的二层/三层转发处理及配置管理功能,所述SRAM控制器用于完成外部SRAM器件的读写访问接口,所述SPI控制器用于完成微处理器的SPI接口的适配处理以及提供微处理器到所述现场可编程逻辑FPGA器件内部数据空间操作处理的功能,所述DMA控制器用于完成四路虚拟DMA通道的数据队列处理以及提供微处理器与所述现场可编程逻辑FPGA器件之间的高速DMA通道;
所述网络交换处理单元包括若干MAC RxQ模块、输出端口查找模块、若干MAC TxQ模块、配置管理寄存器模块以及网络交换引擎,所述网络交换引擎包括输入队列调度模块和输出队列调度模块;所述MAC RxQ模块均连接所述网口物理层模块和所述输出队列调度模块,所述输出队列调度模块连接所述输出端口查找模块和所述DMA控制器,所述输出端口查找模块连接所述输出队列调度模块,所述输出队列调度模块连接是MAC TxQ模块和所述SRAM控制器;其中
所述MAC RxQ模块用于完成网口接收数据的MAC层处理,并通过内部FIFO对接收数据进行缓存后,将数据继续送往网络交换引擎的输入调度模块;
所述输入队列调度模块用于接收MAC层收到的以太网数据包和微处理器的DMA数据,完成调度接收处理;
所述输出端口查找模块用于决定网络数据包的转发路径,过程包括进行网络数据包的分析/处理、检查数据包内容、过滤各种错误的数据包、根据目的MAC或目的IP地址查找对应的转发表、确定数据包的下一跳设备和输出端口以及最后根据需要对数据包进行修改和封装、将数据包发往输出队列调度模块;
所述输出队列调度模块用于接收输出端口查找模块处理完成的数据包,并将数据包放入所述SRAM控制器的SRAM缓存区,根据数据包的控制信息将数据包分别送入相应的MAC层发送模块和微处理器的DMA数据通道;
所述MAC TxQ模块用于通过其内部FIFO对输出队列调度模块送来的网口发送数据进行缓存,并完成MAC层处理,将发送数据送往以太网PHY芯片,完成以太网数据包的转发;
所述配置管理寄存器模块用于完成网络交换处理单元的上述各模块功能的配置;
所述网络交换引擎、输入调度模块和输出队列调度模块负责输入输出队列的调度处理;
所述微处理器用于实现对FPGA内部寄存器空间的配置和状态查询功能,并可对以太网数据包进行处理;
所述外置SRAM存储器用于用于临时存储转发的网络包。
2.如权利要求1所述的一种基于国产FPGA的实现以太网交换功能系统,其特征在于,所述网口物理层模块通过GMII接口或RGMII接口连接所述现场可编程逻辑FPGA器件;所述现场可编程逻辑FPGA器件通过SPI接口连接所述微处理器。
3.如权利要求1或2所述的一种基于国产FPGA的实现以太网交换功能系统,其特征在于,所述网口物理层模块包括若干以太网隔离变压器和若干以太网PHY芯片;所述以太网隔离变压器一端外接网口、另一端连接所述以太网PHY芯片,所述以太网PHY芯片通过GMII接口或RGMII接口连接现场可编程逻辑FPGA器件。
4.如权利要求1所述的一种基于国产FPGA的实现以太网交换功能系统,其特征在于,所述输出端口查找模块包括包缓存队列模块、包校验模块、包头解析模块、二层查找模块、MAC转发表模块、IP查找模块、三层转发表模块、ARP查找模块、ARP表模块和包转发模块,其中
所述包缓存队列模块用于缓存数据包;
所述包校验模块用于检查源MAC是否与端口匹配、检查IP头的CRC校验和是否正确以及查看TTL值是否为0;
所述包头解析模块用于解析数据包头、提取目标MAC地址、VLAN及目的IP地址等信息、确定网络数据帧类型以及输出匹配的三层交换模块的端口号;
所述二层查找模块用于处理二层交换功能,具体为:根据包头解析模块的目的MAC和VLAN,实现MAC地址转发表的查找,同时维护MAC地址转发表的自动学习和老化;
所述MAC转发表模块用于存储MAC地址转发表;
所述IP查找模块用于根据包头解析模块的结果查找三层转发表,实现三层交换的LPM,输出下一跳IP地址和输出端口号,并将结果传送给包转发模块;
所述三层转发表模块用于存储三层转发表;
所述ARP查找模块包括ARP查找引擎,用于根据IP查找模块的查找后得到的下一跳IP地址查找对应的MAC地址;
所述ARP表模块用于存储ARP表;
所述包转发处理模块用于汇聚上述各模块的处理结果,实现网络数据包的转发,并丢弃掉出错的网络数据包;当判断报文是二层交换时,根据MAC转发表的查找结果,将数据包从包缓存队列模块模块中取出,送入对应的转发端口;当进行三层交换时,则根据IP查找模块和ARP查找模块的查找结果,将数据包从包缓存队列模块模块中取出,将TTL值减1,并设置数据包的目标MAC地址和源MAC地址,送入对应的转发端口;如果包校验模块的结果出错,则不对数据包进行修改,而是将数据包送入端口对应的DMA队列,进而传给CPU软件层处理。
5.如权利要求1所述的一种基于国产FPGA的实现以太网交换功能系统,其特征在于,所述现场可编程逻辑FPGA器件采用国产化的PG30芯片或PG180芯片,所述微处理器采用国产化的龙芯1A芯片。
6.一种基于国产FPGA的实现以太网交换功能方法,通过权利要求1所述的基于国产FPGA的实现以太网交换功能系统进行实现,其特征在于,包括下述步骤:
1)、微处理器发送操控指令给配置管理寄存器模块,配置管理寄存器模块对网络交换处理单元中MAC RxQ模块、输入队列调度模块、输出端口查找模块、输出队列调度模块、若干MAC TxQ模块以及网络交换引擎进行功能配置;
2)、MAC RxQ模块完成网口接收数据的MAC层处理,并将数据继续送往网络交换引擎的输入调度模块;
3)、输入队列调度模块接收MAC层收到的以太网数据包和微处理器的DMA数据,完成调度接收处理,并将数据继续送往输出端口查找模块;
4)、输出端口查找模块决定网络数据包的转发路径,这个过程包括进行网络数据包的分析和处理、检查数据包内容、过滤各种错误的数据包、根据目的MAC或目的IP地址查找对应的转发表、确定数据包的下一跳设备和输出端口以及最后根据需要对数据包进行修改和封装、将数据包发往输出队列调度模块;
5)、输出队列调度模块将数据包放入SRAM控制器的SRAM缓存区,根据数据包的控制信息将数据包分别送入相应的MAC层发送模块和微处理器的DMA数据通道;
6)、MAC TxQ模块完成以太网数据的转发:这个过程包括通过其内部FIFO对输出队列调度模块送来的网口发送数据进行缓存,并完成MAC层处理,将发送数据送往底层PHY器件;
7)、SPI控制器完成微处理器的SPI接口的适配处理以及提供微处理器到现场可编程逻辑FPGA器件内部数据空间操作处理的功能,用于步骤1)中对配置管理寄存器模块的配置;
8)、DMA控制器完成四路虚拟DMA通道的数据队列处理以及提供微处理器与现场可编程逻辑FPGA器件之间高速DMA通道;
9)、SRAM控制器完成外部SRAM器件的读写访问接口,用于步骤5)中输出队列调度模块将数据包放入SRAM缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710887984.3A CN107689931B (zh) | 2017-09-27 | 2017-09-27 | 一种基于国产fpga的实现以太网交换功能系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710887984.3A CN107689931B (zh) | 2017-09-27 | 2017-09-27 | 一种基于国产fpga的实现以太网交换功能系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107689931A CN107689931A (zh) | 2018-02-13 |
CN107689931B true CN107689931B (zh) | 2021-05-14 |
Family
ID=61155526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710887984.3A Active CN107689931B (zh) | 2017-09-27 | 2017-09-27 | 一种基于国产fpga的实现以太网交换功能系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107689931B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN208424406U (zh) * | 2018-03-13 | 2019-01-22 | 中国电子科技集团公司第十一研究所 | 一种以太网转换器 |
CN109150765A (zh) * | 2018-09-12 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种基于fpga实现的交换机 |
CN110932922B (zh) * | 2018-09-19 | 2022-11-08 | 上海仪电(集团)有限公司中央研究院 | 基于fpga的金融数据二层网络采集系统及其测试方法 |
CN109474534B (zh) * | 2018-11-02 | 2021-04-06 | 莫冰 | 基于fpga的路由加速转发系统、路由器及转发方法 |
CN109302355A (zh) * | 2018-11-23 | 2019-02-01 | 华东师范大学 | 一种基于zynq的四路万兆以太网安全交换机 |
CN109783409A (zh) * | 2019-01-24 | 2019-05-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
US10630606B1 (en) * | 2019-03-18 | 2020-04-21 | Brightways Corporation | System, method and architecture for data center network switching |
CN110177058B (zh) * | 2019-05-31 | 2021-04-20 | 中国电子科技集团公司第五十四研究所 | 一种基于fpga的以太网交换板卡状态监控收发装置 |
CN111030831A (zh) * | 2019-12-10 | 2020-04-17 | 深圳震有科技股份有限公司 | 一种网口线速抓包装置及方法 |
CN113360191B (zh) * | 2020-03-03 | 2022-05-27 | 杭州海康威视数字技术股份有限公司 | 网络交换芯片的驱动装置 |
CN111614793B (zh) * | 2020-04-22 | 2022-03-04 | 上海御渡半导体科技有限公司 | 一种基于fpga的以太网交换机的mac地址管理装置及方法 |
CN112383484A (zh) * | 2020-10-19 | 2021-02-19 | 深圳市源拓光电技术有限公司 | 一种基于fpga的以太网端口流量限速系统与方法 |
CN112637072B (zh) * | 2020-12-23 | 2022-08-02 | 北京时代民芯科技有限公司 | 一种用于交换芯片地址存储及查找的快速并行电路及方法 |
CN112636931B (zh) * | 2020-12-29 | 2022-07-12 | 广东高云半导体科技股份有限公司 | 一种以太网接口电路 |
CN113225376B (zh) * | 2021-03-29 | 2022-07-08 | 桂林电子科技大学 | 一种基于fpga的以太网帧与sdn数据帧的适配方法 |
CN112910801A (zh) * | 2021-03-31 | 2021-06-04 | 国家广播电视总局监管中心 | 一种网络交换板卡 |
CN113467425B (zh) * | 2021-07-05 | 2022-09-09 | 中国兵器装备集团自动化研究所有限公司 | 一种应用于龙芯下位机的自主控制测试方法及系统 |
CN114584526B (zh) * | 2022-03-07 | 2023-04-04 | 江苏新质信息科技有限公司 | 一种arp协议处理方法、系统、存储介质及电子设备 |
CN114745323A (zh) * | 2022-04-02 | 2022-07-12 | 北京东土军悦科技有限公司 | 一种流量报文的转发方法和系统 |
CN115460039B (zh) * | 2022-08-17 | 2023-07-11 | 珠海高凌信息科技股份有限公司 | 基于逻辑网络的大容量tdm交换系统和方法、存储介质 |
CN117768947A (zh) * | 2022-09-26 | 2024-03-26 | 华为技术有限公司 | 一种数据通信方法、交换芯片、通信节点及通信网络 |
CN115426265B (zh) * | 2022-11-02 | 2023-04-18 | 之江实验室 | 一种多模态网络下交换资源分配优化方法及装置、介质 |
CN116546234A (zh) * | 2023-05-31 | 2023-08-04 | 广州融生信息技术有限公司 | 国产化视频服务器的故障处理方法、装置、服务器及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010049003A (ko) * | 1999-11-30 | 2001-06-15 | 서평원 | 이더넷 스위치 칩 확장 구조 |
KR20130108880A (ko) * | 2012-03-26 | 2013-10-07 | 주식회사 다산네트웍스 | 이더넷 스위치 |
EP3160088A1 (en) * | 2015-10-21 | 2017-04-26 | Honeywell International Inc. | Mib data broadcast using inexpensive method incorporating microcontroller and fpga |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1170396C (zh) * | 2003-02-14 | 2004-10-06 | 清华大学 | 基于FPGA的支持QoS用网络处理器系统及数据包处理方法 |
US9876735B2 (en) * | 2009-10-30 | 2018-01-23 | Iii Holdings 2, Llc | Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect |
CN104038383A (zh) * | 2014-04-14 | 2014-09-10 | 贵州电力试验研究院 | 基于交换机的过程层网络报文分析方法 |
CN105610736A (zh) * | 2016-01-13 | 2016-05-25 | 浪潮集团有限公司 | 一种基于fpga的网络交换ip核 |
-
2017
- 2017-09-27 CN CN201710887984.3A patent/CN107689931B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010049003A (ko) * | 1999-11-30 | 2001-06-15 | 서평원 | 이더넷 스위치 칩 확장 구조 |
KR20130108880A (ko) * | 2012-03-26 | 2013-10-07 | 주식회사 다산네트웍스 | 이더넷 스위치 |
EP3160088A1 (en) * | 2015-10-21 | 2017-04-26 | Honeywell International Inc. | Mib data broadcast using inexpensive method incorporating microcontroller and fpga |
Also Published As
Publication number | Publication date |
---|---|
CN107689931A (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107689931B (zh) | 一种基于国产fpga的实现以太网交换功能系统及方法 | |
US7016352B1 (en) | Address modification within a switching device in a packet-switched network | |
US8005084B2 (en) | Mirroring in a network device | |
US7830892B2 (en) | VLAN translation in a network device | |
EP1662725B1 (en) | Cut-through switching in a network device | |
US7369561B2 (en) | Apparatus and method for route summarization and distribution in a massively parallel router | |
JP3645734B2 (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
US8369347B2 (en) | Fiber channel over Ethernet and fiber channel switching based on Ethernet switch fabrics | |
US7738385B2 (en) | Mirroring of data in a network device | |
JP3545570B2 (ja) | スイッチングハブ | |
US7362744B2 (en) | Database management system and method of using it to transmit packets | |
JP2001251351A (ja) | パケット交換機における入力パケット処理方式 | |
US7269661B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
CN104704779A (zh) | 用于加速软件定义网络中的转发的方法和设备 | |
JP2002314571A (ja) | スイッチングノードのための分類およびタグ付け規則 | |
US20090190588A1 (en) | Data Packet Switching | |
JP2006295938A (ja) | ネットワーク型ルーティング機構 | |
US6625146B1 (en) | Method and apparatus for operating a network switch in a CPU-less environment | |
EP3734917A1 (en) | Downlink message sending method and apparatus and downlink message forwarding method and apparatus | |
US20150030027A1 (en) | Switch Device With Device-Specified Bridge Domains | |
EP2548348B1 (en) | Methods, systems, and computer readable media for automatically selecting between internet protocol switching modes on a per-module basis in a packet forwarding device | |
US7486672B2 (en) | Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router | |
US7529251B2 (en) | Data transfer device | |
US20100329262A1 (en) | System and Method for Parsing Frames | |
US9898069B1 (en) | Power reduction methods for variable sized tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |