一种在SDN框架下基于STP消除冗余链路的方法
技术领域
本发明涉及一种,特别是涉及一种在SDN(Software Defined Network,软件定义网络)框架下基于STP(Spanning Tree Protocol,生成树协议)消除冗余链路的方法。
背景技术
STP协议用于在网络中建立树形拓扑,从而避免局域网中的单点故障、网络回环,解决成环以太网网络的“广播风暴”问题。从某种意义上来说,STP是一种网络保护技术,可以消除由于失误或者意外带来的循环连接。
然而,传统的STP协议具有以下不足:
(1)传统的STP协议不是基于SDN架构,所采用的分布式控制需要交互BPDU(BridgeProtocol Data Unit,网桥协议数据单元)报文才能让所有交换机学习到全网的树状拓扑结构,因而收敛比较慢。
(2)在缺省情况下,一个端口从Blocking(阻塞)状态过渡到Forwarding(转发)状态至少需要30秒钟(两倍的Forward Delay)。对于一个拓扑不稳定网络,这样的过渡导致网络的长时间中断。
(3)传统的STP链路速率只支持到1Gbps,无法满足100Gbps的发展趋势。
(4)在SDN框架下建立静态的转发路径算法,虽然用户可以基于业务类型配置端到端的转发路径策略,但无法动态感知网络拓扑和链路状态的变化,不适合大型网络的部署。
(5)SDN控制器消除冗余链路的功能还没有形成标准。每个厂商都有自己私有的算法,如建立静态的转发路径,由用户保证消除冗余链路。上述私有的算法可以根据实际的业务需求,由用户静态配置转发路径,易于实现。但不足之处在于,要求用户对网络和实际业务需求要非常了解,并且无法感知网络拓扑的动态变化。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种在SDN框架下基于STP消除冗余链路的方法,在无需交互协议报文的情况下,能够对每个SDN交换机进行生成树的计算,解决了STP协议收敛比较慢的问题;同时重新定义的链路速率可以支持100Gbps,适用于大型网络的部署。
为实现上述目的及其他相关目的,本发明提供一种在SDN框架下基于STP消除冗余链路的方法,包括以下步骤:步骤S1、SDN控制器定时通过LLDP协议获取链路状态信息和网络拓扑结构;步骤S2、SDN控制器确定根桥;步骤S3、SDN控制器确定SDN交换机的端口角色;步骤S4、SDN控制器确定SDN交换机的端口状态;步骤S5、SDN控制器根据端口状态将流表下发到SDN交换机。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S1中,所述链路状态信息包括链路速率、端口状态和网桥的MAC地址信息。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S1中,SDN控制器获取网络拓扑结构时,包括以下步骤:
1)SDN控制器定时地触发带LLDP的Packet_out消息,发送至所有与之相连接的SDN交换机;
2)SDN交换机发送带数据包的Packet_in消息至SDN控制器;
3)SDN控制器在接收到Packet_in消息后,对数据包进行分析并其中的链路发现表中创建两台交换机之间的链接记录,从而构建全网拓扑视图。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S1中,通过扩展LLDP协议去获取链路状态信息,所述LLDP报文扩展了接口状态TLV和链路速率TLV;其中,接口状态TLV用于指定此接口是打开还是关闭;链路速率TLV用于指定链路的速率。
进一步地,根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:控制器根据链路速率,计算路径开销,其中:
在全双工链路中,Path Cost=200Gbps/当前速率;
在汇聚链路中,Path Cost=200Gbps/当前速率-1;
在半双工链路中,Path Cost=200Gbps/当前速率+1;
其中,Path Cost表示路径开销。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S2包括以下步骤:
步骤S21、SDN控制器获取所有的网桥ID;所述网桥ID由网桥的优先级和网桥MAC地址组成;
步骤S22、SDN控制器找出优先级最小的网桥ID;
步骤S23、SDN控制器查找是否存在优先级与最小优先级相同的网桥ID;若是,转入步骤S24;若否,则确定该具有最小优先级的网桥为根桥;
步骤S24、SDN控制器比较具有最小优先级的网桥ID的MAC地址,找出MAC地址最小的网桥ID;
步骤S25、确定该MAC地址最小的网桥为根桥。
进一步地,根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述网桥的优先级为可配置的;在网桥的优先级缺省情况下,根桥为MAC地址最小的网桥。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S3中,所述端口角色包括根端口、指定端口和可选端口;
确定端口角色的规则如下:
若一个端口到达根桥的路径是该端口所在网桥到达根桥的最佳路径,则该端口为根端口;
每一个网段选择到根桥最近的网桥作为指定网桥,该指定网桥到这一网段的端口为指定端口;
既不是指定端口,也不是根端口的端口为可选端口。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S4中,所述SDN控制器确定根端口和指定端口的端口状态为转发,可选端口的端口状态为丢弃。
根据上述的在SDN框架下基于STP消除冗余链路的方法,其中:所述步骤S5包括以下步骤:
步骤S51、SDN控制器判断端口状态是否为转发;若是,转入步骤S52;若否,转入步骤S53;
步骤S52、设置流表的Match字段为入端口,转发报文;
步骤S53、设置流表的Match字段为入端口,丢弃报文。
如上所述,本发明的在SDN框架下基于STP消除冗余链路的方法,具有以下有益效果:
(1)该算法集中在SDN控制器上完成的,SDN控制器掌握了全网的网络拓扑结构和链路状态信息,在无需交互BPDU的情况下,可以对生成树进行统一计算,从而解决了STP协议收敛比较慢的问题;
(2)重新定义了链路速率的标准,可支持100Gbps,适用于更多的链路类型,更易于大型网络的部署;
(3)利用LLDP(Link Layer Discovery Protocol,链路层发现协议)协议可以动态检测网络拓扑的变化,减少了网络的维护成本;
(4)在SDN框架下,对传统的STP进行了改进,网络边缘的端口直接与终端相连,不是和其它网桥相连的端口可以直接进入转发状态,不需要任何延时;
(5)优化了STP的端口状态,支持Discarding(丢弃)和Forwarding,减少了一个端口从Blocking状态迁移到Forwarding状态的时间。
附图说明
图1显示为本发明的在SDN框架下基于STP消除冗余链路的方法的流程图;
图2显示为本发明的SDN控制器的链路发现过程示意图;
图3显示为本发明的LLDP报文的结构示意图;
图4显示为本发明的SDN控制器确定根桥的流程图;
图5显示为本发明的SDN控制器根据各路径的Path Cost来确定各个端口角色的实施例的示意图;
图6显示为本发明的SDN控制器下发流表的流程图;
图7显示为本发明的在SDN框架下基于STP消除冗余链路的方法的模拟测试环境示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的在SDN框架下基于STP消除冗余链路的方法采用了类似STP的算法,可以提高网络的可靠性。当一条链路断掉的时候,另一条链路仍然可以传输数据,同时消除物理环路广播风暴的问题。
在本发明中,SDN控制器通过LLDP协议收集全网拓扑结构,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文所造成的报文处理能力下降的问题发生。
参照图1,本发明的在SDN框架下基于STP消除冗余链路的方法包括以下步骤:
步骤S1、SDN控制器定时通过LLDP协议获取链路状态信息和网络拓扑结构。
SDN控制器在开始计算全网生成树之前,需要通过LLDP协议去获得全网的链路状态信息和网络拓扑结构。
与传统网络中链路发现由各个网元自主进行不同,SDN网络中的链路发现工作由SDN控制器统一完成。如图2所示,SDN控制器在执行链路发现过程时,首先通过一个Packet_out消息向所有与之相连接的SDN交换机发送LLDP数据包,该消息命令SDN交换机将LLDP数据包发送给所有端口。一旦SDN交换机接收到Packet_out消息,就会将LLDP数据包通过其所有的端口发送给其他与之连接的设备。如果其邻居交换机是一台OpenFlow交换机,那么该SDN交换机将执行相应的流表查找操作。因为SDN交换机中并没有专门的流表项用于处理LLDP消息,所以它将通过一个Packet_in消息将数据包发送给SDN控制器。而SDN控制器在接收到Packet_in消息后,会对数据包进行分析并在其保存的链路发现表中创建两台交换机之间的链接记录和链路状态信息。其中,链路状态信息包括链路速率、端口状态和网桥的MAC地址信息等。网络中其它SDN交换机也都将采用与上述过程相同的方式向SDN控制器发送Packet_in消息。因此SDN控制器将能够创建出完备的全网拓扑视图。
其中,Packet_out用于由控制器向外发送匹配某条流表项的数据报文。当有报文匹配某条流表项时,该流表项的Action是output to Controller-Port的时候,这个报文就会通过Packet-in的消息送到控制器。
具体地,SDN控制器获取网络拓扑结构时,包括以下步骤:
1)SDN控制器定时地触发带LLDP的Packet_out消息,发送至所有与之相连接的SDN交换机。
其中,定时触发的周期缺省值为1秒,用户也可以根据实际应用进行修改。
2)SDN交换机发送带数据包的Packet_in消息至SDN控制器。
3)SDN控制器在接收到Packet_in消息后,对数据包进行分析并其中的链路发现表中创建两台交换机之间的链接记录,从而构建全网拓扑视图。
本发明通过扩展LLDP协议去获取链路状态信息。如图3所示,LLDP报文需要扩展接口状态TLV(Type-Length-Value)和链路速率TLV。接口状态TLV指定此接口是UP(打开)还是Down(关闭)。如果接口是Forwarding状态,接口UP/Down的变化将会触发生成树的重新计算。链路速率TLV指定链路的速率,控制器再根据SDN交换机上报的链路速率,计算路径开销。
LLDP协议可以将本端设备的主要能力、管理地址、设备标识、接口标识、接口状态(扩展的TLV,UP/Down)、链路状态(扩展的TLV,10/100/1000M)和网桥MAC地址(属于已有的“Chassis ID”TLV的子类型)等信息组织成不同的TLV,并封装在LLDPDU中发布给与自己直连的邻居。邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路状态信息。
另外,路径开销是在SDN控制器获取网络拓扑结构时,根据链路速率计算获得的。本发明重新定义了路径开销Path Cost标准,具体按如下公式进行计算:
全双工链路中,Path Cost=200Gbps/当前速率
汇聚链路中,Path Cost=200Gbps/当前速率-1
半双工链路中,Path Cost=200Gbps/当前速率+1
具体地,Path Cost标准如下表所示:
表1、Path Cost标准
速率 |
链路类型 |
Path Cost |
100G |
汇聚 |
1 |
100G |
全双工 |
2 |
40G |
汇聚 |
4 |
40G |
全双工 |
5 |
10G |
汇聚 |
19 |
10G |
全双工 |
20 |
1G |
汇聚 |
199 |
1G |
全双工 |
200 |
100M |
汇聚 |
1999 |
100M |
全双工 |
2000 |
100M |
半双工 |
2001 |
10M |
汇聚 |
19999 |
10M |
全双工 |
20000 |
10M |
半双工 |
20001 |
步骤S2、SDN控制器确定根桥。
获取全网的链路状态信息和网络拓扑结构之后,SDN控制器需要根据网桥ID确定根桥。其中,网桥ID(Bridge ID)最小的网桥被称为根桥。网桥ID由网桥的优先级和网桥MAC地址组成。网桥MAC地址由SDN交换机通过LLDP协议并封装在Packet_in消息中上报给SDN控制器的。网桥的优先级为可配置,缺省值为32768。在缺省情况下,根桥为MAC地址最小的网桥。
参照图4,SDN控制器确定根桥时,包括以下步骤:
步骤S21、SDN控制器获取所有的网桥ID。
步骤S22、SDN控制器找出优先级最小的网桥ID。
步骤S23、SDN控制器查找是否存在优先级与最小优先级相同的网桥ID;若是,转入步骤S24;若否,则确定该具有最小优先级的网桥为根桥。
步骤S24、SDN控制器比较具有最小优先级的网桥ID的MAC地址,找出MAC地址最小的网桥ID。
步骤S25、确定该MAC地址最小的网桥为根桥。
步骤S3、SDN控制器确定SDN交换机的端口角色。
SDN控制器在确定根桥以后,将根据各路径的Path Cost确定SDN交换机的每个端口角色。其中,端口角色包括根端口、指定端口和可选端口。
具体地,端口角色的判断规则如下:
1)若一个端口到达根桥的路径是该端口所在网桥到达根桥的最佳路径,则该端口称为根端口(Root Port,RP)。全网中只有根桥是没有根端口的,根端口的状态为Forwarding(转发)。
2)每一个网段选择到根桥最近的网桥作为指定网桥,该指定网桥到这一网段的端口称为指定端口(Designated Port,DP),指定端口的状态为Forwarding。
3)既不是指定端口,也不是根端口的端口称为可选端口(Alternated Port,AP)。可选端口的状态为Discarding(丢弃)。
图5所示即为根据路径的Path Cost来确定各个端口角色的实施例的示意图。
步骤S4、SDN控制器确定SDN交换机的端口状态。
具体地,SDN交换机的端口状态包括Discarding和Forwarding两种状态。具体定义如下表所示。
表2、端口状态定义
其中,SDN控制器确定根端口和指定端口的端口状态为Forwarding,可选端口的端口状态为Discarding。
步骤S5、SDN控制器根据端口状态将流表下发到SDN交换机。
如图6所示,下发流表包括以下步骤:
步骤S51、SDN控制器判断端口状态是否为Forwarding;若是,转入步骤S52;若否,转入步骤S53;
步骤S52、设置流表的Match字段为入端口,转发报文;
步骤S53、设置流表的Match字段为入端口,丢弃报文。
本发明的在SDN框架下基于STP消除冗余链路的方法的模拟测试环境如图7所示。在该测试环境中,依次执行如下步骤:
1)按照图示进行组网,SDN控制器感知全网拓扑结构;
2)流量发生器向流量接收器发送二层报文;
3)流量沿着链路网桥ID0050-〉网桥ID0030-〉网桥ID1045转发;
4)当网桥ID0050到网桥ID0030的链路发生故障时,根据本发明的方法,流量将会沿着新链路网桥ID0050-〉网桥ID0001-〉网桥ID1045转发。
综上所述,本发明的在SDN框架下基于STP消除冗余链路的方法该算法集中在SDN控制器上完成的,SDN控制器掌握了全网的网络拓扑结构和链路状态信息,在无需交互BPDU的情况下,可以对生成树进行统一计算,从而解决了STP协议收敛比较慢的问题;重新定义了Path Cost的标准,可支持100Gbps,适用于更多的链路类型,更易于大型网络的部署;利用LLDP协议可以动态检测网络拓扑的变化,减少了网络的维护成本;在SDN框架下,对传统的STP进行了改进,网络边缘的端口直接与终端相连,不是和其它网桥相连的端口可以直接进入转发状态,不需要任何延时;优化了STP的端口状态,支持Discarding和Forwarding,减少了一个端口从Blocking状态迁移到Forwarding状态的时间。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。