CN112260948B - 一种基于批量更新的多核sdn交换机流表管理方法及系统 - Google Patents

一种基于批量更新的多核sdn交换机流表管理方法及系统 Download PDF

Info

Publication number
CN112260948B
CN112260948B CN202011110410.3A CN202011110410A CN112260948B CN 112260948 B CN112260948 B CN 112260948B CN 202011110410 A CN202011110410 A CN 202011110410A CN 112260948 B CN112260948 B CN 112260948B
Authority
CN
China
Prior art keywords
forwarding
version
flow table
updating
core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011110410.3A
Other languages
English (en)
Other versions
CN112260948A (zh
Inventor
姜艳
崔佳
宋磊
吴京洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongkehai Suzhou Network Technology Co ltd
Institute of Acoustics CAS
Original Assignee
Zhongkehai Suzhou Network Technology Co ltd
Institute of Acoustics CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongkehai Suzhou Network Technology Co ltd, Institute of Acoustics CAS filed Critical Zhongkehai Suzhou Network Technology Co ltd
Priority to CN202011110410.3A priority Critical patent/CN112260948B/zh
Publication of CN112260948A publication Critical patent/CN112260948A/zh
Application granted granted Critical
Publication of CN112260948B publication Critical patent/CN112260948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明属于SDN交换机的流表管理技术领域,具体地说,涉及一种基于批量更新的多核SDN交换机流表管理方法,该方法包括:多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。

Description

一种基于批量更新的多核SDN交换机流表管理方法及系统
技术领域
本发明属于SDN交换机的流表管理技术领域,具体地说,涉及一种基于批量更新的多核SDN交换机流表管理方法及系统。
背景技术
软件定义网络(Software Defined Network,SDN)交换机是一种新型网络创新架构,是网络虚拟化的一种实现方式。通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。
随着网络技术的不断发展,为了满足各种复杂的业务需求,网络状态的变化也正变得越来越频繁,在SDN网络中,需要通过不断更新SDN交换机中的流表来实现相应的网络功能,从而进行数据包的正确处理。同时,随着网络设备节点的不断增加,网络上的流量也呈现指数级的增长,SDN交换机的转发性能在整个网络中变得尤为重要。
为了提升性能,通常采用基于多核处理器的SDN交换机来进行数据包的转发,多核SDN交换机具有多个相对独立的转发核,可以并行执行数据包的转发流程;这对流表的更新效率和转发核的查表效率都提出了很高的要求,只支持全量更新的ACL算法具有很高的查表性能,但更新效率很低。目前,在SDN网络中控制器下发流表方式为逐条下发,而交换机采用ACL算法,每次需要全量更新查找树;因此,现有的逐条下发的更新流表的处理方法流表更新性能较差,无法满足业务要求。另外,上述现有的更新流表的处理方法中,为每个转发核设置对应的转发表的方案,可以避免多核间流表更新和查找冲突,但不利于网络流量在多核间的均衡,不能充分利用多核的优势,限制了转发性能。同样的,为每个转发核维护一套流表的方案,加剧了转发核的负担,更限制了转发性能。
发明内容
为解决现有技术存在的上述缺陷,本发明提出了一种基于批量更新的多核SDN交换机流表管理方法,该方法在多核SDN交换机中快速进行流表和表项加载的方法,以提高SDN交换机的流表更新性能和数据转发性能。通过控制平面与转发平面的分离,并将转发平面查表使用的多份流表发布版本交由控制平面统一管理,避免了每个转发核自己更新表项时都需要创建查找树,减轻了转发核负担,提高了交换机的转发性能。
本发明提供了一种基于批量更新的多核SDN交换机流表管理方法,该方法包括:
多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
多核SDN交换机的控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供多核SDN交换机的转发平面查表使用;其中,N为大于或等于1的正整数;
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;
多核SDN交换机的转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。
作为上述技术方案的改进之一,所述批量更新条件为预先设定的批量更新时间和预先设定的接收更新表项消息的数量N。
作为上述技术方案的改进之一,所述建表表,用于存储控制器实时下发的建表消息;
所述增量表,用于缓存控制器实时下发的更新表项消息;
所述全量表,用于维护多核SDN交换机内的所有表项;还用于在批量更新时,依据增量表缓存的N条更新表项消息对多核SDN交换机内的表项进行更改操作;
所述待修改版本为转发核未正在使用的、除了当前的流表发布版本之外的空闲流表版本;其中,空闲流表版本为转发核未正在使用的、具有查找树信息的流表发布版本。
作为上述技术方案的改进之一,所述如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;具体为:
如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;
然后,将缓存至增量表的N条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表;基于控制平面任选的待修改版本,查询是否需要新建流表;
如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;
如果待修改版本中已经有了所需要的流表,则不需要重复建表;
再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建。
作为上述技术方案的改进之一,所述更改操作为增加表项、删除表项或修改表项。
作为上述技术方案的改进之一,所述转发平面包括:M个独立的转发核;其中,M为大于或等于1的整数;
针对M个独立的转发核,控制平面至多需要维护不超过M+2个流表发布版本;
其中,该M+2个流表发布版本包括:M个独立的转发核中的每个独立的转发核正在使用的流表发布版本、待修改版本和当前的流表发布版本。
作为上述技术方案的改进之一,所述M+2个流表版本中的每个流表发布版本上均设置使用标识符reference,用于标识是否有转发核正在使用流表发布版本;
当无转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference为0;
当某个转发核使用流表发布版本时,将该流表发布版本的使用标识符reference加1;
当某个转发核查询结束后,将之前使用的流表发布版本的使用标识符reference减1;
流表发布版本的使用标识符reference的数值与正在使用该流表发布版本的转发核个数相同。
作为上述技术方案的改进之一,所述转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并各自查询到的转发规则进行转发;具体为:
转发平面中的每个独立的转发核对同一份当前最新流表发布版本进行并行查询,查找到当前最新流表发布版本,再对该当前最新流表发布版本进行查表,依据各自查询到的转发规则进行转发;同时,控制平面修改该当前最新流表发布版本的使用标识符reference。
本发明还提供了一种基于批量更新的多核SDN交换机流表管理系统,该系统包括:
存储模块,用于利用多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
发布版本创建模块,用于利用控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;和
转发模块,用于利用转发平面中的每个独立的转发核对当前最新流表发布版本进行查表,并依据各自查询到的转发规则进行转发。
本发明与现有技术相比的有益效果是:
本发明的方法采用批量更新表项的方式,进一步减少了创建查找树的次数,仅创建一份流表发布版本,供多个转发核并行查询,实现快速的表项加载,提高了流表的加载速度;同时由控制平面负责修改流表发布版本上的使用标识符和生成当前最新流表发布版本,避免每个转发核更新表项时都需要多次创建查找树,减轻了转发核负担,提高了多核SDN交换机的转发性能。
附图说明
图1是本发明的一种基于批量更新的多核SDN交换机流表管理方法的流程图;
图2是本发明的一种基于批量更新的多核SDN交换机流表管理方法的一个实施例的具体工作流程图;
图3是本发明的一种基于批量更新的多核SDN交换机流表管理方法的多核SDN交换机流表更新的示意图;
图4A是本发明的一种基于批量更新的多核SDN交换机流表管理方法的另一个实施例的创建发布版本的管理场景示意图;
图4B是图4A所示场景下转发核使用发布版本进行查表的示意图;
图4C是图4B所示场景下部分转发核完成查表并有更新表项需求的示意图;
图4D是图4C所示场景下有除正在查表的Fe1核之外的转发核进行查表的示意图;
图4E是图4D所示场景下正在查表的转发核结束查表的示意图;
图4F是图4E所示场景下有除正在查表的Fe3核之外的转发核进行查表的示意图。
具体实施方式
现结合附图对本发明作进一步的描述。
如图1所示,本发明提供了一种基于批量更新的多核SDN交换机流表管理方法,该方法由交换机控制平面维护流表的多个版本,即每个转发核正在使用的流表版本,待修改版本,以及当前的最新的流表发布版本;在达到批量更新条件时,负责对缓存至增量表中的N条更新表项消息,进行一次批量更新,可以支持控制平面修改流表发布版本上的使用标识符reference和转发平面中的多个转发核并行查表,并且避免了每个转发核更新表项时需要多次创建查找树,减轻了转发核的负担,提高了流表加载速度和转发性能。
在多核处理器中,当SDN交换机处于多核并行处理环境时,根据内部核分配的任务不同,分为控制平面和转发平面。控制平面在满足批量更新条件时,将缓存至增量表中的N条更新表项信息进行一次批量更新,仅创建一次具有查找树信息的当前最新流表发布版本,转发平面中的多个转发核并行查询同一份当前最新流表发布版本,并依据各自查询到的转发规则进行转发。
如图1所示,该方法具体包括:
多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
其中,所述建表消息包括建表的数量和对应的ID号;控制平面此时仅将建表消息存储在建表表中;在达到批量更新条件时,只需新建缺少的流表,对已有的流表不需要重复建表。所述建表表,用于存储控制器实时下发的建表消息;
控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;所述增量表,用于缓存控制器实时下发的更新表项消息;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;其中,N为大于1的正整数;
具体地,如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;
然后,将缓存至增量表的N条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表,同时更新完成后,将该增量表删除;
基于控制平面任选的待修改版本,查询是否需要新建流表;
如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;
如果待修改版本中已经有了所需要的流表,则不需要重复建表;
再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建。
所述全量表,用于维护多核SDN交换机内的所有表项;还用于在批量更新时,依据增量表缓存的N条更新表项消息对多核SDN交换机内的表项进行更改操作;
其中,所述更改操作为增加表项、删除表项或修改表项。
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;
其中,所述批量更新条件为预先设定的批量更新时间和预先设定的接收更新表项消息的数量N。
具体地,在数量机制中,设置每批次的批量更新的最多批量处理的表项消息的数量N,当本批次需要批量更新的表项消息数量达到预先设定的数量N时,判定满足批量更新的条件,同时将消息数量更新为0,继续下一次的消息数量的计数;
在时间机制中,设置生存周期时间和起始更新时间,在初始化时设置起始更新时间为0,当检测到当前时间大于生存周期时间和起始更新时间的加和时,表明该批次的批量更新的等待时间已达到预先设定的批量更新时间,满足批量更新的条件,同时将起始更新时间更新为当前时间,继续下一次的批量计时。
其中,批量更新条件的标准是预先设定的批量更新时间和预先设定的接收更新表项消息的数量N,二者满足其一即可;例如,预先设定的批量更新时间为10s,预先设定的接收更新表项消息的数量N为100,
当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了200条,则满足更新条件,一次批量更新200条更新表项消息;
当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了80条,则满足更新条件,一次批量更新80条更新表项消息;
当达到预先设定的接收更新表项消息的数量N为100,此时批量更新时间为8s,则满足更新条件,一次批量更新100条更新表项消息;
当达到预先设定的批量更新时间为10s,此时缓存至增量表的更新表项消息的数量达到了100条,则满足更新条件,一次批量更新100条更新表项消息。
所述待修改版本为转发核未正在使用的、除了当前的流表发布版本之外的空闲流表版本;其中,空闲流表版本为转发核为正在使用的、其上的使用标识符reference为0的、具有查找树信息的流表发布版本。在其他具体实施例中,空闲流表版本还可以是一个全新的、还没有查找树信息的流表发布版本。
如果之前所有发布版本都没有添加任何表项,则选择0号版本作为待修改版本;如果遍历之前生成的发布版本都有转发核正在使用该版本,则选择一个新版本作为待修改版本;由于最坏情况下,每个转发核都会占用一个发布版本,而控制平面需要1个待修改,同时需要1个可供发布的发布版本,因此,控制平面最多需要维护的版本数量为交换机内转发核数M+2。
其中,控制平面每次利用当前的更新后的全量表和建表表,并基于待修改版本,都会生成一个当前最新发布版本,多个转发核并行查询同一份控制平面生成的该当前最新发布版本,并依据各自查询到的转发规则进行转发。
当转发平面的某个核正在使用某个版本查表时,如果此时有更新表项消息,并且控制平面生成当前的最新发布版本时,本次查表依旧使用正在查的该某个版本,在该转发核完成转发后,在下一次再有查表需求时,则按照当前的最新的发布版本进行查找。在进行更改操作时,利用批量更新表项的方法,进一步减少了创建查找树信息的次数,提高了流表的加载速度;同时由控制平面负责修改发布版本上的使用标识符和生成最新流表发布版本,避免每个转发核更新流表时都需要创建查找树,减轻了转发核负担,提高了交换机的转发性能。
转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。
具体地,转发平面中的每个独立的转发核对同一份当前最新流表发布版本进行并行查询,查找到当前最新流表发布版本,再对该当前最新流表发布版本进行查表,依据各自查询到的转发规则进行转发,并根据预先设定的转发次数,完成转发核的转发;同时,控制平面修改该当前最新流表发布版本上的使用标识符reference。
其中,所述转发平面包括:M个独立的转发核,且相互之间独立;其中,M为大于或等于1的整数;
针对M个独立的转发核,控制平面至多维护M+2个流表发布版本;其中,控制平面至多维护M+2个流表发布版本是指最多需要维护M+2个流表发布版本,而不是无限制的维护发布版本,从而占用控制平面的处理资源。
其中,该M+2个流表发布版本包括:M个独立的转发核中的每个独立的转发核正在使用的流表发布版本、待修改版本和当前的流表发布版本。
所述M+2个流表版本中的每个流表发布版本上均设置使用标识符reference,用于标识是否有转发核正在使用流表发布版本;
具体地,当无转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference为0;
当有1-M个转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference从1累加到与转发核的个数相同的数值。
本发明还提供了一种基于批量更新的多核SDN交换机流表管理系统,该系统包括:
存储模块,用于利用多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
发布版本创建模块,用于利用控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;和
转发模块,用于利用转发平面中的每个独立的转发核对当前最新流表发布版本进行查表,并依据各自查询到的转发规则进行转发。
实施例1.
如图2所示,本发明提供了一种基于批量更新的多核SDN交换机流表管理方法,该方法包括:
步骤21:控制平面接收当前控制器发来的消息;
步骤22:判断接收到的步骤21中的消息是否为更新表项消息;
如果接收到的步骤21中的消息是更新表项消,则转入步骤23;
如果接收到的步骤21中的消息不是更新表项消,则转入步骤24;
步骤23:将控制器实时下发的表项更新信息缓存在控制平面建立的增量表中,同时开启本次批量更新的计时,依次将待更新表项和对应的操作(增加/删除/修改)写入增量表的尾部,链表写入的顺序即为交换机收到消息的顺序,即时间顺序,此时控制平面不断对增量表中缓存的更新表项消息的数量和缓存时间进行统计。
步骤25:根据步骤23中统计的更新表项消息的数量和缓存时间,判断是否满足批量更新的条件;
如果达到批量更新条件,则转入步骤251;
如果未达到批量更新条件,则返回步骤23;
步骤251:新建一新的增量表,用于继续缓存控制器下发的更新表项消息,记录步骤23中增量表的头尾表项,将头尾表项之间的N条更新表项消息进行一次批量更新,得到更新后的全量表;然后修改增量表的头表项为原来的尾表项,并结束本批次计时,将下批次批量更新的起始时间设置为当前时间。
步骤252:选择当前空闲的流表版本作为待修改版本,利用步骤251中的更新后的全量表,在控制平面任选的待修改版本上,生成具有查找树信息的当前最新流表发布版本;
步骤253:多个转发核通过查询步骤252生成的当前最新流表发布版本,并根据各自查询到的转发规则进行转发,结束处理流程。
步骤24:判断接收到的步骤21中的消息是否为建表消息;
如果接收到的步骤21中的消息是建表消息,则转入步骤241;
如果接收到的步骤21中的消息不是建表消息,结束处理流程;
步骤241:控制平面维护N+2份流表版本,通过解析步骤24收到的建表消息,将建表信息存储在建表表中,然后结束处理流程。
实施例2.
图3为本实施例提供的一种基于批量更新的多核SDN交换机流表更新示意图,具体流表更新的步骤,如图3所示:
本实施例通过设计tableId这一变量来唯一标识一张流表,控制器发送新建流表消息,交换机收到消息后解析tableId,判断是否存在该流表,若不存在,在交换机流表表中记录建该表的信息;若存在,则直接舍弃该消息。
图3中控制器下发4条建表信息,多核SDN交换机分别在每个发布版本中建立了Table1,Table2,Table3,Table4四张流表,这个过程是在批量更新前实现的过程,图中以显示待修改版本上的4张流表为例。
当控制器实时下发更新表项消息,多核SDN交换机的控制平面中,增量表缓存更新表项消息,具体地,将更新表项消息和对应的操作(增加/删除/修改),即增加Entry 1(Addtable 1Entry 1),增加Entry 1(Add table 2Entry 1),增加Entry 2(Add table 2Entry2),增加Entry 3(Add table 2Entry 3),删除Entry 1(Del table 1Entry 1),增加Entry1(Add table 4Entry 1),增加Entry 2(Add table 4Entry 2),并按照时间先后顺序依次写入增量表的尾部,更新表项消息设置有增加(Add)、删除(Del)、修改(Mod)三种类型,通过设计index这一变量来唯一标识每一条表项。
图3中控制器下发了8条更新表项信息,并通过单链表结构存储在增量表中,假设批量更新条件为预先设定的接收更新表项消息的数量N为8,则当前情况下达到批量更新条件,将8条更新表项信息整合至全量表。
从全量表的链表头部逐一读取更新表项消息的index和类型,如果更新表项消息的类型为增加(Add)或修改(Mod),则判断全量表中是否存在该index的表项,若不存在该表项,则在全量表中新添加该表项,并将全量表中表项计数加一;若已存在该表项,查看该表项匹配域是否与待修改的表项内容一致,如果一致,则将增量表中的表项内存直接拷贝到全量表中,进行覆盖更新;如果不一致,则直接舍弃该消息;
如果更新表项消息的类型为删除(Del),则判断全量表中是否存在该index的表项,若不存在该表项,则直接舍弃该消息,若存在该表项,则将该表项在全量表中所占的内存清空,并将全量表中表项计数减一;
最后控制平面利用当前的全量表,在待修改版本上创建具有查找树信息的当前最新流表发布版本,即在待修改版本上对Table1进行加载、在待修改版本上对Table2进行和在待修改版本上对Table4进行加载,创建具有查找树信息的最新流表发布版本,供多个转发核查询,并依据各自查询到的转发规则进行转发,同时,控制平面再任选一个待修改版本,供下一个更新的发布版本的构建,至此完成了流表管理的全过程。
实施例3.
交换机流表版本管理的示意图如图4A、4B、4C、4D、4E和4F所示,其中,在本实施例中,多核SDN交换机的转发平面中包括5个独立的转发核,分别为Fe1核、Fe2核、Fe3核、Fe4核、Fe5核,在本发明所涉及的流表版本管理中,多核SDN交换机的控制平面维护的版本中包括一份待修改版本和一份最新发布版本,本实施例中,按照版本号从小到大的顺序进行遍历查找空闲版本,如果遍历之前生成的发布版本都有转发核正在使用该版本,则选择一个新版本作为待修改版本。由于最坏情况下,每个转发核都会占用一个旧的发布版本,因此,控制平面至多需要维护5个旧的发布版本,再加上一个待修改版本和一个最新的发布版本,即Version0、Version1、Version2、Version3、Version4、Version5、Version6。
图4A为本发明涉及的流表版本管理的一种场景示意图。如图4A所示,在初始化创建发布版本时,选择0号版本作为待修改版本,并在此基础上创建新的具有查找树信息的发布版本,创建完成后,需要寻找下一个待修改版本,此时各个转发核均未进行查表操作,即均未使用发布版本;
图4B为图4A所示场景下转发核使用发布版本进行查表的示意图。如图4B所示,5个转发核均使用当前发布版本Version0进行查表,此时Version0的版本标识符reference[i]全置于1,表示正在使用中;而reference=5,表示有5个转发核正在使用中;
图4C为图4B所示场景下部分转发核完成查表并有更新表项需求的示意图。如图4C所示,Fe1核、Fe2核、Fe3核、Fe4核均已经完成查表,Fe1核还在Version0版本进行查表,此时Version0的版本标识符只有reference[0]置于1,表明Version0也还在使用中。
当有更新表项需求时,按照版本号从小到大的顺序遍历,Version1作为第一个被找到的待修改版本,控制平面在Version1版本上生成最新发布版本,正在使用Version0版本进行查表的转发核Fe1核则继续使用该版本查表,不受新发布的最新发布版本的影响,故此时Fe1核依旧在Version0版本进行查表。
图4D为图4C所示场景下有除正在查表的Fe1核之外的转发核进行查表的示意图。如图4D所示,Fe1核依旧在Version0版本进行查表,当有其他转发核有查表需求时,例如Fe3核,则按照当前发布版本Version1进行查表,此时Version0版本和Version1版本均在使用中,利用多版本流表管理完成了在不影响当前正在查表的转发核Fe1核工作的前提下,完成了流表版本的平滑更替。
图4E为图4D所示场景下正在查表的转发核结束查表的示意图。如图4E所示,Fe1核按照预先设定的转发次数,结束了在Version0版本的查表,并将位于该转发核上的reference[0]置0,此时没有任何一个核在使用Version0版本进行查表,将该版本置于空闲状态吗,且不是当前的发布版本,可作为待修改版本;
图4F为图4E所示场景下有除正在查表的Fe3核之外的转发核进行查表的示意图。如图4F所示,由于并没有发布新的流表版本,此时发布版本依旧为Version1,Fe3核依旧在Version1版本进行查表,当Fe4核与Fe5核需要查表时,也按照当前的发布版本Version1进行查表。此外通过版本号从小到大的顺序遍历,选择Version0作为待修改版本,供下次进行批量更新时,则在Version0上进行加载,生成下一个新的发布版本。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (8)

1.一种基于批量更新的多核SDN交换机流表管理方法,其特征在于,该方法包括:
多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
多核SDN交换机的控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供多核SDN交换机的转发平面查表使用;其中,N为大于或等于1的正整数;
如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;
然后,将缓存至增量表的N条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表;基于控制平面任选的待修改版本,查询是否需要新建流表;
如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;
如果待修改版本中已经有了所需要的流表,则不需要重复建表;
再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建;
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;
多核SDN交换机的转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并依据各自查询到的转发规则进行转发。
2.根据权利要求1所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述批量更新条件为预先设定的批量更新时间和预先设定的接收更新表项消息的数量N。
3.根据权利要求1所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述建表表,用于存储控制器实时下发的建表消息;
所述增量表,用于缓存控制器实时下发的更新表项消息;
所述全量表,用于维护多核SDN交换机内的所有表项;还用于在批量更新时,依据增量表缓存的N条更新表项消息对多核SDN交换机内的表项进行更改操作;
所述待修改版本为转发核未正在使用的、除了当前的流表发布版本之外的空闲流表版本;其中,空闲流表版本为转发核未正在使用的、具有查找树信息的流表发布版本。
4.根据权利要求1所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述更改操作为增加表项、删除表项或修改表项。
5.根据权利要求1所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述转发平面包括:M个独立的转发核;其中,M为大于或等于1的整数;
针对M个独立的转发核,控制平面至多需要维护不超过M+2个流表发布版本;
其中,该M+2个流表发布版本包括:M个独立的转发核中的每个独立的转发核正在使用的流表发布版本、待修改版本和当前的流表发布版本。
6.根据权利要求5所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述M+2个流表版本中的每个流表发布版本上均设置使用标识符reference,用于标识是否有转发核正在使用流表发布版本;
当无转发核正在使用流表发布版本时,则该流表发布版本的使用标识符reference为0;
当某个转发核使用流表发布版本时,将该流表发布版本的使用标识符reference加1;
当某个转发核查询结束后,将之前使用的流表发布版本的使用标识符reference减1;
流表发布版本的使用标识符reference的数值与正在使用该流表发布版本的转发核个数相同。
7.根据权利要求1所述的基于批量更新的多核SDN交换机流表管理方法,其特征在于,所述转发平面中的多个独立的转发核对当前最新流表发布版本进行并行查表,并各自查询到的转发规则进行转发;具体为:
转发平面中的每个独立的转发核对同一份当前最新流表发布版本进行并行查询,查找到当前最新流表发布版本,再对该当前最新流表发布版本进行查表,依据各自查询到的转发规则进行转发;同时,控制平面修改该当前最新流表发布版本的使用标识符reference。
8.一种基于批量更新的多核SDN交换机流表管理系统,其特征在于,该系统是基于上述权利要求1-7中任一所述的方法实现,该系统包括:
存储模块,用于利用多核SDN交换机的控制平面接收控制器实时下发的建表消息,并将其存储至建表表;
发布版本创建模块,用于利用控制平面接收控制器实时下发的更新表项消息,并缓存至增量表;判断是否达到批量更新条件;
如果达到批量更新条件,则将缓存至增量表的N条更新表项消息进行一次批量更新,并将其更新至全量表;根据建表表和全量表,基于控制平面任选的待修改版本,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;
如果达到批量更新条件,新建一新的增量表,将控制器实时下发的更新表项消息缓存至该新的增量表,供下一次批量更新使用;
然后,将缓存至增量表的N条更新表项消息按时间顺序依次进行更改操作,得到多个更新表项,并将其逐一更新至全量表;基于控制平面任选的待修改版本,查询是否需要新建流表;
如果待修改版本中没有所需要的流表,则根据建表消息新建缺少的流表;
如果待修改版本中已经有了所需要的流表,则不需要重复建表;
再在基于控制平面任选的待修改版本上,利用更新后的全量表,生成具有查找树信息的当前最新流表发布版本,供转发平面查表使用;同时控制平面再任选一待修改版本,供下一个更新的流表发布版本的构建;
如果未达到批量更新条件,则继续将更新表项消息缓存至增量表,直至达到批量更新条件;和
转发模块,用于利用转发平面中的每个独立的转发核对当前最新流表发布版本进行查表,并依据各自查询到的转发规则进行转发。
CN202011110410.3A 2020-10-16 2020-10-16 一种基于批量更新的多核sdn交换机流表管理方法及系统 Active CN112260948B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011110410.3A CN112260948B (zh) 2020-10-16 2020-10-16 一种基于批量更新的多核sdn交换机流表管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011110410.3A CN112260948B (zh) 2020-10-16 2020-10-16 一种基于批量更新的多核sdn交换机流表管理方法及系统

Publications (2)

Publication Number Publication Date
CN112260948A CN112260948A (zh) 2021-01-22
CN112260948B true CN112260948B (zh) 2021-10-22

Family

ID=74244504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011110410.3A Active CN112260948B (zh) 2020-10-16 2020-10-16 一种基于批量更新的多核sdn交换机流表管理方法及系统

Country Status (1)

Country Link
CN (1) CN112260948B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113300963B (zh) * 2021-04-07 2022-07-15 北京邮电大学 软件定义网络转发路径无环路更新方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040967A (zh) * 2012-12-07 2014-09-10 华为技术有限公司 一种报文的流转发方法及报文转发设备
CN108809837A (zh) * 2018-06-11 2018-11-13 深圳市风云实业有限公司 Arl表项集中管理优化系统
CN111682927A (zh) * 2020-04-27 2020-09-18 浪潮思科网络科技有限公司 一种基于mlag环境的报文同步方法、装置、设备及介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769576B (zh) * 2012-08-17 2015-06-10 北京傲天动联技术股份有限公司 流表自学习方法、报文转发方法和交换机
CN104426815B (zh) * 2013-08-27 2019-07-09 中兴通讯股份有限公司 一种sdn中流表下发的方法和系统、of控制器和of交换机
US9749214B2 (en) * 2014-02-26 2017-08-29 Futurewei Technologies, Inc. Software defined networking (SDN) specific topology information discovery
US20150245392A1 (en) * 2014-02-27 2015-08-27 Futurewei Technologies, Inc. System and method for optimized route mobility management
CN105282003B (zh) * 2014-06-20 2019-03-22 中国电信股份有限公司 建立隧道的方法和系统以及隧道控制器和虚拟交换机
CN105337904B (zh) * 2014-08-05 2018-11-27 新华三技术有限公司 控制器集群的升级方法及装置
CN106375231B (zh) * 2015-07-22 2019-11-05 华为技术有限公司 一种流量切换方法、设备及系统
CN105357146B (zh) * 2015-10-21 2018-10-09 北京交通大学 出口网关内缓存队列饱和攻击防御方法、装置及系统
CN106878178B (zh) * 2015-12-11 2019-11-01 中国电信股份有限公司 流表下发方法、系统及控制器
CN107040472B (zh) * 2017-03-07 2020-07-03 浙江工商大学 一种sdn中控制面表项与流表及各类转发表项转发同步的方法
CN108366024A (zh) * 2018-02-07 2018-08-03 迈普通信技术股份有限公司 报文转发方法及装置
CN110808910B (zh) * 2019-10-29 2021-09-21 长沙理工大学 一种支持QoS的OpenFlow流表节能存储架构及其方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040967A (zh) * 2012-12-07 2014-09-10 华为技术有限公司 一种报文的流转发方法及报文转发设备
CN108809837A (zh) * 2018-06-11 2018-11-13 深圳市风云实业有限公司 Arl表项集中管理优化系统
CN111682927A (zh) * 2020-04-27 2020-09-18 浪潮思科网络科技有限公司 一种基于mlag环境的报文同步方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112260948A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
US8261020B2 (en) Cache enumeration and indexing
US8694472B2 (en) System and method for rebuilding indices for partitioned databases
CN110808910B (zh) 一种支持QoS的OpenFlow流表节能存储架构及其方法
US6507847B1 (en) History database structure for Usenet
CN103853727B (zh) 提高大数据量查询性能的方法及系统
JP3526474B2 (ja) ネットワークにおける配布情報管理システム
US9495398B2 (en) Index for hybrid database
US4930072A (en) Method for computing transitive closure
CN111400268B (zh) 一种分布式持久性内存事务系统的日志管理方法
CN103631868B (zh) 一种兼容关系数据库的数据管理系统
CN104035925B (zh) 数据存储方法、装置和存储系统
CN109710668B (zh) 一种多源异构数据访问中间件构建方法
CN112148680B (zh) 一种基于分布式图数据库的文件系统元数据管理方法
CN114490141B (zh) 一种基于共享内存的高并发ipc数据交互方法
CN113377868A (zh) 一种基于分布式kv数据库的离线存储系统
CN113031864B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN112260948B (zh) 一种基于批量更新的多核sdn交换机流表管理方法及系统
CN108566291A (zh) 一种事件处理的方法、服务器及系统
CN106155934A (zh) 一种云环境下基于重复数据的缓存方法
CN111736982B (zh) 一种5g数据转发平面的数据转发处理方法和服务器
CN104166661A (zh) 数据存储系统和数据存储方法
CN112600764B (zh) 直通转发模式的调度方法、设备及存储介质
CN113051271A (zh) 一种冷热数据分离方法、装置及其设备
CN102195868B (zh) 一种用于对网络报文高效动态分类的方法和设备
US20050149615A1 (en) System and method for processing resource registry updates without regard to chronological order

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant