基于SDN的支持QoS的多播路由构建方法及系统与流程

文档序号:12492498阅读:254来源:国知局
基于SDN的支持QoS的多播路由构建方法及系统与流程

本发明属于网络技术领域,具体为一种基于SDN的支持QoS的多播路由构建方法及系统。



背景技术:

近些年,互联网发生了巨大的变化。新兴多媒体应用,如音频/视频会议、视频点播、ip电话通常比电子邮件和文件传输服务等传统网络应用需求更大。这些网络应用可能包括一组用户而不是一个发送方和一个接收方。

多播指把信息从一个地址同时传递给一组目的地址,目的是为了减少网络资源的消耗,在互联网中应用广泛,如音频/视频会议、视频点播、ip电话,而且被大量应用到数据中心,如分布式并行处理、分布式文件系统。在传统多播中,多播组通过树结构覆盖所有多播组成员。树上的路由器必须维护每个多播组的转发状态。随着多播应用在网络中的增加,多播组的数量会不断增加,这大大增加了路由器中路由表的大小。超大路由表的维护不仅需要容量大的内存支持,而且会减缓路由地址的查找速度。此外,维护多播树需要路由器之间交换控制信息,这将随着多播组数量的增加造成巨大的时间和空间开销。

在网络中,许多应用,例如:视频会议,多媒体广播,多人游戏等,都要求网络保证服务质量(QoS)。QoS是指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络传输带宽、传输延迟、网络阻塞和丢包率等问题的一种技术。各种多播应用对网络带宽、时延以及抖动提出了各种不同的要求,媒体广播往往要求较高的带宽、较小的抖动;分布式并行处理要求高带宽和低时延。如何感知现有网络状况,根据当前网络的状态,带宽占用率,时延信息等,为多播应用选择最佳多播路径,在保证网络负载均衡的同时保障应用的服务质量(QoS)成为了一个亟待解决的问题。

软件定义网络(Software Defined Network,SDN)概念的提出对解决传统网络存在的问题提供了新的思路。SDN不同于传统的TCP/IP的分布式架构,它是一种数据控制分离、软件可编程的新型网络体系架构。SDN采用了集中式的控制平面和分布式的转发平面,两个平面互相分离,控制平面利用控制—转发通信接口对转发平面的网络设备进行集中式控制,并且提供灵活的可编程能力,最终达到自由控制流量转发的目的。



技术实现要素:

鉴于背景技术中现有多播技术存在的缺点,本发明目的在于提供一种基于SDN的支持QoS的多播路由构建方法及系统,使得多播既可以达到网络带宽负载均衡,又能根据业务需求保证业务带宽和时延。

为实现上述目的,本发明提供一种基于SDN的支持QoS的多播路由构建方法,应用于包含OpenFlow控制器和Open vSwitch的通信网络中,其中Open vSwitch是支持OpenFlow协议的虚拟交换机,所述基于SDN的支持QoS的多播路由构建方法,包括以下步骤:

1.本方法是基于IGMP v2协议的,具体步骤如下:

(1).Open vSwitch将用户主机发送的IGMP报文转发给支持IGMP协议的OpenFlow控制器,此OpenFlow控制器解析所述IGMP报文;

(2).若(1)中所述报文是请求加入多播组的Membership Report报文:所述OpenFlow控制器根据解析的IGMP报文获取用户主机地址与多播组地址,并根据多播路由算法为所述主机计算满足QoS保障的多播路径;

(3).若(1)中所述报文是请求加入多播组的Membership Report报文:根据(2)中步骤计算出多播路径后,OpenFlow控制器测量出网络带宽,在存在于多播路径中的Open vSwitch中创建多播队列并为多播队列预留带宽资源;

(4).若(1)中所述报文是请求加入多播组的Membership Report报文:OpenFlow控制器在(3)中所述Open vSwitch中安装或更新流表项,使Open vSwitch可以转发多播组报文;

(5).若(1)中所述报文是请求离开多播组的Leave Group报文:所述OpenFlow控制器根据解析的IGMP报文获取用户主机地址与多播组地址,并查询此用户主机所在多播组中是否有其他多播成员,若没有,则所述OpenFlow控制器停止维护此多播组,并释放多播资源给通用队列;若有其他成员存在,则所述OpenFlow控制器继续维护此多播组,重新安装流表项并重新设置QoS队列。

所述步骤(2)中所述多播路由算法具体内容为:OpenFlow控制器根据全网拓扑结构,使用基于Prim算法的动态多播路由算法为多播组建立多播路由路径。为了适应网络实际状况,将与多播组成员主机直接相连的Open vSwitch当作多播成员节点计算多播路径。设SDN网络G=(V,E),其中G表示连通图,V表示SDN网络中的Open vSwitch的集合,E表示网络节点与节点之间的剩余可用带宽的倒数的集合。具体包括:

(2-1).加入多播组

默认将第一个加入到多播树T的节点为多播组的发送者。如果节点v要加入到多播树T,若v已经在树T上,则只要对节点v进行流表更新和QoS队列设置即可;否则,就在已存在的树T的基础上继续通过Prim算法算得最小生成树 ;然后对新算得的最小生成树进行修剪,去掉不是多播组成员且节点度数小于2的节点;最后形成新的多播树T。具体实现步骤如下:

S1:输入多播树的结点treeNodes和边treeEdges,以及新加入的多播成员member。

S2:判断多播树的结点个数,若为0,则将新加入的多播成员member加入到多播树的结点treeNodes中,作为多播组的发送者,并结束算法;否则,继续步骤S3。

S3:判断新加入的多播成员是否包含于treeNodes,若是,则更新该多播成员的流表,并结束算法;否则,继续步骤S4。

S4:在已有的多播树的基础上,继续按照Prim算法寻找与已有多播树直接相连的,并且权值最小的边;然后将这条边加入treeEdges,将这条边的顶点加入到treeEdges;接着重复上述步骤,直到将新的多播节点加入到treeNodes。

S5:剪枝:遍历多播树结点treeNodes,若结点为非多播成员结点,且结点度数小于2,则删除;重复上述步骤,直到多播树结点treeNodes的非多播成员结点的度数均大于等于2。

S6:更新多播树结点treeNodes的流表。

S7:重新设置多播结点treeNodes的QoS队列。

(2-2).退出多播组

如果节点v要退出多播树T,若该节点v为多播组的发送者,则删除多播树T,更新整棵多播树的节点的流表和QoS队列。否则,若v的度数大于等于2,则只要对节点v进行流表更新和QoS队列设置即可;否则,删除节点v,并对生成树T进行修剪,去掉不是多播组成员且节点度数小于2的节点,最后形成新的多播树T。具体实现步骤如下:

S1:输入多播树的结点treeNodes和边treeEdges,以及要退出的多播成员member。

S2:判断多播树的结点treeNodes的个数,若个数为1,则删除该多播树,并结束算法;否则继续执行步骤S3。

S3:判断退出的多播成员member结点的度数,若结点度数大于等于2,则更新该多播成员的流表,修改QoS队列,并结束算法;否则执行步骤4。

S4:从多播树结点treeNodes中删除多播成员member以及与member直接相连的多播树的边。

S5:剪枝:遍历多播树结点treeNodes,若结点为非多播成员结点,且结点度数小于2,则删除,直到多播树结点treeNodes的非多播成员结点的度数均大于等于2。

S6:更新多播树结点treeNodes的流表。

S7:重新设置多播结点treeNodes的QoS队列。

所述步骤(2)中所述的QoS保障具体通过以下步骤设置:用户通过所述OpenFlow控制器设置对特定多播组的QoS要求;

所述步骤(3)中所述网络带宽的测量方法,具体步骤为:将sFlow这项网络监控技术作为所述OpenFlow控制器中的一个功能模块,用来收集sFlow报文并测量SDN网络中链路的带宽,为多播路由提供实时的网络带宽信息。为了解决sFlow协议与OpenFlow控制器对每个Open vSwitch每个端口的命名冲突,OpenFlow控制器每隔一段时间查询Open vSwitch用户空间模块下的数据库信息,然后将sFlow的命名端口号与Open vSwitch命名的端口号对应后,存储在一个表里,供以后查询使用;为了获取网络链路的带宽,将经过一个Open vSwitch出口的所有数据流的大小叠加,得到经过该出口的所有数据流的总和,将其作为这个Open vSwitch端口的上行带宽。

所述步骤(3)中所述在Open vSwitch中为多播队列预留带宽资源具体通过对QoS队列进行设置,具体步骤包括:分别在Open vSwitch的入口和出口分别设置QoS来控制数据流的到达速率和服务速率。QoS队列采用分层令牌桶算法实现,能够新建队列,配置队列和删除队列。对于入口,使用Traffic Control(Linux 内核内置的一个可以实现流量限速,流量整形,策略应用框架)实现Open vSwitch入口方向的QoS设置。使用TC重新定向入口的数据流,通过Ingress qdisc把输入方向的数据包重新定向导入虚拟设备IFB,然后再对IFB的出口配置QoS队列,这就使得Open vSwitch输入方向的QoS也能采用分层令牌桶算法实现,从而设置多个队列规定。其中,QoS队列是为特定多播组提供资源预留的队列,在多播过程中,优先具有稳定的带宽资源。

所述步骤(4)中所述安装流表项具体步骤包括:所述OpenFlow控制器将计算后的多播路径通过Packet-Out消息向多播路径上的所有Open vSwitch下发流表,使网络中的数据流按照计算得到的路径转发。

所述步骤(5)中所述OpenFlow控制器查询多播组中是否存在其他成员具体步骤包括:OpenFlow控制器通知查询器发送针对多播组的Group-Specific Query报文,如果网络中还存在此多播组的其他成员,则此多播组的成员在收到特定多播组查询报文后,会在该报文中设定的最大响应时间内发送成员关系报告报文,如果在最大响应时间内没有收到此多播组的多播成员发送的成员报告报文,OpenFlow控制器则认为该网络内已无此该多播组的成员。

所述步骤(5)中所述OpenFlow控制器查询多播组中是否存在其他成员具体步骤中所述查询器采用如下步骤构建:对开源OpenFlow控制器Ryu中的IGMP功能管理模块进行二次开发,使网络中有且仅有一个Open vSwitch担任查询器的角色,其它Open vSwitch均担任非查询器的角色。在多播路由中,该查询器会周期性的发送Time-General-Query报文,多播组的组成员会响应该报文,而非多播组成员则不会响应该报文。

一种基于SDN的支持QoS的多播路由构建系统,应用于包含OpenFlow控制器和Open vSwitch的通信网络中,应用于上述方法,其中Open vSwitch是支持OpenFlow协议的虚拟交换机,所述基于SDN的支持QoS的多播路由构建系统包括:

一个拓扑管理模块:使用链路层发现协议(Link Layer Discovery Protocol,LLDP)发现网络中的设备,包括交换机、主机以及各个端口的链接状况等。在发现全网络的拓扑结构后,拓扑管理模块为其他功能模块提供可直接调用的API;

一个sFlow采集器:用于收集嵌入在Open vSwitch中的sFlow Agent发送的sFlow报文。通过解析sFlow报文,sFlow采集器就能计算得出网络链路的带宽,并为其他功能模块提供可以直接调用的API;

一个IGMP管理模块:用于在SDN网络架构下实现IGMP v2的工作过程,管理网络中多播组成员关系;

一个QoS设置功能模块:该功能模块通过北向接口向SDN控制平面设置对特定多播组的QoS要求;

一个多播路由算法模块:根据由拓扑管理模块提供的网络拓扑和sFlow采集器提供的网络带宽,为多播组计算一条网络流量负载均衡的多播路径,并为多播成员建立和维护多播路径;

一个队列管理模块:管理所有Open vSwitch的入口和出口的QoS队列,系统主要通过该功能模块管理队列并为多播组预留带宽资源从而实现带宽QoS保证;

一个路由安装模块:该模块将计算后的多播路径通过Packet-Out消息向多播路径上的所有Open vSwitch下发流表,使网络中的数据流按照计算得到的路径转发。

本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著技术进步:

通过本发明方法所构建的多播路由能够为多播应用提供高带宽,低丢包率,低抖动,保证时延的QoS保障,具有较好的实用性和通用性。

附图说明

图1为基于SDN的支持QoS的多播路由构建方法的流程图;

图2为基于SDN的支持QoS的多播路由构建系统的结构框图;

图3为多播成员加入多播组的时序图;

图4为多播成员离开多播组的时序图;

图5为Open vSwitch中数据包的流向图。

具体实施方式

以下通过优选的实施例结合附图说明本发明。

实施例一:

参见图1,本基于SDN的支持QoS的多播路由构建方法,应用于包含OpenFlow控制器和Open vSwitch的通信网络中,基于IGMP v2协议,包括以下操作步骤:

(1).Open vSwitch将用户主机发送的IGMP报文转发给支持IGMP协议的OpenFlow控制器,此OpenFlow控制器解析所述IGMP报文;

(2).若步骤(1)中所述报文是请求加入多播组的Membership Report报文:所述OpenFlow控制器根据解析的IGMP报文获取用户主机地址与多播组地址,并根据多播路由算法为所述主机计算满足QoS保障的多播路径;

(3).若步骤(1)中所述报文是请求加入多播组的Membership Report报文:根据步骤(2)计算出多播路径后,OpenFlow控制器测量出网络带宽,在存在于多播路径中的Open vSwitch中创建多播队列并为多播队列预留带宽资源;

(4).若步骤(1)中所述报文是请求加入多播组的Membership Report报文:OpenFlow控制器在步骤(3)中所述Open vSwitch中安装或更新流表项,使Open vSwitch可以转发多播组报文;

(5).若步骤(1)中所述报文是请求离开多播组的Leave Group报文:所述OpenFlow控制器根据解析的IGMP报文获取用户主机地址与多播组地址,并查询此用户主机所在多播组中是否有其他多播成员,若没有,则所述OpenFlow控制器停止维护此多播组,并释放多播资源给通用队列;若有其他成员存在,则所述OpenFlow控制器继续维护此多播组,重新安装流表项并重新设置QoS队列。

实施例二:

本实施例提供一种基于SDN的支持QoS的多播路由构建方法,通过该方法构建的多播路由能够使网络流量负载均衡,减少网络丢包率、降低网络延迟,并且能够根据业务需求提供带宽和延迟的QoS保障。

其中,SDN(Software Define Network)是指软件定义网络,是一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制平面与数据平面分离开来,从而实现了网络流量的灵活控制,使网络变得更加智能。

QoS(Quality of Service)为服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞的一种技术。在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。

本方法是基于IGMP v2协议的,IGMP(Internet Group Management Protocol)协议是一个运行在主机与多播路由器之间的协议,用来进行多播成员信息的交互。其中,IGMP v2定义了基本规则、组成员查询机制、报告机制以及路由器的选举机制。在IGMP v2中,路由器被分为两大类,一类是查询路由器,另一类是非查询路由器。一个网络有且仅有一个路由器是查询路由器,其他路由器均为非查询路由器。

当某个主机希望加入到某个特定的多播组时,该主机会向与之直接相连的路由器发送加入多播组消息,告知路由器该主机希望发送或接收某个多播组的数据;查询路由器收到消息后,将该消息加入到查询路由器所维护的状态列表,同时发起建立多播分发树的请求。当某个主机希望退出某个特定的多播组时,直接向路由器发送成员关系报告报文,就可以退出多播组了。

具体的,本实施例提供一种基于SDN的支持QoS的多播路由构建方法,包括以下步骤:

(1)Open vSwitch将用户主机发送的IGMP报文转发给支持IGMP协议的SDN控制器,此OpenFlow控制器解析所述IGMP报文。具体步骤包括:

(1a)主机A向与之相连的Open vSwitch发送针对多播组的IGMP报文;

(1b)由于在Open vSwitch中没有匹配IGMP报文的流表项,Open vSwitch会向OpenFlow控制器发送包含IGMP报文的Packet-In消息。

(1c)OpenFlow控制器解析Packet-In消息;

(2)若(1)中所述Packet-In消息包含的IGMP报文是请求加入多播组的Membership Report报文,表示有主机要加入多播组,(1b)中所述OpenFlow控制器根据多播路由算法为所述主机计算满足QoS保障的多播路径,具体步骤包括:OpenFlow控制器解析Packet-In消息,在获知要加入多播组的主机A和多播组地址后,OpenFlow控制器使用多播路由算法为该新加入的多播成员A计算一条多播路径并判断该多播组地址是否设置了QoS保障,

2a) 若没有设置QoS保障,则终止操作;

2b) 若设置了带宽QoS保障,则判断该计算的多播路径是否能够保证带宽大于W,若满足要求则执行第(3)步,若不满足则终止操作;

2c) 若设置了时延QoS保障,则判断该计算的多播路径是否能够延时延小于T1,若满足要求则执行第(3)步,若不满足则终止;

具体的,步骤(2)中所述多播路由算法包括以下内容:OpenFlow控制器根据全网拓扑结构,使用基于Prim算法的动态多播路由算法为多播组建立多播路由路径。为了适应网络实际状况,将与多播组成员主机直接相连的Open vSwtich当作多播成员节点计算多播路径。设SDN网络G=(V,E),其中G表示连通图,V表示SDN网络中的Open vSwitch的集合,E表示网络节点与节点之间的剩余可用带宽的倒数的集合。具体包括:

加入多播组

默认将第一个加入到多播树T的节点为多播组的发送者。如果节点v要加入到多播树T,若v已经在树T上,则只要对节点v进行流表更新和QoS队列设置即可;否则,就在已存在的树T的基础上继续通过Prim算法算得最小生成树 ;然后对新算得的最小生成树 进行修剪,去掉不是多播组成员且节点度数小于2的节点;最后形成新的多播树T。具体实现步骤如下:

S1:输入多播树的结点treeNodes和边treeEdges,以及新加入的多播成员member。

S2:判断多播树的结点个数,若为0,则将新加入的多播成员member加入到多播树的结点treeNodes中,作为多播组的发送者,并结束算法;否则,继续步骤S3。

S3:判断新加入的多播成员是否包含于treeNodes,若是,则更新该多播成员的流表,并结束算法;否则,继续步骤S4。

S4:在已有的多播树的基础上,继续按照Prim算法寻找与已有多播树直接相连的,并且权值最小的边;然后将这条边加入treeEdges,将这条边的顶点加入到treeEdges;接着重复上述步骤,直到将新的多播节点加入到treeNodes。

S5:剪枝:遍历多播树结点treeNodes,若结点为非多播成员结点,且结点度数小于2,则删除;重复上述步骤,直到多播树结点treeNodes的非多播成员结点的度数均大于等于2。

S6:更新多播树结点treeNodes的流表。

S7:重新设置多播结点treeNodes的QoS队列。

退出多播组

如果节点v要退出多播树T,若该节点v为多播组的发送者,则删除多播树T,更新整棵多播树的节点的流表和QoS队列。否则,若v的度数大于等于2,则只要对节点v进行流表更新和QoS队列设置即可;否则,删除节点v,并对生成树T进行修剪,去掉不是多播组成员且节点度数小于2的节点,最后形成新的多播树T。具体实现步骤如下:

S1:输入多播树的结点treeNodes和边treeEdges,以及要退出的多播成员member。

S2:判断多播树的结点treeNodes的个数,若个数为1,则删除该多播树,并结束算法;否则继续执行步骤S3。

S3:判断退出的多播成员member结点的度数,若结点度数大于等于2,则更新该多播成员的流表,修改QoS队列,并结束算法;否则执行步骤4。

S4:从多播树结点treeNodes中删除多播成员member以及与member直接相连的多播树的边。

S5:剪枝:遍历多播树结点treeNodes,若结点为非多播成员结点,且结点度数小于2,则删除,直到多播树结点treeNodes的非多播成员结点的度数均大于等于2。

S6:更新多播树结点treeNodes的流表。

S7:重新设置多播结点treeNodes的QoS队列。

(3)若(1)中所述Packet-In消息包含的IGMP报文是请求加入多播组的Membership Report报文,OpenFlow控制器根据(2)中步骤计算出多播路径后,OpenFlow控制器测量出网络带宽,在存在于多播路径中的Open vSwitch中创建多播队列并为多播队列预留带宽资源,具体步骤包括:SDN控制器对计算出的多播路径上的SDN交换机的入口和出口做如下操作:

3a) 将通用队列的带宽减少W;

3b) 新建队列Q,并为该队列预留带宽容量大小为W的带宽资源。

具体的,步骤(3)中的测量带宽采用如下步骤:将sFlow这项网络监控技术作为所述OpenFlow控制器中的一个功能模块,用来收集sFlow报文并测量SDN网络中链路的带宽,为多播路由提供实时的网络带宽信息。为了解决sFlow协议与OpenFlow控制器对每个Open vSwitch每个端口的命名冲突,OpenFlow控制器每隔一段时间查询Open vSwitch用户空间模块下的数据库信息,然后将sFlow的命名端口号与Open vSwitch命名的端口号对应后,存储在一个表里,供以后查询使用;为了获取网络链路的带宽,将经过一个Open vSwitch出口的所有数据流的大小叠加,得到经过该出口的所有数据流的总和,将其作为这个Open vSwitch端口的上行带宽。

具体的,步骤(3)中所述为多播队列预留带宽资源,具体步骤包括:分别在Open vSwitch的入口和出口分别设置QoS来控制数据流的到达速率和服务速率。QoS队列采用分层令牌桶算法实现,能够新建队列,配置队列和删除队列。如图5所示,对于入口,使用Traffic Control(Linux 内核内置的一个可以实现流量限速,流量整形,策略应用框架)实现Open vSwitch入口方向的QoS设置。使用TC重新定向入口的数据流,通过Ingress qdisc把输入方向的数据包重新定向导入虚拟设备IFB,然后再对IFB的出口配置QoS队列,这就使得Open vSwitch输入方向的QoS也能采用HTB实现,从而设置多个队列规定。其中,QoS队列是为特定多播组提供资源预留的队列,在多播过程中,优先具有稳定的带宽资源。

(4)若(1)中所述Packet-In消息包含的IGMP报文是请求加入多播组的Membership Report报文,OpenFlow控制器根据步骤(3)为多播队列预留资源后,在Open vSwitch中安装流表项,使Open vSwitch可以向(1)中所述主机转发多播组报文,具体步骤包括:OpenFlow控制器对Open vSwitch发送Packet-Out消息,该消息在Open vSwitch的流表中安装流表项,当Open vSwitch收到来自多播组的报文时,会将该该报文送入队列Q。

(5)若(1)中所述Packet-In消息包含的IGMP报文请求离开多播组的Leave Group报文:所述OpenFlow控制器查询此主机所在多播组中是否有其他多播成员,若没有,则所述OpenFlow控制器停止维护此多播组,并释放多播资源给通用队列;若有其他成员存在,则所述OpenFlow控制器继续维护此多播组,并重新设置QoS队列,具体步骤包括:

(5a)OpenFlow控制器解析Packet-In消息,获知要离开的多播组G2的主机B和多播组地址后,OpenFlow控制器通知查询器发送针对此多播组的Group-Specific Query报文;

(5b)如果网络中还存在此多播组的其他成员,则多播组的成员在收到特定组查询报文后,会在该报文中设定的最大响应时间内发送成员关系报告报文;

(5c)如果在最大响应时间内没有收到此多播组的多播成员发送的成员报告报文,OpenFlow控制器则认为该网络内已无该此多播组的成员,于是不再维护这个多播组成员的关系,执行(5d)步,否则OpenFlow控制器会继续维护多播组的成员关系,并执行(5f)步;

(5d)SDN控制器向多播组多播路径上的SDN交换机发送Packet-Out消息,删除其流表中关于此多播组的转发策略;

(5e)OpenFlow控制器对SDN交换机做如下操作:释放多播组G2所占用的带宽资源;将释放的资源分配到通用队列,终止操作;

(5f)OpenFlow控制器重新计算多播树并在SDN交换机上的流表中安装流表项,重新设置QoS队列。

具体的,(5a)中所述查询器通过以下步骤构建:对开源OpenFlow控制器Ryu中的IGMP功能管理模块进行二次开发,使网络中有且仅有一个SDN交换机担任查询器的角色,其它SDN交换机均担任非查询器的角色。在多播路由中,该查询器会周期性的发送Time-General-Query报文,多播组的组成员会响应该报文,而非多播组成员则不会响应该报文。

实施例三: 本实施例提供一种基于SDN的支持QoS的多播路由构建系统,应用于包含OpenFlow控制器和Open vSwitch的通信网络中,应用于上述方法,所述基于SDN的支持QoS的多播路由构建系统包括:一个拓扑管理模块,一个sFlow采集器,一个IGMP管理模块,一个QoS设置功能模块,一个多播路由算法模块,一个队列管理模块和一个路由安装模块。

其中,拓扑管理模块:使用链路层发现协议(Link Layer Discovery Protocol,LLDP)发现网络中的设备,包括交换机、主机以及各个端口的链接状况等,在发现全网络的拓扑结构后,拓扑管理模块为其他功能模块提供可直接调用的API;

sFlow采集器:用于收集嵌入在OpenFlow交换机中的sFlow Agent发送的sFlow报文。通过解析sFlow报文,sFlow采集器就能计算得出网络链路的带宽,并为其他功能模块提供可以直接调用的API;

IGMP管理模块:用于在SDN网络架构下实现IGMP v2的工作过程,管理网络中多播组成员关系;

QoS设置功能模块:该功能模块通过北向接口向SDN控制平面设置对特定多播组的QoS要求;

多播路由算法模块:根据由拓扑管理模块提供的网络拓扑和sFlow收集器提供的网络带宽,为多播组计算一条网络流量负载均衡的多播路径,并为多播成员建立和维护多播路径;

队列管理模块:管理所有Open vSwitch的入口和出口的QoS队列,系统主要通过该功能模块管理队列为多播组预留带宽资源从而实现带宽QoS保证;

路由安装模块:该模块将计算后的多播路径通过Packet-Out消息向多播路径上的所有Open vSwitch下发流表,使网络中的数据流按照计算得到的路径转发。

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