基于交换芯片的3级调度算法的研究与实现

2012-06-25 07:03戴锦友
电视技术 2012年9期
关键词:单播层次化寄存器

张 蕾,戴锦友

(光纤通信技术和网络国家实验室烽火网络有限公司,武汉 430074)

随着网络上新应用的不断出现,对网络的服务质量也提出了更新的要求。QoS旨在针对各种应用的不同需求,为其提供不同的服务质量,例如为报文分类和着色,对流量进行管理和避免网络拥塞等功能,层次化的调度方式更能灵活地实现流量的管理,对于先来的报文可以进行1级调度后,与后来的报文再次进行2级调度处理,依次往下按自己需求进行调度,使得出去的报文是最优的,这就是层次化的调度方式。

1 3级调度的原理

第五代交换芯片支持3级调度,由S1,S2和S33个调度节点组成。S1调度节点有4个(S3.0~S3.3,MC-group),S2调度节点有3个(S2.0~S2.2),S1调度节点有1个。3级调度的意义在于前1个调度的输出队列可以作为下个节点的输入队列,在这种结构中,S2/S3的输出队列可以作为S1调度节点的输入。

下面来说明队列和调度节点之间的映射关系:

1)10个单播队列。4个单播UC队列Q0~Q3用来映射到S3节点,Q4~Q7映射S2节点,或者Q0~Q7全部映射到S2节点。还有2个单播队列UC直接映射到S1节点。

2)5个组播MC队列。1个MC直接用来映射到S1节点,MC Q0~Q3全部映射到S3节点,或者这4个MC队列组成1个MC Group映射到S1节点,如图1所示。

图1 1级调度结构图(软件截图)

因为交换芯片支持的是3级调度,所以寄存器的配置方式就与其他芯片不一样,下面会具体分析每个寄存器的值如何写入。但是与其他芯片一样,同样支持SP,RR,WRR,WERR这4种调度算法。

下面主要看看各个相关寄存器:

1)第1级调度S3节点相关的寄存器为S3_CONFIG,S2_S3_ROUTING和S3_COSWEIGHTS。

其中S3_CONFIG 用来配置 S3.0,S3.1,S3.2,S3.3 等4个节点的调度方式。字段SCHDULING_SLECTTf为8 bit,0 ~1 bit对应的是 S3.0,2 ~3 bit对应的是 S3.1,4~5 bit对应的是 S3.2,5 ~6 bit对应的是 S3.3,ROUTE_UC_TO_S2f的1个bit表示允许S3节点的单播队列映射到S2节点。因此配置调度方式的时候应该每个节点都应该配置到,例如4个节点分别配置为SP优先级调度,故写入寄存器的值应该为0x10。

S2_S3_ROUTING寄存器是表示S3节点和S2节点队列之间的映射关系,队列0~3表示的是S3.0~S3.3映射的4个组播队列,队列4~7表示S3.0~S3.3映射过来的4个单播队列UC0~UC3,队列8~11表示的是单播队列UC4~UC7。

当配置好S3节点的调度模式为WRR,对应队列的权重写入寄存器S3_COSWEIGHTS。

2)第2级调度S2节点相关的寄存器有S2_CONFIG,S2_COSWEIGHTS。类似地,S2_CONFIG是用来配置节点的调度模式。当调度模式为WRR时,用S2_COSWEIGHTS来配置队列权重。地址0~3是节点S3映射的4个组播队列,地址4~7是S3节点映射的4个单播队列UC3,地址8~11对应的是单播队列UC4~UC7。

3)第3级调度节点S1相关寄存器:调度模式寄存器ESCONFIG和配置权重COSWEIGHTS。

2 3级调度软件实现

首先解决队列优先级映射关系的问题,通过在代码的初始化部分增bcm_cosq_config_set函数完成队列初始化映射关系,保证队列0~7对应的优先级分别为0~7。

bcm_cosq_config_set(uint,8);

当然,在初始化部分关于S2,S3寄存器的初始化也没有,所以在初始化部分还应该加上对寄存器初始化的部分,S2.0和S3配置为RR调度模式,值分别为0x15和0x55,S2.1,S2.2初始化的时候不用到,所以值为0x1F。

rval0-0;

soc_reg_filed_set(uint,s3_configr,&rval0,scheduling_selectf,0x55);

rval0-1;

soc_reg_filed_set(uint,s2_configr,&rval1,scheduling_selectf,0x15);

/*S3.0-S3.3 and unitcast queues 4-7 to S2.0*/

COMPOLER_64_ZERO(r64val0);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I0f,0);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I1f,1);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I2f,2);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I3f,3);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I4f,8);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I5f,9);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I6f,10);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I7f,11);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,& r64val0,s3_GROUP_NO_I8f,0x1f);

COMPOLER_64_ZERO(r64val1);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I0f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I1f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I2f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I3f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I4f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I5f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I6f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I7f,0x1f);

soc_reg_filed_set(uint,s2_s3_ROUTINGr,&r64val1,s3_GROUP_NO_I8f,0x1f);

用以上代码完成了对调度节点的初始化配置。

3 实验仿真及分析

搭建环境:实验用到仪表IXIA,6根光纤,在21槽位的上联板选择上联端口XE55,XE56,XE57作为实验端口,XE56,XE57发包,XE55收包;在仪表的 card1上选择1,3,5,3个端口分别用光纤与设备端口相连。

拓扑结构如图2所示。

图2 实验拓扑结构

万兆口XE56,XE57发单播包,XE55收包。在出端口XE55配置节点状态,值得注意的是,单播UC0~3只能映射到S3节点,UC4~7只能映射到S2节点。

1个单播UC优先级为1映射到S3.1,故应该在调度模式比特写入0x04,1个单播UC优先级为4映射到节点S2.0,相应的比特值为1。在S3,S2,S1节点配置调度模式为RR,见图3所示。

图3 端口轮询收到包(截图)

2)实验数据2:2个UC包→S2.0→S1

2个队列优先级为4和5,只能映射到S2节点。在S2,S1节点配置调度模式为WRR,权重比为1∶2。优先级为4和5的队列分别映射到S2节点队列的8和9,见图4所示。

图4 端口收到包的比重为1∶2(截图)

1个优先级为1的组播包映射到在S3.1,1个优先级为0的单播包映射到S3.0。S3,S2,S1节点配置调度模式为SP,见图5所示。

从以上实验可以看出多级调度支持单播队列,组播队列以及单播和组播的混合队列调度,调度方式灵活。每级调度可以采用不同的调度算法,调度级数也灵活多变,可以根据队列需求选择调度级数,也就是说多级调度也支持单级调度的模式。

图5 端口收到优先级1的组播包(截图)

4 小结

本文基于第五代BCM交换芯片,分析了层次化调度方式的原理,软件实现以及其仿真实现结果。仿真结果显示:对单播组播包,每级调度节点采用不同的调度算法,最后都能实现优先包的输出。这种层次化的调度方式可更灵活地实现流量的管理。

[1]CHETTO H,CHETTO M.Some results of earliest deadline scheduling algorithm[J].IEEE Trans.Software Engineering,1989,15(10):1261-1269.

[2]RFC 2212,Specification of guaranteed quality of service[S].1997.

[3]BAKER T.Stack-based scheduling of real-time processes[J].Journal of Real-Time System,1991,3(1):79-100.

[4]刘勤让,邬江兴.Internet中QoS的分析理论探讨[J].计算机科学,2005,32(4):1-3.

[5]刘韵洁,张云勇,张智江.下一代网络服务质量技术[M].北京:电子工业出版社,2005.

猜你喜欢
单播层次化寄存器
高空通信平台非正交广播与单播复用容量研究
面向量化分块压缩感知的区域层次化预测编码
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
铁路传送网OTN设备互联互通开销层次化处理研究
舰船系统间电磁兼容性的层次化优化方法
城市车辆网络单播路由协议:审查、分类和开放问题研究
IP互动电视快速频道切换的解决方案与实现
基于层次化分类器的遥感图像飞机目标检测
高速数模转换器AD9779/AD9788的应用