核心路由器交换结构协处理器的制作方法

文档序号:7695298阅读:247来源:国知局
专利名称:核心路由器交换结构协处理器的制作方法
技术领域
核心路由器交换结构协处理器(Switch Co-process Module)属于因特网主干网核心路由 器技术领域。
背景技术
根据所处位置不同,核心路由器交换结构协处理器分为两个功能模块协处理器上行模 块,它和交换结构输入端相连;协处理器下行模块,它和交换结构输出端相连。不同厂家的 具体实现方式各不相同,有的使用专门定制的ASIC芯片,也有的使用的是FPGA。有些厂家 将交换结构协处理器归入网络处理器。
FPGA (Field Programmable Gate Array)是上世纪80年代末开始使用的大规模可编程 数字集成电路器件。它充分利用计算机辅助设计技术进行器件的开发与应用。用户借助于计 算机不仅能自行设计专用集成电路芯片,还可在计算机上进行功能仿真和实时仿真,及时发 现问题,调整电路,改进设计方案。这样,设计者不必动手搭接电路、调试验证,只须在计 算机上操作很短的时间,即可设计出与实际系统相差无几的理想电路。而且,FPGA器件采用 标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,因此,成为科研产 品开发及其小型化的首选器件,其应用极为广泛。
不管采用FPGA还是采用专门定制的芯片,交换结构协处理器都需要外接存储器,用 来换缓存接收的网络数据。

发明内容
本发明目的在于提供一种核心路由器交换结构协处理器的实现机制,具体实现采用FPGA 技术。协处理器上行模块接收路由器接收方向处理模块通过上行FIFO发来的数据包,对数据 包进行分片,根据通用交换第一层协议CSIX-L1 (Common Switch Specif ication-LI)的要求, 给每个数据片加上特定的片头,片头包含数据片负载长度、数据片目的地址、数据片当前所 在的源线卡号、数据片的优先级,该数据片称为信元。再根据交换结构通过下行模块提供给上行模块的流量控制信息对信元进行缓存、调度、最后发送到交换结构,由交换结构实现信 元数据交换,交换结构根据信元头中的目的地址找到交换结构的出口。信元到达目的地址指 定的输出端口,从而实现路由功能。
下行模块接收交换结构发送的符合CSIX-L1协议的信元,对信元的正确性进行判断,去 掉信元头,将信元按分片的顺序组合,还原为数据包,还原得到的数据包应该和分片之前进 入交换结构上行模块的原始数据包完全一样。然后再对数据包进行缓存、调度、最后发送到 交换结构协处理器相连的下行FIFO。为了实现数据包的快速处理,协处理器采用流水线结构 实现。
本发明的特征为交换结构协处理器由上行模块和下行模块组成,内部逻辑采用FPGA实 现,接收的网络数据保存在FPGA外围存储器中。
上行模块采用单一的上行模块主时钟CLK工作,它由下列子模块构成
(1) 包输入接口,它从外部FIFO中读取数据包,并将数据包发送到包分路器。
(2) 包分路器,它将一路输入数据在两个输出端之间分配,将数据分为两路,它的输入 端和包输入接口电路输出端相连,也和反压模块的输出相连。和包分路器相连的第一和第二 路数据处理系列模块,结构和功能都完全一样。
(3) 包分路器输入端和包输入接口、第一路反压模块和第二路反压模块输出端相连,它 的输出端分别接FIF010、 FIF020。 FIF010、 FIF020以及后续所有设计中采用的FIF0xx模块 都是先入先出的队列存储器
(4) 包分片包括第一路包分片和第二路包分片,它们的输入端分别与上述的包队列存 储器输出端相连。
(5) FIF011和FIF012,它的数据输入端和各自包分片输出端相连;它的读输入和信元 缓存管理读FIFO输出相连。
(6) 信元缓存管理包括第一路信元缓存管理和第二路信元缓存管理。它们的输入端分 别和第一路队列调度或第二路队列调度、FIF011或FIF021输出端相连,同时它也接收后继 FIF012或FIF022的快满反馈信号。第一路信元缓存管理和第一路信元存储器、第一路链表 存储器相连。第二路信元缓存管理和第二路信元存储器、第二路链表存储器相连。
(7) 队列调度包括第一路队列调度和第二路队列调度。第一路队列调度和第一路信元 缓存管理模块、流量控制模块相连,第二路队列调度和第二路信元缓存管理模块、流量控制模块相连。第一路队列调度输出和第一路信元缓存管理模块相应的输入端口相连,第二路队 列调度输出和第二路信元缓存管理模块相应的输入端口相连。
(8) 流量控制,它接收来自交换结构下行模块的流控数据,并将流控信息发送到队列调
度和信元发送。
(9) FIF012和FIF022,它们的输入端分别和信元缓存管理模块的数据输出端和数据输出 有效信号相连。同时它们的读信号分别和信元发送模块相连。
(10) 信元发送包括第一路信元发送和第二路信元发送。第一路信元发送模块的输入 端和FIF012的数据线和空标志线相连,它输出的读数据信号和FIF012的读信号相连;第二 路信元发送模块的输入端和FIF022的数据线和空标志线相连,它输出的读数据信号和FIF022 的读信号相连。此外,信元发送模块的输入端也和流量控制模块相连。
(11) 上行CPU接口,它使得上行模块内部各个功能模块与线路接口卡上的CPU进行互 联,接受CPU指令,对上行模块运行进行控制,同时扫描出各个功能模块内部状态信息。
(12) 第一路反压模块和第二路反压模块,它分别接收FIF010、 FIF020、 FIFOll、 FIF021 和信元缓存管理模块输出的外部信元存储器快满信号。
下行模块含有下列子模块构成
同上行模块一样,交换结构协处理器下行模块也由两路模块构成,除了流量控制模块和 数据包发送模块由两路共用外,两路数据处理电路其它模块的结构和功能完全对称相同。
(1)交换结构接口包括第一路交换结构接口和第二路交换结构接口。第一路交换结构 接口输入端和交换结构出口输出的信元开始信号SOF0、奇偶校验信号PARO、 32位信元数据 信号data0、数据同步时钟CSIX—CLK0相连,同时它也接收第一路信元FIFO模块的信元快满 反馈信号,它也和下行模块主时钟CLK相连。第二路交换结构接口输入端和交换结构出口输 出的信元开始信号S0F1、奇偶校验信号PAR1、 32位信元数据信号datal、数据同步时钟 CSIX—CLK1相连,同时它也接收第二路信元FIFO模块的信元快满反馈信号,它也和下行模块 主时钟CLK相连。
交换结构接口将接收的信元区分为单播、多播和流控信元,完成单播、多播和流控信元 的分离,并将分离出的单播和多播数据去掉CSIX-L1信元头,余下的信元负载部分发送给各 自的信元FIFO模块。如果信元FIFO模块反馈给交换结构接口的FIFO快满信号有效,则交换 结构接口将接收的信元以一个完整的信元负载为单位丢弃,不发送给信元FIFO模块。除了交换结构接口模块有双时钟外,下行模块的其它子模块都只有一个单一时钟CLK,为避免叙述 上的重复不再在下面的模块中说明,也不在图3——协处理器下行模块内部的各个子模块之
间的关系图中画出来。
(2) 信元FIF0模块包括第一路信元FIFO和第二路信元FIFO,它们的输入端和各自的 交换结构接口输出端相连,它的读信号来自包重组模块。
(3) 包重组模块包括第一路包重组和第二路包重组,它们的数据输入端和各自相连的 信元FIFO的数据输出端以及信元FIFO是否为空的指示信号相连。此外,它还接收各自相连 的数据片FIFO反馈的快满信号。
(4) 数据片FIFO模块包括第一路数据片FIFO和第二路数据片FIFO,它们的数据输 入端与各自相连的包重组模块的输出端相连,它的读信号来自各自相连的数据包缓存管理模 块。
(5) 数据包缓存管理模块包括第一路数据包缓存管理和第二路数据包缓存管理,它们 的数据输入端和各自的数据片FIFO数据输出端相连,它们接收各自相连的队列调度模块输出 的队列调度信息、数据包FIFO快满信号,数据包缓存管理模块还和各自的片外数据片存储器 和链表存储器相连。
(6) 队列调度包括第一路队列调度和第二路队列调度,它们的输入和输出端与各自的 数据包缓存管理模块相应的输入输出相连。
(7) 数据包FIF0:包括第一路数据包FIFO和第二路数据包FIFO,它们的输入端和各自 的数据包缓存管理模块数据输出总线相连,它们的写信号和各自的数据包缓存管理模块数据 输出有效信号相连,数据包FIFO读信号和各自的数据包发送模块输出的读信号相连。
(8) 数据包发送模块它的数据输入端和第一路及第二路的数据包FIFO输出数据总线 相连,它还接收FPGA外接的下一级FIFO快满反馈信号,同时给FPGA外接的下一级FIFO发送 数据。
(9) 流量控制模块,它的输入端分别接收第一路、第二路信元处理模块交换结构接口模 块的输出流控数据总线fc0、 fcl,以及第一路和第二路信元处理模块信元FIFO快满信号。下 行模块由两路处理单元构成第一路信元处理和第二路信元处理的结构和功能完全一样。
(10) 下行CPU接口,它使得下行模块内部各个功能模块与线路接口卡上的CPU进行互 联,接受外界的CPU指令,对下行模块运行进行控制,同时扫描出其各个子模块内部状态信息。
通过上述方法构建的交换结构协处理器,达到的性能指标为-实现2路CSIX-L1信元输入输出处理; IPV4达到40Byte包线速处理,最大包长4470字节; IPV6达到80Byte包线速处理,最大包长4470字节; 支持MPLS多协议标记交换数据包,最大包长4470字节;
QOS支持1024个单播队列,上行模块支持一个多播队列,下行模块支持16个多播队列;
支持76字节信元(64字节负载)或128字节信元(116字节负载)配置;
支持16个目的线卡;
支持64种单播优先级;
链表式存储共享管理;
支持加权轮询优先级调度;
支持CSIX-Ll流量控制;
FPGA主频为100MHZ时支持数据包的最低速率是4Gb/s。


图1交换结构协处理器在整个核心路由器中的位置以及和周围器件的关系 图2构成协处理器上行模块内部的各个子模块之间的关系 图3构成协处理器下行模块内部的各个子模块之间的关系 图4下行模块交换结构接口内部结构
图5与交换结构协处理器相连的两个输入输出FIFO的数据包结构
说明(1) bit35 34 (包的头尾指示)10:数据包开始,00:数据包中间数据,
01:数据包结束,11:数据包错误(ERR)。 bit33 32 (MOD,最后一个32位有效字节指示,
只有在包尾时才有意义)00:最后四个字节都有效,01:最后四个字节中三个字节有效 (bit31 8), 10:最后四个字节中两个字节有效(bit31 16), 11:最后四个字节中一个字
节有效(bit31 24)。无效位用0填充。bit31 31,数据包的具体内容。
'(2)源线卡号bitl5 8,共8位,但目前只用了 bitl1 8,其它位置0。 (3)目标端口号bitl9 8,共12位,用来指明数据包到达目标线卡后的输出端□。
图6 CSIX-L1协议信元总体数据结构 图7 CSIX-L1协议信元基本头结构 图8单播信元扩展头
说明目的地址就是信元到达的目标线卡号。
图9多播信元扩展头
说明多播目的标识就是信元到达的目标线卡号。
图10流量控制信元
图11信元负载数据结构
说明来自数据包接收模块的数据包被分片后装入到流量管理TM负载里进行传输。 只有最后一个数据片可以小于最大负载长度,位数不够的话需要填充至4字节的倍数。 图12流量管理TM头
说明(1)源线卡号0x0 0xf表示源线卡号0 源线卡号Oxf。
(2) 信元标识IO为包分片生成的第一个信元,OO为包分片生成的中间信元,01为包
分片生成的最后一个信元,ll一个包分片只生成一个信元。
(3) 信元序列号 用于重组时识别信元的序列信息。针对每--个包所分片的信元,
其第一个信元序列号为0x0,第二个为0xl,依次类推,直到最后一个帧。再下一个包时仍然 从0x0开始。
(4) 类型OO表示单播,Ol多播,10和11不用。
(5) 信元优先级这里的5位和信元扩展头中的3位优先级组成信元的8个优先级,分 别是0x0 0x3f,这种分级标识,可以表示64个不同的优先级。
图13数据片存储器或信元存储器存储块划分示意图
说明图(a) —个数据片(或信元)由一个英文字母加一个阿拉伯数字代表,英文字 母相同的数据片(或信元)属于同一个队列,阿拉伯数字表示当前数据片(或信元)在各自队 列中被存入存储器的顺序。
图(b)示意的是每个存储块的序列号,数据片存储器或信元存储器存储块划分为 ^个存储块,N—般取不小于13的自然数, 一个存储块可以保存一个数据片(或信元)。 图14数据片存储器或信元存储器存储块和链表存储器的存储单元的关系示意图说明链表存储器每个存储单元和存储器划分成的存储块一一对应,链表存储器每个存储 单元保存对应存储块存储的信元或数据片的相关信息,以及同一队列下一个节点的地址信息。
具体实施例方式
核心路由器中交换结构协处理器用在线路接口卡上,由FPGA配合一组外部存储器芯片实现。
交换结构协处理器由两个功能模块上行模块和下行模块构成,它和周围器件的连接关
系以及在高性能核心路由器中的位置见附图1。由图可以知,交换结构协处理器通过两个FIFO 和数据包处理电路相连,数据包处理电路和路由器物理和数据链路层处理电路相连。数据包 处理电路由接收和发送两个模块组成,接收模块主要完成从物理和数据链路层处理电路接收 和区分MPLS流和IP流,进行路由查找操作,并将查找得到的路由信息添加到数据包的包头, 然后通过上行FIFO传送到交换结构协处理器。数据包处理的发送模块从下行FIFO接收交换 结构协处理器发送的数据包,将数据区分为MPLS流和IP流,完成将数据包发送到物理和数 据链路层处理电路的一系列操作,有些数据包上交操作系统处理,但大部分数据包发送到互 连网。
交换结构协处理器上行模块将数据包拆分为交换结构可以处理的信元,并将信元发送到 交换结构。上行模块的流量控制信息,来自交换结构和下行模块,并由下行模块传送到上行 模块,控制上行模块向交换结构发送信元数据的速率。下行模块完成数据信元恢复成数据包 的工作。
系统上电后,通过上行CPU接口模块、下行CPU接口模块和外部CPU进行通信,通过CPU 对整个协处理器进行初始化,初始化完成后,系统才可以正常工作。 上行模块的工作流程如下
1) 通过包输入接口模块从上行FIFO读取数据包,数据包传送以1拍为单位进行, 一拍 含32位数据,不足一拍的,用0补足,为了说明数据包的头尾信息,和最后一拍实际有效字 节数,.一拍数据外加4位边带信息,bit35 34做为包的头尾指示标识,bit33 32,说明最
后一拍实际有效字节数。包输入接口完成数据包过滤,将数据包之间的无效数据过滤掉,过 滤后每一个完整的数据包都有且只有一个头标识和一个尾标识。
2) 包分路器接收第一路反压模块和第二路反压模块信号,在第一路反压模块或第二路反压模块信号无效的情况下,根据设定的状态,对接收包的头标识进行识别,以包为单位进行 分路。包分路器支持4种分路方式(1)数据包优先分配给第一路FIF010,只有在第一路反 压模块反压信号有效的情况下,第二路反压信号无效的情况下,数据包才分配给第二路 FIF020, (2)数据包在第一路FIF010和第二路FIF020之间均匀分配,(3)数据包只分配给 第一路FIFOIO, (4)数据包只分配给第二路FIF020。在实际运行时,可以根据情况设定系统 在一种分路方式下工作。
3) 数据包分片。根据设定的分片大小,将数据包分片为76或128字节的信元,每个信 元加上符合CSIX-L1协议的信元头和本专利定义的流量管理TM (traffic manager)头。TM 头的源线卡号0x0 - Oxf。指出信元的源线卡号。信元标识IO为包分成的第一个信元, OO为包的中间信元,Ol为包的最后一个信元,ll为一个信元组成一个包。信元序列号每 一个数据包被拆分成一个以上的信元,每个信元分配一个序列号,用于重组时识别信元的序 列信息。针对每一个包分片形成的信元,其第一个信元序列号为0x0,第二个为Oxl,依次类 推,直到最后一个信元。类型OO表示单播,Ol多播,10和11不用。TM包含的信元5位优先 级和单播扩展头包含的3位信元优先级组成一个信元的8比特优先级。多播的优先级置零, 未用。
4) 信元缓存管理模块将接收的具有相同目的地址、相同优先级的信元按分片顺序存放在 同一个队列中。总共支持1024个单播队列,l个多播队列。单播队列分为64个优先级,发 往16个不同的目的地址,所以有1024个单播队列。多播队列不分优先级。信元存储器按照 最大信元的大小被分成大小相等的2W个存储块,N—般取不小于13的自然数,每个存储块可 以存储一个信元,组成每个存储块的存储单元地址是连续的。 一个数据包常常拆分成一个以上 的数据信元,这些数据信元保存在不同的存储块中,这些存储块在存储器中的位置可以是互不 相邻。
信元缓存管理模块管理采用链表队列对信元存储空间进行管理,它包含两类链表信元 队列链表和空链表,信元队列链表的链表节点保存每个队列包含的信元信息,空链表保存外 部信元存储器中没有利用的所有存储块信息,两类链表都保存在外部链表存储器中,动态共享 链表存储器空间。信元存储器每个存储块的起始地址和链表存储器中链表节点存储地址一一 对应,链表的每个节点单元存储地址指示每个存储块的起始地址,单元的存储内容,指示属 于同一个链表的下一个链表节点的地址。信元缓存管理含有信元队列状态存储器,该存储器保存每个信元队列是否存在信元的状态信息,每个存储单元取值为0或1, 1表示相应队列含 有信元,0表示不含信元, 一个队列对应信元队列状态存储器的一个存储单元,所以信元状 态存储器至少应该有1025个存储单元。
信元缓存管理模块每接收到一个信元,就要从空链表中找到队头节点对应的存储块,将 信元数据存入该存储块,并将该存储块对应的链表节点从空链表中删除,同时将他插入到它 所属的信元队列链表尾部。
外部信元存储器的未使用存储块个数小于等于16时,信元缓存管理模块发出外部信元存 储器快满信号给各自相连的FIF011或FIF021,同时停止从FIF011或FIF021读入信元,如 果后来通过信元的发送,未使用存储块个数增加,信元缓存管理模块继续从各自相连的FIF011 或FIF021读入信元。
5) 流量控制模块,它接收来自交换结构下行模块的流量控制信息,并将得到的流量控制 信息发送给队列调度模块和信元发送模块。
6) 队列调度采用带加权的优先级调度规则,多播没有优先级,为了便于调度,也给多播 定义一个加权值。系统支持64个单播优先级,每种优先级定义一个加权值,优先级越高对应 的加权值就越大,每个队列初始的加权和值都为0。队列调度模块周期性地从信元缓存管理 模块得到1024个单播队列和1个多播队列的状态信息,若得到某个队列状态信息为O,则置 该队列的加权和值为O,如果某个队列的状态信息不为0,则该队列的加权和值等于该队列原 来的加权和值再加上该队列优先级对应的加权值,队列调度模块对1025个队列进行周期性的 调度,调度出当前加权和值最大的队列号传送给信元缓存管理模块。每次调度完毕,应该对 调度成功队列的加权和进行更新,更新后的调度成功队列加权和等于未调度之前的加权和减 去该队列优先级对应的加权值。
7) 信元缓存管理模块根据接收的调度信息,通过队列链表得到该队列第一个信元节点 的存储起始地址,从外部信元缓存中读出信元,发送到FIF012或FIF022,并更新信元队列 状态存储器的相应存储单元,同时,信元缓存管理模块要将输出信元的存储块对应的链表节 点从所属队列链表中删除,同时将该节点插入到空链表的尾部。
8) 信元发送模块根据来自流量控制模块的链路级流控信息,决定是否从FIF012或 FIF022中读取信元,将信元发送到交换结构。如果链路级流控信息有效,就不从FIF012或 FIF022读取信元,也不进行信元发送。否则如果链路级流控信息无效,就从FIF012或FIF022读取信元,并将读取的信元发送到交换结构,发送的信元遵循CSIX-L1接口协议。
9)上行模块初始化以及监控信息通过上行CPU接口模块进行。通过上行CPU接口配置系
统参数,读取系统状态。
下行模块的工作流程如下
1) 交换结构接口接收交换结构传送的CSIX-L1信元,接收的数据首先在输入数据寄存器 组中进行暂存,如图4所示,然后,将寄存器组内的数据写入到先入先出FIFO存储器。FIFO 存储器完成交换结构输入数据时钟域csix-clk和FPGA系统内部时钟域elk的隔离。
FIFO存储器每输出一个节拍的数据,数据校验模块都要对接收的数据进行一次奇偶校验 和长度校验,如果校验发现错误时,数据校验模块给信元分类传送错误指示信号。
信元分类模块通过数据寄存器组得到接收的信元,在状态控制机的时序控制下,利用得 到的数据校验指示信号,将接收的信元区分为单播、多播和流控信元,并标识该信元的对错 信息,完成单播、多播和流控信元的分离,并将分离出的单播和多播数据去掉信元基本头、扩 展头以及垂直校验数据发送到下一级信元FIF0模块,将流控信元发送到流量控制模块。
2) 包重组模块从前一级信元FIFO中读出信元,并将信元去掉TM头组合成数据包。合成 数据包的依据是信元TM头中源线卡号、类型、信元标识、信元序列号、8位优先级(信元扩 展头中的3位优先级以及TM头中的5位优先级)。包重组模块将TM头中具有相同类型、源线 卡号、8位优先级的信元归为一个队列,共有1040个队列1024个单播队列、16个多播队 列。包重组模块含有一个序列号存储器,序列号存储器为1040个队列的每一个队列分配一个 存储单元,用来记录每个队列预期接收的信元序列号。例如系统复位后,每个队列预期接 收的第一个信元序列号应该是0,如果不是O,说明信元在传送的过程中发生了乱序的错误, 用该信元组成的数据包就是错误数据包。预期序列号每接收一个信元,它的值加l,给出同 一队列接收的下一个信元的预期序列号。每个队列接收完一个数据包的所有分片后,该队列 对应序列号置O,为接收下一个数据包的第一个分片做准备。包重组模块能识别和标识错误 的数据包。
3) 数据片FIFO对包重组后的数据片和数据片对应的队列号进行缓存,然后传送给数据 包缓存管理模块。
4) 数据包缓存管理模块将来自数据片FIFO的数据片,根据队列号和接收顺序依次存放。 数据包缓存管理模块总共支持1024个单播队列,16个多播队列,单播队列分64个优先级,多播队列不分优先级。采用链表结构进行数据包存储的队列管理,为了进行数据包的存储管 理,数据包缓存管理模块外接两个存储器, 一个存储器,做为链表存储器, 一个存储器做为 数据片存储器。数据片存储器被分成大小相等的2N个存储块,N—般取不小于13的自然数, 每个存储块可以存储一个数据片,组成每个存储块的存储单元地址是连续的。 一个数据包常常 由一个以上的数据片组成,这些数据片保存在不同的存储块中,这些存储块在存储器中的位置 可以是互不相邻,每个存储块的起始地址和链表存储器中的链表节点存储地址一一对应。
链表存储器保存链表,链表的每个节点单元存储地址指示每个存储块的起始地址,单元 的存储内容,存储数据片信息,同时存储属于同一个队列的下一个链表节点的地址。数据包 缓存管理模块也包含两类链表数据片队列链表和空链表,这两类链表的建立、删除、插入 方式和信元缓存管理模块一样。
如果数据包缓存管理模块从数据片FIFO接收到构成某一个数据包的所有分片时,称数据 包缓存管理接收到一个完整的数据包。数据包缓存管理模块含有数据包队列状态存储器,该 存储器保存每个数据包队列是否存在数据包的状态标识信息,每个存储单元取值为0或1, 1 表示相应队列含有一个以上完整数据包,0表示不含完整数据包(但仍然可能含有某个数据 包的若干数据片),队列状态存储器的一个存储单元对应一个队列。
外部数据片存储器的未使用存储块个数小于等于16时,数据包缓存管理模块停止从各自 的数据片FIFO读入数据片,如果后来通过数据片的发送,未使用存储块个数增加,数据包缓 存管理模块继续从各自相连的数据片FIFO读入数据片。
5) 队列调度采用带加权的优先级调度规则,多播没有优先级,为了便于调度,也给多播 定义一个统一加权值。系统支持64个单播优先级,每种优先级定义一个加权值,优先级越高 对应的加权值就越大,每个队列初始的加权和值都为0。队列调度模块周期性地从数据包缓 存管理模块得到1024个单播队列和16个多播队列的状态信息,若得到某个队列状态信息为 0,则置该队列的加权和值为0,如果某个队列的状态信息不为0,则该队列的加权和值等于 该队列原来的加权和值再加上该队列优先级对应的加权值,队列调度模块对1040个队列进 行周期性的调度,调度出当前加权和值最大的队列号传送给数据包缓存管理模块。每次调度 完毕,应该对调度成功队列的加权和进行更新,更新后的调度成功队列加权和等于该队列调 度之后的加权和减去该队列优先级对应的加权值。
6) 数据包缓存管理根据接收的调度信息,从片外缓存中读出调度成功的队列中含有的队列头数据包的所有分片,发送到数据包FIFO,并更新数据包队列状态存储器的相应存储单元。 同信元缓存管理模块一样,数据包缓存管理每发送一个数据片,都要进行队列链表节点的删 除操作和空链表的插入操作。
7) 数据包FIFO接收数据包缓存管理模块发送的数据包,并将接收的数据包发送给数据 包发送模块。
8) 数据包发送模块以包为单位,从含有数据包的两路数据包FIFO中,采用公平轮循算 法,读取数据包,发送到FPGA外接的下行片外FIFO中。
9) 下行模块初始化以及监控信息通过下行CPU接口模块进行。通过下行CPU接口配置系 统参数,读取系统状态。
权利要求
1.核心路由器交换结构协处理器,其特征在于,所述交换结构协处理器是在大规模可编程数字集成电路芯片FPGA和FPGA片外存储器中实现的,由上行模块和下行模块组成,其中上行模块,它包括下列功能子模块包输入接口、包分路器、第一路反压、第二路反压、6个先进先出存储器FIFO10、FIFO11、FIFO12、FIFO20、FIFO21、FIFO22、第一路包分片、第二路包分片、第一路信元缓存管理、第二路信元缓存管理、第一路队列调度、第二路队列调度、第一路信元发送、第二路信元发送、流量控制、以及上行CPU接口电路;其中包输入接口,它有一个外部先进先出数据包存储器FIFO的输入端,从外部上行FIFO读取数据包,过滤掉无效数据,过滤后的每个数据包,有且只有一个头标识和尾标识;包分路器,它的输入端和包输入接口的数据包输出端相连,对输入的数据包,根据设定的状态,对包的头标识进行识别,以包为单位分为两路,也可以关闭某一路,让包只走两路中的一条通路,分路后的数据包分别输入到所述FIFO10和FIFO20中;FIFO10、FIFO20各自的数据包输入端分别和所述的包分路器的数据包输出端相连;第一路包分片模块和第二路包分片模块,分别从所述FIFO10、FIFO20的输出端输入数据包后,把数据包分片为76或128字节的信元,为每个信元加上符合CSIX-L1协议的信元头,CSIX-L1信元头后面紧接的是负载数据,负载数据包含一个流量管理TM头,该TM头包括源线卡号、信元标识、信元序列号、类型、优先级,一个信元含有8位优先级TM头含优先级中的5位,信元扩展头中含优先级的3位,两个包分片模块将分成的信元分别发送给FIFO11、FIFO21;FIFO11和FIFO21,它们的数据输入端分别和第一路和第二路包分片模块输出端相连,而它们的读输入端分别和第一路信元缓存管理、第二路信元缓存管理模块各自的读FIFO输出端分别连接;第一路信元缓存管理模块和第二路信元缓存管理模块分别从FIFO11、FIFO21读入信元后,分别把输入信元中具有相同目的线卡号和优先级的数据,按照分片的顺序存放在同一个队列中,不同目的线卡号和优先级的信元组成不同的队列,每个队列信息以链表保存;信元存储器按照最大信元的大小被分成大小相等的2N个存储块,N一般取不小于13的自然数,每个存储块可以存储一个信元,组成每个存储块的存储单元地址是连续的,一个数据包常常拆分成一个以上的数据信元,这些数据信元保存在不同的存储块中,这些存储块在存储器中的位置可以是互不相邻;信元缓存管理模块采用链表队列对信元存储空间进行管理,它包含两类链表信元队列链表和空链表,信元队列链表的链表节点保存每个队列包含的信元信息,空链表保存外部信元存储器中没有利用的所有存储块信息,两类链表都保存在外部链表存储器中,动态共享链表存储器空间,信元存储器每个存储块的起始地址和链表存储器中链表节点存储地址一一对应,链表的每个节点单元存储地址指示每个存储块的起始地址,单元的存储内容,指示属于同一个链表的下一个链表节点的地址;每个信元缓存管理模块都各有一个片内状态存储器,每个队列是否存在信元的状态信息保存在状态存储器中,一个存储单元对应一个队列,信元状态存储器至少有1025个存储单元,每个单元分别用“1”或“0”表示对应的队列是否存在信元,两个信元缓存管理单元都分别管理1024个分成64个优先级的单播队列、以及一个不分优先级的多播队列;流量管理模块,接收来自交换结构下行模块的流控数据,并将到达的流控数据发送到第一队列调度模块、第二队列调度模块以及第一路信元发送模块、第二路信元发送模块;所述的第一队列调度模块和第二队列调度模块,队列调度采用带加权的优先级调度规则,多播没有优先级,为了便于调度,也给多播定义一个加权值,系统支持64个单播优先级,每种优先级定义一个加权值,优先级越高对应的加权值就越大,每个队列初始的加权和值都为0,队列调度模块周期性地从信元缓存管理模块得到1024个单播队列和1个多播队列的状态信息,若得到某个队列状态信息为0,则置该队列的加权和值为0,如果某个队列的状态信息不为0,则该队列的加权和值等于该队列原来的加权和值再加上该队列优先级对应的加权值,队列调度模块对1025个队列进行周期性的调度,调度出当前加权和值最大的队列号传送给信元缓存管理模块,每次调度完毕,应该对调度成功队列的加权和进行更新,更新后的调度成功队列加权和等于未调度之前的加权和减去该队列优先级对应的加权值;外部信元存储器的未使用存储块个数小于等于16时,信元缓存管理模块发出外部信元存储器快满信号给各自相连的FIFO11或FIFO21,同时停止从FIFO11或FIFO21读入信元,如果后来通过信元的发送,未使用存储块个数增加,信元缓存管理模块继续从各自相连的FIFO11或FIFO21读入信元;第一路信元缓存管理模块和第二路信元缓存管理模块分别利用各自对应的队列调度模块成功调度出的队列号,进行链表遍历操作,得到该队列的第一个信元,并将该信元发送发送给与信元缓存管理模块相连的FIFO12或FIFO22,信元发送完成之后,对应的链表节点应该从信元队列中删除,信元缓存管理模块将删除的节点插入到空链表队列中;第一路信元发送模块和第二路信元发送模块根据采自流量控制模块的链路级流量控制信息,决定是否分别从FIFO12、FIFO22中读取信元发送到外部的交换结构,如果流量控制信息有效,说明交换结构没有准备好接收信元,则不读FIFO12或FIFO22,不进行信元发送,否则,流量控制信息无效,说明交换结构准备好接收信元,则读FIFO12或FIFO22,进行信元发送;第一路信元反压模块接收FIFO10几乎满、FIFO11几乎满和第一路信元缓存管理模块提供的信元缓存几乎满信号,并产生一个几乎满的反压信号给包分路器,第二路信元反压模块接收FIFO20几乎满、FIFO21几乎满和第二路信元缓存管理模块提供的信元缓存几乎满信号,并产生一个几乎满的反压信号给包分路器,包分路器根据系统的设定和接收的第一路反压模块和第二路反压模块信号,在第一路反压模块或第二路反压模块信号无效的情况下,可以设定系统支持的4种方式中的一种对数据包进行分路(1)数据包优先分配给第一路FIFO10,只有在第一路反压模块反压信号有效的情况下,第二路反压信号无效的情况下,数据才分配给第二路FIFO20,(2)数据包在第一路FIFO10和第二路FIFO20之间均匀分配,(3)数据包只分配给第一路FIFO10,(4)数据包只分配给第二路FIFO20;上行CPU接口电路使得所述的上行模块中各个功能子模块与线卡上的CPU模块互连,CPU发送指令对上行模块的各个子模块的运行进行控制,同时通过CPU指令能够读出各个功能子模块的当前运行状态信息,供用户监控上行模块的运行使用;下行模块,它包含下列功能子模块第一路信元处理模块、第二路信元处理模块、流量控制模块、数据包发送模块以及下行CPU接口模块,其中第一信元处理模块和第二信元处理模块包括交换结构接口、信元先进先出FIFO、包重组模块、数据片先进先出FIFO、数据包缓存管理模块、队列调度模块、以及数据包先进先出FIFO模块;除了交换结构接口模块有双时钟外,其它模块都只采用下行模块主时钟做为工作时钟;其中交换结构接口包括第一路交换结构接口和第二路交换结构接口,第一路交换结构接口输入端和交换结构出口输出的信元开始信号SOF0、奇偶校验信号PAR0、32位信元数据信号data0、数据同步时钟CSIX_CLK0相连,同时它也接收第一路信元FIFO模块的信元快满反馈信号,和下行模块主时钟CLK相连;第二路交换结构接口输入端和交换结构出口输出的信元开始信号SOF1、奇偶校验信号PAR1、32位信元数据信号data1、数据同步时钟CSIX_CLK1相连,同时它也接收第二路信元FIFO模块的信元快满反馈信号,和下行模块主时钟CLK相连;交换结构接口将接收的信元区分为单播、多播和流控信元,完成单播、多播和流控信元的分离,并将分离出的单播和多播数据去掉CSIX-L1信元基本和扩展头,保留扩展头中的优先级信息,信元扩展头中的优先级信息和余下的信元负载部分发送给各自的信元FIFO模块;如果信元FIFO模块反馈给交换结构接口的FIFO快满信号有效,则交换结构接口将接收的信元以一个完整的信元负载为单位丢弃,不发送给信元FIFO模块;除了交换结构接口模块有双时钟外,下行模块的其它子模块都只有一个单一时钟CLK;交换结构接口还提取信元中的链路级流量控制信息,分离出流量控制信元,这些信息发送给流量控制模块;信元FIFO模块包括第一信元FIFO和第二信元FIFO模块,它们各自输入端和所述各自相连交换结构接口输出端相连,读信号来自包重组模块;包重组模块包括第一路包重组和第二路包重组,它们各自的数据输入端分别和对应的信元FIFO数据输出端以及信元FIFO是否为空的指示信号相连,此外,它还接收各自相连的数据片FIFO反馈的快满信号,如果数据片FIFO反馈的快满信号无效,包重组模块就从信元FIFO中读取去掉CSIX-L1头的信元负载数据,根据信元负载数据流量管理TM头中的源线卡号、信元标识、信元序列号、类型和信元8位优先级来判断接收的信元是否正确,包重组模块去掉负载数据的TM头,去掉TM头的CSIX-L1负载称为数据片,按照TM头中的源线卡号、类型和信元优先级不同,数据片分属于不同队列,如果数据片来源的源线卡号、类型和优先级相同,则它们属于同一队列,共1040个队列1024个单播队列,16个多播队列,包重组模块将数据片和数据片对应的队列号传送给数据片FIFO;包重组模块含有一个序列号存储器,序列号存储器为1040个队列的每一个队列分配一个存储单元,用来记录每个队列预期接收的信元序列号,利用序列号存储器包重组模块能识别和标识错误的数据包;数据片FIFO模块包括第一路数据片FIFO和第二路数据片FIFO,它们的数据输入端与各自相连的包重组模块的输出端相连,它的读信号来自各自相连的数据包缓存管理模块;数据包缓存管理模块接收队列调度模块输出的队列调度信息、数据包FIFO快满信号,数据包缓存管理模块还和片外数据缓存和链表存储器相连;数据包缓存管理模块包括第一路数据包缓存管理和第二路数据包缓存管理,它们的数据输入端和各自相连的数据片FIFO数据输出端相连,数据包缓存管理模块将来自数据片FIFO具有相同源线卡号和优先级的数据片,按照接收的顺序存放在同一个队列中,一个数据包由一个或多个数据片组成,数据包缓存管理模块总共支持1024个单播队列,16个多播队列,共1040个队列,单播队列分成64个优先级,多播队列不分优先级,采用链表结构进行数据包存储的队列管理,为了进行数据包的存储管理,数据包缓存管理模块外接两个存储器,一个存储器,做为链表存储器,一个存储器做为数据片存储器,数据片存储器被分成大小相等的2N个存储块,N一般取不小于13的自然数,每个存储块可以存储一个数据片,组成每个存储块的存储单元地址是连续的,一个数据包常常由一个以上的数据片组成,这些数据片保存在不同的存储块中,这些存储块在存储器中的位置可以是互不相邻,每个存储块的起始地址和链表存储器中的链表节点存储地址一一对应;链表存储器保存链表,链表的每个节点单元存储地址指示每个数据片的起始地址,单元的存储内容,存储数据片信息,同时存储属于同一个队列的下一个链表节点的地址,数据包缓存管理模块也包含两类链表数据片队列链表和空链表,这两类链表的建立、删除、插入方式和信元缓存管理模块一样;数据包缓存管理模块含有数据包队列状态存储器,该存储器保存每个数据包队列是否存在数据包的状态标识信息,每个存储单元取值为0或1;1表示相应队列含有完整数据包,0表示不含完整数据包,队列状态存储器一个存储单元对应一个队列;外部数据片存储器的未使用存储块个数小于等于16时,数据包缓存管理模块停止从各自的数据片FIFO读入数据片,如果后来通过数据片的发送,未使用存储块个数增加,数据包缓存管理模块继续从各自相连的数据片FIFO读入数据片;队列调度包括第一路队列调度和第二路队列调度,它们的输入和输出端与各自相连的数据包缓存管理模块相应的输入输出相连,队列调度为所有多播队列定义一个加权值,为64个单播优先级,每种优先级定义一个加权值,优先级越高对应的加权值就越大,每个队列初始的加权和值都为0,队列调度模块周期性地从数据包缓存管理模块得到1024个单播队列和16个多播队列的状态信息,若得到某个队列状态信息为0,则置该队列的加权和值为0,如果某个队列的状态信息不为0,则该队列的加权和值等于该队列原来的加权和值加上该队列优先级对应的加权值,队列调度模块对1040个队列进行周期性的调度,调度出一个加权和值最大的队列号传送给数据包缓存管理模块,每次调度完毕,应该对调度成功队列的加权和进行更新,更新后的调度成功队列加权和等于该队列调度之后的加权和减去该队列优先级对应的加权值;数据包缓存管理模块接收到调度成功信息之后,首先找到调度成功的队列的头指针,根据队列头指针,将构成该队列队头数据包的所有数据片的存储快地址找出来,以数据片为单位从数据片存储器中将数据发送给数据包FIFO,当然如果数据包FIFO的反馈信号有效,数据包FIFO快满了,则数据包缓存管理模块暂停发送数据片给数据包FIFO,数据包FIFO的反馈信号如果变为无效,则数据包缓存管理模块继续发送数据片给数据包FIFO;数据包FIFO包括第一路数据包FIFO和第二路数据包FIFO,它们各自把从数据包缓存管理模块收到的数据包发送给数据包发送模块,数据包发送模块以包为单位,交替从第一路数据包FIFO和第二路数据包FIFO中读取数据发送给交换结构协处理器相连的外部下行FIFO,如果外部下行FIFO反馈给数据包发送电路FIFO快满信号,则数据包发送模块暂停数据包的发送,直到下行FIFO反馈的快满信号无效时,才又给下行FIFO发送数据包;流量控制模块,它的输入端分别接收第一路、第二路信元处理交换结构接口模块的输出流控数据总线fc0、fc1,以及第一路和第二路信元处理模块信元FIFO快满信号,流量控制模块的输出接上行模块流量控制数据输入端;下行CPU接口模块,它使得下行模块内部各个功能模块与线路接口卡上的CPU进行互联,接受外界的CPU指令,对下行模块运行进行控制,同时能够接收CPU指令读出其各个子模块内部状态信息。
2. 根据权利要求1所述的核心路由器交换结构协处理器,其特征在于,包分路器,以包为 单位,把数据分成两路,每路对一个完整的数据包进行处理。
3. 根据权利要求l所述的核心路由器交换结构协处理器,其特征在于,在所述的上行模 块包分片模块中,把每个数据包分成一片或一片以上符合CSIX-LI协议的信元。
4. 根据权利要求l所述的核心路由器交换结构协处理器,其特征在于,上行模块的包分 路器将数据分成两路,它的第一路包处理模块包括第一路反压、FIF010、 FIFOll、 FIF012、 第一路包分片、第一路信元缓存管理、第一路队列调度、第一路信元发送;它的第二路包处 理模块包括第二路反压、FIF020、 FIF021、 FIF022、第二路包分片、第二路信元缓存管理、 第二路队列调度、第二路信元发送;第一路包处理模块和第二路包处理模块结构对称,构成和功能完全一样。
5.根据权利要求l所述的核心路由器交换结构协处理器,其特征在于,同上行模块一样, 它的下行模块也由两路模块构成,除了流量控制模块和数据包发送由两路共用外,2路数据 处理电路其它模块的结构和功能分别完全对称相同。
全文摘要
核心路由器交换结构协处理器属于因特网主干网核心路由器技术领域,其特征在于由上行和下行两模块组成,用FPGA外接存储器实现,支持4Gb/s包线速。上行模块,接收数据包过滤掉无用数据后,数据被分成两路,每一路数据包被分成定长带优先级的若干数据片。每个数据片加上特定的头成为信元,信元依据优先级和目的地址不同属于不同队列,存于存储器,依据队列信息和来自下行模块的流量控制信息,调度出信元,并发送给交换结构。下行模块从交换结构接收两路信元,提取其中的流量控制信息给上行模块,去掉信元头还原为数据片,数据片依据来源优先级不同属于不同队列,存于存储器,含有一个以上完整数据包分片的队列参加调度,调度成功的队列的数据包被输出。
文档编号H04Q11/00GK101291546SQ20081011473
公开日2008年10月22日 申请日期2008年6月11日 优先权日2008年6月11日
发明者全成斌, 徐明伟, 珂 杨, 赵有健 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1