CN105978952B - 一种基于网络功能虚拟化场景的流迁移方法及系统 - Google Patents
一种基于网络功能虚拟化场景的流迁移方法及系统 Download PDFInfo
- Publication number
- CN105978952B CN105978952B CN201610273970.8A CN201610273970A CN105978952B CN 105978952 B CN105978952 B CN 105978952B CN 201610273970 A CN201610273970 A CN 201610273970A CN 105978952 B CN105978952 B CN 105978952B
- Authority
- CN
- China
- Prior art keywords
- state
- fly
- class
- redirect
- data packet
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Abstract
本发明提出一种基于网络功能虚拟化场景的流迁移方法,该方法包括在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in‑fly类、last in‑fly类、redirect类,所述的目标流迁移处理单元使用基于标签的分类器将所述的normal类、in‑fly类、last in‑fly类、redirect类数据包进行分类;在所述流迁移处理单元中部署状态机,记录当前迁移状态,源状态机根据迁移状态对数据包进行标记与转发,所述目标状态机根据迁移状态与包处理规则将所述四类数据包分别放置于目标流处理单元中的默认缓存,in‑fly环形缓存与redirect环形缓存,最终通过默认缓存交付目标网络功能处。
Description
技术领域
本发明涉及网络功能虚拟化领域,软件定义网络技术领域,特别涉及一种基于网络功能虚拟化场景的流迁移方法及系统。
背景技术
随着网络体系结构演进与业务持续发展,网络中部署越来越多的专用设备,例如防火墙、入侵检测、接入认证等安全设备,负载均衡、TCP加速等性能提升设备,这些设备部署数量甚至与路由交换设备同一量级。这些专用设备大量部署不仅增加购买与运营成本,提升管理运维难度,而且研发周期长,无法满足网络及应用的快速创新与动态部署要求。网络功能虚拟化(Network Functions Virtualization,NFV)通过在软件实现在通用服务器虚拟机(Virtual Machine,VM)动态按需部署专用设备功能,引起工业界与学术界的广泛关注。
NFV支持网络功能基于通用硬件的软件化部署,相比于传统专用硬件的网络功能(Middlebox),其优势是服务链和处理资源的按需分配与灵活调度,从而降低建设成本并提高服务能力,例如,当防火墙处理流量过载时,可将其负载(处理的流)动态、实时地分配到其他通用资源进行处理(scale out操作);当多个网络功能负载较轻存在资源碎片时,可将其合并从而降低能耗(scalein操作),在NFV中,大多数网络功能对数据包的处理是基于流状态的,而某些数据包也会触发流状态的更新,这就要求在进行流迁移时,源和目标网络功能的相关流状态保持一致,从而确保迁移后目标网络功能对流处理的正确性。
为解决流迁移状态一致性问题,一种被动的方法(Gember A,Krishnamurthy A,John S S,et al.Stratos:A network-aware orchestration layer for middleboxes inthe cloud[R].Technical Report,2013.)是仅仅在网络转发设备(Switch)处对新流进行重定向,从而进行scale out的操作,或者等待源网络功能处理的流全部结束后进行销毁从而实现scale in操作,但这种方式无法迅速的缓解已经过载的网络功能,另一种方式(Rajagopalan S,Williams D,Jamjoom H,et al.Split/merge:System support forelastic execution in virtual middleboxes[C]//Presented as part of the 10thUSENIX Symposium on Networked Systems Design and Implementation(NSDI 13).2013:227-240.)是主动迁移正在被过载网络功能处理的流和相关的流状态,在短时间内实现流迁移,状态迁移可通过标准的南向接口实现,然而在状态迁移过程中,迁移流的数据包会持续的到达源网络功能或者目标网络功能,导致源、目标状态的不一致和部分数据包没有被正确的处理,其根本原因是状态的迁移和流的迁移存在竞争关系,OpenNF(Gember-Jacobson A,Viswanathan R,Prakash C,et al.OpenNF:Enabling innovation innetwork function control[J].ACM SIGCOMM Computer Communication Review,2015,44(4):163-174.)使用SDN控制器集中地缓存与处理状态迁移过程中到达的数据包,解决状态迁移和流迁移的竞争问题,然而,集中式的系统架构严重的限制了其可扩展性和性能。
目前解决NFV负载迁移的系统主要包括:
Split/Merge(Rajagopalan S,Williams D,Jamjoom H,et al.Split/merge:System support for elastic execution in virtual middleboxes[C]//Presented aspart of the 10th USENIX Symposium on Networked Systems Design andImplementation(NSDI 13).2013:227-240.):当迁移开始时,控制器命令Switch立刻将要迁移流的数据包转发到控制器进行集中缓存,之后控制器将源网络功能中要迁移的流的相关状态拷贝到目标网络功能中,这个过程中,所有迁移流的数据包都会缓存在控制器中,当状态拷贝完成后,控制器释放所有缓存的数据包给目标网络功能,并命令switch直接将数据包转发给目标网络功能,整个过程实现了流和相关状态的迁移,然而其存在两个问题,首先从控制器释放的包和被switch直接转发的包会乱序地被目标网络功能处理,乱序会造成网络功能的错误处理,其次,当开始迁移在源网络功能中相关的流状态时,仍有一些数据包已经被Switch转发但还没被源网络功能处理,这些包可能会更新流状态,但这些状态的更新会永远不会在目标网络功能中反应,导致流的状态在源、目标网络功能不一致。
OpenNF:当迁移开始时,直接从源网络功能中拷贝流状态,此时源网络功能会将收到迁移流数据包转发给控制器进行缓存,当状态拷贝完成后,控制器释放所有缓存的包,Switch也直接将包转发给目标网络功能,但此时目标网络功能会先缓存所有来自于Switch的数据包,等所有从控制器释放的数据包处理完成后在进行处理,通过这种精巧的设计可以解决Split/Merge的状态不一致问题和包乱序的问题,然而,这是一种集中式的系统,当迁移规模较大时,控制器会成为整个系统的瓶颈(单点处理和缓存所有的迁移数据包),此外,迁移数据包经由控制器传送给目标网络功能的方式引入了额外的转发。
Improved OpenNF与OpenNF不同,源网络功能仅仅将升级流状态的包转发给控制器进行缓存,在保证状态一致性的情况下大幅降低了控制器的缓存压力,然而,这种方式仍是一种集中式控制,没有从根本上解决瓶颈问题,此外,这种方式无法保证数据包无乱序的到达目标网络功能。
如图1所示,现有技术在状态一致性,迁移效率,集中式缓存需求和网络功能的额外开销等方面都存在缺陷。
发明内容
针对现有技术的不足,本发明提出一种基于网络功能虚拟化场景的流迁移方法及系统。
本发明提出一种基于网络功能虚拟化场景的流迁移方法,包括:
步骤1,在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
步骤2,在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,所述源状态机与所述目标状态机均用于获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处;
其中,所述步骤2包括:当所述目标状态机处于“正常”状态时:当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,该“正常”状态的包处理规则为将所有类型的数据包放入到默认缓存中发送给目标网络功能;
所述步骤2还包括“M1”状态:该“M1”状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表,该“M1”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包,该“M2”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M3”状态:该“M3”状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该“M3”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包;
“MS1”状态:该“MS1”状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该“MS1”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS2”状态:该“MS2”状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该“MS2”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS3”状态:任何事件在该“MS3”状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作为将in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包;
其中为数据包包头内设置两位标签的具体过程包括:
所述源流迁移处理单元为nomal类、in-fly类、last in-fly类数据包标记,网络交换设备为redirect类数据包标记;
所述normal类是默认值的数据包、所述in-fly类与所述last in-fly类是由源网络功能处的流迁移处理单元标记的数据包,redirect类是由网络交换设备进行标记的数据包。
本发明还提出了一种基于网络功能虚拟化场景的流迁移系统,包括:
分类模块,用于在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
迁移模块,用于在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,所述源状态机与所述目标状态机均用于获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处;
其中,所述迁移模块包括:当所述目标状态机处于“正常”状态时:当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,该“正常”状态的包处理规则为将所有类型的数据包放入到默认缓存中发送给目标网络功能;
所述迁移模块还包括“M1”状态:该“M1”状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表,该“M1”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包,该“M2”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M3”状态:该“M3”状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该“M3”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包;
“MS1”状态:该“MS1”状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该“MS1”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS2”状态:该“MS2”状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该“MS2”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS3”状态:任何事件在该“MS3”状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作为将in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包;
其中为数据包包头内设置两位标签的具体过程包括:
所述源流迁移处理单元为nomal类、in-fly类、last in-fly类数据包标记,网络交换设备为redirect类数据包标记;
所述normal类是默认值的数据包、所述in-fly类与所述last in-fly类是由源网络功能处的流迁移处理单元标记的数据包,redirect类是由网络交换设备进行标记的数据包。
由以上方案可知,本发明的优点在于:
本发明能够保证在迁移开始时,迁移的数据包可以立刻被转发到分布式的流迁移处理单元中进行处理与缓存(不依赖状态迁移操作),数据包的迁移和状态的迁移可以并发进行,目标流处理单元通过自身状态和各类事件生成相应的包处理规则处理收到的各类数据包,最终将数据包无丢失的、按序的递交给目标网络功能,从而实现高效的、透明的、无丢包和无乱序的流迁移操作,发明人基于本发明实现并部署了流迁移原型系统(TFM),并与目前最先进的系统OpenNF进行对比,试验结果和效果如下所示:
(1)迁移效率:如图2-4所示,TFM在迁移单条和100条流时所用的时间分别为24毫秒和77毫秒,其迁移效率比OpenNF分别提高了3倍到36倍,且优化程度会随着迁移流的数量不断提升;
(2)对迁移流的影响:流的迁移会引入额外的包延迟,这对流的传输效率有巨大影响,如图2-5所示,TFM中流迁移引入的包延迟为18毫秒,且不会受到流速率的影响,延迟相比于OpenNF降低了6-8倍;
(3)缓存需求:现有技术采用的是集中式缓存,对单点的缓存要求如图2-6所示,迁移100条流时OpenNF需200Mbytes(126980个包)的缓存,且此需求会随着迁移流数不断上升,TFM迁移相同数量的流仅需要14Mbytes(10044个包)的缓存。
附图说明
图1为基于Click实现的流迁移处理单元:模块配置与编排图;
图2-1为TFM系统架构图;
图2-2为流迁移处理单元设计架构图;
图2-3为流迁移处理单元状态机设计与实现;
图2-4为迁移效率(迁移时间)对比图;
图2-5为包延迟对比图;
图2-6为需缓存的包数量对比图;
图3为本发明系统TFM控制器流迁移伪代码图。
具体实施方式
为了解决现有技术在NFV中进行负载迁移时存在的状态不一致性、迁移效率低、控制器瓶颈和网络功能额外开销等问题,本发明设计并实现了基于分布式的架构的流迁移系统(Transparent Flow Migration,TFM),如图2-1所示,各迁移单元(TFM Box,图2-2)基于由多事件触发的状态机(图2-3)判断迁移状态,并生成数据包处理规则,实现对数据包分布式的协同分类与处理进而完成数据包的迁移,此外,迁移单元状态机可支持各类事件的乱序到达(异步处理机制),从而解耦状态迁移和数据包迁移两个操作;TFM控制器向应用提供北向迁移接口,定义迁移流和源、目标网络功能(在哪两个网络功能间迁移哪些流),控制器包括四个模块:状态管理器调用源、目标网络功能提供的流状态导出/导入南向接口,实现流状态在多个网络功能间的迁移;流迁移管理器控制分布式的流迁移处理单元,实现无丢包、无乱序的数据包迁移;网路管理器负责控制网络转发设备,使得流能在源、目标网络功能间进行转发与迁移;流迁移调度器负责解析北向接口参数并向下协调与调度上述的三个模块。
本发明提出一种基于网络功能虚拟化场景的流迁移方法,包括
步骤1,在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
步骤2,在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处。
为了便于对本发明进行解释说明,以下为本发明方法的实施例,如下所示:
步骤1,本发明采用分布式的流迁移架构,在靠近目标网络功能处部署流迁移处理单元,其可以是一个单独的代理器或者在网络功能所属的虚拟交换机中实现,实现架构和组件如图2-2所示,包含一个两级包分类组件、三个环形缓存队列、一个标签器和一个转发组件,其中在源网络功能处,流迁移处理单元将分类的数据包打上不同的标签,并转发给目标网络功能处的流迁移处理单元,其根据包头的标签位将数据包依照步骤3分为四类,其中in-fly和redirect类型的数据包分别按照先进先出(FIFO)的方式存储到in-fly和redirect环形队列中,normal类型数据包存储到默认缓存中;同时,in-fly和redirect队列中的数据包会在不同的迁移阶段(步骤2)输出到默认缓存中,默认缓存作为唯一的出口向网络功能输出数据包;
步骤2,在每个流迁移处理单元中实现状态机,该状态机有两个作用,一是确定流迁移进行到什么阶段,二是确定在该迁移阶段对不同类型的数据包进行怎样的处理,如图2-3所示,状态机包括源和目标两种类型,首先看较为复杂的目标状态机,其包括7个状态(一个正常状态和六个迁移状态),当状态迁移开始时,状态机从“正常”状态迁移到“M1”状态,此时进入迁移阶段,随着迁移的进行,状态机会在中间的六个状态间进行迁移,最终随着迁移结束又回到“正常”状态(图中右下角状态),整个流程有两个关键点,一是状态机的状态迁移是如何触发的,二是每个状态下对不同类型的包如何处理,具体如下所示:
(1)首先状态机的状态迁移是通过事件触发的,状态机事件包括四类包事件(收到数据包)和三类控制事件(迁移开始,状态安装结束,迁移结束),其中,控制事件和部分包事件(第一个redirect类的数据包和last infly类的数据包到达事件)可以触发状态机的状态变迁,称该类事件为关键事件,关键事件与相应的操作如图2-3(a)中有向实线所示;除了关键事件外,其他类型的事件不会产生状态的迁移(虚箭头表示),我们称之为闭环事件,该类事件全部为包事件,所有事件都包含匹配域和操作域两个域,匹配域定义了该事件的特征(如来自控制器的某个命令或者某种类型的数据包),操作域定义了该事件达到后除了可能触发状态变迁(关键事件)外,还需要采取哪些操作,这些特征和操作将在随后进行详细描述。
(2)状态机的每个状态下会对四类数据包定义不同的包处理规则,所有的闭环事件(非关键事件)定义了不同状态下包的处理规则,如图2-3(b)所示,规则也包括匹配域和操作域,命中匹配域的数据包会执行该规则操作域的操作(包括缓存和丢弃两种);
下面分别介绍源、目标流处理单元状态变迁和各状态下包处理规则,如图2-3(a)所示,目标状态机:
(1)“正常”状态:该状态下,当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,由于该“正常”状态下没有闭环事件(虚线),所以其包处理规则如图2-3(b)默认规则所示,即将所有类型的数据包放入到默认缓存中发送给目标网络功能。
(2)“M1”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表。该“M1”状态下的数据包操作如图2-3(b)中LR1规则所示,in-fly和redirect数据包分别缓存到各自队列中。
(3)“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包。该“M2”状态下的数据包操作如图2-3(b)中LR2规则所示,in-fly和redirect数据包分别缓存到各自队列中。
(4)“M3”状态:该状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该状态下的数据包操作如图2-3(b)中LR3规则所示,in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包。
(5)“MS1”状态:该状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该状态下的数据包操作如图2-3(b)中LRS1规则所示,in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存。
(6)“MS2”状态:该状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该状态下的数据包操作如图2-3(b)中LRS2规则所示,in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存。
(7)“MS3”状态:任何事件在该状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作如图2-3(b)中LRS3规则所示,in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包。
源流迁移处理单元的两个状态描述为:
(1)“正常”状态:该状态下,当收到来自控制器的“流迁移开始命令事件”时,状态向右变为“M”,执行的操作是打开包分类器。由于该状态下没有闭环事件(虚线),所以其包处理规则如图2-3(b)默认规则所示,即将所有类型的数据包放入到默认缓存中发送给目标网络功能。
(2)“M”状态:该状态下,当收到来自控制器的“流迁移结束命令事件”时,状态向左变为“正常”,执行的操作是关闭包分类器。该状态下的包处理规则是收到“normal”数据包时,包头打入in-fly标签,并转发给目标流处理单元;收到“redirect”数据包时,包头打入last in-fly标签,并转发给目标流处理单元;
源、目标状态机通过一系列的事件触发状态迁移,并最终回到“正常”状态,完成一次流迁移操作。
步骤3,TFM使用带内的方式标记不同类型的数据包和传递控制信息,具体实现是使用数据包包头中的两位标记迁移过程中的四类数据包(normal,in-fly,redirect,lastin-fly):normal是默认数据包,迁移过程中,有些新的流会直接被分配到目标网络功能中进行处理,该类流的数据包并没有涉及到迁移操作;in-fly:迁移开始时,首先将原网络功能中的流状态迁移(安装)到目标网络功能中,同时,我们需要升级流表将要迁移的数据包直接转发给目标网络功能,而在升级流表时刻之前,某些数据包已经被发给原网络功能且还没有被处理,为了避免数据包的丢失和状态不一致问题,原迁移单元需要将该类型的数据包打上in-fly的标签并转发给目标流处理单元;redirect,流表升级之前发给原网络功能的数据包为in-fly类型,流表升级之后直接发给目标网络功能的数据包为redirect,该标签由交换机打入;last in-fly,为了保证迁移过程中数据包没有乱序,目标单元需要先处理所有的in-fly的数据包,再处理redirect的数据包,而此时目标单元需要确定哪个数据包是最后一个in-fly数据包,即last in-fly类型包,该包由源流迁移处理单元进行标记。其技术效果为:目标流处理单元能够依靠不同的标记对包进行分类,从而进行正确的处理,此外,redirect和last in-fly数据包还带有控制信息,能够触发目标迁移单元升级流表和释放缓存,如附图2-2所示,实现了高效的控制机制与协同机制。
本发明基于上述关键技术和机制,实现并部署了本发明的基于网络功能虚拟化场景的流迁移系统TFM,系统相关组件如图2-1所示,包含TFM控制器和TFM box(流迁移处理单元)两个部分:
流迁移处理单元:TFM box基于Click实现,其中tagclassifier模块根据包的tag(步骤3)进行包分类并转交给模块tfm,其根据内置状态机生成的包处理规则(步骤2)缓存、丢弃或者转发该数据包,最终由NFclassifier模块将数据包递交给网络功能。此外,ControlSocket模块向控制器提供了基于telnet的配置调用接口,允许控制器远程实时配置。
流迁移控制器:如图2-1所示,控制器包含状态管理器、流迁移控制器和网络管理器。在迁移开始时,状态管理器通过gson的方式调用网络功能提供的标准的南向接口,进行流状态的导出和导入;网络控制器有java实现,调用OpenFlow的控制器Floodlight控制网络转发行为;流迁移器通过telnet向TFM box下发控制命令。控制器的操作与调度如附图3所示。
本发明还提出了一种基于网络功能虚拟化场景的流迁移系统,包括:
分类模块,用于在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
迁移模块,用于在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,所述源状态机与所述目标状态机均用于获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处;
其中,所述迁移模块包括:当所述目标状态机处于“正常”状态时:当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,该“正常”状态的包处理规则为将所有类型的数据包放入到默认缓存中发送给目标网络功能;
所述迁移模块还包括“M1”状态:该“M1”状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表,该“M1”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包,该“M2”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M3”状态:该“M3”状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该“M3”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包;
“MS1”状态:该“MS1”状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该“MS1”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS2”状态:该“MS2”状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该“MS2”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS3”状态:任何事件在该“MS3”状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作为将in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包;
其中为数据包包头内设置两位标签的具体过程包括:
所述源流迁移处理单元为nomal类、in-fly类、last in-fly类数据包标记,网络交换设备为redirect类数据包标记;
所述normal类是默认值的数据包、所述in-fly类与所述last in-fly类是由源网络功能处的流迁移处理单元标记的数据包,redirect类是由网络交换设备进行标记的数据包。
Claims (2)
1.一种基于网络功能虚拟化场景的流迁移方法,其特征在于,包括:
步骤1,在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
步骤2,在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,所述源状态机与所述目标状态机均用于获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处;
其中,所述步骤2包括:当所述目标状态机处于“正常”状态时:当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,该“正常”状态的包处理规则为将所有类型的数据包放入到默认缓存中发送给目标网络功能;
所述步骤2还包括“M1”状态:该“M1”状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表,该“M1”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包,该“M2”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M3”状态:该“M3”状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该“M3”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包;
“MS1”状态:该“MS1”状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该“MS1”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS2”状态:该“MS2”状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该“MS2”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS3”状态:任何事件在该“MS3”状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作为将in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包;
其中为数据包包头内设置两位标签的具体过程包括:
所述源流迁移处理单元为nomal类、in-fly类、last in-fly类数据包标记,网络交换设备为redirect类数据包标记;
所述normal类是默认值的数据包、所述in-fly类与所述last in-fly类是由源网络功能处的流迁移处理单元标记的数据包,redirect类是由网络交换设备进行标记的数据包。
2.一种基于网络功能虚拟化场景的流迁移系统,其特征在于,包括:
分类模块,用于在源网络功能处与目标网络功能处分别部署源流迁移处理单元与目标流处理单元,并通过所述的源流迁移处理单元与网络交换设备在数据包包头内设置两位标签,将数据包标记为四类,包括normal类、in-fly类、last in-fly类、redirect类,所述的目标流处理单元使用基于所述标签的分类器将所述的normal类、in-fly类、last in-fly类、redirect类数据包进行分类;
迁移模块,用于在所述源流迁移处理单元与所述目标流处理单元中分别部署源状态机与目标状态机,所述源状态机与所述目标状态机均用于获取并记录当前迁移状态,所述源状态机根据所述当前迁移状态对数据包进行标记与转发,所述目标状态机根据所述当前迁移状态与包处理规则将所述normal类、in-fly类、last in-fly类、redirect类数据包分别放置于所述目标流处理单元中的默认缓存,in-fly类的环形缓存与redirect类的环形缓存,最终通过默认缓存交付于目标网络功能处;
其中,所述迁移模块包括:当所述目标状态机处于“正常”状态时:当收到来自控制器的“流迁移开始命令事件”时,状态变为“M1”,执行的操作是创建redirect和in-fly环形缓存,打开包分类器,该“正常”状态的包处理规则为将所有类型的数据包放入到默认缓存中发送给目标网络功能;
所述迁移模块还包括“M1”状态:该“M1”状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS1”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到redirect数据包,此时状态向下迁移为“M2”,执行操作为通知控制器升级流表,该“M1”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M2”状态:该状态下有两个关键事件,一是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS2”,执行操作为将in-fly缓存中的数据包推送到默认缓存中,并释放in-fly缓存;二是收到last in-fly数据包,此时状态向下迁移为“M3”,执行操作为丢弃该数据包,该“M2”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中;
“M3”状态:该“M3”状态关键事件是收到控制器“状态安装完成事件”,此时状态向右迁移为“MS3”,执行操作为将in-fly和redirect缓存中的数据包推送到默认缓存中,并释放in-fly和redirect缓存;该“M3”状态下的数据包操作为将in-fly和redirect数据包分别缓存到各自队列中,并丢弃last in-fly数据包;
“MS1”状态:该“MS1”状态关键事件是收到redirect数据包,此时状态向下迁移为“MS2”,执行操作为通知控制器升级流表;该“MS1”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS2”状态:该“MS2”状态关键事件是收到last in-fly数据包,此时状态向下迁移为“MS3”,执行操作为将redirect缓存中的数据包推送到默认缓存中,并释放redirect缓存;该“MS2”状态下的数据包操作为将in-fly数据包缓存到默认缓存,redirect数据包缓存到redirect缓存;
“MS3”状态:任何事件在该“MS3”状态下都为关键事件,此时状态向下迁移为“正常”,执行操作为关闭包分类功能,通知控制器迁移结束;该状态下的数据包操作为将in-fly数据包和redirect数据包缓存到默认缓存,并丢弃last in-fly数据包;
其中为数据包包头内设置两位标签的具体过程包括:
所述源流迁移处理单元为nomal类、in-fly类、last in-fly类数据包标记,网络交换设备为redirect类数据包标记;
所述normal类是默认值的数据包、所述in-fly类与所述last in-fly类是由源网络功能处的流迁移处理单元标记的数据包,redirect类是由网络交换设备进行标记的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610273970.8A CN105978952B (zh) | 2016-04-28 | 2016-04-28 | 一种基于网络功能虚拟化场景的流迁移方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610273970.8A CN105978952B (zh) | 2016-04-28 | 2016-04-28 | 一种基于网络功能虚拟化场景的流迁移方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105978952A CN105978952A (zh) | 2016-09-28 |
CN105978952B true CN105978952B (zh) | 2019-04-30 |
Family
ID=56994042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610273970.8A Active CN105978952B (zh) | 2016-04-28 | 2016-04-28 | 一种基于网络功能虚拟化场景的流迁移方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105978952B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506648A (zh) * | 2020-11-20 | 2021-03-16 | 鹏城实验室 | 一种虚拟网络功能实例的流量无状态迁移方法及电子设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018107475A1 (zh) * | 2016-12-16 | 2018-06-21 | 华为技术有限公司 | 处理数据包的方法和装置 |
CN108306912A (zh) * | 2017-01-12 | 2018-07-20 | 中兴通讯股份有限公司 | 虚拟网络功能管理方法及其装置、网络功能虚拟化系统 |
CN108667777B (zh) * | 2017-03-31 | 2021-02-05 | 华为技术有限公司 | 一种服务链生成方法及网络功能编排器nfvo |
WO2019071582A1 (en) * | 2017-10-13 | 2019-04-18 | Telefonaktiebolaget Lm Ericsson (Publ) | TRANSFERRING MULTIPLE RESOURCES BETWEEN NETWORK FUNCTIONS |
CN108449214B (zh) * | 2018-03-21 | 2020-09-25 | 大连理工大学 | 一种基于Click的虚拟网元在线编排方法 |
CN111258954B (zh) * | 2020-01-10 | 2023-12-05 | 北京百度网讯科技有限公司 | 数据迁移方法、装置、设备及存储介质 |
CN111639061B (zh) * | 2020-05-26 | 2023-03-17 | 深圳壹账通智能科技有限公司 | Redis集群中数据管理方法、装置、介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013074847A1 (en) * | 2011-11-15 | 2013-05-23 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
CN104598303A (zh) * | 2013-10-31 | 2015-05-06 | 中国电信股份有限公司 | 基于kvm的虚拟机间在线迁移方法与装置 |
CN104679579A (zh) * | 2015-03-19 | 2015-06-03 | 杭州华三通信技术有限公司 | 一种集群系统中的虚拟机迁移方法和装置 |
CN104750554A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团公司 | 一种虚拟机间数据迁移的方法和设备 |
CN105072078A (zh) * | 2015-06-30 | 2015-11-18 | 北京奇虎科技有限公司 | 一种云平台虚拟化流量的监控方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8689211B2 (en) * | 2009-05-25 | 2014-04-01 | International Business Machines Corporation | Live migration of virtual machines in a computing environment |
-
2016
- 2016-04-28 CN CN201610273970.8A patent/CN105978952B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013074847A1 (en) * | 2011-11-15 | 2013-05-23 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
CN104598303A (zh) * | 2013-10-31 | 2015-05-06 | 中国电信股份有限公司 | 基于kvm的虚拟机间在线迁移方法与装置 |
CN104750554A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团公司 | 一种虚拟机间数据迁移的方法和设备 |
CN104679579A (zh) * | 2015-03-19 | 2015-06-03 | 杭州华三通信技术有限公司 | 一种集群系统中的虚拟机迁移方法和装置 |
CN105072078A (zh) * | 2015-06-30 | 2015-11-18 | 北京奇虎科技有限公司 | 一种云平台虚拟化流量的监控方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506648A (zh) * | 2020-11-20 | 2021-03-16 | 鹏城实验室 | 一种虚拟网络功能实例的流量无状态迁移方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105978952A (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105978952B (zh) | 一种基于网络功能虚拟化场景的流迁移方法及系统 | |
Niu et al. | Load balancing across microservices | |
US10628236B2 (en) | System and method for inter-datacenter communication | |
CN104081736B (zh) | 客户端设备上调度分组传输的系统和方法 | |
US9888048B1 (en) | Supporting millions of parallel light weight data streams in a distributed system | |
CN101465863B (zh) | 一种内核虚拟机环境下高效网络i/o的实现方法 | |
US20210328941A1 (en) | Changing a time sensitive networking schedule implemented by a softswitch | |
US20160378545A1 (en) | Methods and architecture for enhanced computer performance | |
CN109144679A (zh) | 中断请求的处理方法、装置及虚拟化设备 | |
US11190401B2 (en) | Impartial buffering in stream processing | |
Wang et al. | Transparent flow migration for NFV | |
US10909067B2 (en) | Multi-node zero-copy mechanism for packet data processing | |
CN102521044A (zh) | 一种基于消息中间件的分布式任务调度方法及系统 | |
CN107454017A (zh) | 一种云数据中心网络中混合数据流协同调度方法 | |
US11502967B2 (en) | Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment | |
US7536587B2 (en) | Method for the acceleration of the transmission of logging data in a multi-computer environment and system using this method | |
CN109522114A (zh) | 虚拟化框架的雷达数据高速通信处理模块 | |
CN113672240A (zh) | 一种基于容器的多机房批量自动化部署应用的方法及系统 | |
CN106062716A (zh) | 在单任务系统中实现多任务的方法、装置及单任务系统 | |
Aljoby et al. | On SDN-enabled online and dynamic bandwidth allocation for stream analytics | |
Meng et al. | CoCo: Compact and optimized consolidation of modularized service function chains in NFV | |
Ibanez et al. | The nanoPU: Redesigning the CPU-network interface to minimize RPC tail latency | |
CN107273225A (zh) | 基于消息队列的高并发抢单功能实现方法 | |
Han et al. | A modeling framework for schedulability analysis of distributed avionics systems | |
US11971830B2 (en) | Efficient queue access for user-space packet processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |