>
首页 » 业界动态 » 使用Stratix II实现转发系统中的定制队列管理(图)

使用Stratix II实现转发系统中的定制队列管理(图)

作者:Altera公司高级应用工程师 王青松  时间:2007-05-07 18:08  来源:

目前硬件高速转发技术的趋势是将整个转发分成两个部分:pe(protocol engine,协议引擎)和tm(traffic management,流量管理)。其中pe完成协议处理,tm负责完成队列调度、缓存管理、流量整形、qos等功能,tm的核心是bm(buffer management,缓冲器管理)、qm(queue management,队列管理)、scheduler(调度器)。


而在实际的转发系统中,转发系统服务的客户不同,处在网络的位置不同而使得数据的业务类型、用户的数量等等均不尽相同,在很多情况下np(network processor,网络处理器)芯片、tm芯片、交换网芯片无法选用同一家厂商的芯片,在这种条件下定制tm成为了成本最低系统最优化的方案,一般使用fpga来实现。


tm的常规结构如图1所示,目前主流的tm接口均为spi4-p2接口形式,对于spi4-p2接口形式可直接采用altera公司的ip core实现,spi4-p2 ip core的配置如图2所示。

图1 tm的常规结构图

图2 spi4-p2 ip core配置图


altera公司的主流fpga均实现了硬件dpa功能,以stratix ii器件为例,在使能dpa的情况下使用altera的spi4-p2 ip core可实现16gb/s的接口数据速率。


seg模块为数据切分块,根据交换网的数据结构要求,在上交换网的方向上负责把ip包或数据包切分为固定大小的数据块。seg模块可以使用altera的spi4-p2 ip core来实现。与seg模块对应的是rsm模块,rsm模块将从交换网下来的数据块重新组合成完整的ip包或数据包。


bm模块为缓冲管理模块,管理tm的缓冲单元,bm模块可以吸收线路中数据流的突发,平滑网络的流量。bm模块存取数据时访问外部dram的带宽既是tm的瓶颈带宽。外部dram的控制部分可使用使用altera的ddr sdram ip core实现来解决带宽瓶颈,其配置如图3所示。

图3 ddr ip core配置图


当使用stratix ii fpga,bram使用ddr ii sdram时,有测试表明ddr ii sdram接口速率可达到800mb/s。


在常规使用的情况下ddr ii sdram 接口速率可保证667mb/s。对于一个64位的dram接口,接口速率可达到42.7gb/s,完全可以满足一个10g的tm系统。


qm模块为队列管理模块,负责完成端口的数据队列管理功能,接收bm模块读写dram时的数据入队,出队请求,tm所能支持的数据流的数目、业务类型数目、端口的数目等性能指标在qm模块处体现出来。


scheduler模块为调度模块,根据数据包类型及优先级和端口分配的带宽进行调度,tm流量整形、qos等功能通过调度模块实现。


cell_edit模块完成输出数据的封装,把由dram中读出的数据封装后发送出去。


在tm中需要基于数据服务策略,对于不同服务等级的数据包进行不同的管理策略,例如多媒体类的数据包,如语音包是不能允许到同一个用户的包乱序的,同时也必须保证一定的带宽,而数据包则没有则没有这些要求。


不同类型的数据包有大有小,经过seg模块所分割成的数据块的数目也有多有少,业务的不同,需要的接口带宽、传送优先级也各不相同。必须把这些数据区分开来,做到按顺序及优先级进行排队服务。这样就必须有一套行之有效的数据结构基于链表的方法管理这些数据。


qm模块负责组建这样一套数据结构及链表,配合bm模块的入队出队操作及scheduler模块的调度操作。因链表操作的频繁性及复杂性决定了部分链表必须在片内组建,qm的链表结构以及芯片内部的逻辑资源的限制往往使得qm的性能达不到预期的效果。在使用fpga做这部分设计时,qm的设计就对fpga的内部结构提出了要求。

qm在管理业务和数据流时共分4个层次,依据4个层次共分为3级链表。首先来看最底层的层次结构和链表,pq关系如图4所示。

图4 pq关系图


qm管理业务和数据流的最低层次为基本存取单元层,在tm中,数据的存储一般放在dram中,对于链表指针类的操作并不适合dram完成,所以同时存在着sram完成链表的管理。


bram为数据缓冲区,对应片外的dram。bram负责存储数据单元,相对于seg模块切分的数据单元,bram内有相应大小的存储单元bcell与之对应,bcell在bram内以地址空间划分,每个bcell相同大小,bcell为bram的最小存取单元。在实际系统中基于seg模块切分的数据单元大小,bcell一般为64~512b。


pram为指针缓冲区,pram对应片外的ssram。pram内部同样以地址空间分为pcell,pcell是qm中的基本单元,代表了最底层的指针信息,pcell与bcell一一对应,每一个pcell对应于一个bcell,对应的pcell地址与bcell基地址相同。pcell地址对应相应单元的bcell的地址,pcell中的信息是下一跳指针。


pram的控制器可使用altera的qdrii sram ip core实现,其配置如图5所示。当使用stratix ii fpga,pram使用qdrii sram时,qdr sram的接口性能能够保证在800mb/s。

图5 altera qdr sram配置图


第一级链表为pq,代表已经存储的数据包链表。pq中的基本信息为该数据包文的首bcell指针,尾bcell指针,以及该数据包所包含的bcell的数目。


在实际系统中,数据包有大有小,有可能一个pq对应于一个pcell和bcell,也有可能一个pq对应于上百个pcell和bcell,在系统设计中需要考虑最差情况,即当前网络在一个时段内,只存在短包,在qm中一个pq对应于一个pcell和bcell,在这种情况下pq与pcell一一对应,为适应这种极端情况,一般把pq与pcell合并,pq中的首尾指针简化为1bit的首尾标记。合并后,pq与pcell并存于pram中。


在qm中,第二级链表为fq,fq代表同一种服务等级的数据,fq的关系如图6所示。

图6 fq关系图


fq是区分服务类型的最小单位队列,fq由同一种类型的pq构成。如果构成fq的pq全部是来自同一端口,这个fq为源端口fq队列,如果构成fq的pq全部是需要发往同一端口,则这个fq称为目的端口fq队列。在实际系统中,一般采用目的端口fq队列。fq是qm的最核心部分,fq的数目代表了qm的处理能力。


fq作为区分服务类型的最小单位队列,在一个系统中一般会有上万条fq队列,基于服务类型的不同和子端口的不同,每条fq队列都有自己独特的服务要求和服务权值,调度器scheduler需要根据这些权值确定当前需要被调度的队列。


相对于pq、fq中包含的数据量很大,每条fq队列需要五部分,首指针、尾指针、队列长度、下一fq指针、队列权值。在调度过程中,fq的操作会非常频繁。这些因素决定了fq队列不可能与pq队列合并放在pram中,只可能将fq队列放在fpga片内。在fpga片内放置fq的数目也代表了fpga能够处理数据流的数目。当使用fpga片内大量的小块ram拼接成较大的ram,来存储管理fq队列时,会造成大量fpga资源的浪费及性能的降低。fpga的片内资源能够容忍fq的数目成为了qm的瓶颈。


altera fpga中的mram的容量是目前fpga中内嵌ram容量最大的,能够非常恰当地把上万条fq队列放在1~2个mram中,而不需要进行大量小ram的空间拼接,mram的配置如图7所示。在数据接口方面,mram具有很多灵活的配置方式。在数据接口方面,可达到双端口144bit的位宽,这样fq的所有信息可以一次全部读出,同时在另一个方向上进行fq更新回写。在使用mram存储管理fq队列的情况下,mram的结构可以加快fq处理的速度,从而提高qm的处理能力,解决了这个瓶颈问题。

图7 fpga中的mram配置图


上万条的fq队列在管理上依然非常复杂,所以在qm中使用第三级链表active queue和pending queue,active queue和pending queue作为qm管理的数据链表的最顶层直接参与调度模块的第一级调度。active queue和pending queue的关系如图8所示。

图8 active queue和pending queue的关系图


active queue表示可以参与服务的队列,active queue由同一种类型的fq组成,这些fq所需要的服务类型相同。


对应于active queue,同时存在pending queue,pending queue为等待服务队列,pending queue 的构成以及结构均与active queue相同。


在系统中,active queue和pending queue中的fq在完成服务后,会按调度算法根据fq的权值确定是否可以继续参与服务,如果需要继续参与服务的话,则转active queue尾部,如果权值不足以继续参与服务,则转至pending queue尾部。在active queue为空并且pending queue的权值为可参与服务权值时,表示需要开始一个新的调度周期。在新的调度周期需要根据调度算法将fq重新激活,生成新的active queue。active queue和pendingqueue的处理流程如图9所示。

图9 active queue和pending queue的处理流程


在调度过程中,active queue和pending queue作为两个动态链表进行处理。把active queue和pending queue放在不同的m4k ram中,这样的结构可以让active queue和pending queue分别进行处理,从而提高处理效率。由此,可以得到qm处理的逻辑结构及链表间关系,如图10所示。

图10 qm处理的逻辑结构及链表


这种qm的架构利用mram的特性,解决了fq的存储及效率的问题,并将所有的队列及相关信息放入m4k和mram中,解决了qm对逻辑资源的需求,并可根据系统的需求进行灵活的调整,而不增加额外的逻辑资源开销。这种qm的架构可以适应由接入网侧到核心网的不同位置tm对队列管理上的需求。

相关推荐

三星10月24日或在美推出Galaxy Note II

三星  Galaxy Note II   2012-09-28

博通推出全新StrataXGS Trident II交换芯片

StrataXGS Trident II  2012-09-09

Altera发布业界第一款28-nm FPGA开发套件

Altera  FPGA  Stratix  2011-09-07

微星HD6790 Twin Frozr II拆解

2011-07-18

Altera发布28nm器件系列产品

2011-01-26

Altera开始量产Stratix IV FPGA系列密度最大器件

Altera  FPGA  Stratix  2010-06-22
在线研讨会
焦点