CN106209634A - 地址映射关系的学习方法及装置 - Google Patents
地址映射关系的学习方法及装置 Download PDFInfo
- Publication number
- CN106209634A CN106209634A CN201510218659.9A CN201510218659A CN106209634A CN 106209634 A CN106209634 A CN 106209634A CN 201510218659 A CN201510218659 A CN 201510218659A CN 106209634 A CN106209634 A CN 106209634A
- Authority
- CN
- China
- Prior art keywords
- stream table
- packet
- fringe node
- group
- address
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种地址映射关系的学习方法及装置,其中,该方法包括:层叠网中的边缘节点从OpenFlow控制器接收表项信息,其中,该表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息;边缘节点接收数据包;边缘节点根据表项信息为数据包创建流表以及与该流表关联的组表,并将获取的与数据包对应的地址映射关系存储至创建的流表和组表中。通过本发明解决了相关技术中OpenFlow协议无法实现层叠网中地址映射关系自学习的问题,进而减少了需要上送控制器的数据包数量,减轻了层叠网中OpenFlow控制器和OpenFlow通道的压力。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种地址映射关系的学习方法及装置。
背景技术
OpenFlow网络采用控制平面与转发平面相分离的架构,图1是根据相关技术的OpenFlow网络组件架构示意图。如图1所示,OpenFlow网络的控制平面由OpenFlow控制器来实现,OpenFlow网络的转发平面由OpenFlow交换机来实现,OpenFlow控制器与OpenFlow交换机之间运行OpenFlow协议;OpenFlow控制器利用OpenFlow协议向OpenFlow交换机下发包含匹配字段(Match Field)的流表(Flow Table)和包含一个或多个动作集(Action Bucket)的组表(Group Table),从而达到控制数据转发的目的,实现了数据转发和路由控制的分离。
根据OpenFlow协议规范的规定,OpenFlow交换机的流表和组表都是由OpenFlow控制器下发的,OpenFlow交换机如果接收到没有匹配流表的数据包,则会把该数据包封装在Packet_in消息中发送给OpenFlow控制器处理。按事先设定好的规则处理完后,OpenFlow控制器会向OpenFlow交换机下发相应的流表和组表,这样后续的数据包就能够匹配到新下发的流表并由OpenFlow交换机根据流表和组表完成数据包的转发。
在针对OpenFlow网络的测试中,OpenFlow控制器的数据包处理能力以及OpenFlow控制器与OpenFlow交换机之间的OpenFlow通道的容量被发现是限制网络性能的瓶颈因素。由于OpenFlow交换机经常会向OpenFlow控制器上送未匹配流表的数据包,所以OpenFlow通道的带宽被大量占用,而且还给OpenFlow控制器带来了很大的数据包处理压力,造成了网络的时延增加,严重时还会带来明显的网络丢包。于是,业界提出了一种扩展OpenFlow协议支持交换机本地自学习(Switch Local Learning)的技术方案,即允许OpenFlow交换机通过自学习在本地生成流表,这样就可以大大减少需要上送OpenFlow控制器的数据包的数量。
但是,当前的扩展OpenFlow协议支持交换机本地自学习的技术方案,只能实现支持OpenFlow的网络节点对数据包源地址与网络节点上接收数据包的端口之间映射关系的自学习,无法适用于层叠网(Overlay Networks)中支持OpenFlow的边缘节点对数据包内外层地址之间的映射关系的自学习。层叠网是一种应用十分广泛的网络类型,图2是根据相关技术的层叠网的网络结构和接入方式示意图,如图2所示,层叠网中包含边缘节点和中间节点两种不同类型的网络节点,用户设备(Customer Device)通过单归接入或多归接入的方式连接边缘节点以接入层叠网。所谓单归接入,就是用户设备只连接单个边缘节点,用户设备发往层叠网的数据流量通过单个边缘节点进入层叠网中;所谓多归接入,就是用户设备同时连接多个边缘节点,用户设备发往层叠网的数据流量采用负载分担的方式通过多个边缘节点进入层叠网中。层叠网的特点是边缘节点会针对所有进入层叠网的数据包添加外层封装,外层封装中包含用于中间节点转发的外层源地址和外层目的地址,其中外层源地址指向添加外层封装的本地边缘节点,外层目的地址指向远端边缘节点,而添加外层封装前的数据包的源地址和目的地址在添加外层封装后作为内层源地址和内层目的地址仍携带在数据包中。远端边缘节点接收到添加了外层封装的数据包后,会对数据包的外层源地址与内层源地址之间的映射关系进行自学习,并把这种地址间映射关系保存下来,作为该边缘节点给后续的从本边缘节点进入层叠网的数据包添加外层封装的依据。对于来自同一个用户设备、通过多归接入方式进入层叠网的数据流量,其中不同的数据包可能会被不同的本地边缘节点添加外层封装后发往同一个远端边缘节点,远端边缘节点在对接收到的多个数据包进行上述地址映射关系的自学习后,会出现学习到同一个内层源地址与多个外层源地址之间的一对多映射关系的情况,此时就要求远端边缘节点能够支持一对多映射关系的保存。根据相关技术,层叠网中支持OpenFlow的边缘节点无法实现对地址映射关系的自学习。
针对OpenFlow协议无法实现层叠网中地址映射关系自学习的问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种地址映射关系的学习方法及装置,以至少解决相关技术中OpenFlow协议无法实现层叠网中地址映射关系自学习的问题。
根据本发明的一个方面,提供了一种地址映射关系的学习方法,包括:层叠网中的边缘节点从OpenFlow控制器接收表项信息,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息;所述边缘节点接收数据包;所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中。
进一步地,所述第二指示信息中携带有以下信息:动作集选择策略。
进一步地,所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表之前包括:所述边缘节点在本地查找与所述数据包匹配的所述表项信息。
进一步地,将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中包括:提取所述数据包的内层源地址作为目的地址匹配字段保存在所述流表中;提取所述数据包的外层源地址作为添加至匹配所述流表的数据包的外层目的地址保存在所述组表的动作集中。
进一步地,所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表之后,所述方法还包括:所述边缘节点将创建的所述流表和组表发送给所述OpenFlow控制器。
进一步地,所述第一指示信息和所述第二指示信息通过包含相同的组表标识生成规则进行关联。
根据本发明的另一个方面,还提供了一种地址映射关系的学习方法,包括:OpenFlow控制器将表项信息发送给层叠网中的边缘节点,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息,其中所述表项信息为所述边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
进一步地,所述第二指示信息中携带有以下信息:动作集选择策略。
进一步地,所述OpenFlow控制器接收所述边缘节点创建的流表和组表。
根据本发明的一个方面,提供了一种地址映射关系的学习装置,所述装置应用于层叠网中的边缘节点,所述装置包括:第一接收模块,用于从OpenFlow控制器接收表项信息,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息;第二接收模块,用于接收数据包;处理模块,用于根据所述表项信息为所述数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中。
进一步地,所述第二指示信息中携带有以下信息:动作集选择策略。
进一步地,所述装置还包括:第一提取模块,用于提取所述数据包的内层源地址作为目的地址匹配字段保存在所述流表中;第二提取模块,用于提取所述数据包的外层源地址作为添加至匹配所述流表的数据包的外层目的地址保存在所述组表的动作集中。
根据本发明的另一个方面,还提供了一种地址映射关系的学习装置,所述装置应用于OpenFlow控制器,所述装置包括:发送模块,用于将表项信息发送给层叠网中的边缘节点,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息,其中所述表项信息为所述边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
进一步地,所述第二指示信息中携带有以下信息:动作集选择策略。
通过本发明,采用层叠网中的边缘节点从OpenFlow控制器接收表项信息,其中,该表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息;边缘节点接收数据包;边缘节点根据表项信息为数据包创建流表以及与该流表关联的组表,并将获取的与数据包对应的地址映射关系存储至创建的所述流表和组表中。解决了相关技术中OpenFlow协议无法实现层叠网中地址映射关系自学习的问题,进而减少了需要上送控制器的数据包数量,减轻了层叠网中OpenFlow控制器和OpenFlow通道的压力。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的OpenFlow网络组件架构示意图;
图2是根据相关技术的层叠网的网络结构和接入方式示意图;
图3是根据本发明实施例的地址映射关系的学习方法流程图;
图4是根据本发明实施例的地址映射关系的学习装置的结构框图;
图5是根据本发明实施例的地址映射关系的学习装置的结构框图(一);
图6是根据本发明实施例的地址映射关系的学习方法流程图(一);
图7是根据本发明实施例的地址映射关系的学习装置的结构框图(二);
图8是根据本发明实施例一的用户设备单归接入层叠网的应用场景示意图;
图9是根据本发明实施例二的用户设备双归接入层叠网的应用场景示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种地址映射关系的学习方法,图3是根据本发明实施例的地址映射关系的学习方法流程图,如图3所示,该流程包括如下步骤:
步骤S302,层叠网中的边缘节点从OpenFlow控制器接收表项信息,其中,该表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息;
步骤S304,边缘节点接收数据包;
步骤S306,边缘节点根据表项信息为数据包创建流表以及与该流表关联的组表,并将获取的与数据包对应的地址映射关系存储至创建的所述流表和组表中。
通过上述步骤,层叠网中的边缘节点从OpenFlow控制器接收用于指示创建流表的信息和用于指示创建与该流表相关联的组表的信息,以便于边缘节点为接收到的数据包创建流表以及与该流表关联的组表,进而将获取的与数据包对应的地址映射关系存储至创建的流表和组表中。解决了相关技术中OpenFlow协议无法实现层叠网中地址映射关系自学习的问题,进而减少了需要上送控制器的数据包数量,减轻了层叠网中OpenFlow控制器和OpenFlow通道的压力。
上述步骤S306涉及到创建组表,在一个可选实施例中,第二指示信息中携带有动作集选择策略。动作集选择策略用于边缘节点选择组表中的一个动作集完成外层封装的添加。
在一个可选实施例中,边缘节点根据表项信息为数据包创建流表以及与该流表关联的组表之前,在本地查找与该数据包匹配的该表项信息。
上述步骤S306涉及到创建流表及组表,在一个可选实施例中,将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中包括,提取数据包的内层源地址作为目的地址匹配字段保存在流表中,提取数据包的外层源地址作为添加至匹配流表的数据包的外层目的地址保存在该组表的动作集中。从而完成了获取的与上述数据包对应的内层源地址与外层源地址之间的地址映射关系的存储。
在一个可选实施例中,边缘节点将创建的流表和组表发送给OpenFlow控制器。以保持边缘节点与OpenFlow控制器两个网络实体之间的状态同步。
在一个可选实施例中,第一指示信息和第二指示信息通过包含相同的组表标识生成规则进行关联。为了保证每次新创建的组表都有不同的组表标识,组表标识需要动态生成。
在本实施例中还提供了一种地址映射关系的学习装置,该装置用于实现上述实施例及可选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”是可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本发明实施例的地址映射关系的学习装置的结构框图,该装置应用于层叠网中的边缘节点,如图4所示,该装置包括:第一接收模块42,用于从OpenFlow控制器接收表项信息,其中,表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息;第二接收模块44,用于接收数据包;处理模块46,用于根据表项信息为该数据包创建流表以及与该流表关联的组表,并将获取的与数据包对应的地址映射关系存储至创建的流表和组表中。
可选地,第二指示信息中携带有动作集选择策略。
图5是根据本发明实施例的地址映射关系的学习装置的结构框图(一),如图5所示,该装置还包括:第一提取模块52,用于提取数据包的内层源地址作为目的地址匹配字段保存在流表中;第二提取模块54,用于提取数据包的外层源地址作为添加至匹配该流表的数据包的外层目的地址保存在组表的动作集中。
可选地,上述第一指示信息和上述第二指示信息通过包含相同的组表标识生成规则进行关联。
在本实施例中提供了一种地址映射关系的学习方法,图6是根据本发明实施例的地址映射关系的学习方法流程图(一),如图6所示,该流程包括如下步骤:
步骤S602,OpenFlow控制器将表项信息发送给层叠网中的边缘节点,其中,该表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息,其中该表项信息为该边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
通过上述步骤,OpenFlow控制器将用于指示创建流表的信息和用于指示创建与该流表相关联的组表的信息发送给层叠网中的边缘节点,以便于边缘节点为接收到的数据包创建流表以及与该流表关联的组表,进而将获取的与数据包对应的地址映射关系存储至创建的流表和组表中,解决了相关技术中OpenFlow协议无法实现层叠网中地址映射关系自学习的问题,进而减少了需要上送控制器的数据包数量,减轻了层叠网中OpenFlow控制器和OpenFlow通道的压力。
在一个可选实施例中,第二指示信息中携带有动作集选择策略。
在一个可选实施例中,OpenFlow控制器接收边缘节点创建的流表和组表。
在本实施例中还提供了一种地址映射关系的学习装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本发明实施例的地址映射关系的学习装置的结构框图(二),该装置应用于OpenFlow控制器,该装置包括:发送模块72,用于将表项信息发送给层叠网中的边缘节点,其中,该表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与该流表相关联的组表的第二指示信息,其中该表项信息为该边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
在一个可选实施例中,第二指示信息中携带有动作集选择策略。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述各个模块均位于同一处理器中;或者,上述各个模块分别位于第一处理器、第二处理器和第三处理器…中。
针对相关技术中存在的上述问题,下面结合具体的可选实施例进行说明,下述可选实施例结合了上述可选实施例及其可选实施方式。
本可选实施例提供了一种层叠网中地址映射关系自学习的方法,具体地包括以下步骤:
步骤A,控制器向层叠网的边缘节点下发用于地址映射关系自学习的流表,其中包含创建流表动作(Action)和创建组表动作,创建流表动作用于创建一个流表,创建组表动作用于创建一个组表和一个组表中的动作集。创建流表动作和创建组表动作通过包含相同的组表标识生成规则关联在一起,创建组表动作包含控制器根据网络的业务需求设定的动作集选择策略。
由于一个组表可以包含多个动作集,所以当用户设备通过多归接入方式接入层叠网时,可以用多个动作集来保存映射到同一个数据包内层源地址的多个数据包外层源地址。创建流表动作和创建组表动作通过包含相同的组表标识生成规则关联在一起,如此,一方面通过采用相同的生成规则,创建流表动作所创建的流表与创建组表动作所创建的组表就能包含相同的组表标识;另一方面通过采用动态的生成规则,也可以防止每次创建组表动作所创建的组表都使用相同的组表标识,导致无法对所创建的组表进行区分。包含于创建组表动作中的动作集选择策略在执行创建组表动作时被写入新创建的组表,当边缘节点由于接收到多个匹配用于地址映射关系自学习的流表的数据包而多次执行创建组表动作,且导致所创建的组表包含多个动作集时,动作集选择策略用于边缘节点在接收到来自用户设备的数据包时,选择其中一个动作集完成外层封装的添加。
创建组表动作中包含的动作集选择策略是多种多样的,比如,针对用户设备需频繁迁移并从新的边缘节点接入层叠网的应用场景,动作集选择策略可以是永远选择被创建组表动作新增的那个动作集,这样可以最大程度避免出现过时的动作集被选中的情况;再比如,针对用户设备对接收到重复数据包不敏感但对丢包很敏感的应用场景,动作集选择策略可以是选择所有动作集并给每个动作集复制一份数据包,这样可以最大程度避免出现丢包的情况。总之,创建组表动作中包含的动作集选择策略应由控制器根据网络的业务需求来设定。
步骤B,层叠网的边缘节点接收到来自其它边缘节点的数据包,匹配用于地址映射关系自学习的流表成功后,执行该流表中所包含的创建流表动作和创建组表动作,以创建流表及与所创建流表相关联的组表,提取数据包的内层源地址作为目的地址匹配字段保存在所创建流表中,提取数据包的外层源地址作为待添加外层封装的目的地址保存在所创建组表的动作集中。
边缘节点每次通过执行创建流表动作和创建组表动作进行地址映射关系自学习时,都会判断本次学习到的地址映射关系是否已保存在现有的流表及组表中,并根据判断结果来决定是否创建新的流表和组表。
步骤C,层叠网的边缘节点通过自学习创建流表和组表后,把新创建的流表和组表通告给控制器。
OpenFlow网络要求OpenFlow控制器对其所控制的网络节点具备完全的控制能力,所以在边缘节点上的流表和/或组表由于边缘节点对地址映射关系的自学习而发生变化后,边缘节点需要立即向OpenFlow控制器进行通告。
步骤D,层叠网的边缘节点在接收到来自该节点所连接的用户设备的目的地址与所创建流表匹配的数据包后,执行所匹配流表中的动作以调用所创建的组表,根据组表中的动作集选择策略选择一个动作集,执行动作集以完成数据包外层封装的添加并把动作集中保存的地址作为外层封装的目的地址。
实施例一
图8是根据本发明实施例一的用户设备单归接入层叠网的应用场景示意图,如图8所示,本实施例中,层叠网中支持OpenFlow的边缘节点1、2、3、4分别通过OpenFlow通道与OpenFlow控制器相连,用户设备通过边缘节点1单归接入层叠网。
本实施例中,OpenFlow控制器与层叠网中支持OpenFlow的边缘节点要执行如下步骤:
步骤1,OpenFlow控制器向支持OpenFlow的边缘节点1、2、3、4下发用于地址映射关系自学习的流表,该流表中包含创建流表动作和创建组表动作。
其中,创建流表动作与创建组表动作通过组表标识关联起来,具体地,创建流表动作所创建的流表需包含执行组表(Group Group_ID)动作,且要保证执行组表动作中所包含的组表标识与创建组表动作所创建的组表所包含的组表标识相一致。
步骤2,边缘节点1接收到来自用户设备的数据包,给数据包添加外层封装,然后把携带外层封装的数据包发往目的边缘节点。
边缘节点1给数据包添加外层封装时,会把边缘节点1的地址作为所添加外层封装的源地址,也即外层源地址,而至于所添加外层封装的目的地址,也即外层目的地址,则有两种情况:如果边缘节点1已经保存有来自用户设备的数据包的目的地址与其它边缘节点地址的映射关系,则边缘节点1把上述其它边缘节点地址作为所添加的外层目的地址,这种情况下,只有一个其它边缘节点会收到来自边缘节点1的数据包;如果边缘节点1没有保存任何来自用户设备的数据包的目的地址与其它边缘节点地址的映射关系,则边缘节点1把一个缺省的组播地址作为所添加的外层目的地址,这种情况下,所有其它边缘节点都会收到来自边缘节点1的数据包。
步骤3,边缘节点2、3、4中的任一个节点接收到来自边缘节点1的数据包,匹配用于地址映射关系自学习的流表成功后,执行该流表中所包含的创建流表动作和创建组表动作。
具体地,边缘节点2、3、4中的任一个节点每收到一个与用于地址映射关系自学习的流表相匹配的数据包,都会执行该流表中所包含的创建流表动作和创建组表动作。其中,创建流表动作会创建一个以该数据包的内层源地址作为目的地址匹配字段的流表,如果所创建的流表的匹配字段与节点上的现有流表的匹配字段重复,则不会创建新的流表,而会用所创建的流表对现有流表进行更新,也即,重置现有流表的老化时间。同时,创建组表动作会创建一个与所创建的流表相关联的组表,同时还会为所创建的组表创建一个以该数据包的外层源地址作为待添加外层封装的目的地址的动作集,同样地,如果所创建的流表的匹配字段与节点上的现有流表的匹配字段重复,则也不会创建新的组表,而会用所创建的动作集对与现有流表相关联的现有组表进行更新,也即,在数据包的外层源地址与现有动作集中存储的待添加外层封装的目的地址不同时增加新的动作集。由于边缘节点2、3、4中的任一个节点接收到的所有数据包的外层源地址都是边缘节点1的地址,所以经过对足够多的数据包的地址映射关系的自学习,创建流表动作创建的不同流表以获取的不同的数据包内层源地址作为目的地址匹配字段,而所有创建组表动作创建的与所创建流表相关联的组表都只会包含一个存储了边缘节点1的地址的动作集。
步骤4,边缘节点2、3、4中的任一个节点通过地址映射关系的自学习创建流表和/或组表后,通过OpenFlow通道把新创建或更新的流表和/或组表通告给OpenFlow控制器。
步骤5,边缘节点2、3、4中的任一个节点通过自学习创建流表和组表后,接收到来自本节点所连接用户设备的目的地址与所创建流表匹配的数据包,执行所匹配流表中的执行组表动作以调用所创建的组表并执行组表中的动作集。
具体地,所创建的组表包含一个动作集,其中保存了边缘节点1的地址,执行组表中的动作集的结果就是给来自本节点所连接用户设备的数据包添加外层封装并把边缘节点1的地址作为所添加的外层目的地址。
实施例二
图9是根据本发明实施例二的用户设备双归接入层叠网的应用场景示意图,如图9所示,本实施例中,层叠网中支持OpenFlow的边缘节点1、2、3、4分别通过OpenFlow通道与OpenFlow控制器相连,用户设备通过边缘节点1和2双归接入层叠网。
本实施例中,OpenFlow控制器与层叠网中支持OpenFlow的边缘节点要执行如下步骤:
步骤1,OpenFlow控制器向支持OpenFlow的边缘节点1、2、3、4下发用于地址映射关系自学习的流表,该流表中包含创建流表动作和创建组表动作。
其中,创建流表动作与创建组表动作通过组表标识关联起来,具体地,创建流表动作所创建的流表需包含执行组表动作,且要保证执行组表动作中所包含的组表标识与创建组表动作所创建的组表所包含的组表标识相一致。
步骤2,边缘节点1和2分别接收到来自用户设备的数据包,给数据包添加外层封装,然后把携带外层封装的数据包发往目的边缘节点。
边缘节点1给数据包添加外层封装时,会把边缘节点1的地址作为所添加外层封装的源地址,也即外层源地址,而至于所添加外层封装的目的地址,也即外层目的地址,则有两种情况:如果边缘节点1已经保存有来自用户设备的数据包的目的地址与其它边缘节点地址的映射关系,则边缘节点1把上述其它边缘节点地址作为所添加的外层目的地址,这种情况下,只有一个其它边缘节点会收到来自边缘节点1的数据包;如果边缘节点1没有保存任何来自用户设备的数据包的目的地址与其它边缘节点地址的映射关系,则边缘节点1把一个缺省的组播地址作为所添加的外层目的地址,这种情况下,所有其它边缘节点都会收到来自边缘节点1的数据包。
同样地,边缘节点2给数据包添加外层封装时,也会把边缘节点2的地址作为所添加的外层源地址,而至于外层目的地址,边缘节点2也会根据是否已经保存有来自用户设备的数据包的目的地址与其它边缘节点地址的映射关系,选择其它边缘节点地址或缺省的组播地址作为所添加的外层目的地址。
步骤3,边缘节点3和4中的任一个节点接收到来自边缘节点1和2的数据包,匹配用于地址映射关系自学习的流表成功后,执行该流表中所包含的创建流表动作和创建组表动作。
具体地,边缘节点3和4中的任一个节点每收到一个与用于地址映射关系自学习的流表相匹配的数据包,都会执行该流表中所包含的创建流表动作和创建组表动作。其中,创建流表动作会创建一个以该数据包的内层源地址作为目的地址匹配字段的流表,如果所创建的流表的匹配字段与节点上的现有流表的匹配字段重复,则不会创建新的流表,而会用所创建的流表对现有流表进行更新,也即,重置现有流表的老化时间。同时,创建组表动作会创建一个与所创建的流表相关联的组表,同时还会为所创建的组表创建一个以该数据包的外层源地址作为待添加外层封装的目的地址的动作集,同样地,如果所创建的流表的匹配字段与节点上的现有流表的匹配字段重复,则也不会创建新的组表,而会用所创建的动作集对与现有流表相关联的现有组表进行更新,也即,在数据包的外层源地址与现有动作集中存储的待添加外层封装的目的地址不同时增加新的动作集。由于边缘节点3和4中的任一个节点接收到的数据包内层源地址相同的多个数据包中,既有数据包外层源地址为边缘节点1的地址的数据包,也有数据包外层源地址为边缘节点2的地址的数据包,所以经过对足够多的数据包的地址映射关系的自学习,创建流表动作创建的不同流表以获取的不同的数据包内层源地址作为目的地址匹配字段,而所有创建组表动作创建的与所创建流表相关联的组表都会包含两个动作集,其中一个动作集存储了边缘节点1的地址,另一个动作集存储了边缘节点2的地址。
步骤4,边缘节点3和4中的任一个节点通过地址映射关系的自学习创建流表和/或组表后,通过OpenFlow通道把新创建或更新的流表和/或组表通告给OpenFlow控制器。
步骤5,边缘节点3和4中的任一个节点通过自学习创建流表和组表后,接收到来自本节点所连接用户设备的目的地址与所创建流表匹配的数据包,执行所匹配流表中的执行组表动作以调用所创建的组表并执行组表中的动作集。
具体地,所创建的组表包含两个动作集,其中分别保存了边缘节点1的地址和边缘节点2的地址,执行组表中的动作集的结果就是给来自本节点所连接用户设备的数据包添加外层封装并把边缘节点1或2的地址作为所添加的外层目的地址。至于是选择边缘节点1的地址还是边缘节点2的地址作为所添加的外层目的地址,则由所创建组表的动作集选择策略来决定。
综上所述,本发明提供了一种层叠网中地址映射关系自学习的方法,OpenFlow控制器通过下发包含创建流表动作和创建组表动作的流表,使得层叠网的边缘节点能够针对从中间节点接收的数据包自动学习一对一或一对多的地址映射关系,从而大大减少了需要上送控制器的数据包数量,因此,可以减轻层叠网中OpenFlow控制器和OpenFlow通道的压力。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种地址映射关系的学习方法,其特征在于,包括:
层叠网中的边缘节点从OpenFlow控制器接收表项信息,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息;
所述边缘节点接收数据包;
所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中。
2.根据权利要求1所述的方法,其特征在于,所述第二指示信息中携带有以下信息:
动作集选择策略。
3.根据权利要求1所述的方法,其特征在于,所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表之前包括:
所述边缘节点在本地查找与所述数据包匹配的所述表项信息。
4.根据权利要求1所述的方法,其特征在于,将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中包括:
提取所述数据包的内层源地址作为目的地址匹配字段保存在所述流表中;
提取所述数据包的外层源地址作为添加至匹配所述流表的数据包的外层目的地址保存在所述组表的动作集中。
5.根据权利要求1所述的方法,其特征在于,所述边缘节点根据所述表项信息为所述数据包创建流表以及与该流表关联的组表之后,所述方法还包括:
所述边缘节点将创建的所述流表和组表发送给所述OpenFlow控制器。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第一指示信息和所述第二指示信息通过包含相同的组表标识生成规则进行关联。
7.一种地址映射关系的学习方法,其特征在于,包括:
OpenFlow控制器将表项信息发送给层叠网中的边缘节点,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息,其中所述表项信息为所述边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
8.根据权利要求7所述的方法,其特征在于,所述第二指示信息中携带有以下信息:
动作集选择策略。
9.根据权利要求7所述的方法,其特征在于,包括:
所述OpenFlow控制器接收所述边缘节点创建的流表和组表。
10.一种地址映射关系的学习装置,所述装置应用于层叠网中的边缘节点,其特征在于,所述装置包括:
第一接收模块,用于从OpenFlow控制器接收表项信息,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息;
第二接收模块,用于接收数据包;
处理模块,用于根据所述表项信息为所述数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中。
11.根据权利要求10所述的装置,其特征在于,所述第二指示信息中携带有以下信息:
动作集选择策略。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第一提取模块,用于提取所述数据包的内层源地址作为目的地址匹配字段保存在所述流表中;
第二提取模块,用于提取所述数据包的外层源地址作为添加至匹配所述流表的数据包的外层目的地址保存在所述组表的动作集中。
13.一种地址映射关系的学习装置,所述装置应用于OpenFlow控制器,其特征在于,所述装置包括:
发送模块,用于将表项信息发送给层叠网中的边缘节点,其中,所述表项信息中包括用于指示创建流表的第一指示信息和用于指示创建与所述流表相关联的组表的第二指示信息,其中所述表项信息为所述边缘节点为接收到的数据包创建流表以及与该流表关联的组表,并将获取的与所述数据包对应的地址映射关系存储至创建的所述流表和组表中的依据。
14.根据权利要求13所述的装置,其特征在于,所述第二指示信息中携带有以下信息:
动作集选择策略。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510218659.9A CN106209634B (zh) | 2015-04-30 | 2015-04-30 | 地址映射关系的学习方法及装置 |
PCT/CN2015/090458 WO2016173196A1 (zh) | 2015-04-30 | 2015-09-23 | 地址映射关系的学习方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510218659.9A CN106209634B (zh) | 2015-04-30 | 2015-04-30 | 地址映射关系的学习方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106209634A true CN106209634A (zh) | 2016-12-07 |
CN106209634B CN106209634B (zh) | 2020-05-22 |
Family
ID=57199642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510218659.9A Active CN106209634B (zh) | 2015-04-30 | 2015-04-30 | 地址映射关系的学习方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106209634B (zh) |
WO (1) | WO2016173196A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018161827A1 (zh) * | 2017-03-07 | 2018-09-13 | 中兴通讯股份有限公司 | 一种地址自学习的方法、装置及交换机 |
CN113055287A (zh) * | 2019-12-27 | 2021-06-29 | 中国电信股份有限公司 | 数据包的处理方法、装置和计算机可读存储介质 |
CN116708357A (zh) * | 2023-06-08 | 2023-09-05 | 北京志凌海纳科技有限公司 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104253711A (zh) * | 2014-09-25 | 2014-12-31 | 杭州华三通信技术有限公司 | 一种SDN网络中Openflow的Group表的管理方法和设备 |
CN104378299A (zh) * | 2014-11-20 | 2015-02-25 | 杭州华三通信技术有限公司 | 流表项处理方法以及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10225094B2 (en) * | 2012-05-29 | 2019-03-05 | Futurewei Technologies, Inc. | SDN facilitated multicast in data center |
CN104065764B (zh) * | 2014-07-05 | 2017-07-25 | 中国科学技术大学 | 一种软件定义网络中基于地址替换的移动管理系统 |
-
2015
- 2015-04-30 CN CN201510218659.9A patent/CN106209634B/zh active Active
- 2015-09-23 WO PCT/CN2015/090458 patent/WO2016173196A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104253711A (zh) * | 2014-09-25 | 2014-12-31 | 杭州华三通信技术有限公司 | 一种SDN网络中Openflow的Group表的管理方法和设备 |
CN104378299A (zh) * | 2014-11-20 | 2015-02-25 | 杭州华三通信技术有限公司 | 流表项处理方法以及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018161827A1 (zh) * | 2017-03-07 | 2018-09-13 | 中兴通讯股份有限公司 | 一种地址自学习的方法、装置及交换机 |
CN108574637A (zh) * | 2017-03-07 | 2018-09-25 | 中兴通讯股份有限公司 | 一种地址自学习的方法、装置及交换机 |
CN108574637B (zh) * | 2017-03-07 | 2022-09-27 | 中兴通讯股份有限公司 | 一种地址自学习的方法、装置及交换机 |
CN113055287A (zh) * | 2019-12-27 | 2021-06-29 | 中国电信股份有限公司 | 数据包的处理方法、装置和计算机可读存储介质 |
CN116708357A (zh) * | 2023-06-08 | 2023-09-05 | 北京志凌海纳科技有限公司 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
CN116708357B (zh) * | 2023-06-08 | 2024-02-23 | 北京志凌海纳科技有限公司 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106209634B (zh) | 2020-05-22 |
WO2016173196A1 (zh) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105591978B (zh) | 基于网络的服务功能链接 | |
US9294396B2 (en) | Port extender | |
CN103457818B (zh) | 扩展网桥中的多宿主 | |
US9166817B2 (en) | Load balancing | |
CN105553680A (zh) | 基于网络特征创建虚拟接口的系统和方法 | |
CN107733670A (zh) | 一种转发策略配置方法和装置 | |
CN104780088A (zh) | 一种业务报文的传输方法和设备 | |
CN105262667A (zh) | Overlay网络中控制组播传输的方法、装置 | |
CN104301251A (zh) | 一种QoS处理方法、系统及设备 | |
CN104350467A (zh) | 用于使用sdn的云安全性的弹性实行层 | |
CN103581274B (zh) | 一种堆叠系统中报文转发方法和装置 | |
CN104380672A (zh) | 用于802.1aq的三级折叠Clos优化 | |
CN102857414A (zh) | 一种转发表写入、报文转发方法及装置 | |
CN107645431B (zh) | 报文转发方法及装置 | |
CN105450521A (zh) | 一种软件定义的多路径网络流实时动态优化方法 | |
CN105122742B (zh) | 用于在故障期间将流量极化的系统和方法 | |
CN110351286A (zh) | 一种软件定义网络中链路洪泛攻击检测响应机制 | |
CN108173691A (zh) | 一种跨设备聚合的方法及装置 | |
CN105391635A (zh) | 一种基于sdn的网络虚拟化方法 | |
CN105933248A (zh) | 基本虚拟网络环境内的服务插入 | |
CN105681198A (zh) | 一种业务链处理方法、设备及系统 | |
CN102710507B (zh) | 一种实现报文转发路径一致的方法和网络设备 | |
CN104980373A (zh) | 一种控制服务器及其应用的系统和方法 | |
CN105471747A (zh) | 一种智能路由器选路方法和装置 | |
CN101710864B (zh) | 一种多网口Linux服务器的配置方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |