[0041] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0042] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0043] 实施例1
[0044] 本实施例公开了一种SDN的路由生成方法,其是在SDN框架下,对传统的RIP路由协议进行了改进:1)将跳数和链路开销综合考虑作为路由选择的尺度,因此可以更准确地选择最优路径。2)路由生成的算法都是集中在SDN控制器上运行的,计算完成以后下发到各自的SDN交换机,无需RIP报文交互。3)SDN控制器可以知晓全网的网络络拓扑和链路状态,一旦由于链路异常导致的失效路由,可以马上更新路由表,不存在收敛较慢的问题。并且,跳数16不再表示不可达,链路开销65535表示不可达,所以改进后的路由算法,可以适用大型网络。
[0045] 如图1所示,SDN交换机(S1、S2、S3和S4)上传链路信息(例如:链路状态,链路开销等)给SDN控制器。SDN交换机上的流表和路由表内容由SDN控制器统一下发。SDN控制器在获得全网拓扑和所有路由信息以后,为每个交换机计算路由消息,然后下发给SDN交换机。
[0046] 本实施例的SDN的路由生成方法,具体如图2所示,包括:
[0047] 步骤S10,SDN控制器定时获取SDN的链路状态信息和网络拓扑结构。
[0048] 在本实施例中,为了能够实时地监控和更新网络拓扑结构和链路状态信息,SDN控制器是定时(按照更新周期)对SDN网络的链路状态信息和网络拓扑结构进行获取的,并且,其更新周期是可以根据实际应用进行修改的,缺省设置为10秒。
[0049] SDN控制器在开始计算路由之前,需要通过LLDP(Link Layer Discovery Protocol,链路层发现协议)协议去获得链路状态信息和整个网络拓扑结构。
[0050] LLDP协议是一种标准的链路发现方式,其可以将本端设备的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDP数据包中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询和判断链路的通信状况。
[0051] 而本实施例中,SDN控制器需要获得的是链路状态信息和网络拓扑结构,因此,本实施例将LLDP数据包进行了扩展,增加了接口状态TLV和链路状态TLV,其结构如图3所示。接口状态TLV指定此接口是UP还是Down;链路状态TLV指定链路的速率,速率越大链路开销越小。在本实施例中,链路开销=400000/n,其中,n为链路速率,单位为M。当链路速率为
10G,即n为10000M,那么,链路开销为40。目前支持的最大链路速率为100G。
[0052] SDN控制器根据反馈的TLV字段获得网络拓扑和链路状态信息。如图4所示,SDN控制器在执行链路发现过程时,首先通过一个Packet_out消息向所有与之相连接的SDN交换机发送LLDP数据包,该消息命令SDN交换机将LLDP数据包发送给所有端口。一旦SDN交换机接收到Packet_out消息,它就会把LLDP数据包通过其所有的端口发送给其他与之连接的设备。如果其邻居交换机是一台OpenFlow交换机,那么该交换机将执行相应的流表查找操作。因为SDN交换机中并没有专门的流表项用于处理LLDP消息,所以它将通过一个Packet_in消息将LLDP数据包发送给控制器。而SDN控制器在接收到Packet_in消息后,会对LLDP数据包进行分析并在其保存的链路发现表中创建两台交换机之间的链接记录和链路状态信息,例如:链路的速率和端口状态信息等。网络中其它SDN交换机也都将采用与上述过程相同的方式向SDN控制器发送Packet_in消息,因此SDN控制器将能够创建出完备的网络拓扑视图。
[0053] 步骤S20,SDN控制器统一计算路由信息,生成每个SDN交换机的流表、一级IP索引路由表和二级IP索引路由表。
[0054] 获取每个SDN交换机的初始流表项和初始路由表项。其中,初始流表项和初始路由表项都是用户配置的直接路由。如图5所示,S1、S2和S3是SDN交换机,其中,S1的所有初始路由表项如图中左侧的表格所示,包括10.1.0.0和10.2.0.0两个目的网段,且其掩码均为255.0.0.0。
[0055] 并且,SDN交换机的初始的路由表项构成其一级IP索引路由表。
[0056] 根据每个SDN交换机初始流表项和初始路由表项,同步SDN的路由,并通过RIP协议和路由开销获取最佳路径,从而获得路由信息:
[0057] SDN控制器在获得全网络拓扑结构以后,将采用距离矢量的方法在相邻路由器之间同步路由表,并进行矢量堆加。并且,SDN控制器从收集到的源信息中选择到达目标地址的最佳路径,从而获得路由信息。
[0058] 在本实施例中,最佳路由的选择是基于RIP协议,采用路由开销来决定的。其中,路由开销等于跳数乘以单个链路开销。
[0059] 并且,针对一个SDN交换机,当出现多条路由表项的链路开销相同时,即判定链路开销相同的路由为等价路由,一个SDN交换机最多支持16条等价路由的负载均衡。
[0060] 根据路由信息,将每个SDN交换机对应的目的网段写入相应的流表,同时增加一个动作“OFPAT_LOOKUP_IP_RT”,表明在匹配路由时需要根据目的网段查找二级IP索引路由表;将对应的目的IP地址、掩码、接口名或接口IP地址、网关和路由开销写入相应的二级IP索引路由表中。
[0061] 图5所示的SDN网络中,SDN交换机S1包括两个二级IP索引路由表,如图中右侧的两个表格。一个是针对目的网段为10.1.0.0的二级IP索引路由表,表示SDN交换机S1要到的目的网段10.1.0.0需通过接口E0,并且S1是与目的网段10.1.0.0是直连的,所以其路由开销为0(跳数为0,所以路由开销也为0)。一个是针对目的网段10.2.0.0的,表示SDN交换机S1要到的目的网段10.2.0.0需通过接口E1,并且S1是与目的网段10.2.0.0是直连的,路由开销为0
[0062] 同样的,在图6所示的SDN网络中,其给出了SDN路由器S5的一级IP索引路由表和二级IP索引路由表。并且从S5的目的网段为10.1.1.1的二级IP索引路由表中可以看出,其通过E0接口和E1接口的路由开销(通过E0接口的路由开销为100M速率的链路开销加上10M速率的链路开销,为44000;通过E1接口的路由开销为10M速率的链路开销加上100M速率的链路开销,也为44000)都是一样的,因此通过接口E0的路由和通过接口E1的路由是等价路由,为了实现路由负载均衡,在一级IP索引路由表中增加第一索引字段,二级IP索引路由表中增加第二索引字段,通过接口E0的路由的第二索引字段为2,通过接口E1的路由的第二索引字段为1。
[0063] 步骤S30,SDN控制器向每个SDN交换机下发相应的流表、一级IP索引路由表和二级IP索引路由表。
[0064] 实施例2
[0065] 本实施例公开了一种SDN的路由匹配方法,如图7所示,包括:
[0066] 根据报文的目的IP地址和掩码查找流表;
[0067] 根据流表查找一级IP索引路由表;
[0068] 根据流表和一级索引路由表查找二级IP索引路由表,获得相应的接口和网关,从而完成报文的路由匹配。
[0069] 并且,在查找二级IP索引路由表时,如果存在等价路由,那么根据二级IP索引路由表的第二索引字段回写到一级IP索引路由表的第一索引字段中,以实现路由负载均衡。
[0070] 如图8所示,当报文的目的IP地址为10.2.0.1,掩码为255.255.0.0时,首先根据目的IP和掩码查找流表,然后执行动作OFPAT_LOOKUP_IP_RT,从一级IP索引路由表的第一索引字段和目的网段查找二级IP索引路由表:从一级IP索引路由表中可知,目的网段10.2.0.0对应的第一索引字段为1;因此对应的,在二级IP索引路由表中查找的最佳路由为通过接口E1和网关10.3.0.1的路由。如果二级IP索引路由表中不存在其他的等价路由,那么报文会选择通过接口E1和网关10.3.0.1的路由进行传输。
[0071] 进一步地,如果二级IP索引路由表中存在其他的等价路由,即,通过接口E1和网关10.3.0.1的路由和通过接口E2和网关10.6.0.1的路由,这两个路由的路由开销都是44000,因此这两个路由是等价路由,所以,在获得了通过接口E1和网关10.3.0.1的路由后,需要将二级IP索引路由表中通过接口E1和网关10.3.0.1的路由表项对应的第二索引字段回写到一级IP索引路由表对应的第一索引字段中。那么当出现第二个目的IP地址为10.2.0.1、掩码为255.255.0.0的报文时,如图9所示,其也是根据目的IP和掩码查找流表,然后执行动作OFPAT_LOOKUP_IP_RT,从一级IP索引路由表的第一索引字段和目的网段查找二级IP索引路由表。此时,一级IP索引路由表中目的网段10.2.0.0对应的第一索引字段变为2,那么此次通过二级IP索引路由表查找出的最佳路由则变为通过接口E2和网关10.6.0.1的路由,并且将二级IP索引路由表中通过接口E2和网关10.6.0.1的路由表项对应的第二索引字段回写到一级IP索引路由表对应的第一索引字段中。如此往复,从而实现了路由的负载均衡。
[0072] 上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0073] 实施例3
[0074] 本实施例公开了一种SDN的路由生成和匹配系统100,其中,SDN包括SDN控制器210和SDN交换机220,如图10所示,包括获取模块110、生成模块120、下发模块130、流表查找模块140和IP索引路由表查找模块150。其中,获取模块110、生成模块120、下发模块130是应用在SDN控制器210当中,流表查找模块140和IP索引路由表查找模块150是应用在SDN交换机220当中。
[0075] 获取模块110用于定时获取SDN的链路状态信息和网络拓扑结构。其中,更新时间可以根据实际需要自行设定。并且,获取模块110是通过发送和接收LLDP数据包的方式来获取链路状态信息和网络拓扑结构的。
[0076] 生成模块120用于统一计算路由信息,生成每个SDN交换机的流表、一级IP索引路由表和二级IP索引路由表。生成模块120首先获取每个SDN交换机的初始流表项和初始路由表项,然后根据每个SDN交换机的初始流表项和初始路由表项,同步SDN的路由,并通过RIP协议和路由开销获取最佳路径,从而获得路由信息;最后将每个SDN交换机对应的目的网段写入相应的流表,将对应的目的IP地址、掩码、接口名或接口IP地址、网关和路由开销写入相应的二级IP索引路由表中。
[0077] 下发模块130用于向每一个SDN交换机下发相应的流表、一级IP索引路由表和二级IP索引路由表。
[0078] 流表查找模块140用于根据报文的目的IP地址和掩码查找流表。
[0079] IP索引路由表查找模块150用于根据流表查找模块140查找出的流表进一步查找相应的一级IP索引路由表和二级索引路由表,从而获得相应的接口和网关。
[0080] 此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施例中不存在其它的模块。
[0081] 并且,不难发现,本实施例为与第一实施例或者第二实施例相对应的系统实施例,本实施例可与第一实施例或者第二实施例互相配合实施。第一实施例或者第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例或者第二实施例中。
[0082] 综上所述,本发明的一种SDN的路由生成、匹配的方法和系统,将路由的生成全部集中在SDN控制器上完成,使得SDN控制器掌握了全网的路由信息、网络拓扑和链路状态信息,在无需交互协议报文的情况下,实现对每一个SDN交换机的路由计算,解决了RIP协议收敛比较慢的问题。并且,本发明使用路由开销替代了跳数作为路由选择的重要尺度,是重大地改进,解决了不能准确选择最优路径的问题和跳数限制的问题,因此本发明更加适合大型网络的部署。本发明还对LLDP协议进行了扩展,在LLDP报文中增加了接口状态TLV和链路状态TLV;使得SDN控制器可以创建出完备的网络拓扑视图,获取整个网络的链路状态信息。本发明的SDN控制器是采用定时发送和接收LLDP数据包的方式来采集网络拓扑和链路状态,这也就是说,SDN控制器可以实时地监控和更新网络拓扑结构和链路状态,动态检测网络拓扑的变化,减少了网络的维护成本。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0083] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。