分布式vUP架构技术白皮书
Copyright © 2022 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
为解决传统BRAS中存在的控制平面与转发平面能力不匹配、无法资源共享以及新业务开通缓慢等问题,业界提出了基于转发与控制分离技术的vBRAS系统架构。
如图1所示,基于转发与控制分离技术的vBRAS系统架构包括vBRAS-CP(简称CP)和vBRAS-UP(简称UP)两种角色,由二者共同实现BRAS功能。
· CP(Control Plane,控制平面):负责完成用户身份认证、地址分配与管理等控制平面功能。有关vBRAS-CP架构的详细介绍,请参见《vBRAS-CP架构技术白皮书》
· UP(User Plane,用户平面):负责完成用户业务流量转发和流量控制等转发平面功能。根据设备物理形态不同,vBRAS-UP分为以下两种类型:
¡ vBRAS-pUP(简称pUP):由物理设备担任UP角色。pUP具有转发性能强的特点,可以用来处理如宽带上网、IPTV等大流量需求的业务。
¡ vBRAS-vUP(简称vUP):由虚拟化设备担任UP角色。vUP具有计算能力强的特点,可以用来处理如ITMS、VoIP等大session小流量需求的业务。vUP根据设备形态不同,又分为:
- 集中式vUP:由集中式虚拟化设备担任UP角色。
- 分布式vUP:由分布式虚拟化设备担任UP角色,该类vUP由MPU-VM和LPU-VM两种类型的VM组成。
本手册中,如无特殊说明,vUP均指分布式vUP。
如下图所示,vBRAS转发与控制分离架构主要包括含vBRAS-CP、vBRAS-UP、CP-UP通道、业务系统、网元管理系统和MANO等六大功能组件。
图2 vBRAS转发与控制分离系统架构
以上架构中,各功能组件基本功能如下:
· vBRAS-CP(Control Plane,控制平面):负责完成用户身份认证、地址分配与管理等控制平面功能。其中,vBRAS-CP采用资源池化部署模式,充分发挥vBRAS-CP资源池计算能力强的优势。
¡ VNF(Virtualized Network Function,虚拟化的网络功能):虚拟化后的软件实体,它通过借助NFVI虚拟化后的虚拟资源来实现各种网络功能。在vBRAS转发与控制分离系统架构中使用H3C vBRAS-CP(包括CTRL-VM、BRAS-VM、FWD-VM和DB-VM)担任VNF角色。
¡ NFVI(Network Function Virtualization Infrastructure,网络功能虚拟化基础设施):主要负责将计算、存储以及网络的硬件资源全面虚拟化,并映射成虚拟资源。在vBRAS转发与控制分离系统架构中使用H3C CAS担任NFVI角色。
¡ x86:使用标准的x86服务器提供底层物理硬件资源。
· vBRAS-UP(User Plane,用户平面):负责完成用户数据流量转发和流量控制等转发平面功能。其中,vBRAS-UP可由路由器或vBRAS担任。
· CP-UP通道:控制平面与转发平面之间存在如下三种类型的通信通道。
¡ 管理通道:使用NETCONF连接作为CP和UP之间的管理通道,实现CP向UP查询数据、下发配置等功能。例如,创建子接口、下发BRAS业务配置等。
¡ 控制通道:使用CUSP(Control-/User-plane Separation Protocol,控制与转发分离协议)通道作为CP和UP之间的控制通道,实现业务表项下发、查询以及接口资源信息上报等功能。
¡ 协议通道:使用GPE(Generic Protocol Extension,通用协议扩展)类型的VXLAN隧道作为CP和UP之间的协议通道,实现DHCP、ARP、PPPoE等协议报文交互。VXLAN GPE隧道是一种扩展的VXLAN隧道,在VXLAN头中可以携带更丰富的信息,如端口类型、端口编号以及VLAN等信息,以便CP根据这些信息完成对用户的合法性验证和IP地址分配等工作。
· 业务系统:由AAA服务器、DHCP服务器和Portal服务器等各种不同业务类型的服务器组成,为用户提供认证、授权、计费、地址分配等业务功能。
· 网元管理系统(Element Management System):负责远程管理网络中的各个网元设备,以及网络维护。
· MANO(Managementand Orchestration,管理和编排系统):负责NFVI的软硬件资源的生命周期管理和编排,以及对VNF的生命周期管理和编排。MANO包括如下几种类型的组件:
¡ VIM(Virtualized Infrastructure Manager,虚拟化基础设施管理器):负责对物理硬件虚拟化资源进行统一管理、监控和优化。在vBRAS转发与控制分离系统架构中使用H3C CloudOS担任VIM角色。
¡ VNFM(Virtualized Network Function Manager,虚拟网络功能管理器):负责VNF的生命周期管理。在vBRAS转发与控制分离系统架构中使用H3C VNF-Manager担任VNFM角色。
¡ NFVO(Network Function Virtualization Orchestrator,网络功能虚拟化编排器):负责基础资源和上层软件资源的编排和管理,实现网络服务。在vBRAS转发与控制分离系统架构中使用H3C VNFM-vBRAS担任NFVO角色。
如图3所示,分布式vUP由MPU-VM和LPU-VM两种类型的VM组成。
图3 分布式vUP软件架构
以上架构中,各VM的功能介绍请见表1。
表1 VM功能描述表
VM类型 |
功能概述 |
VM的Slot取值 |
MPU-VM |
负责vUP管理,完成vUP系统的控制平面和管理平面功能 |
一个vUP中最多支持两个MPU-VM,slot编号为1和2。其中,一个为主MPU-VM,一个为备MPU-VM。正常情况下,只有主MPU-VM工作,备MPU-VM处于备份状态 |
LPU-VM |
负责处理用户业务、转发报文 |
一个vUP中支持多个LPU-VM,slot编号取值范围为5~36 多个LPU-VM可以组成一个弹性伸缩组。有关弹性伸缩组的详细介绍,请参见《分布式vUP弹性伸缩技术白皮书》 |
分布式vUP内的各个VM分别部署于不同的服务器上,并依靠内部的二层网络进行互连。内部网络划分为控制通道(InnerCTRL)、数据通道(InnerDATA)、外部通道(External)、维护通道(OM)等,各通道使用不同的VLAN通信。
· 控制通道:用于MPU-VM管理LPU-VM的内部控制报文的传输通道(包括下发数据给LPU-VM,以及LPU-VM上报信息给MPU-VM)。
· 数据通道:用于VM间的内部数据报文的传输通道,包括MPU-VM/LPU-VM、外部报文在vUP内部的传输等。
· 外部通道:LPU-VM与外部系统交互的传输通道,包括与CP的交互。
· 维护通道:MPU-VM与MANO交互的传输通道。
其中控制通道、数据通道互为备份,要求对应这两个通道的服务器网卡允许所有VLAN通过,并且中间交换机上放行的VLAN要和InnerCTRL/InnerDATA VLAN保持一致并允许通过,由VM根据通道状态自动选择用哪个通道进行数据传输。
图4 分布式vUP部署及内部通道示意图
分布式vUP为CP提供标准的北向接口,并为业务提供了标准的南向接口。
北向接口包括:
· 管理接口:UP与CP之间管理通道使用的接口。
· 控制接口:UP与CP之间控制通道使用的接口。
· 协议接口:UP与CP之间协议通道使用的接口。
南向接口包括:
· 配置接口:运维人员对系统进行业务配置的接口,可以是命令行或者其它网络配置工具(例如控制器)。
· 网管接口:网元管理系统进行告警、业务信息采集的接口。
· MANO接口:VM生命周期的通信接口。
分布式vUP内部使用了VM节点备份、接口/链路备份等备份手段,以提升分布式vUP整体的可靠性。
分布式vUP中相同类型的VM节点分别部署在不同物理节点上,以保证当其中一个物理节点故障时,另一个物理节点可继续对外提供服务,保证用户业务不受影响。各类VM的备份方式有所不同,具体如下:
· MPU-VM节点使用主备冗余进行1:1备份,其中一个为主节点,另一个为备节点,业务数据在主备节点间进行实时备份,当主MPU-VM故障后备MPU-VM接替主身份继续工作。
· 多个LPU-VM可以组成一个弹性伸缩组,弹性伸缩组内所有LPU-VM同时工作,进行业务负载分担及相互备份,增强LPU-VM的可靠性。有关弹性伸缩组的详细介绍,请参见《分布式vUP弹性伸缩技术白皮书》。
分布式vUP内部网络分为维护通道(OM)、控制通道(InnerCTRL)、数据通道(InnerDATA)和外部通道(External),它们对应的内部接口分别为OM接口、InnerCTRL接口、InnerDATA接口和External接口四类:
· OM接口:MPU-VM用来连接维护通道(OM)的接口。
OM接口通常使用双物理接口在宿主机服务器上做bond(即把多个物理网卡绑定成一个逻辑上的网卡,使用同一个IP工作,在增加带宽的同时也可以提高冗余性),物理接口故障时依赖bond切换保证OM接口的可靠性。
· InnerCTRL接口和InnerDATA接口:MPU-VM和LPU-VM分别用来连接控制通道(InnerCTRL)和数据通道(InnerDATA)的接口。
InnerCTRL接口和InnerDATA接口各使用一个物理接口,作为分布式vUP的各VM间内部通信使用。当物理接口处于正常可用状态时,控制通道和数据通道分别使用InnerCTRL接口和InnerDATA接口进行交互,互不影响。当其中一个物理接口发生故障时,分布式vUP自动进行接口借用,利用另一物理接口进行报文收发,保证高可靠性;当物理接口故障恢复后,会进行接口回切,保证数据通道和控制通道互不影响。
· External接口:LPU-VM用来连接外部通道(External)的接口。
在转发与控制分离组网场景中,ITMS、VoIP等大session小流量需求的用户通过vUP上的VSI接口上线。为了提高用户流量的处理效率,可以将VSI接口和弹性伸缩组绑定,使通过该VSI接口转发的用户流量在弹性伸缩组的LPU-VM间负载分担。同时可通过配置保障External接口的可靠性,比如使用ECMP路径进行负载分担或配置聚合接口。
VM内部通信链路OAM(Operation, Administration, and Maintenance,操作、管理和维护)为分布式vUP的内部网络的控制通道(InnerCTRL)、数据通道(InnerDATA)提供内部通信接口初始选择、内部通信链路质量探测、内部通信链路切换功能,能够有效提高系统内部通信的管理和维护能力,保障系统的稳定运行。
如图5所示,VM启动时,分布式vUP建立控制通道、数据通道(控制通道、数据通道均为逻辑接口)与内部物理接口的映射关系,具体流程如下。
(1) 分布式vUP从VNFM-vBRAS部署的初始化XML配置文件中读取控制通道和数据通道的使用的MAC地址列表、VLAN及网段等信息。
(2) 接口选择模块根据MAC地址列表选择内部通信使用的两个内部物理接口,建立控制通道、数据通道与这两个物理接口的映射关系。
(3) 分布式vUP将配置文件中的VLAN下发给控制通道和数据通道使用的物理接口,控制VLAN和数据VLAN用于隔离内部通信的控制报文和数据报文。数据通道和控制通道VLAN不可相同。
(4) 将配置文件中的MAC地址分配VM,每台VM两个MAC地址,一个作为控制通道MAC,另一个作为数据通道MAC。
VM开启内部通信链路探测功能后,内部物理口周期性地广播发送探测报文对链路质量分别进行探测。系统通过统计探测报文的丢包率和错包率,为链路质量进行评估。系统采用亚健康值来评估链路质量的等级:
亚健康值=(丢包率+5×错包率)×100。
表2 链路质量的等级
链路质量的等级 |
亚健康值(缺省情况) |
Normal(链路质量ok) |
0≤亚健康值<50 |
Minor(链路质量存在异常) |
50≤亚健康值<100 |
Major(链路质量差) |
100≤亚健康值 |
链路质量的等级可以用来作为控制通道和数据通道切换的内部物理接口的依据。
当内部物理接口发生故障或者链路状态发生变化时,系统会将该接口对应的数据通道或控制通道切换到正常的内部物理接口上,避免接口故障影响业务。分布式vUP设备仅存在两个内部物理接口用于内部链路通信。
接口选择模块根据两个内部物理口的状态,分别为控制通道和数据通道选择质量较优的物理口。控制通道和数据通道选择接口的原则相同,具体过程如下:
· 若一个物理口状态为up,另一个物理口状态为down,则选择状态为up的物理口。
· 若两个物理口状态均为down,则控制通道和数据通道恢复选择VM启动时初始的物理口。
· 若两个物理口状态均为up,则比较两个物理口上链路的链路质量的等级:
¡ 若一个物理口上链路质量的等级为Normal,另一个物理口上链路质量的等级为非Normal,则选择链路质量的等级为Normal的物理口。
¡ 若两个物理口上链路质量的等级均Normal,则仍使用初始选择的物理接口。
¡ 若两个物理口上链路质量的等级均非Normal,则选择链路质量的等级更好的物理口,链路质量的等级相同则仍使用初始选择的物理接口。
根据上述通道选择接口的原则,判断内部通信链路是否切换:
· 若当前通道使用的物理口是接口选择模块选中的物理口,则不进行物理口切换。
· 若当前通道使用的物理口不是接口选择模块选中的物理口,则进行物理口切换。
分布式vUP架构中MPU-VM和LPU-VM通过内部的二层链路形成了一个以控制通道(InnerCTRL)和数据通道(InnerDATA)为主体的内部二层网络,各VM之间依靠内部的二层网络进行通信。但由于各VM之间的二层链路会存在多个内部交换机,如果从一个VM发到另一个VM的报文长度大于二层链路中某个交换机或对端服务器网卡的MTU,那么报文会被丢弃。为了避免出现这种情况,需要通过一种方法提前知道整个二层链路中的最小MTU,这样从VM中发出的报文只要不大于此MTU就不会被丢弃。
VM内部通信链路Path MTU探测可以通过链路探测功能,发现本端VM到达其他各VM的最大MTU,并将探测的结果上报到二层转发模块,二层转发模块根据该MTU组织报文长度,以保证各VM之间交互的报文不会被丢弃。
开启VM内部通信链路Path MTU探测功能,vUP内部各VM会发送链路探测报文。首次探测时,本端VM会发送最大长度的探测报文来判断当前内部通信链路Path MTU是否处于缺省值,若本端收到二层链路中所有的VM应答,则表明链路的Path MTU处于缺省值;若未收到应答或仅收到部分VM的应答,则表明链路Path MTU发生变化,本端VM使用二分法方式进行探测,即每次取链路探测报文范围内中间值来发送探测报文,不断缩小链路探测报文取值范围,直到获取到可以通过二层链路的最大的MTU值。链路探测报文的长度缺省为512~3000。
其中,MPU-VM通过广播发送链路探测报文,LPU-VM通过单播发送链路探测报文,下面以MPU-VM为例,介绍VM内部通信链路Path MTU的探测过程。
(1) MPU-VM首先广播发送最大长度的链路探测报文并等待应答。若收到了当前vUP内部所有VM的应答,则表明Path MTU为缺省值,MPU-VM停止探测,如图6所示。
图6 MPU-VM收到应答
(2) 若未收到应答或仅收到部分VM的应答,则表明Path MTU发生变化,MPU-VM取链路探测报文长度范围内的中间值组织探测报文,并再次广播发送,如图7所示。
¡ 若收到当前vUP内部所有VM的应答,MPU-VM会以中间值作为最小值,取到探测报文的最大值范围内的中间值组织探测报文广播发送。
¡ 若未收到应答或仅收到部分VM的应答,MPU-VM会以中间值作为最大值,取到探测报文的最小值范围内的中间值组织探测报文广播发送。
¡ vUP通过这种二分法取值方式不断缩小链路探测报文的取值范围,在多次探测后,MPU-VM最终会获取到二层链路允许通过的最大报文长度,即内部通信链路的Path MTU。
图7 MPU-VM未收到应答
VM内部通信链路Path MTU探测有两种触发机制:事件触发探测和定时探测。
· 事件触发探测:
¡ 当执行立即探测命令时,会触发探测。
¡ 当VM内部通信链路Path MTU探测功能由关闭转为开启时,会触发探测。
¡ 当VM内部通信链路亚健康状态由Minor或Major转为Normal,或者由Normal转为Minor或Major时,会触发探测。有关VM内部通信链路状态的详细介绍,请参见“转发与控分离业务”中的“VM内部通信链路OAM配置指导”。
¡ 当新增一条内部通道,即链路的亚健康状态为Unknown时,会触发探测。
· 定时探测:
开启VM内部通信链路Path MTU定时探测功能后,VM会定时对内部通信链路Path MTU进行探测。
VM内部通信链路Path MTU值支持动态探测和静态配置两种,选取规则如下:
· 如果仅存在动态探测或者静态配置的Path MTU,则以当前的探测值或静态配置的Path MTU为准。
· 如果同时存在动态探测和者静态配置的Path MTU,VM会选择以静态配置的值为准,但若配置的值大于探测值,VM将会打印告警日志,提醒运维人员修改静态配置的Path MTU。
分布式vUP由MPU-VM和LPU-VM组成。在vUP内部,每个VM通过Slot编号来标识,VM之间使用Slot编号来进行内部通信。主用MPU-VM会发送广播报文来管理VM,所以,vUP要求一个广播域内每个VM的Slot编号必须唯一。
如果一个广播域中存在多个使用相同Slot编号的VM,那么vUP系统将无法区分这两个VM,导致vUP无法将报文发送给正确的VM处理,从而影响报文的正常处理和转发。这种现象称为VM冲突。通常情况下,vUP的Slot编号分配机制能保证广播域内Slot编号的唯一性。异常情况下,可能出现VM冲突。
VM冲突检测功能用于检测同一vUP内部是否发生了VM冲突。如果检测到VM冲突,则采取一定的措施,让其中一个VM正常工作,另一个VM进入静默状态,以免影响报文的正常处理和转发。处于静默状态的VM只能接收VM内部通信链路OAM(Operation, Administration, and Maintenance,操作、管理和维护)报文(OAM报文用于系统内部通信的管理和维护,包括VM冲突检测报文),不能处理业务报文。
为了适应不同的组网环境,vUP支持以下两种方式来进行VM冲突检测:
· 通过“Slot编号+UUID(Universally Unique Identifier,通用唯一识别码)”检测VM冲突:该方式用于当vUP和VNFM连接正常时,检测VM冲突。
· 通过“Slot编号+MAC地址”检测VM冲突:该方式主要用于当vUP未连接VNFM时,例如vUP处于启动阶段或者vUP和VNFM连接故障时,检测VM冲突。
当vUP和VNFM连接正常时,vUP会同时通过“Slot编号+UUID”和“Slot编号+MAC地址”检测VM冲突,检测结果以通过“Slot编号+UUID”检测的结果为准。
网络中的VM众多,而且需要弹性扩缩容(即根据业务需要自动创建或删除VM),通常情况下,网络管理员会通过VNFM来管理VM的生命周期。需要扩容时,vUP会根据Slot编号分配机制将需要创建的VM的Slot编号发送给VNFM。VNFM创建VM时,会给VM分配UUID,并记录Slot编号和UUID的对应关系。
正常情况下,为便于VNFM能够正常管理所有VM,VNFM上记录的VM信息和网络中存在的VM是一致的。当出现异常情况时(例如VNFM销毁了一个VM,并重建了一个相同Slot编号的VM来接替原来的VM,但实际上销毁指令没有到达vUP,原VM并未被销毁,但新的VM已经被创建),网络中就会存在两个Slot编号相同的VM,出现VM冲突。为了避免这种情况的发生,vUP支持通过“Slot编号+UUID”检测VM冲突。当检测到冲突时,被VNFM纳管的VM(即VNFM上注册的VM)处于工作状态,未被VNFM纳管的VM进入静默状态。
如图8所示,通过“Slot编号+UUID”进行VM冲突检测的过程如下:
(1) 主MPU-VM向VNFM发送UUID查询报文,查询Slot编号和UUID的关系。主MPU-VM在以下情况会向VNFM发送UUID查询报文:
¡ vUP启动后,主MPU-VM按周期向VNFM发送UUID查询报文。查询周期(缺省值为5分钟)可以通过命令行配置。
¡ 当vUP感知到VM扩容、缩容、重建事件时,主MPU-VM实时向VNFM发送UUID查询报文。
(2) VNFM发送UUID查询回应报文,报文中包含VNFM纳管的所有VM的Slot编号和UUID的对应关系。
(3) 主MPU-VM将UUID查询回应报文解析后,再封装成冲突检测报文广播转发给其它所有VM。
(4) vUP内其它VM在收到冲突检测报文后,以冲突检测报文中的Slot编号和UUID的关系为准,确定是否存在VM冲突。
¡ 如果冲突检测报文中未包含本VM的Slot编号,且本VM为LPU-VM,则本VM继续正常运行。
¡ 如果冲突检测报文中包含本VM的Slot编号,且冲突检测报文中对应的UUID和本VM的UUID均相同,则认为未检测到VM冲突,VM正常运行。
¡ 如果冲突检测报文中包含本VM的Slot编号,但冲突检测报文中对应的UUID和本VM的UUID不同,则认为检测到VM冲突,本VM未在VNFM注册,vUP会将该VM列入静默状态。
¡ 如果被静默的VM后续收到冲突检测报文,且冲突检测报文中的Slot编号/UUID和本VM的Slot编号/UUID均相同,则自动解除静默,恢复到正常工作状态。
vUP和VNFM建立连接后,通过“Slot编号+UUID”检测VM冲突功能就开始运行,通常情况下无需配置,用户也可以根据需要,通过命令行修改vUP向VNFM发送VM冲突检测查询报文的周期。
图8 通过“Slot编号+UUID”检测VM冲突示意图
vUP在启动过程中,尚未连接VNFM,或者vUP和VNFM的连接断开,无法通过VNFM进行VM冲突检测时,vUP支持使用“Slot编号+MAC地址”来检测VM冲突。
在物理服务器上创建VM的时候,vUP会给该VM分配一个唯一的MAC地址作为该VM的身份标识,VM使用该MAC地址和其它设备通信,vUP会记录VM的Slot编号和MAC地址的对应关系。如果广播域中某两个VM的Slot编号相同,但MAC地址不同,则认为出现了VM冲突。为了避免这种情况的发生,vUP支持通过“Slot编号+MAC地址”检测VM冲突。当检测到冲突时,在vUP注册过的VM处于工作状态,未注册的VM进入静默状态。
通过“Slot编号+MAC地址”进行VM冲突检测的过程如下:
(1) 多个VM先后启动。所有VM启动时均处于静默状态,只能接收VM冲突检测报文。系统会为每个VM创建静默定时器并开始计时。
(2) 先启动的VM,其静默定时器先超时,该VM进入正常运行状态,并自动对外发送VM冲突检测报文,报文中包含该VM的“Slot编号+MAC地址”信息。
(3) 其它VM收到VM冲突检测报文后,使用本VM的“Slot编号+MAC地址”和检测报文中的“Slot编号+MAC地址”比较:
¡ 如果“Slot编号+MAC地址”均相同,则认为收到的是本VM自己发送的VM冲突检测报文,不存在VM冲突,VM继续运行。
¡ 如果Slot编号相同,但MAC地址不同,则认为检测到VM冲突。如果本VM未完成启动,则不允许启动本VM;如果本VM已经完成启动且处于静默状态,则本VM进入永久静默状态。
¡ 如果Slot编号不同,则认为未检测到VM冲突,VM继续运行。
设备启动后,通过“Slot编号+MAC地址”检测VM冲突功能就开始运行,无需也不支持通过命令行配置。
防脑裂功能又称为vUP冲突检测功能,用于检测并处理当通信链路故障,一个vUP系统分裂成两个vUP系统的情况。
在vUP系统中,为了提升系统的可靠性,通常采用MPU-VM 1:1的冗余备份方案。正常情况下,两个MPU-VM一个作为主用MPU-VM,另一个作为备用MPU-VM。
· 主用MPU-VM(简称为主MPU-VM):负责管理和控制整个vUP系统。
· 备用MPU-VM(简称为备MPU-VM):作为主MPU-VM的备份VM运行。当主MPU-VM故障时,备MPU-VM升级为主MPU-VM接替原主MPU-VM工作。
当两个MPU-VM之间的通信链路断开时,两个MPU-VM均认为自己是主MPU-VM,导致一个vUP系统分裂成两个vUP系统,这种现象称为脑裂。这两个vUP系统拥有相同的IP地址等三层配置,会引起IP地址等配置冲突,导致网络业务互相干扰甚至部分业务无法使用。
开启防脑裂功能后,当vUP系统发生分裂时,防脑裂功能会通过投票机制来选举其中一个vUP系统继续工作,另一个vUP系统进入业务不可用状态,不处理业务报文(仍可收发vUP内部链路探测、VM冲突检测等报文)。此时,请尽快修复故障链路,故障链路修复后,两个分裂的vUP系统会自动合并为一个vUP系统正常运行。
如图9所示,服务器1上运行了主MPU-VM1和LPU-VM5,服务器2上运行LPU-VM6和LPU-VM7,服务器3上运行备MPU-VM2和LPU-VM8,服务器通过交换机相连,组成一个vUP。当Switch2和Switch3之间的链路故障,MPU-VM1和MPU-VM2就会发生分裂,形成两个vUP,这两个vUP使用相同的网络参数在同一网络中同时运行,会引起通信冲突。此时,防脑裂功能会通过投票来选举一个vUP系统继续工作,另一个vUP系统进入业务不可用状态,不处理业务报文。
图9 vUP防脑裂功能示意图
防脑裂工作流程可分为:
(1) 投票者选择
发生以下情况时,主用MPU-VM会选择投票者:
¡ 开启防脑裂功能时,主用MPU-VM会选择投票者,并将投票者信息同步到备用MPU-VM,以便脑裂发生时,能尽快完成投票选举。
¡ 开启防脑裂功能后,如果LPU-VMM上线、下线,为确保投票者有效,主用MPU-VM还会重新选择投票者,并将投票者信息同步到备用MPU-VM。
主用MPU-VM根据vUP系统中LPU-VM的数量自动选择奇数个LPU-VM作为投票者。
(2) 投票选举
脑裂发生时,所有MPU-VM变成候选者。候选者向投票者LPU-VM请求投票,票数大于投票者总数一半的MPU-VM选举成功,当选为主用MPU-VM。
投票选举流程如下:
a. 主用MPU-VM和备用MPU-VM之间的链路故障导致MPU-VM间的心跳报文超时,一个vUP系统分裂成两个vUP系统,原主用MPU-VM和原备用MPU-VM变成候选者。
b. 原主用MPU-VM立即广播发送投票请求报文,原备用MPU-VM延时5秒后广播发送投票选择报文。以便保证同一时刻同一个投票者LPU-VM只能收到一个候选者MPU-VM的投票请求报文,同时,原主用MPU-VM能先发送投票请求报文,能先收到投票响应,从而继续当选为主用MPU-VM的可能性更大。
c. 投票者LPU-VM收到投票请求报文后记录当前候选者MPU-VM的信息,并向记录的候选者MPU-VM发送投票应答报文。投票者LPU-VM记录候选者MPU-VM信息后,10秒内即便收到其它候选者MPU-VM的投票请求报文,也不会应答,更不会更新本地记录的候选者信息。
d. 候选者MPU-VM收到投票应答报文,则获得1票,收到同一投票者LPU-VM的投票应答报文,不重复记录选票。
e. 候选者MPU-VM根据选票确定选举结果。
候选者MPU-VM每秒检测票数,
- 如果票数大于投票者总数的一半,则选举成功,将自己变为主用MPU-VM;
- 如果票数小于投票者总数的一半,则重新广播发送投票请求报文。
如果从候选者MPU-VM开始广播发送投票请求报文起,直到3秒时间超时,候选者MPU-VM仍未成为主用MPU-VM,则视为选举失败,变为业务不可用状态。
分布式vUP中至少需要3个及以上的LPU-VM才支持防脑裂功能。在由2个MPU-VM+2个LPU-VM组成的分布式vUP最小系统中,防脑裂功能不生效。
SAFD(System Anomaly and Failure Detection,系统异常检测功能)通过在vBRAS-UP的VM上运行多种故障监测测试例来检查VM的健康状态,如果发现系统异常,则报告故障检测消息,以便管理员能及时发现系统故障。系统异常检测功能可配合虚机自愈功能可以实现虚机系统的故障自我修复。
为了方便描述,系统异常检测功能的将VM分为两类:
功能单元(Function Unit):由同类型的VM组成的逻辑功能组,功能单元中的VM以主备或者负载分担方式协同工作。例如两个BRAS-VM组成一个功能单元,其中主BRAS-VM工作,备BRAS-VM处于备份状态,多个LPU-VM组成一个功能单元,每个LPU-VM以负载分担方式协同工作。
中控单元(Control Center Unit):中控单元是一类特殊功能单元,它可以控制所有VM上的部署的故障检测内容,记录系统中所有VM的故障检测状态,收集处理检测消息。中控单元中的VM只能工作在主备模式。例如两个CTRL-VM组成一个功能单元,其中主CTRL-VM工作,备CTRL-VM处于备份状态。
图11 vBRAS-UP上SAFD模型示意图
如图11所示,vBRAS-UP中:
将SAFD功能部署在MPU-VM上,则两个MPU-VM组成中控单元,并工作在主备工作模式。主MPU-VM可以检测本身故障事件,并通过备MPU-VM上报的故障消息感知中控单元内所有VM的故障情况。
将LPU-VM加入vBRAS-UP弹性伸缩组后,多个LPU-VM组成一个功能单元,在LPU-VM组成的功能单元中,每个LPU-VM工作在负载分担模式,互为备份。LPU-VM上部署的SAFD功能将故障信息上报给中控单元。
如图12所示,SAFD功能工作原理:
(1) 管理员通过CLI接口下发系统异常检测的命令到SAFD功能的故障监控进程。
(2) 故障监控进程接收到命令后,由中控单元根据配置命令控制指定的VM开启特定故障监测测试例。
(3) VM上开启的故障监测测试例调用系统中VM管理功能(VMMGR),VM内部链路通信OAM等功能来获取VM的故障状态。
(4) 中控单元通过Netconf获取所有功能单元VM上报的异常和故障信息,记录故障检测状态。
图12 SAFD工作原理示意图
故障监测测试例包括:
· CPU占用率监测测试例:用于检测CPU负载。如果CPU负载到达门限值且持续时间超过容忍时间,将向故障监测进程上报故障消息。CPU负载的门限值支持客户定制。
· 控制通道监测测试例和数据通道监测测试例:用于检测控制通道和数据通道的链路亚健康状态。如果控制通道或数据通道的链路亚健康状态为非Nomal且持续时间超过容忍时间,则向故障监测进程上报故障消息。
· 功能单元监测测试例:用于检测功能单元中所有VM离线状态。当某个功能单元中所有VM全部离线且离线时间超出容忍时间,中控单元感知故障并生成故障消息。
· 内存监测测试例:用于监控内存使用率。VM的内存占用率达到命令配置的告警门限值且持续时间超过容忍时间,将向故障监测进程上报故障消息。
· VM离线监测测试例:用于检测vBRAS-UP上的VM在线情况。当某个VM离线时间超过容忍时间,中控单元可以感知故障并生成故障消息。
VM上开启SAFD功能时可以指定多个故障监测测试例,故障监测测试例的容忍时间可以配置修改。
当vBRAS-UP在运行过程中出现内部网络链路故障或VM故障等问题,会导致VM上的业务出现异常,为保证vBRAS-UP业务可靠性,需要VM具备故障自我修复功能,在故障发生后,通过设定的策略,对VM进行一系列的故障恢复操作,使VM能够从异常中恢复。上述系统故障自我修复的功能就是VMSH(Virtual Machine Self Healing,虚机自愈)。VMSH功能由运行在中控单元上的VMSH APP和VMSH APP发布的自愈指令实现。VMSH功能需要SAFD功能配合工作。
如图13所示VMSH APP只能部署在中控单元中的主MPU-VM上。VMSH APP才能通过自愈指令控制指定VM执行自愈策略。
图13 vBRAS-UP上部署VMSH示意图
如图14所示,中控单元上部署SAFD功能和VMSH自愈功能后,VMSH的工作原理如下:
(1) SAFD功能模块检测到故障后,将故障消息通告给VMSH功能模块,作为VMSH自愈功能执行的触发条件。
(2) 中控单元上VMSH功能将根据CLI接口下发的自愈策略控制故障VM执行自愈指令。VMSH运行时最多可以执行四个等级的自愈动作和一个自愈失败策略,自愈动作的优先级从一级到四级依次降低,VM执行自愈策略时按优先级从高到低依次执行自愈动作。
图14 VMSH功能示意图
如图15所示,中控单元上的VMSH功能执行VMSH策略的具体流程如下:
(1) VMSH进程在下发自愈指令前需要判断是否满足自愈执行条件,即当前时刻vBRAS-UP中不存在其他正在执行自愈动作的VM且中控单元中主VM和备VM必须正常在线。如果不满足自愈执行条件则返回自愈开始状态等待下一个故障消息触发自愈执行。如果满足自愈执行条件则进入下一步。
(2) 开始执行第一级自愈动作,在执行完自愈动作之后,需要等待一段时间,在自愈等待时间内如果收到故障恢复消息则直接表示自愈成功,故障恢复,如果未收到故障恢复消息则开始执行下一次自愈动作。
(3) VM根据配置自愈策略中的一级自愈动作开始自愈,根据步骤(2)判断自愈执行是否成功,如果成功,则结束自愈流程。如果本次执行自愈动作故障未恢复则记录当前一级自愈动作执行次数为1次,并返回上一步重新开始执行本级自愈动作,每次执行失败后重复上述过程,并累加当前记录的执行次数,直到执行次数等于最大执行次数,则进入下一级自愈动作。如果在重复过程中故障恢复则结束自愈。
(4) 如果配置了下一级自愈动作,则重复步骤(3)中的过程,直到第四级自愈动作。第四级自愈动作执行最大次数后故障仍未恢复,执行自愈失败策略(当前为关闭VM或无动作)。最后结束自愈过程。
图15 VMSH执行流程图
图15中自愈等待时间和自愈动作的最大执行次数可以配置。
在转发与控制分离场景下,当vBRAS-UP上用户接入的业务接口收到大量攻击报文,如果vBRAS-UP此时开启了对特定协议报文的攻击防范功能,将生成对应的防攻击表项,由驱动根据防攻击表项匹配到攻击流量,再丢弃业务接口上的攻击报文。
通常情况下,vBRAS-UP上负责转发用户报文的CPU用一定的频率轮询处理所有业务接口上的用户报文,当vBRAS-UP上某个用户接入的业务接口收到大量攻击报文时,则负责转发用户报文的CPU会长时间用来处理被攻击的业务接口下的无效攻击报文,CPU硬件资源被空耗,导致业务接口下的正常用户报文无法得到及时处理。因此,在设备的硬件驱动层面需要限制受攻击接口的报文分发处理能力,降低CPU对受攻击接口和攻击报文的轮询处理的频率。
上述硬件驱动层面的功能称为驱动的攻击防范。
vBRAS-UP支持在业务软件层面和硬件驱动层面对PPPoE、DHCP、TCP和UDP协议报文实现攻击防范功能,驱动的攻击防范需要先在业务软件层面开启对应的攻击防范功能后才能实现。
(1) 在业务软件层面:
a. 开启设备对特定协议报文的攻击防范功能后,设备处于攻击检测状态。例如开启设备的DHCP Flood攻击防范功能、TCP SYN Flood攻击防范功能、UDP Flood攻击防范功能和PPPoE用户静默功能;
b. 如果在一个检测周期内设备收到对应的协议报文的个数达到或超过触发阈值,则认为存在攻击;
c. 业务模块生成对应的防攻击表项来标识攻击者的详细信息,例如攻击者的源MAC地址、VLAN ID、UP到CP侧的协议通道VXLAN ID等,同时UP设备将丢弃对应的攻击报文。
d. 关于业务软件层面的攻击防范的详细介绍,请参见相应的配置指导。
(2) 在硬件驱动层面:
a. 业务模块生成特定协议的防攻击表项后,将标识攻击者信息的防攻击表项通知给驱动模块,驱动根据防攻击表项匹配到攻击流量,丢弃攻击报文;
b. 驱动模块对所有协议报文和攻击报文进行流量统计,获取所有业务接口每秒接收的协议报文的速率X bps以及被攻击的业务接口丢弃的攻击报文包速率Y pps。
c. 当X和Y同时达到或超过管理员配置的阈值时,驱动模块将每隔2秒逐步降低受攻击接口的报文处理能力。
图16 驱动的攻击防范工作机制示意图(DHCP Flood攻击为例)
H3C分布式vUP产品提供符合ETSI标准的全套NFV解决方案,并基于通用的NFVI实现多业务网关控制功能。同时,为了提供更加敏捷的部署能力,简化新业务上线配置,节省运营商的新业务上线时间,H3C分布式vUP产品支持通过MANO进行加载、卸载、初始化等VM的生命周期管理。分布式vUP的主要特点如下。
· vUP弹性伸缩
分布式vUP支持业界领先的LPU-VM弹性伸缩(Scale in/out)方案,根据业务量的增减情况灵活增加/释放所占用的虚拟机资源,可以在秒级完成业务的自动迁移,且业务不中断。
· 高性能
分布式vUP与H3C领先的网络产品技术共平台,支持全面、稳定、成熟度高的网络功能。当分布式vUP作为vBRAS-vUP部署时,单个vBRAS-vUP最高支持百万级用户接入能力。
· 多级可靠性机制保障
通过跨服务器、多VM部署,VM冲突检测、防脑裂和虚机自愈,业务流量自动负载均衡等方案,确保系统提供电信级高可靠性。
· 更开放、享共赢
H3C公司致力于构建更加开放的平台,已和业界领先的CloudOS供应商完成认证,有效缩短业务部署时间,降低NFV部署难度。
如下图所示:
· vBRAS-CP采用NFV技术部署在省中心的边缘云内部。
· vBRAS-UP有物理设备形态和虚拟化形态两种:
¡ 物理设备形态的pUP部署于城域边缘,主要用来处理如宽带上网、IPTV等大流量业务。
¡ 虚拟化的vUP部署在省中心的边缘云内(一般和vBRAS-CP部署在同一个边缘云中),主要用来处理如ITMS、VoIP等大session小流量业务,以降低物理pUP上的session压力。
图17 典型组网
· 《中国移动基于转发和控制分离架构的vBRAS系统设备规范》
· 《中国移动基于转发和控制分离架构的vBRAS系统技术实现流程》
· 《中国移动基于转发和控制分离的vBRAS系统控制接口规范》
· 《中国移动基于转发和控制分离架构的虚拟化BRAS-UP设备规范》