Page 311 - 《软件学报》2020年第9期
P. 311

2932                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020

         ITU-T Y.1540 [31] 和 ITU-T Y.1541 [32] ,将网络应用划分为 K 种类型:type 1 ,type 2 ,…,type K .对于每种类型的应用,关注
         4 个 QoS 参数:带宽、延迟、延迟抖动和出错率.对于第 k 类应用,需要网络提供的带宽、延迟、延迟抖动和出
         错率分别为 bw       ≥  bw min  ,dl  ≤  dl max  , jt  ≤  jt max  和 er  ≤  er max  ,其中,1≤k≤K.
                     classk  classk  classk  classk  classk  classk  classk  classk
             参考我们之前的研究工作         [21] ,本文将路由途经的每个节点处的 QoS 合并到与其相连的后向链路中,将链路
         l 的带宽、延迟、延迟抖动和出错率分别表示为 bw l ,dl l ,jt l 和 er l ,则路径 P 的 QoS 可以通过公式(4)得到:
                            bw =  P  min{bw l ∈  l  |  P },dl =  P  dl l , jt = ∑  P  jt l ,er = ∑  P  1−  ∏ (1 er−  l )  (4)
                                                 ∈
                                                          ∈
                                                                     ∈
                                                 lP      lP         lP
             本文提出的路由算法针对每个流量需求计算路径,判断路径 QoS 是否落入对应应用类型所必须满足的
         QoS 区间,以此确定求得的路由是否有效.
         3.2   SRCF路由算法
             本文设计了一种单路径节能路由算法——基于最小剩余容量优先(smallest remaining capacity  first,简称
         SRCF)的功率感知路由算法,该算法将初始全网络图和流量需求矩阵作为算法的输入,以边的剩余容量配置网
         络图的边权重,每次路由新的流量需求时,都选取和先前所使用路由路线的边重叠最多的路径,这样,随着路由
         流量需求的不断进行,流量被不断汇聚到一个尽可能小的网络子集,通过关闭剩余的那些未被使用的网元来实
         现全网节能,伪代码如算法 1 所示.流量需求矩阵由网络中所有节点对间的流量需求值组成,描述如公式(5)所示,
         其中,demand ii =0(i∈{1,2,…,|V|}):
                                              ⎡  demand    demand 1| |  ⎤
                                                     11
                                                               V
                                    DEMAND   =  ⎢  ⎢                    ⎥  ⎥                  (5)
                                              ⎢                   ⎥
                                              ⎣  demand ||1V     demand ||||V V ⎦
             算法 1. SRCF 算法.
             输入:DEMAND,初始网络图 G 0 ;
             输出:ROUTE or NULL.
             1:   初始化 ROUTE←∅;
             2:   对流量需求矩阵中不为零的元素 demand ij (i,j∈{1,2,…,|V|},i≠j),按从大到小进行排序,得到:
                                       demand 1 ,demand 2 ,…,demand |V|(|V|−1) ;
             3:   FOR i←1:|V|(|V|−1 DO
                                                                           i −
             4:      删除网络图 G −1−2−…−(i−1) 中剩余容量小于 demand i 的边,由此得到子图 G    − 1 2 ... ( 1)i−− − −  ;
                      i −
             5:      在 G −− − −  上使用 Dijkstra 算法(以边的剩余容量为权重)为 demand i 计算路由路径;
                      1 2 ... ( 1)i−
             6:      IF  路径不存在  THEN
             7:         对 demand i 的路由失败,RETURN NULL;
             8:      ELSE
             9:         对路径进行 QoS 检验,剔除不合格的路径;
             10:     END IF
             11:     IF  满足 QoS 的路径不存在  THEN
             12:        对 demand i 的路由失败,RETURN NULL;
             13:     ELSE IF  存在多条路径  THEN
             14:               IF i==1 THEN
             15:                     IF  跳数最少的路径只有 1 条  THEN
             16:                         选取该路径,记为 Route i ,ROUTE←ROUTE∪{Route i };
             17:                     ELSE
             18:                         从跳数最少的几条路径中随机选取 1 条,记为 Route i ,ROUTE←ROUTE∪{Route i };
             19:                     END IF
   306   307   308   309   310   311   312   313   314   315   316