基于交换芯片的3级调度算法的研究与实现
2012-06-25戴锦友
张 蕾,戴锦友
(光纤通信技术和网络国家实验室烽火网络有限公司,武汉 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.