77范文网 - 专业文章范例文档资料分享平台

基于SDN的最短路径算法(dijkstra)实现(2)

来源:网络收集 时间:2019-03-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

;

srcNodeID,dstNodeID,bandwidth 3,8,90

再次输入命令如下图所示:测试主机h1与h7能否通信并获取经过的路径信息。

elcipse控制台中输出的信息(整条路径)如下:

Route

[id=RouteId

[src=00:00:00:00:00:00:00:07

port=1],

port=5], port=2], port=6], port=6],

dst=00:00:00:00:00:00:00:01],

port=2], port=6], port=3], port=3], port=2],

switchPorts=[[id=00:00:00:00:00:00:00:07, [id=00:00:00:00:00:00:00:05, [id=00:00:00:00:00:00:00:08, [id=00:00:00:00:00:00:00:06, [id=00:00:00:00:00:00:00:04, Route

[id=RouteId

[id=00:00:00:00:00:00:00:07,

[id=00:00:00:00:00:00:00:05, [id=00:00:00:00:00:00:00:08, [id=00:00:00:00:00:00:00:06, [id=00:00:00:00:00:00:00:04,

[id=00:00:00:00:00:00:00:01, port=3], [id=00:00:00:00:00:00:00:01, port=1]]]

[src=00:00:00:00:00:00:00:01

port=1],

port=2], port=3], port=3], port=6],

dst=00:00:00:00:00:00:00:07],

port=3], port=6], port=6], port=2], port=5],

switchPorts=[[id=00:00:00:00:00:00:00:01, [id=00:00:00:00:00:00:00:04, [id=00:00:00:00:00:00:00:06, [id=00:00:00:00:00:00:00:08, [id=00:00:00:00:00:00:00:05,

[id=00:00:00:00:00:00:00:01,

[id=00:00:00:00:00:00:00:04, [id=00:00:00:00:00:00:00:06, [id=00:00:00:00:00:00:00:08, [id=00:00:00:00:00:00:00:05,

[id=00:00:00:00:00:00:00:07, port=2], [id=00:00:00:00:00:00:00:07, port=1]]]

上面输出的route信息中,路径节点包括(1、4、6、8、5、7),即该路径经过了s1、s4、s6、s8、s5、s7交换机,结果和路由算法题中的结果一致,说明该模块成功完成了上题中的路由算法功能。

四.实验结论:zhlroute模块实现了上题中的路由算法功能,能根据input.txt文

件中提供的数据进行最优路径的计算,根据计算出的路径(route)对相关交换机下发流表以完成数据的传输。

五.zhlroute模块分析

(1)模块中的zhldjst()方法是上题中Dijkstra()方法的实现,用来计算最短路径。程序代码如下:

protected void zhldjst(Cluster cl,int v,int b, int dist[], int mprev[] ,int c[][],int hop[]) {

6

boolean s[] = new boolean[maxnum]; for (long node: cl.links.keySet()) { dist[(int)node] = c[v][(int)node]; s[(int)node] = false;

if(dist[(int)node] == minint) mprev[(int)node] = 0; else {

mprev[(int)node] = v; hop[(int)node] = 1; } }

dist[v] = maxint; s[v] = true;

for (long node: cl.links.keySet()) { int tmp = b; int u =v;

for (long node1: cl.links.keySet()) {

if((!s[(int)node1])&& dist[(int)node1]> =tmp){ u =(int)node1;

tmp = dist[(int)node1]; } }

s[u] = true;

for (long node1: cl.links.keySet()) { int least = dist[u];

if(c[u][(int)node1]

if((!s[(int)node1]) &&(least >dist[(int)node1])){ hop[(int)node1] = hop[u]+1; mprev[(int)node1] = u; dist[(int)node1] = least; }

else if((!s[(int)node1]) && (least == dist[(int)node1])){ if(hop[(int)node1]>hop[u]+1){ hop[(int)node1] = hop[u]+1; mprev[(int)node1] = u; dist[(int)node1] = least; } } } } }

(2)getRoute()方法用来获取从源节点到目的节点的完整路径,即上面测试中

7

输出的route,流程图如下图:

图5:getRoute()方法流程图

getRoute()方法程序代码如下:

public Route getRoute(long src, short srcPort, long dst, short dstPort, long cookie,

8

boolean tunnelEnabled) {

RouteId id = new RouteId(src,dst); Route result = null;

for(Cluster cl: TopologyInstance.clusters) {

zhldjst(cl,(int)src, bdw, dist, mprev, c,hop); LinkedList switchPorts = new LinkedList(); NodePortTuple npt;

npt = new NodePortTuple(dst, dstPort); switchPorts.addFirst(npt);

for(Iterator iter = cl.links.get(dst).iterator();iter.hasNext();){ Link ln = (Link)iter.next();

if((ln.getDst()==dst)&&(ln.getSrc()==mprev[(int)dst])){ npt = new NodePortTuple(ln.getDst(), ln.getDstPort()); switchPorts.addFirst(npt);

npt = new NodePortTuple(ln.getSrc(), ln.getSrcPort()); switchPorts.addFirst(npt); dst = ln.getSrc(); break; } }

while(dst != src){

for(Iterator iter =

cl.links.get(dst).iterator();iter.hasNext();){ Link ln = (Link)iter.next();

if((ln.getDst()==dst)&&(ln.getSrc()==mprev[new Long(dst).intValue()])){

npt = new NodePortTuple(ln.getDst(), ln.getDstPort()); switchPorts.addFirst(npt);

npt = new NodePortTuple(ln.getSrc(), ln.getSrcPort()); switchPorts.addFirst(npt); dst = ln.getSrc(); break; } } }

npt = new NodePortTuple(src, srcPort); switchPorts.addFirst(npt);

result = new Route(id,switchPorts); }

return result; }

9

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于SDN的最短路径算法(dijkstra)实现(2)在线全文阅读。

基于SDN的最短路径算法(dijkstra)实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/524184.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: