一种基于最小堆的软件定义网络扩展方法与流程

文档序号:11147579阅读:297来源:国知局
一种基于最小堆的软件定义网络扩展方法与制造工艺

本发明涉及通信技术领域,更具体地,涉及一种基于最小堆的软件定义网络扩展方法。



背景技术:

软件定义网络(Software Defined Network,SDN),是由Emulex提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

由于传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以SDN希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以像升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。

软件定义网络是最近几年网络研究领域的热点,它分离了网络的控制平面和数据平面,而控制平面是软件定义网络的大脑,其能力极大地影响着软件定义网络网络的可拓展性。目前针对软件定义网络可拓展性的研究已经非常火热,对应的解决方案也已经有不少。根据控制器数目的不同,解决方案可以分为如下两类:单控制器节点的性能拓展以及部署多控制器系统。根据控制器系统中控制器的种类异同可以将方案分为分布式控制器和东西向接口协议两种解决方案。但是并没有解决方案结合路由算法来优化存储结构,从而扩展网络。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的基于最小堆的软件定义网络扩展方法,在网络扩展中采用最小堆,利用最小堆的特点可灵活的向网络中添加节点或多个节点形成的堆,并且基于最小堆优化的路由算法明显降低了时间复杂度。

根据本发明的一个方面,提供一种软件定义网络扩展方法,包括以下步骤:

S1、获取网络拓扑结构,并将全网构造成一个或多个最小堆;

S2、将新加入的网络与最小堆合并至一个堆,实现网络的扩展。

作为优选的,所述步骤S1具体包括:

S11、将软件定义网络中的Floodlight作为控制器,Mininet作为网络模拟器构造网络;

S12、Floodlight与Mininet建立连接从得到网络的拓扑结构;

S13、建立一个空的最小堆,将拓扑结构的每个节点插入堆,构成初始的最小堆。

作为优选的,所述步骤S13中,每一个最小堆包括最小键指针,每一个节点包含父指针、左孩子指针和右孩子指针。

作为优选的,所述步骤S2具体包括:

利用最小堆的插入算法将新加入的网络节点与原有堆合并至一个堆,实现网络的扩展;

利用最小堆的合并算法将新加入的堆与原有堆合并至一个堆,实现网络的扩展。

作为优选的,所述步骤S2中,插入网络节点方法具体包括,将待插入的节点x的所有指针都初始为空,将x插入堆的根链表中,若堆的根节点为空或根节点的值大于x的值,则调整堆的结构,将插入节点作为堆的节点。

作为优选的,所述步骤S2中,合并新加入的堆的方法包括:利用最小堆的堆合并算法,将需合并的两个堆的两根表串联,并确定一个新的最小结点。

作为优选的,合并新加入的堆的方法具体包括:建立一个空的最小堆H,将待合并堆H1的根节点赋给H的根节点,连接H和待合并堆H2的根列表;若H1的根节点为空,H2的根节点不为空并且H2的根节点的值不小于H1的根节点的值,则将H的根节点调整为H2的根节点,合并完的堆为H。

与现有技术相比,本发明的有益效果在于:本发明利用软件定义网络中控制器能获取网络拓扑结构的特点,将全网构造成一个或多个最小堆;利用最小堆的插入算法可将新加入的网络节点与原有堆合并至一个堆,从而实现网络的扩展;通过优化软件定义网络的数据结构,在网络扩展中采用最小堆,利用最小堆的特点可灵活的向网络中添加节点或多个节点形成的堆,并且基于最小堆优化的路由算法明显降低了时间复杂度,可将新加入的堆与原有堆合并至一个堆,从而实现网络的扩展。

附图说明

图1为本发明实施例的方法流程框图;

图2为本发明实施例的最小堆示意图;

图3是本发明实施例的网络扩展方法示意图;

图4是本发明实施例中网络密度为0.3时,本发明的网络扩展方法与传统方法运行时间对比示意图;

图5是本发明实施例中网络密度为0.6时,本发明的网络扩展方法与传统方法运行时间对比示意图;

图6是本发明实施例中网络密度为0.6时,本发明的网络扩展方法与传统方法运行时间对比示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

图1示出了一种基于最小堆的软件定义网络扩展方法,包括以下步骤:

S1、获取网络拓扑结构的特点并将全网构造成一个或多个最小堆;通过软件定义网络中控制器能获取网络拓扑结构的特点,将全网构成一个或多个最小堆;

S2、将新加入的网络与原有堆合并至一个堆,实现网络的扩展。

所述步骤S1具体包括:

S11、将软件定义网络中的Floodlight作为控制器,Mininet作为网络模拟器构造网络;

S12、Floodlight与Mininet建立连接从得到网络的拓扑结构;

S13、建立一个空的最小堆,将拓扑结构的每个节点插入堆,构成初始的最小堆。

如图2所示,最小堆H.min由一组最小堆有序树构成。每个节点x包含一个指向其双亲的指针和一个指向其中一个孩子的指针。x的所有孩子连接成一个双循环链表,称为x-children表。表中的每一个孩子有两个指针,分别指向其左兄弟和右兄弟。所有的树根节点与其左右指针连接成一个双循环链表,称为堆的根表H。在斐波那契堆中应用双循环链表有两点优势:第一,从双循环链表中删除一个节点仅需要时间0(1);第二,对给定的两个链表,它们可以在时间0(1)内连接成一个双循环链表。

在本实施例中,所述步骤S2包括:

利用最小堆的插入算法将新加入的网络节点与原有堆合并至一个堆,实现网络的扩展;利用最小堆的插入算法,将待插入节点的各域初始化并赋值,构造自身的环形双向链表,将该节点加入到堆的根表中;

利用最小堆的合并算法将新加入的堆与原有堆合并至一个堆,实现网络的扩展。

插入网络节点程序如下列所示:

首先将待插入的节点x的所有指针都初始为空,将x插入堆的根链表中,如果堆的根节点为空或是根节点的值大于x的值,则调整堆结构,将插入节点作为堆的根节点。

如图3所示,合并新加入的堆的方法包括:利用最小堆的堆合并算法,将需合并的两个堆的两根表串联,并确定一个新的最小结点。

建立一个空的最小堆H,将待合并堆H1的根节点赋给H的根节点,连接H和待合并堆H2的根列表;若H1的根节点为空,H2的根节点不为空并且H2的根节点的值不小于H1的根节点的值,则将H的根节点调整为H2的根节点,合并完的堆为H。

图4、5、6分别是当网络密度分别为0.3、0.6、0.9时,基于最小堆优化的迪杰斯特拉算法与传统的迪杰斯特拉算法运行时间的对比。为了实现基于最小堆的迪杰斯特拉算法,需要构造一个堆用来存在示踪端点。初始化需要一个“构造堆”操作和一个“插入”操作,且每一次扫描需要一个“删除最小元素”操作。插入一个节点需要时间O(1),提取最小节点操作需要时间lg|V|,V代表端点,且每一个节点可以被提取一次,因此,时间复杂度为V*lg|V|。一个“删除关键元素”操作需要时间O(1),且每条边至多更新一次,因此时间复杂度为|E|*O(1),E代表边。所以,如果应用最小堆,堆操作的全部时间为O(|V|*lg|V|+|E|),而其他任务的时间为O(|V|+|E|),因此,基于最小堆的迪杰斯特拉算法的运行时间为O(|V|*lg|V|+|E|)。

在传统迪杰斯特拉算法中,邻接矩阵被用来作为最基本的数据存储结构。当扫描端点数组来寻找最小端点时,整个算法需要花费O(|V|2)的时间。每一个最早到达路径集合D(X)更新消耗一个时间常数,所以,整个运行时间为O(|V|2+|E|)。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1