基于cioq结构的千兆afdx交换机及其交换方法

文档序号:10538642阅读:944来源:国知局
基于cioq结构的千兆afdx交换机及其交换方法
【专利摘要】一种基于CIOQ结构的千兆AFDX交换机,包括N个输入端口、对应每个输入端口下的输入虚拟队列、虚拟链路配置表、集中调度模块、K个并行交叉开关矩阵、对应每个交叉开关矩阵下的单信元寄存器、输出端口控制器、N个输出端口和对应每个输出端口下的输出缓存队列。本发明不仅可以满足现有AFDX交换机的全线速、单播多播、确定性延时、两级优先级等要求,并且可以实现24口全千兆交换;减少了共享缓存结构对内部存储带宽的限制,在不增大存储器位宽情况下总体交换容量可以达到48Gbps;本发明中涉及的存储和缓冲单元为片上存储资源,不需要外部存储器和接口,降低了硬件消耗,节省成本。
【专利说明】
基于C1Q结构的千兆AFDX交换机及其交换方法
技术领域
:
[0001 ]本发明涉及航空电子技术领域,特别涉及一种千兆AFDX交换机及其交换方法。
【背景技术】
:
[0002]在高速数据交换领域,交换式以太网数据传输速率已经达到40G甚至10GbpsJS是由于802.3协议的非确定性、数据包没有优先级机制、地址表的学习老化机制等缺陷,造成数据传输的实时性、时延、可靠性难以得到保证。为此,ARINC 664规范的第七部分定义了名为AFDX的全双工、确定性、可扩充、通道冗余的数据网络,广泛用于航空数据交换领域。
[0003]根据缓冲区位置的不同,交换芯片的结构可以分为输入缓冲队列(IQ)、输出缓冲队列(OQ)以及组合输入输出缓冲(C1Q)结构。IQ结构为每个输入端口都设置有缓冲区。输入端口进入的数据帧先缓存于输入端口缓冲区中形成输入队列。交换控制逻辑根据输出端口的状态异步地从输入队列中取出数据帧转发输出;OQ交换机结构为每个输出端口分配一定大小的输出缓冲区。输入端口进入的数据帧直接通过交换控制逻辑送入输出缓冲区中形成输出队列。交换机的输出端口异步地从输出队列中取出数据帧,从通信端口中输出。
[0004]IQ交换机逻辑简单,交叉开关复杂度低(N X N,N为端口数)、存储器带宽要求低(2X B,B为端口带宽),缺点是系统吞吐量只能达到60%左右。OQ交换机系统吞吐量达到100%,缺点是控制逻辑时序要求高,交叉开关复杂度为2 X N X N,共享存储器带宽要求为2X N X B,总体交换容量受限。现有的AFDX交换机基于共享缓存结构,理论上为OQ交换机,即到达输入端口的数据帧通过交换逻辑控制,直接送入位于输出端口的输出缓冲区如SRAM中。交换机的输出端口控制逻辑异步地从输出缓冲区队列中取出数据帧,送到输出端口输出。但是这种结构最大的局限在于其速度受限于内存访问速度。例如对于24口千兆AFDX交换机,总收发带宽为24 X IGbps X 2 = 48Gbps,即使存储器位宽为256位,仍需要交换机内部工作频率为48Gbps/256bits?200MHz,这在FPGA原型设计中难以实现。因此,由于共享缓存AFDX结构的局限性,目前国内外尚无24口全千兆AFDX交换机产品问世。伴随航空电子系统对数据交换速度和吞吐量要求的持续提高,有必要研究一种新的全千兆AFDX交换机架构。

【发明内容】

:
[0005]本发明的目的在于:提供一种全千兆AFDX交换机设计方案,旨在解决现有的共享缓存架构带宽无法满足全千兆AFDX设计需求的问题。
[0006]本发明的发明目的通过以下技术方案实现。
[0007]一种基于C1Q结构的千兆AFDX交换机,包括N个输入端口、对应每个输入端口下的输入虚拟队列、虚拟链路配置表、集中调度模块、K个并行交叉开关矩阵、对应每个交叉开关矩阵下的单信元寄存器、输出端口控制器、N个输出端口和对应每个输出端口下的输出缓存队列,其特征在于:
[0008]所述输入端口用于将接收到的数据帧缓存到输入虚拟队列并向集中调度模块发起资源请求;
[0009]所述集中调度模块用于对各资源请求进行轮询仲裁,对输出端口的输出缓存队列的状态进行判断,若输出端口缓存队列为可用状态,则接通交叉开关矩阵的输入端,从输入虚拟队列中读出数据帧的头信元送入交叉开关矩阵下的单信元寄存器中,并向该头信元需要转发的输出端口控制器发起输出申请;
[0010]所述输出端口控制器用于对所述输出申请进行轮流应答,接通交叉开关矩阵的输出端,将头信元从单信元寄存器输出到输出缓存队列,并记录帧长、时标和丢帧信息;
[0011]所述虚拟链路配置表用于保存基于虚拟链路的数据转发、优先级、帧过滤和流量控制所需信息,并由交换机终端负责加载更新;
[0012]所述输出端口根据帧信息从输出缓存队列读取数据帧进行输出。
[0013]优选地,所述输入端口包括输入控制模块、校验模块、以及错误和帧信息统计模块;
[0014]所述的输入控制模块用于控制数据帧写入输入虚拟队列;
[0015]所述的校验模块用于对输入虚拟队列中的数据帧进行CRC、长度、完整性和VL校验,如果校验正确则写地址指针跳到下一帧起始地址,并向集中调度模块发起资源请求;如果校验错误,则写地址指针不变;
[0016]所述错误和帧信息统计模块用于记录帧信息、统计帧错误。
[0017]优选地,所述输入虚拟队列包括第一输入虚拟队列、第二输入虚拟队列,所述输入端口将接收到的数据帧交替写入第一输入虚拟队列和第二输入虚拟队列。
[0018]优选地,所述的集中调度模块包含集中调度器、输出端口状态寄存器0QN、Crossbar状态寄存器Ck ;
[0019]所述输出端口状态寄存器OQn用于存储各输出缓存队列的状态信息;
[0020]所述Crossbar状态寄存器Ck用于存储各单信元寄存器的状态信息;
[0021]所述集中调度器用于先根据输出端口状态寄存器OQn对输出缓存队列的状态进行判断,若输出缓存队列为可用状态则查询Crossbar状态寄存器并对资源请求按照轮询仲裁策略分配交叉开关矩阵。
[0022]优选地,所述多个并行交叉开关矩阵中,交叉开关矩阵的个数为:N/6S交叉开关矩阵数目彡N/3,N为输入端口数目。
[0023]优选地,所述输出端口缓存队列包含一个高优先级队列和一个低优先级队列,用于缓存相应优先级的头信元;
[0024]集中调度模块用于根据头信元的优先级对对应的高优先级队列或低优先级队列的状态进行判断。
[0025]优选地,所述输入虚拟队列、单信元寄存器的输出缓存队列的读写位宽相同,头信元大小等于输入虚拟队列的读写位宽的值。
[0026]优选地,每N/4个输入端口共享一个虚拟链路配置表。
[0027]本发明还提供了一种用于基于C1Q结构的千兆AFDX交换机的交换方法,包含以下步骤:
[0028]a.数据帧到达输入端口 i,输入端口接收数据帧并交替写入该输入端口的两个输入虚拟队列,同时对数据帧进行CRC、长度、完整性校验,通过校验的数据帧进行VL校验;输入虚拟队列中的通过所有校验的合法数据帧向集中调度模块发起资源申请;其中,OSiSN-1,N为输入端口数;
[0029 ] b.集中调度模块根据数据帧的优先级以及申请的输出端口查询相应输出端口的输出缓存队列的状态,若该数据帧申请的输出端口的输出缓存队列不可用,则丢弃该数据帧并在对应输出端口中记录该丢帧信息;否则,集中调度模块按照轮询仲裁策略分配交叉开关矩阵,接通交叉开关矩阵的输入端;
[0030]c.若输入虚拟队列中的数据帧未得到交叉开关矩阵,则在输入虚拟队列中继续等待下一次轮询;得到交叉开关矩阵的输入虚拟队列,则把数据帧的头信元送入单信元寄存器中,并向该数据帧需要转发的输出端口发起输出申请,待整个数据帧发送完成之后释放交叉开关矩阵;
[0031 ] d.输出端口控制器对有数据传输的交叉开关矩阵进行轮流应答和接收,如果该输出端口资源不可用则丢弃由交叉开关矩阵发送过来的头信元,并记录丢帧信息;否则,判别头信元,记录帧长信息和时标,并把头信元从单信元寄存器写入相应优先级的输出缓冲队列,整个数据帧完整接收后重新等待下一帧的头信元;
[0032]e.输出端口根据输出缓存队列中帧的信息判断对应帧是否超过最大延时,如果超过,则丢帧并记录丢帧信息,否则从输出端口发送该数据帧。
[0033]优选地,步骤d中,输出端口控制器把头信元从单信元寄存器写入输出缓冲队列时为头信元附加数据帧长度和输出端口信息。
[0034]本发明设计了基于C1Q结构的AFDX交换机,根据上述技术方案设计的AFDX交换机可以满足现有AFDX交换机的全线速、单播多播、确定性延时、两级优先级等要求,并且可以实现24 口全千兆交换;减少了共享缓存结构对内部存储带宽的限制,在不增大存储器位宽情况下总体交换容量可以达到48Gbps;本发明中涉及的存储和缓冲单元为片上存储资源,不需要外部存储器和接口,降低了硬件消耗,节省成本。
【附图说明】
:
[0035]图1为本发明基于C1Q结构的AFDX交换机结构框图;
[0036]图2为本发明AFDX交换机输入端口结构框图;
【具体实施方式】
:
[0037]下面通过附图和具体实施例对本发明做进一步的详细说明,以下所述是对本发明的解释而不是限定。
[0038]根据说明书所述的基于C1Q结构的AFDX交换机结构框图如图1所示,以24口交换机为例,主要组成部分包括:24个输入端口、每个输入端口下的二个输入虚拟队列(第一输入虚拟队列、第二输入虚拟队列)、虚拟链路配置表(VL)、集中调度模块、8个并行交叉开关矩阵、每个交叉开关矩阵下的单信元寄存器、输出端口控制器、24个输出端口,每个输出端口下的二个输出缓存队列(高优先级队列、低优先级队列)。本实施例是在FPGA上来实现,输入输出端口都是高速收发端口,队列为FPGA片上存储空间,其他功能模块都是通过编写verilog代码自动综合实现的。
[0039]如图2所示,输入端口具体包括输入控制模块、校验模块、错误和帧信息统计模块,输入端口接收数据帧,经过输入控制模块交替写入两个输入虚拟队列,同时校验模块对输入虚拟队列中的数据帧进行CRC、长度、完整性,如果校验正确则进行下一步的VL校验,如果校验正确则写地址指针会跳到下一帧起始地址,并向集中调度器发出资源请求,如果校验错误,则写地址指针不变(相当于该帧被丢弃)并由错误和帧信息统计模块记录错误信息。
[0040]输入端虚拟队列采用两路双口 RAM实现,为了降低头阻塞发生的概率,在一路输入虚拟队列已满且长时间等待资源仲裁的情况下,另一路输入虚拟队列中的数据帧可以同时发起输出申请。输入虚拟队列用于缓存等待轮询仲裁的数据帧或暂存因内部链路被占用而无法发送到Crossbar单信元寄存器的数据帧;
[0041 ]虚拟链路配置表保存基于虚拟链路的数据转发、优先级、帧过滤和流量控制信息,由交换机终端负责加载更新。为满足每个输入端口在线速情况下能完成VL校验且不占用大量的片上资源,本设计中配置4个VL表,每6个输入端口共享一个VL表。
[0042 ]集中调度模块包含集中调度器、输出端口状态寄存器OQn、Cro s sbar状态寄存器Ck。集中调度器接收资源请求,完成轮询仲裁,接收所有输出缓存队列的状态反馈,更新输出端口状态寄存器OQNXrossbar状态寄存器&。在收到资源请求时,首先根据数据帧的优先级以及请求的输出端口在输出端口状态寄存器OQn查询对应的输出缓冲队列,例如,数据帧的优先级为高,请求的输出端口为O,则在输出端口状态寄存器OQn查询输出端口 O的高优先级队列。若该数据帧申请的输出端口资源全部不可用,则丢弃整个数据帧并在对应输出端口中记录该丢帧信息;否则,集中调度器查询Crossbar状态寄存器Ck(0<k<K-l ,K为Crossbar数目)状态寄存器并对该申请按照轮询仲裁策略分配交叉开关矩阵;若输入虚拟队列中的数据帧未得到交叉开关矩阵,则在输入虚拟队列中继续等待下一次轮询;若得到Crossbar资源,集中调度器接通交叉开关矩阵的输入端,把数据帧头信元从输入虚拟队列送入单信元寄存器中,并在头信元后附加数据帧长度和输出端口信息并向输出端口控制器发出输出请求,更新Crossbar状态寄存器Ck的状态。
[0043]多个并行交叉开关矩阵从输入端虚拟队列接收并转发合法数据帧信元,由单信元寄存器暂存未得到输出端口应答输出的信元,本例选择交叉开关矩阵数目为8,交叉开关矩阵,由输入端、输出端和内部交叉点开关组成。交叉点开关的作用是为任意输入端和输出端搭建数据通路。
[0044]输出端口控制器用于对有数据传输的交叉开关矩阵进行轮流应答,接通交叉开关矩阵的输出端,将单信元寄存器中的头信元数据送入相应优先级的输出缓存队列,更新Crossbar状态寄存器Ck的状态。如果该输出缓存队列不可用则丢弃由单信元寄存器发送过来的头信元,并记录丢帧信息;否则,判别头信元,记录帧长信息和时标,并把数据写入相应优先级的输出端口缓冲队列,整个数据帧完整接收后重新等待下一帧的头信元;
[0045]输出端口缓存队用于缓存相应优先级的数据帧,包含一个高优先级队列和一个低优先级队列,根据优先级队列中帧的信息判断对应帧是否超过最大延时,如果超过,则丢帧并记录丢帧信息,输出模块根据帧信息控制输出数据帧,高优先级队列中的数据帧优先输出。
[0046]下面以24口全千兆交换机为例,计算基于C1Q结构的AFDX交换机所需缓冲区大小和传输延时。AFDX协议数据帧最长为1518Bytes。设置每个输出端最多缓存128帧1518Bytes的数据帧,总共需要空间为128 X 24 X 1518Bytes X 8?36Mb;根据计算,输入端设置6个数据帧缓冲区大小即可防止申请资源过程中帧丢失,本例在每个输入端缓存64帧1518Bytes的数据帧,总共需要空间64\24\151887七68\8?181?3;4个共享的¥1^表所占空间为4103\128X 2 = IMb ; 8个Crossbar每个占有I个信元大小的缓冲区,即128bits X 8 = 1024bits;还包括输入端口帧信息记录、OQn状态寄存器、Ck状态寄存器等寄存器组,共需要空间约2Mb;总体需要5 8Mb片上存储资源。现有的FPGA最大片内资源为68Mb,可以满足FPGA原型设计需求。在C1Q结构的AFDX交换机内,数据帧传输延时分为VL校验延时tVL、轮询延时tR、内部帧传输延时t。、输出端口输出延时t。。设定FPGA内部工作频率为125MHz,一个时钟周期为8ns,内部位宽为128bits,则每个周期写入16Bytes。在AFDX交换机中不考虑资源竞争,则tVL?12clk,tR= 3clk,在写入Ck缓冲区过程中,由于Ck需要传输完完整一帧后才能释放资源,所以延时为tc= 1518Bytes/16Bytes.elk—1;^95clk,1:。= 0,最短延时为(tvL+tR+tc+t。) X8ns = 0.88us0考虑竞争情况,在VL校验过程中,由于6个输入端口共享一个VL表,所以最后一个端口最长需要等待tvL X 6 = 72clk才能完成校验。此外,由于24个口共用8个Crossbar,所以最长需要等待3次完整的传输过程,延时为(tR+tc)X3 = 294clk。在输出端口,以IGbps速率发送数据帧,考虑所有输出队列全部填满最长数据帧,则最后一帧等待发送总共需要等待127 X1518clk=192786clk,总体延时为(72+294+192786) X8ns?1.5ms,可以满足AFDX延时确定性需求。
[0047]可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
【主权项】
1.一种基于C1Q结构的千兆AFDX交换机,包括N个输入端口、对应每个输入端口下的输入虚拟队列、虚拟链路配置表、集中调度模块、K个并行交叉开关矩阵、对应每个交叉开关矩阵下的单信元寄存器、输出端口控制器、N个输出端口和对应每个输出端口下的输出缓存队列,其特征在于: 所述输入端口用于将接收到的数据帧缓存到输入虚拟队列并向集中调度模块发起资源请求; 所述集中调度模块用于对各资源请求进行轮询仲裁,对输出端口的输出缓存队列的状态进行判断,若输出端口缓存队列为可用状态,则接通交叉开关矩阵的输入端,从输入虚拟队列中读出数据帧的头信元送入交叉开关矩阵下的单信元寄存器中,并向该头信元需要转发的输出端口控制器发起输出申请; 所述输出端口控制器用于对所述输出申请进行轮流应答,接通交叉开关矩阵的输出端,将头信元从单信元寄存器输出到输出缓存队列,并记录帧长、时标和丢帧信息; 所述虚拟链路配置表用于保存基于虚拟链路的数据转发、优先级、帧过滤和流量控制所需信息,并由交换机终端负责加载更新; 所述输出端口根据帧信息从输出缓存队列读取数据帧进行输出。2.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于所述输入端口包括输入控制模块、校验模块、以及错误和帧信息统计模块; 所述的输入控制模块用于控制数据帧写入输入虚拟队列; 所述的校验模块用于对输入虚拟队列中的数据帧进行CRC、长度、完整性和VL校验,如果校验正确则写地址指针跳到下一帧起始地址,并向集中调度模块发起资源请求;如果校验错误,则写地址指针不变; 所述错误和帧信息统计模块用于记录帧信息、统计帧错误。3.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于所述输入虚拟队列包括第一输入虚拟队列、第二输入虚拟队列,所述输入端口将接收到的数据帧交替写入第一输入虚拟队列和第二输入虚拟队列。4.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于所述的集中调度模块包含集中调度器、输出端口状态寄存器0QN、CroSSbar状态寄存器Ck; 所述输出端口状态寄存器OQn用于存储各输出缓存队列的状态信息; 所述Crossbar状态寄存器Ck用于存储各单信元寄存器的状态信息; 所述集中调度器用于先根据输出端口状态寄存器OQn对输出缓存队列的状态进行判断,若输出缓存队列为可用状态则查询Crossbar状态寄存器并对资源请求按照轮询仲裁策略分配交叉开关矩阵。5.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于所述多个并行交叉开关矩阵中,交叉开关矩阵的个数为:N/6S交叉开关矩阵数目<N/3,N为输入端口数目。6.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于所述输出端口缓存队列包含一个高优先级队列和一个低优先级队列,用于缓存相应优先级的头信元; 集中调度模块用于根据头信元的优先级对对应的高优先级队列或低优先级队列的状态进行判断。7.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于,所述输入虚拟队列、单信元寄存器的输出缓存队列的读写位宽相同,头信元的大小等于输入虚拟队列的读写位宽的值。8.根据权利要求1所述的一种基于C1Q结构的千兆AFDX交换机,其特征在于,每N/4个输入端口共享一个虚拟链路配置表。9.一种用于基于C1Q结构的千兆AFDX交换机的交换方法,包含以下步骤: a.数据帧到达输入端口i,输入端口接收数据帧并交替写入该输入端口的两个输入虚拟队列,同时对数据帧进行CRC、长度、完整性校验,通过校验的数据帧进行VL校验;输入虚拟队列中的通过所有校验的合法数据帧向集中调度模块发起资源申请;其中,OSiSN-1,N为输入端口数; b.集中调度模块根据数据帧的优先级以及申请的输出端口查询相应输出端口的输出缓存队列的状态,若该数据帧申请的输出端口的输出缓存队列不可用,则丢弃该数据帧并在对应输出端口中记录该丢帧信息;否则,集中调度模块按照轮询仲裁策略分配交叉开关矩阵,接通交叉开关矩阵的输入端; c.若输入虚拟队列中的数据帧未得到交叉开关矩阵,则在输入虚拟队列中继续等待下一次轮询;得到交叉开关矩阵的输入虚拟队列,则把数据帧的头信元送入单信元寄存器中,并向该数据帧需要转发的输出端口发起输出申请,待整个数据帧发送完成之后释放交叉开关矩阵; d.输出端口控制器对有数据传输的交叉开关矩阵进行轮流应答和接收,如果该输出端口资源不可用则丢弃由交叉开关矩阵发送过来的头信元,并记录丢帧信息;否则,判别头信元,记录帧长信息和时标,并把头信元从单信元寄存器写入相应优先级的输出缓冲队列,整个数据帧完整接收后重新等待下一帧的头信元; e.输出端口根据输出缓存队列中帧的信息判断对应帧是否超过最大延时,如果超过,则丢帧并记录丢帧信息,否则从输出端口发送该数据帧。10.根据权利要求9所述的交换方法,其特征在于,步骤d中,输出端口控制器把头信元从单信元寄存器写入输出缓冲队列时为头信元附加数据帧长度和输出端口信息。
【文档编号】H04L12/931GK105897621SQ201610512921
【公开日】2016年8月24日
【申请日】2016年7月1日
【发明人】王荣阳, 李修杰, 杨爱良, 周伟
【申请人】中国航空无线电电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1