内容发布更新时间 : 2024/12/26 10:47:23星期一 下面是文章的全部内容请认真阅读。
基于SDN的最短路径算法(dijkstra)实现
一.实验要求
把路由算法作为APP加入到控制器中,使SDN网络实现根据拓扑情况自动选择路由的功能。
二.实验环境及思路
本实验的控制器采用Floodlight,向Floodlight添加模块zhlruote以实现控制器路由功能。
将上题中采用的dijkstra最短路径算法加入到控制器中,控制器根据选择出的路由下发流表给交换机,从而使主机节点能够相互通信。实验中各个链路的带宽约束及带宽需求bdw通过zhlroute模块在init()方法中读取input.txt文件获得,源节点与目的节点通过packetin消息获得。
zhlroute模块初始化完成后,监听PacketIn消息,收到消息后进行判断,如果需要转发,则通过returnRoute()方法获取目的节点到源节点的完整路径,并对路径上的节点进行遍历以下发流表。在获取路由路径时,使用
floodlight提供的拓扑管理模块(TopologyManager.java)来获取各链路的连接状态(包括连接节点及端口,存储于clusters类集中),通过对各个节点上与其相连的链路的遍历来获取源节点到目的节点的完整路径。
模块整体流程图如图1所示:
1
图1:zhlroute模块流程图
三.实验步骤
(1)修改第一大题中用到的创建拓扑的myfirst.py文件,创建如下所示拓网络拓扑:拓扑中包括8台交换机和8台主机,交换机根据其SwitchDPID(00:00:00:00:00:00:00:00到00:00:00:00:00:00:00:08)由低到高分别标记为s1到s8,主机h1-h8(ip)分别与s1-s8相连。
2
图2:网络拓扑
图3:网络拓扑
(2)启动floodlight,注意将forwarding模块禁止启动加载,然后对zhlroute模块进行连通性测试,结果如图4。说明各主机可以进行通信,zhlroute模块能够发现路径并下发流表。
3