一种快速处理流表的方法和装置制造方法

文档序号:7818342阅读:400来源:国知局
一种快速处理流表的方法和装置制造方法
【专利摘要】本发明提供一种快速处理流表的方法和装置,应用在SDN控制器上,包括:在SDN控制器本地建立一张hash表;接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口;根据提取的报文转发信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。根据本发明,可以提高SDN控制器处理Packet_in报文的速度以及降低Packet in报文的处理时延。
【专利说明】一种快速处理流表的方法和装置

【技术领域】
[0001]本发明涉及网络通信【技术领域】,特别涉及一种软件定义网络(Software DefinedNetwork, SDN)中SDN控制器快速处理流表的方法和装置。

【背景技术】
[0002]SDN技术通过将传统网络设备的控制平面与数据平面分离,从而实现网络流量的灵活控制。相应地,SDN架构中包括SDN控制器和SDN交换机,其中:SDN控制器和SDN交换机之间通过SDN管理通道进行通信,SDN控制器根据用户的配置或者动态运行的协议生成流表下发到SDN交换机,SDN交换机依据SDN控制器下发的流表进行报文处理。


【发明内容】

[0003]本发明提供一种快速处理流表的方法和装置,通过本发明,可以提高SDN控制器处理Packet_in报文的速度以及降低Packet in报文的处理时延。
[0004]具体地,本发明是通过如下技术方案实现的:
[0005]一种快速处理流表的方法,该方法应用在SDN控制器上,包括:
[0006]在SDN控制器本地建立一张hash表;
[0007]接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口 ;
[0008]根据提取的报文转发信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。
[0009]其中,SDN控制器在下发第二报文给交换机的同时,进一步把第一报文的原有内容封装成第三报文发送给交换机,以便交换机解析该报文后,根据本地保存的流表项加以转发。
[0010]其中,当转发报文的源、目的IP地址不在同一个交换机上时,所述SDN控制器根据提取的报文转发信息及计算的出端口生成流表项,具体为:
[0011]SDN控制器进一步修改该转发报文的五元组信息和/或封装隧道信息,以形成该报文在二、三层网络上转发的完整流表项,然后再将该流表项组装成第二报文发送给交换机。
[0012]其中,该方法还包括:
[0013]当SDN控制器接收到交换机发送的Port_StatuS报文告知出端口发生故障时,更新SDN的网络拓扑信息,以便在后续Hash计算该交换机的出端口时,将该发生故障的出端口剔除。其中,
[0014]所述第一报文为Packetjn报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;
[0015]所述第二报文为FloW_Mod报文,其中携带有指导交换机转发所述报文的流表项;
[0016]所述第三报文为Packet_out报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;
[0017]所述交换机在SDN网络中的拓扑信息为该交换机在SDN网络中的上行端口。
[0018]本发明同时提供一种快速处理流表的装置,运行在SDN控制器上,包括:
[0019]Hash表建立单兀,用于在SDN控制器本地建立一张hash表;
[0020]出端口计算单元,用于接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口;
[0021]流表下发单元,用于根据提取的转发报文信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。
[0022]其中,流表下发单元在下发第二报文给交换机的同时,进一步把第一报文的原有内容封装成第三报文下发给交换机,以便交换机解析该报文后,根据本地保存的流表项加以转发。
[0023]其中,当转发报文的源、目的IP地址不在同一个交换机上时,所述流表下发单元根据提取的转发报文信息及计算的出端口生成流表项,具体为:
[0024]流表下发单元进一步修改该转发报文的五元组信息和/或封装隧道信息,以形成该报文在二、三层网络上转发的完整流表项,然后将该流表项组装成第二报文发送给交换机。
[0025]其中,该装置还包括:
[0026]拓扑更新单元,用于当SDN控制器接收到交换机发送的Port_Status报文告知出端口发生故障时,更新SDN的网络拓扑信息,以便在后续流表计算单元在计算该交换机的出端口时,将该发生故障的出端口剔除。
[0027]其中,
[0028]所述第一报文为Packetjn报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;
[0029]所述第二报文为FloW_Mod报文,其中携带有指导交换机转发所述报文的流表项;
[0030]所述第三报文为Packet_out报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;
[0031]所述交换机在SDN网络中的拓扑信息为该交换机在SDN网络中的上行端口。
[0032]根据本发明,可以保证在实现流表负载分担的前提下,可以提高SDN控制器处理Packet_in报文的速度以及降低Packet in报文的处理时延。

【专利附图】

【附图说明】
[0033]图1是本发明SDN网络中流量转发的示意图;
[0034]图2是本发明提供的快速处理流表的方法流程示意图;
[0035]图3是本发明提供的快速处理流表的装置所在设备的硬件架构示意图;
[0036]图4是本发明提供的快速处理流表的功能模块示意图。

【具体实施方式】
[0037]如图1所示,为SDN网络中的流量转发示意图。在该SDN网络中,SW-1、SW-2、SW-3和SW-4是支持SDN协议的交换机,它们与SDN控制器(Controller)共同组成一个SDN网络,其中该4台交换机只负责数据转发,而指导所述交换机进行数据转发的流表则从Controller通过SDN管理通道下发。
[0038]下面以SDN网络中最为流行的OpenFlow技术为例,描述图1所示的SDN网络中的流量转发流程,具体如下:
[0039]S11、来自主机的流量到达交换机(假设为SW-1)后,先查询交换机(SW-1)本地保存的流表,如果查找到匹配的流表项,则根据该流表项的指导进行相应处理;如果没有查找到匹配的流表项,则交换机(SW-1)将首包封装到SDN协议的Packet_in报文中,然后上送到SDN控制器(Controller)进行步骤S2。
[0040]S12、SDN控制器(Controller)分析Packet_in报文中原始报文的源MAC、目的MAC、协议类型、源IP、目的IP等字段的信息,查询SDN控制器(Controller)本地保存的流表,如果没有查询到对应的匹配项,则按照预定的算法(例如:轮询计算的方式)计算出流表项。其中流表项通常包括:出端口、修改MAC、指定隧道信息等。
[0041]S13、SDN控制器(Controller)在本地保存该计算出的流表项,并将流表项封装成Flow_Mod报文后下发到交换机(SW-1)。
[0042]S14、交换机(SW-1)对接收到的该封装的FloW_Mod报文后对之进行解析,获取流表项并在本地保存,以指导后续流量的转发。
[0043]其中,在上述步骤中,通常把从Packet_in报文发给Controller以及Controller通过Flow_Mod报文下发流表项的这段时间,称为Packet_in时延。另外,在交换机进行流量转发期间,如果其上的端口(假定为Port2)发生故障,则交换机(SW-1)还需要发送Port_Status报文给Controller告知该事件(例如,端口 Port2发生故障)。Controller收到该报告后,删除在本地保存的有关该交换机(SW-1)所有出端口为该故障端口(Port2)的流表项。
[0044]在正常情况下,当交换机上存在多个出端口,则其上的流量均能够从该多个出端口负载分担转发出去(例如=SW-1的流量都能通过Portl和Port2负载分担转发出去)。然而, 申请人:经过研究,发现上述流程仍然存在较多可以优化的地方。例如:
[0045]l、Packet_in报文上送到Controller之后,Controller查询流表信息的这个处理过程,消耗了 Controller上宝贵的CPU资源,延长了 Packet_in报文的处理时间;
[0046]2、在Controller计算出流表项后,需要先保存流表项再下发给交换机,这个处理过程,不仅消耗了 Controller的内存资源,而且同样也消耗了 Controller处理保存操作时的CPU资源;
[0047]3Xontroller保存流表项的目的在于后续进行负载分担时使用,其在后期并不需要和交换机的流表保持同步,显然,如果能够采用其他方式也能实现负载均衡的话,那么保存流表就完全没有必要。
[0048]4、当交换机的端口发生故障(DOWN掉),都会导致ControlIer删除流表,如此也大幅增加了 Controller诸多的处理流程,消耗了 Controller上的CPU资源。
[0049]为此,本发明提供一种快速处理流表的方法和装置,通过本发明方案,可以保证在实现流表负载分担的前提下,大幅提高SDN控制器处理Packet_in报文的速度以及有效降低Packet in报文的处理时延。
[0050]如图2所示,为本发明提供的快速处理流表负载分担的方法流程图,该方法应用在SDN控制器上,包括:
[0051]S21、在SDN控制器本地建立一张hash表。
[0052]建立Hash表的目的,是为后续SDN控制器下发流表实现交换机不同出端口转发流量负载分担时使用。其中,在一个示例性的例子中,所述Hash表中通常包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本五元组信息和报文长度等信息。
[0053]S22、接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口。
[0054]例如:在一个示例性的例子中,当图1所示的交换机SW-1从Port3上收到I个来自主机的转发报文时,首先查询SW-1本地保存的流表,如果没有发现匹配到对应的流表项,那么SW-1将通过SDN管理通道,将该转发报文封装成第一报文(例如Packet_in报文)上送给SDN控制器(Controller)。其中,所述第一报文中携带有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本五元组信息以及报文长度等报文转发信息。所述SDN控制器接收到第一报文后,会剥离封装的报文头,提取出里面的载荷报文,然后根据载荷报文里的源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本五元组以及报文长度等信息,以及此前学习到的SW-1在SDN网络中的拓扑信息(即上行UP的端口),按照预定的hash算法计算该转发报文的出接口,亦即SW-1上的Portl或者Port2。
[0055]S23、根据提取的报文转发信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。
[0056]例如,在图1所示的例子中,当SDN控制器计算出转发报文的出接口后,根据此前提取出的报文转发信息及计算的出端口生成对应的流表项,然后将该流表项封装成第二报文(例如Flow_Mod报文)下发给交换机SW-1。当交换机SW-1接收到Controller发送的第二报文后,通过解析该报文,即可获取该转发报文对应的流表项,然后在本地对该流表项加以保存,以用于指导后续二层报文的转发。
[0057]为了避免交换机上送给SDN控制器的首包转发报文不因匹配不到流表而丢掉,在本发明中,SDN控制器在下发流表项给交换机的同时,还需要一并把交换机此前发送给SDN控制器的Packet_in报文的原有内容封装成第三报文(例如:Packet_out报文),发给交换机SW-1,以便交换机SW-1解析后,根据本地保存的流表项加以转发。
[0058]进一步地,当转发报文的源、目的IP不在同一个SDN交换机上时,所述SDN控制器根据提取的报文转发信息及计算的出端口生成流表项,具体为:
[0059]SDN控制器进一步修改该转发报文的五元组信息和/或封装隧道等信息,以形成该报文在二、三层网络上转发的完整流表项,然后再将该流表项组装成第二报文(例如Flow_Mod报文),发送给SDN交换机。
[0060]例如,当转发报文为不同SDN交换机间的二层报文转发时,经过SDN控制器修改转发报文的目的IP地址和封装隧道信息后,最终在源SDN交换机上生成的流表匹配项为报文的入端口、源MAC与目的MAC、ETH类型为IPv4、源IP与目的IP,流表动作为向经修改的vxlan隧道口发送报文,隧道的目的IP为经修改的目的交换机所在的边缘节点VTEP IP地址,隧道ID为network的vxlan隧道ID。在目的交换机上生成的流表匹配项则为VXLAN隧道,源MAC和目的MAC,ETH类型为IPv4、源IP与目的IP,流表动作为从出端口发送此报文。
[0061]当转发报文为三层转发时,如果SDN控制器判断报文的源IP与目的IP属于同一个交换机,则向该交换机下发的流表匹配项为报文入端口、源MAC为源主机的MAC地址、目的MAC为修改的该交换机全局的MAC地址、ETH类型为IPv4、源IP与目的IP,流表动作为修改源MAC为该交换机的全局MAC地址,目的MAC为目的主机的MAC地址,出端口为目的主机所在Port,且TTL减I。如果属于不同的交换机,则需要对源主机所在交换机下发流表,匹配项为报文入端口、报文的源MAC与目的MAC、ETH类型、源IP与目的IP,流表动作为从修改的VXLAN隧道发送报文,隧道的目的地址为目的主机所在交换机对应的边缘节点的VTEPIP,隧道ID为目的所属network的VXLAN ID ;在目的主机所在的SDN交换机下发流表,匹配项为报文入端口、报文源MAC与目的MAC、ETH类型、源IP、目的IP、隧道ID,流表动作为从目的主机所在端口发送报文。
[0062]另外,根据本发明,当交换机的出端口发生故障(假设为SW-1的P0rt2D0Wn掉)后,交换机同样会发送Port_Status报文给SDN控制器告知该事件。此时,SDN控制器接收到该报文后,只需要更新SDN的网络拓扑信息,就可以在随后的交换机上送Packet_in报文计算出端口时,将该发生故障的出端口(例如Port2)剔除在外,不会参与出端口的Hash计算,因此,SDN控制器计算的出接口也不会计算出来有发生故障端口的结果,即流量只能从正常出端口(例如SWl上的Portl)处理。
[0063]对应于上述方法,本发明同时提供一种处理流表装置,所述装置运行在SDN控制器上,如图3所示,该控制器在硬件架构上包括有CPU 31、存储器32、接口 33以及用于进行内部连接的内部总线34。所述装置通常以软件的形式存储在存储品33上,从功能上划分,如图4所示,该装置包括:
[0064]Hash表建立单兀41,用于在SDN控制器本地建立一张hash表;
[0065]出端口计算单元42,用于接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口;
[0066]流表下发单元43,用于根据提取的转发报文信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。
[0067]其中,流表下发单元43在下发第二报文给交换机的同时,还把第一报文的原有内容封装成第三报文下发给交换机,以便交换机解析该报文后,根据本地保存的流表项加以转发。
[0068]当转发报文的源、目的IP地址不在同一个交换机上时,所述流表下发单元42根据提取的转发报文信息及计算的出端口生成流表项,具体为:
[0069]流表下发单元42进一步修改该转发报文的五元组信息和/或封装隧道信息,以形成该报文在二、三层网络上转发的完整流表项,然后将该流表项组装成第二报文发送给交换机。
[0070]进一步地,该装置还包括:
[0071]拓扑更新单元44,用于当SDN控制器接收到交换机发送的Port_Status报文告知出端口发生故障时,更新SDN的网络拓扑信息,以便在后续流表计算单元在计算该交换机的出端口时,将该发生故障的出端口剔除。
[0072]进一步地,
[0073]所述第一报文为Packetjn报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本五元组信息和报文长度信息;
[0074]所述第二报文为FloW_Mod报文,其中携带有指导交换机转发所述报文的流表项;
[0075]所述第三报文为Packet_out报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;
[0076]所述交换机在SDN网络中的拓扑信息为该交换机在SDN网络中的上行端口。
[0077]与当前的技术方案相比,本发明方案保证在实现流表负载分担的前提下,可以提高SDN控制器处理Packet_in报文的速度以及降低Packet in报文的处理时延。根据实测结果,依据本发明,在相同的硬件背景下,Packet_in的处理性能提高一倍以上,大幅度减少了 Packet_in报文的处理时延。
[0078]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种快速处理流表的方法,该方法应用在SDN控制器上,包括: 在SDN控制器本地建立一张hash表; 接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口 ; 根据提取的报文转发信息及计算的出端口生成流表项,然后将该流表项封装成第二报文下发给交换机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: SDN控制器在下发第二报文给交换机的同时,进一步把第一报文的原有内容封装成第三报文发送给交换机,以便交换机解析该报文后,根据本地保存的流表项加以转发。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当转发报文的源、目的IP地址不在同一个交换机上时,所述SDN控制器根据提取的报文转发信息及计算的出端口生成流表项,具体为: SDN控制器进一步修改该转发报文五元组信息和/或封装隧道信息,以形成该报文在二、三层网络上转发的完整流表项,然后再将该流表项组装成第二报文发送给交换机。
4.根据权利要求1所述的方法,其特征在于,该方法还包括: 当SDN控制器接收到交换机发送的Port_Status报文告知出端口发生故障时,更新SDN的网络拓扑信息,以便在后续Hash计算该交换机的出端口时,将该发生故障的出端口剔除。
5.根据权利要求1所述的方法,其特征在于, 所述第一报文为Packetjn报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本五元组信息以及报文长度信息; 所述第二报文为FloW_Mod报文,其中携带有指导交换机转发所述报文的流表项; 所述第三报文为Packet_out报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息; 所述交换机在SDN网络中的拓扑信息为该交换机在SDN网络中的上行端口。
6.一种快速处理流表的装置,运行在SDN控制器上,包括: Hash表建立单兀,用于在SDN控制器本地建立一张hash表; 出端口计算单元,用于接收来自交换机的第一报文,提取出该报文中携带的报文转发信息,并结合学习到的该交换机在SDN网络中的拓扑信息,依据Hash算法计算出该交换机的出接口 ; 流表下发单元,用于根据提取的报文转发信息及计算的出端口生成流表项并,然后将该流表项封装成第二报文下发给交换机。
7.根据权利要求6所述的装置,其特征在于,流表下发单元在下发第二报文给交换机的同时,进一步把第一报文的原有内容封装成第三报文下发给交换机,以便交换机解析该报文后,根据本地保存的流表项加以转发。
8.根据权利要求6所述的装置,其特征在于,当转发报文的源、目的IP地址不在同一个交换机上时,所述流表下发单元根据提取的报文转发信息及计算的出端口生成流表项,具体为: 流表下发单元进一步修改该转发报文五元组信息和/或封装隧道信息,以形成该报文在二、三层网络上转发的完整流表项,然后再将该流表项组装成第二报文发送给交换机。
9.根据权利要求6所述的装置,其特征在于,该装置还包括: 拓扑更新单元,用于当SDN控制器接收到交换机发送的Port_Status报文告知出端口发生故障时,更新SDN的网络拓扑信息,以便在后续出端口计算单元在计算该交换机的出端口时,将该发生故障的出端口剔除。
10.根据权利要求6所述的装置,其特征在于, 所述第一报文为Packetjn报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;所述第二报文为FloW_Mod报文,其中携带有指导交换机转发所述报文的流表项; 所述第三报文为Packet_out报文,包含有源MAC、目的MAC、协议类型、源IP、目的IP、IP协议版本、报文长度信息;所述交换机在SDN网络中的拓扑信息为该交换机在SDN网络中的上行端口。
【文档编号】H04L12/741GK104283785SQ201410597586
【公开日】2015年1月14日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】叶鹏军, 杨碧辉 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1