论文部分内容阅读
在当前,计算机网络正处于一个革新的时期,网络的的基本架构自从提出之后,多年来并未发生本质改变。而另一方面互联网的飞速发展使得其对网络的需求越来越高,这导致了传统网络架构越来越无法满足当前新技术对其的需求。为了满足新的需求,SDN出现了,并且迅速发展,取得了众多硕果。其核心思想是将转发平面从数据平面分离,数据平面只需要关心报文的转发,控制平面则用来做出转发的决策。这使得网络创新门槛大大降低,网络的配置工作就如同计算机软件在操作系统上一般,可任意安装卸载。同时也解决了传统网络分布式架构的种种难题,比如配置复杂,网络不可控等许多疑难杂症。 在传统网络中,路由问题一直是一个瓶颈,因为无法知晓网络全局拓扑,所以只能根据局部信息采用分布式算法,这样一来整个路由过程都是不可控的,或者说需要非常大的代价才能控制。而在SDN中由于其有个统一的中心控制器,可以获取整个网络的拓扑信息,并且能够控制报文转发决策,使得在传统网络中的路由难题可以在SDN中轻松解决。而在SDN网络中大多数路由算法是基于多路径路由算法或者动态链路调整算法。而本文与大多数方法不同是采用从网络拓扑结构入手的方式提出了一种基于盒覆盖算法以及分级路由思想的改进版的Dijkstra算法来进行路由选择。 盒覆盖算法最初是应用在复杂网络中,用来研究网络自相似性质的一个方法。它是用来查找给定一个一定“尺寸”的盒子,然后用这个盒子来覆盖网络,所有的盒子中的结点距离都不超过“尺寸”大小的,所用的最小的盒子数。这正与分级路由策略的思想不谋而合。所以可以通过盒覆盖算法将网络分解成许多小的子网,然后在路由阶段,于子网之间使用Dijkstra算法计算最短路径,然后在处于最短路径上的子网内部进行最短路计算,最后将这些子网的路径组合得到我们所求的路由。 因为我们知道Dijkstra算法的时间复杂度是O(V+ElogE)。结点和边的数目会直接影响了整个算法的所耗费时间,而在真实的大型网络中往往有许多的结点和边,所以不可避免的会导致Dijkstra算法性能下降。而通过分级后,网络的规模都大大减小,所以路由计算的时间也会相应的缩短。在此理论基础下,本文实现了一个Demo并与Dijkstra算法对比,可以看到随着网络规模的增大路由的计算时间是有缩短的。之后,利用在Ryu来作为OpenFlow(SDN的一种实现)控制器,并且实现了生产环境下可用的盒覆盖路由算法模块,并在Mininet这个仿真平台下进行了网络仿真并测试。效果基本上与预期相符合。