一种高速以太网交换芯片的存储冗余系统转让专利

申请号 : CN201910075688.2

文献号 : CN109861931B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯海强王剑峰赵文琦李小波马徐瀚

申请人 : 西安微电子技术研究所

摘要 :

本发明公开了一种高速以太网交换芯片的存储冗余系统,包括依次电连接的若干收发器模块、GMAC模块和数据缓存模块;若干GMAC模块均与控制单元相交互;控制单元分别与转发端口判定模块、管理单元以及帧解析模块相交互;帧解析模块通过地址管理模块和VLAN管理模块与转发端口判定模块相交互;本发明克服了芯片存储空间无限增大的需求,在不明显增加芯片面积的情况下,解决了端口的阻塞引起整个芯片瘫痪的风险,降低了芯片成本,保证了交换数据的有效转发。本发明存储冗余设计电路结构有效解决了端口的阻塞引起整个芯片瘫痪的风险,保证了交换数据的有效转发。

权利要求 :

1.一种高速以太网交换芯片的存储冗余系统,其特征在于,包括依次电连接的若干收发器模块(1)、GMAC模块和数据缓存模块(3);若干GMAC模块(2)均与控制单元相交互;控制单元分别与转发端口判定模块(14)、管理单元以及帧解析模块(11)相交互;帧解析模块(11)通过地址管理模块(12)和VLAN管理模块(13)与转发端口判定模块(14)相交互;

收发器模块(1),对于n端口的交换芯片,其数量为n,与GMAC模块(2)的数量相同,用于传输线和GMAC模块(2)之间的数据传输;

GMAC模块(2),与收发器模块(1)的数量相同,用于数据的封装与解封和媒介接入控制;

数据缓存模块(3),与GMAC模块(2)的数量相同,用于对GMAC模块(2)接收的数据帧及待发送的数据帧的缓存;

控制单元包括接收控制模块(4)和发送控制模块(5),其中:

接收控制模块(4),用于接收GMAC模块(2)输出的数据帧和产生数据缓存模块(3)存储空间地址分配请求信号;将数据帧从GMAC模块(2)应用接口时序转换为APB总线接口时序;

输出读写数据和命令到缓存memory读写控制模块(9),将从GMAC模块(2)接收的包含源MAC地址的数据帧输出到帧解析模块(11),对n端口接收的特殊类型帧完成去TAG功能;

发送控制模块(5),用于在每个输出端口发送队列非空时,将队列中的信息转化为读数据命令,输出到管理单元;完成读出数据以GMAC模块(2)接口时序将数据输出;完成部分端口聚合的功能;

帧解析模块(11),根据帧的类型提取不同层次的信息;

地址管理模块(12),根据目的MAC地址查找出转发的端口向量;

VLAN管理模块(13),用于对VLAN表的过滤查询,将查询结果输出给转发端口判定模块(14);

转发端口判定模块(14),用于根据地址管理模块(12)和VLAN管理模块(13)的输出结果判断当前数据包向哪个端口转发,其结果输出到发送控制模块(5);

管理单元包括均与控制单元交互的队列管理模块(6)、QoS模块(7)、缓存地址管理模块(8)以及缓存memory读写控制模块(9),缓存memory读写控制模块(9)上还连接有数据帧缓存memory模块(10);

队列管理模块(6),用于对每个输出端口6个输出队列的管理;

QoS模块(7),用于实现每个端口输入的每个数据帧给出转发的优先级和发送队列号;

缓存地址管理模块(8),用于实现缓存空间的分配和释放;

缓存memory读写控制模块(9),用于实现根据接收控制模块(4)输入的数据地址和写命令将数据存储到数据帧缓存memory模块(10)中,根据发送控制模块(5)输出的读地址和命令将数据帧缓存memory模块(10)中的数据读出并输出到发送控制模块(5);

数据帧缓存memory模块(10),实现对缓存memory读写控制模块(9)接收的数据帧的缓存;数据帧缓存memory模块(10)的数量为n+1,其中,第1~n缓存单元分别为n个端口各自的存储空间,第n+1缓存空间为共享存储空间。

2.根据权利要求1所述的高速以太网交换芯片的存储冗余系统,其特征在于,数据缓存模块(3)采用异步FIFO实现,双口的访问控制逻辑完全独立。

说明书 :

一种高速以太网交换芯片的存储冗余系统

【技术领域】

[0001] 本发明属于计算机通信及网络领域,涉及一种高速以太网交换芯片的存储冗余系统,尤其适用于以太网交换器、网络服务器、计算机数据存储系统等领域。例如,数据服务中心、大型交换机等。【背景技术】
[0002] 目前在主流的以太网交换芯片中,采用的方法是所有交换端口共享一块存储空间。随着网络传输速率及交换数据量的提高,对高速以太网交换芯片存储空间的管理提出了更高的要求,但当某个端口的链路阻塞时,向该端口转发的数据帧会持续占据存储空间而无法转发出去,导致存储资源占满,最终引起交换芯片瘫痪;如果单纯的增加交换器内部存储空间的容量,则会无限增大芯片面积,并且随着数据交换的进行,当端口阻塞时整个存储空间也会被占满。
[0003] 在“以太网交换技术研究及交换芯片的设计实现”中,交换芯片采用共享存储交换结构。片上RAM大小为256K字节,宽度为64位,RAM划分为数据缓存空间、端口队列空间和地址表空间三部分,分别对应三个功能部件对这些存储空间进行管理。其中,数据帧缓存器将来自输入端口的数据帧统一存储到片上RAM内,等待控制部件将其输出到相应的输出端口,一个数据帧在缓存中可以不连续存放;端口描述符是用统一的格式对数据帧在缓存器中不连续存储的位置信息进行描述,存储控制部件为每个输出端口维护一个描述符表,表中存储了要从此端口输出的描述符;为了正确转发数据帧,需要建立MAC地址与交换芯片端口之间的映射关系,交换芯片用一个地址表存储这些映射关系。此外,根据IEEE802.3X协议,结合数据帧缓存空间的管理还设计了流量控制机制,从而降低了交换芯片的丢帧率。但当某个端口的链路阻塞时,向该端口转发的数据帧会持续占据存储空间而无法转发出去,导致存储资源占满,最终引起交换芯片瘫痪。
[0004] 在“网络高性能交换结构及调度算法研究”中,针对N×N的交换结构,N为输入/输出的端口数量。提出了一种新的的交叉点缓冲交换结构——负载均衡交叉点缓冲交换(LB-CQ),其基本的思想是:在简单交叉点缓冲交换矩阵的前面,添加一级负载均衡交换矩阵,负载均衡交换矩阵通过简单的端口轮转匹配对输入端口到达流量进行负载均衡分配,可以将到达交换矩阵各输入端口的非均衡流量通过负载均衡转化为近似均衡的流量,从而在保留CQ交换矩阵调度算法简单、不需要流控、延时等QoS性能出色的基础上,克服CQ交换矩阵非均衡流量下吞吐量性能不佳的缺点,该方案虽然实现了对存储空间的充分使用,但没有对其进行冗余设计,当端口上有巨型帧进行传输时,很容易造成链路阻塞。【发明内容】
[0005] 本发明为了有效解决当以太网交换芯片某个端口阻塞时整个存储空间会被占满的问题,提出一种高速以太网交换芯片的存储冗余系统,该方法通过在交换器的每个端口设置专用存储器,当某个端口的链路阻塞时,该端口的数据会先在自己的专用存储空间堆叠,不会影响共享存储空间,避免了因某一个端口的阻塞引起整个交换芯片瘫痪的风险,从而保证了数据的正常转发。
[0006] 为达到上述目的,本发明采用以下技术方案予以实现:
[0007] 一种高速以太网交换芯片的存储冗余系统,包括依次电连接的若干收发器模块、GMAC模块和数据缓存模块;若干GMAC模块均与控制单元相交互;控制单元分别与转发端口判定模块、管理单元以及帧解析模块相交互;帧解析模块通过地址管理模块和VLAN管理模块与转发端口判定模块相交互;
[0008] 收发器模块,对于n端口的交换芯片,其数量为n,与GMAC模块的数量相同,用于传输线和GMAC模块之间的数据传输;
[0009] GMAC模块,与收发器模块的数量相同,用于数据的封装与解封和媒介接入控制;
[0010] 数据缓存模块,与GMAC模块的数量相同,用于对GMAC模块接收的数据帧及待发送的数据帧的缓存;
[0011] 控制单元包括接收控制模块和发送控制模块,其中:
[0012] 接收控制模块,用于接收GMAC模块输出的数据帧和产生数据缓存模块存储空间地址分配请求信号;
[0013] 发送控制模块,用于在每个输出端口发送队列非空时,将队列中的信息转化为读数据命令,输出到管理单元;
[0014] 帧解析模块,根据帧的类型提取不同层次的信息;
[0015] 地址管理模块,根据目的MAC地址查找出转发的端口向量;
[0016] VLAN管理模块,用于对VLAN表的过滤查询,将查询结果输出给转发端口判定模块;
[0017] 发端口判定模块,用于根据地址管理模块和VLAN管理模块的输出结果判断当前数据包向哪个端口转发,其结果输出到发送控制模块。
[0018] 本发明进一步的改进在于:
[0019] 管理单元包括均与控制单元小交互的队列管理模块、QoS模块、缓存地址管理模块以及缓存memory读写控制模块,缓存memory读写控制模块上还连接有数据帧缓存memory模块;
[0020] 队列管理模块,用于对每个输出端口6个输出队列的管理;
[0021] QoS模块,用于实现每个端口输入的每个数据帧给出转发的优先级和发送队列号;
[0022] 缓存地址管理模块,用于实现缓存空间的分配和释放;
[0023] 缓存memory读写控制模块,用于实现根据接收控制模块输入的数据地址和写命令将数据存储到数据帧缓存memory模块中,根据发送控制模块输出的读地址和命令将数据帧缓存memory模块中的数据读出并输出到发送控制模块;
[0024] 数据帧缓存memory模块,实现对接收的数据帧的缓存。
[0025] 数据帧缓存memory模块的数量为n+1,其中,第1~n缓存单元分别为n个端口各自的存储空间,第n+1缓存空间为共享存储空间。
[0026] 数据缓存模块采用异步FIFO实现,双口的访问控制逻辑完全独立。
[0027] 与现有技术相比,本发明具有以下有益效果:
[0028] 传统的方法是所有交换端口共享一块存储空间,但当某个端口的链路阻塞时,向该端口转发的数据帧会持续占据存储空间而无法转发出去,导致存储资源占满,最终引起交换芯片瘫痪。针对该问题,本发明在不明显增加芯片面积的情况下,通过对缓存空间的冗余设计保证了数据的正常转发。
[0029] 本发明克服了芯片存储空间无限增大的需求,在不明显增加芯片面积的情况下,解决了端口的阻塞引起整个芯片瘫痪的风险,降低了芯片成本,保证了交换数据的有效转发。通过对本发明进行功能仿真,并与传统的以太网交换电路结构进行比较。在测试环境中,随机产生1000组报文,并分别采用传统的以太网交换电路结构和本发明提出的存储冗余设计电路结构对这些报文任务进行交换转发;其中,端口数量为7,工作时钟为125MHz,数据位宽为128位,采用连续数据通讯的方式。仿真结果表明,存储冗余设计电路结构有效解决了端口的阻塞引起整个芯片瘫痪的风险,保证了交换数据的有效转发。【附图说明】
[0030] 图1为交换芯片存储冗余设计总体结构框图;
[0031] 图2为存储冗余设计模块结构图。
[0032] 其中:1-收发器模块;2-GMAC模块;3-数据缓存模块;4-接收控制模块;5-发送控制模块;6-队列管理模块;7-QoS模块;8-缓存地址管理模块;9-缓存memory读写控制模块;10-数据帧缓存memory模块;11-帧解析模块;12-地址管理模块;13-VLAN管理模块;14-转发端口判定模块。【具体实施方式】
[0033] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,不是全部的实施例,而并非要限制本发明公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要的混淆本发明公开的概念。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0034] 在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
[0035] 本发明公开的上下文中,当将一层/元件称作位于另一层/元件“上”时,该层/元件可以直接位于该另一层/元件上,或者它们之间可以存在居中层/元件。另外,如果在一种朝向中一层/元件位于另一层/元件“上”,那么当调转朝向时,该层/元件可以位于该另一层/元件“下”。
[0036] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0037] 下面结合附图对本发明做进一步详细描述:
[0038] 参见图1,本发明高速以太网交换芯片的存储冗余系统,主要包括收发器模块1、GMAC模块2、数据缓存模块3、接收控制模块4、发送控制模块5、队列管理模块6、QoS模块7、缓存地址管理模块8、缓存memory读写控制模块9、数据帧缓存memory模块10、帧解析模块11、地址管理模块12、VLAN管理模块13、转发端口判定模块14。
[0039] 收发器模块1,对于n端口的交换芯片,其数量为n,和GMAC模块2一一对应。其主要功能是编解码、载波侦听、链路监测、数字自适应均衡、噪声回消、串扰消除、高速ADC、时钟恢复/产生,基线漂移校正、多模发送DAC、自动协商等,进行传输线和GMAC模块2之间的数据传输。
[0040] GMAC模块2,对于n端口的交换芯片,其数量为n,和收发器模块1一一对应。GMAC模块2主要实现两大功能:第一,数据的封装与解封,即将从数据缓存模块3读的待发送数据封装成符合IEEE802.3标准的数据帧发送给收发器模块1,将从收发器模块1接收到的数据帧中提取有效数据写入到数据缓存模块3;第二,媒介接入控制,包括媒介分配及竞争处理,CSMA/CD协议是实现此功能的最重要部分。
[0041] 数据缓存模块3,对于n端口的交换芯片,其数量为n,和GMAC模块2一一对应,主要实现对GMAC模块2接收的数据帧及待发送的数据帧的缓存。采用异步FIFO实现,双口的访问控制逻辑完全独立。
[0042] 接收控制模块4,数量为1。主要实现从接收FIFO中数据帧的读取和数据缓存模块3存储空间地址分配请求信号的产生,将数据帧从GMAC模块2应用接口时序转换为APB总线接口时序;输出读写数据和命令到缓存memory读写控制模块9,将从GMAC模块2接收的包含源MAC地址的数据帧输出到帧解析模块11,对n端口接收的特殊类型帧完成去TAG功能。为了完成n个端口数据的访问效率,采用轮询机制来仲裁n个端口的数据接收。接收请求状态机在系统复位后处于IDLE态,当n个端口的任何一个或者多个端口的数据准备好,状态机即跳转到WAITING状态,在WAITING状态从端口0开始依次判断哪个端口有数据接收请求即跳转到哪个端口状态,如端口2数据首先准备好,那么状态机跳转至PORT2,置端口2请求信号有效并将该有效请求信号送给缓存管理,等待缓存管理分配存储空间。同时在下一个时钟周期状态机跳转至P2_ACK态,在该状态中,撤销端口2请求有效信号并从端口3开始至端口n-1依次判断是否有数据接收请求,如有则跳转至该端口状态,否则状态机回到WAITING态等待并从端口0开始重新进行判断。
[0043] 发送控制模块5,数量为1。主要实现在每个输出端口发送队列非空时,将队列中的信息转化为读数据命令,输出到缓存memory读写控制模块9;完成读出数据以GMAC模块2接口时序将数据输出;完成部分端口聚合的功能。
[0044] 队列管理模块6,数量为1。主要实现对每个输出端口6个输出队列的管理。队列中存储着将从该端口输出数据帧的信息,这些帧信息以链表的形式进行存储,使用两层的链表结构形成一个输出阵列。第一层是TXQ链表,第二层是缓存标记链表。使用TXQ链表来保证每个端口帧优先级次序,对于每一帧,使用缓存标记链表来保证缓冲器页的次序和每一帧相对应。QoS功能使能时,每个输出口支持最多6个发送队列以保证服务质量,所有的6个发送队列共享TXQ表。当QoS功能关闭,转换控制器为每个输出端口维护一个输出队列。TXQ表作为一个链表维护,每个节点代表一个指向帧缓冲标识的指针。每个缓冲标识包括帧信息和指向下一个帧标识的指针,每一个缓冲标识有一个分配在帧缓存中的关联页,对于帧大小大于256字节的包,需要多个缓存标识。
[0045] QoS模块7,数量为1。主要实现每个端口输入的每个数据帧给出转发的优先级和发送队列号。分别为基于端口的QoS、IEEE802.1P的QoS,基于MAC的QoS,TOS/DSCP的QoS和基于ACL用户定义的优先级。
[0046] 缓存地址管理模块8,数量为1。主要实现缓存空间的分配和释放。当接收端口接收到正确帧时,缓存管理模块负责为其分配相应的空间,同时生成描述符信息,送给发送队列管理模块6;如果该帧找不到转发的端口、超出规定的长度、该端口不能接收的巨型帧或者速率控制给出丢弃标志,则丢弃该帧并释放已经分配的存储空间。在这些数据帧满足转发条件时,发送队列管理模块6通过此描述符信息从缓存空间中取出数据帧进行转发,相应的空间被释放,成为新的空闲空间。
[0047] 数据缓存空间采用链表的结构进行组织,这里的链表指限于表头节点删除和表尾节点插入的单链表。数据缓存空间中的空闲部分以页为单位用单链表的方式加以组织,每次分配空间时,从链表的头部删除链表的一个节点;每次释放空间时,在链表的尾部插入一个节点。
[0048] 为了实现这个单链表的结构,在片内使用了一个512×n位的缓存控制RAM,深度512对应了最大的空闲页数,即整个数据缓存空间,n位字的内容对应于控制RAM中下一个字的地址,此RAM中的每一项的位置对应于缓存存储空间中一个页的位置。除了控制RAM之外,还有两个n位宽的寄存器,分别记录单链表的头和尾的位置,记为Head和Tail。
[0049] 空闲页链表在使用前需要一个初始化的过程,初始化之后,Head中的内容为0,控制RAM中的0字中的内容为1,1字中的内容为2……511字中的内容为512,Tail中的内容为512。
[0050] 缓存memory读写控制模块9,数量为1。主要实现根据接收控制模块4输入的数据地址和写命令将数据存储到数据帧缓存memory模块10中,根据发送控制模块5输出的读地址和命令将数据帧缓存memory模块10中的数据读出并输出到发送控制模块5。如何快速的将1路或n路同时到达的数据写入到数据帧缓存memory模块10和快速的完成1路或n路数据的读出是设计的重点。本发明中采取将数据地址和命令先存放于FIFO中,然后通过FIFO完成数据到数据帧缓存memory模块10的读写。先将数据写入FIFO并反馈给缓存地址管理模块8,缓存地址管理模块8可以继续进行地址分配和释放。
[0051] 如图2所示,数据帧缓存memory模块10,数量为n+1。主要实现对接收的数据帧的缓存。其中,10(1)~10(n)缓存单元分别为n个端口各自的存储空间,第10(n+1)缓存空间为共享存储空间;本发明除了保留公共存储空间外,还给交换器的每个端口设置专用一个存储器,大小为2KB,当专用存储器空间存满之后再占用公共存储资源。
[0052] 帧解析模块11,数量为1。主要实现根据帧的类型完成不同层次的信息提取,主要包括DA、SA、VLAN、LEN/TYPE、IP地址、TCP/UDP端口等信息,通过对n个端口轮询的方式进行解析,端口0的优先级最高,然后依次为端口1、端口2、……、端口n。
[0053] 地址管理模块12,数量为1。主要实现是根据目的MAC地址查找出转发的端口向量,输出到VLAN管理模块13进行转发端口滤波处理,ARL表格的创建,更新和查找等。
[0054] VLAN管理模块13,数量为1。主要实现对VLAN表的过滤查询,将查询结果输出给转发端口判定模块14。支持两种VLAN方式,一种是基于对端口的VLAN,一种是基于IEEE802.1Q VLAN。基于端口的VLAN将交换端口以端口为基本单元划分为若干虚拟私有域。私有域之外的端口不允许与其交换数据。基于端口的VLAN特性实际是一个过滤器,过滤掉那些目的地址为非私有域的的端口。接收端口的私有域划分可通过基于端口的VLAN控制寄存器进行配置。对于收到的包,ARL解析DA,得到转发向量(当前帧将被转发的目标端口列表)。ARL此时将VLAN过滤机制应用到转发向量上,过滤掉端口为非私有域的包。包只会被转发到符合ARL表规定和符合基于端口的VLAN规定的那些端口上。
[0055] 转发端口判定模块14,数量为1。主要实现根据地址管理模块12和VLAN管理模块13的输出结果判断当前数据包向哪个端口转发,其结果输出到发送控制模块5。
[0056] 本发明的核心思想是在以太网交换芯片结构及共享缓存空间不改变的情况下,给每个交换端口增加一个2KB的专用存储空间,该空间大小保证了至少存储2个巨型帧,各个端口接收到的数据包先存储到各自的专用存储器中,待专用存储器存满之后再访问共享缓存空间。
[0057] 本发明可用于以太网交换器、网络服务器、计算机数据存储系统等领域的以太网交换芯片设计中。
[0058] 目前在主流的以太网交换芯片中,采用的方法是所有交换端口共享一块存储空间。随着网络传输速率及交换数据量的提高,对高速以太网交换芯片存储空间的管理提出了更高的要求,但当某个端口的链路阻塞时,向该端口转发的数据帧会持续占据存储空间而无法转发出去,导致存储资源占满,最终引起交换芯片瘫痪;如果单纯的增加交换器内部存储空间的容量,则会无限增大芯片面积,并且随着数据交换的进行,当端口阻塞时整个存储空间也会被占满。
[0059] 采用本发明提出的一种高速以太网交换芯片的存储冗余系统,通过在交换器的每个端口设置专用存储器,当某个端口的链路阻塞时,该端口的数据会先在自己的专用存储空间堆叠,不会影响共享存储空间,避免了某一个端口的阻塞引起整个交换芯片瘫痪的风险,从而保证了数据的正常转发。
[0060] 根据上述方案,用Verilog语言对本发明中各个模块的逻辑设计进行描述,并将其与网络设备中的其它设备进行系统级的验证。验证结果表明,本发明实现了设计功能,且性能满足预期。
[0061] 以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。