一种实现基于SDN中路由环路主动审计算法及实现方法与流程

文档序号:13941529阅读:337来源:国知局

本发明涉及网络通信路由技术领域,特别是一种基于sdn中第三方请求的路由环路审计方法。



背景技术:

sdn为软件定义网络(software-definednetwork)的简称,sdn的主要思想是将控制层从数据链路层分离出来,从而实现控制与转发的解耦,并且提供了网络的编程能力。sdn越来越多地运用在数据中心的网络中,为了保证数据中心的网络容量,数据中心的网络拓扑大多使用的是富连接的网络模式,但是过多的冗余链路使得网络中很容易出现路由环路、路由黑洞等问题。

传统网络中使用生成树协议来在网络中建立树形拓扑,消除网络中的环路,但是这种方法用在数据中心网络中,会导致端口的关闭,减少数据中心的网络容量。现有的sdn网络中路由环路的判断算法,有在数据流中配置特定标签,并且在交换机流表项中添加指定流表来进行检测,或者探测相同匹配域不同ttl值的流量来探测环路的存在,这两种方法都会消耗交换机当前流表数量的额外流表项,使得交换机流表使用率低于50%,在当前sdn交换机流表资源不富余的背景下并不合适。也有提出了实时获取网络中每个几点的路由表信息和路由事件信息,在控制器中维护一张全网流表转发图的方法,但是当网络中流表数量过大、新增流表项很多的情况下,交换机与控制器之间交互的信息量太大,对于控制器的性能产生了极大的负担



技术实现要素:

本发明实施例提供一种实现基于sdn中路由环路主动审计方法,利用sdn网络中正常运行情况下无环的特性,对可能导致路由环路的第三方网络转发规则请求进行针对性地审计,模拟sdn交换机匹配行为和优先级转发行为,建立第三方请求转发路径,并且运行环路算法,避免由于转发规则修改请求导致路由环路的出现。

本发明实施例公开了一种实现基于sdn中路由环路主动审计方法,包括:根据第三方网络转发规则修改请求,提取出匹配域及转发规则;结合当前网络拓扑结构及链路参数,构造网络模型,定位首跳交换机位置,并且获得该交换机已有流表信息;模拟交换机匹配行为以及优先级转发行为,从首跳交换机开始迭代求解,模拟交换机的匹配行为以及基于流表项优先级的数据流转发行为,寻找第三方请求相关数据流的最终转发行为;根据数据流转发行为,运行路由环路算法,判断路由环路的出现及其位置信息,以及更新下一跳交换机或终止循环,完成对路由环路的审计方法。

从上述本发明的实施例可以看出,本发明实施例相比于已有路由环路判断,利用了sdn两点重要的性质,即:1.sdn拥有全局网络拓扑视图,所以通过路由算法计算得到的路由线路是没有环路;2.sdn控制器在实现时,流表项的匹配域是通过获取数据包头信息直接填入,从而实现数据流的精确匹配,理论上不会影响到其他数据流的转发策略。利用以上sdn网络的两点性质,我们可以更有针对性地在sdn网络中实现路由环路避免策略,相比于传统网络路由环路探测算法,本方法在时间复杂度和额外流表空间使用状况达到更优。相比于现有sdn网络中同步所有流表项生存情况来运行路由环路的算法,本发明实施例具有选择性获取实时流表的能力,在额外信令交互次数达到更优。本发明实施例针对可能打破sdn网络两条性质的第三方网络转发规则修改请求进行审计,从而避免人工误操作以及应用层下发错误流表规则,维护sdn网络无环的特性。

附图说明

图1为本发明实现基于sdn中路由环路主动审计方法实施例的流程图

图2为本发明获取第三方请求中匹配域及转发规则的实施例的流程图

图3为本发明模拟openflow交换机匹配及优先级转发实施例流程图;

图4为第三方请求影响现有流量转发行为导致路由环路的流表示意图;

图5为第三方请求影响现有流量转发行为导致路由环路的转发行为模拟示意图;

图6为现有流表项影响第三方请求转发行为导致路由环路的流表示意图;

图7为现有流表项影响第三方请求转发行为导致路由环路的转发行为模拟示意图;

图8为本发明判断环路及更新下一跳交换机的实施例流程图;

图9位本发明提供的基于sdn中路由环路主动审计系统的系统架构示意图

具体实施方式

下面结合附图对本发明实施例进行详细描述。

请参阅图1,为本发明实现基于sdn中路由环路主动审计方法的实施例流程图,包括以下步骤:

步骤101:获取第三方请求,并且按照openflow协议的格式提取出请求中附带的匹配域以及转发规则;

步骤102:确定当前网络拓扑的拓扑信息和链路参数信息,对网络进行建模,并且根据第三方请求顺序,定位需要进行审计的首跳交换机位置;

步骤103:获得相关交换机的所有流表信息,模拟交换机的匹配域匹配行为,计算得到第三方请求匹配域重叠的流表项;根据获得的匹配域有重叠的流表项以及交换机优先级匹配的规则,模拟数据流在交换机上最终的转发行为;获得数据流在交换机上最终的转发行为,运行环路算法判断环路。对于路由环路返回定位信息,对于不产生环路流量的第三方请求,更新下一跳交换机,并且重复步骤103,直到无下一跳交换机或计算得到路由环路为止。

步骤104:若无路由环路产生,则审计方法同意第三方请求的下发,数据流转发规则修改请求生效。如果判断该第三方请求会造成路由环路,则算法会拒绝该请求,并且返环路所在的位置和相关流表信息。

上述步骤101中,获取第三方请求并提取匹配域及转发规则包括以下步骤:

步骤201:获取第三方请求

在sdn架构中,sdn控制器可以为应用层(applicationlayer)提供网络拓扑、链路信息、交换机流表信息,交换机统计信息等项目,同样,应用层模块或其他第三方应用也可以通过控制器定义的接口修改交换机转发规则,对网络转发进行修改。正是这种对交换机转发行为直接操作的灵活性,打破了sdn中无环的特性,所以sdn控制器在接收到第三方转发规则修改请求时,会首先将该请求发送给路由环路审计模块进行环路审计,以确保第三方请求不会在网络中造成路由环路。大多第三方请求是通过sdn控制器提供的restfulapi传递。

步骤201:提取openflow协议形式的匹配域及转发规则

由于在之后的步骤中第三方请求需要和openflow交换机中已有的流表项进行匹配域、优先级的对比,以及根据转发行为判断下一跳交换机位置,所以本发明基于openflow协议的格式,构造了第三方请求提取出转发策略相关信息的结构,如下:

其中,各个字段的具体含义如下:

在第三方请求中提取的match字段,对应的是openflow十二个包头域,其分别为:进入接口、ethernet源地址、ethernet目标地址、类型vlanid、vlan优先级、ip源地址、目标地址、协议、iptos位、tcp/udp、目标端口、源端口;

上述步骤103中,模拟交换机匹配域匹配和优先级匹配,获得数据流最终转发行为的具体实现方式请参阅图3,包括以下步骤:

步骤301:通过基于openflow的sdn控制器提供的接口,可以获得交换机流表中所有的流表项

步骤302:判断该相关交换机是否在第三方请求中

步骤303:如果该交换机在第三方请求中,参照图4所示,第三方请求与已有流表项的匹配域发生重叠,并且第三方请求的优先级(priority:65535)高于已有流表项的优先级(priority:65530),则下一跳的交换机按照第三方请求的转发规则指定,参照图5所示。在获取匹配域时,由于第三方请求将会在相关交换机中添加流表项,所以对比的匹配域直接从第三方请求匹配域中直接获得。

步骤304:如果该交换机不在第三方请求中,参照图6所示,s3交换机上已有的流表项的优先级(priority:65535)比第三方请求的优先级(priority:65530)高,导致数据流按照交换机已有的转发路径进行转发,跳出了第三方请求的路线,参照图7所示。此时,s4交换机并不在第三方请求中,找不到对应的匹配域可以用来对s4的交换机进行匹配域重叠判断。此情况下,使用默认的对比匹配域作为对比匹配域,这里的默认匹配域为第三方请求中提取的首个匹配域。

步骤305:获得对比匹配域后,遍历相关交换机上所有的流表项,由于流表项中十二个包头域中大部分字段都是默认值(*),最终采用排除法排除含有不匹配项目的流表项,剩下的流表项即为匹配域有重叠的流表项。

步骤306:判断包含重叠流表项的栈是否为空

步骤307:如果栈为空,即没找到匹配域重叠的已有流表项,则判断该交换机是否在第三方请求涉及的交换机中

步骤308:如果栈为空,即找到匹配域重叠的流表项,则判断该交换机是否在第三方请求涉及的交换机中

步骤309:栈为空且该交换机不在第三方请求的流表中,则说明该交换机上已有的流表项和第三方请求都无法处理此数据流,返回的转发规则为空(null)

步骤310:栈为空且该交换机在第三方请求的流表中,则返回的转发规则是第三方请求在该交换机上的转发规则

步骤311:栈不为空且该交换机在第三方请求的流表中,则说明该交换机上存在可以匹配数据流的流表项,并且第三方请求也可以处理数据流,返回的转发规则是已有流表项和第三方请求中优先级最高项的转发规则

步骤312:栈不为空且该交换机不在第三方请求的流表中,则说明该交换机上存在可以匹配数据流的流表项,第三方请求不能处理该数据流,返回的转发规则是已有流表项中优先级最高项的转发规则

上述步骤103中,判断转发行为是否会在网络中产生环路流量,通过转发行为更新下一跳交换机,包括以下步骤:

步骤401:获得上一步骤中返回的最终转发规则

步骤402:判断最终转发规则是否为空(null)

步骤407:如果转发规则为空,说明没找到环路,则跳出算法,并且返回数据流转发路径信息

步骤403:如果有可用转发规则,则遍历之间缓存的的交换机-流表项组合{t(vi,rv)|vi表示之前经过的节点,表示之前转发行为流表项},判断当前交换机-流表项组合t(v,r)是否属于{t(vi,rv)}。在、数据流每经过一个交换机,缓存该交换机-流表项组合t(v,r),每一个t(v,r)表示该数据流经历了哪些交换机,在交换机上最终被哪些流表项匹配,代表数据流的转发行为。

如果t(v,r)∈{t(vi,rv)},则表示数据流又回到原来的交换机,并且被原来的流表项转发规则处理,说明网络中出现了路由环路。如果不属于,说明数据流没有回到原来的交换机;或者回到原来的交换机,但是被不同的流表项转发处理,这种情况不判断为路由环路。

步骤408:如果,判断为t(v,r)∈{t(vi,rv)}出现环路,则终止算法,并且返回环路信息,如路由环路路线及对应的流表项信息。

步骤404:如果则说明当前节点并没有环路闭环出现

步骤405:判断最终转发规则是否指向了下一跳交换机

步骤406:如果最终转发规则指向了下一跳交换机,说明该数据流还会经过下一个网络节点,则更新下一跳交换机,并且重复步骤103

步骤407:如果最终转发规则没有指向下一跳交换机,如action=drop、无action、或者指向了非交换机节点,则说明数据流已经在网络中到达了终点。数据流的传输过程中没有出现环路,终止算法,并且返回数据流的传输路径

参照图9所示,为本发明提供的基于sdn中路由环路主动审计检测系统的系统框架示意图。所述基于sdn中路由环路主动审计检测系统部署于sdn控制器之上。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序包括如下步骤:根据第三方修改网络转发规则的请求,获得控制器根据请求将会下发的流表规则的匹配域以及转发行为;根据sdn控制器通过openflow协议获得当前网络的拓扑结构及链路参数,对网络进行建模;通过openflow协议获得相关交换机已有流表项,并且判断得到已有流表项中与第三方请求匹配域有重叠的条目;模拟交换机优先级匹配的转发原则,取出与匹配域重叠的流表项,然后选取重叠流表项中优先级最高的条目,根据这个条目与第三方请求的优先级生成转发行为;该请求的数据流在网络中的每一跳转发行为都基于以上原则,最终获得数据流的转发路径,运行基于交换机-流表项组合的路由环路检测算法,判断第三方请求是否会在当前网络中导致路由环路的出现。所述的存储介质,如:rom/ram、磁碟、光盘等。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应该视为本发明的保护范围。

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