摘要
本文主要是ECMP算法,Equal-CostMultipathRouting,即充分利用最短路径,在各最短路径之间均衡分配流量。 例如,如下图所示,从节点3到节点8间最短的短路有两个,分别是3、4、8; 和3、10、8; 那么3-8之间的流量都分1/2去对应的子链路上。 也就是说,将总流量均匀地划分在各条最短路的基础上(记住! 拓扑图上两点之间的最短短路(当然是等长最短的)通常有很多。
1. 背景
下方拓扑如图所示,此处所有相关拓扑数据均来源于TOTEM工具箱、相关拓扑,请求数据本人已上传,感兴趣的读者点击下载即可下载相关数据
2. 算法
%% ECMP链路(多短路径)使用率图————ECMP路由算法bwAvl=bw; [path,cost]=kshortestpath(dist,1,7,5 ); 计算%2点之间前5跳的最短路径[path,cost]=kshortestpath(dist,1,7,dijkstrasingle ) dist,1,7 ) %节点1和节点7之间的所有最短路径% 最大round=30; forI=1:length(bw ) forj=1:length ) bw ) if req(i ) I,j ) (~=0 [path,cost]=kshortestpath ) dist,I,I j )=length(find ) cost==Dijkstra single (dist,I,j ) ) )结束%地图上的ECMP链接请求reqforI=1:length j ) () fork=1:spnumofreq(I,j )一个req中每个req的最短路的(第k个最短路的pathIJ(k ) temproute=pathIJ ) k ); fort=1: (length (temproute (-1 ) bw AVL (temp route ) t ),temp route (t1 ) )=bw AVL (temp route ) t ),temp route ecmp=zeros (12,12 ); res=[]; forI=1:length(bw ) forj=1:length ) bw ) if bw(i ) I,j )=0ecmp ) I,j )=temp(i ) I,j )/bw ) I ifECMP(I,j ) (~=0 res=[res,ecmp(i ) I,j ) ]; endendendendfigure('name ',' ECMP链路使用率); bar(RES,0.2; title(ecmp链路使用率); xlabel ('链接); ylabel (链路带宽利用率);
3. 测试结果其中,ECMP路由算法优于传统的SPF算法,链路负载均衡性好,网络传输性能高。