NFVI分布式网关(BGP EVPN over E2E SR)
NFVI(Network Function Virtualization Infrastructure)电信云解决方案是DCI(Data Center Interconnect)+DCN(Data Center Network)的组网方案。其中大量手机业务流量会进入DCN网络并访问DCN网络内的vUGW与vMSE。经过vUGW与vMSE的处理后,这些手机业务流量(可以是IPv4业务流量也可以是IPv6业务流量)会再从DCN网络中转发出去,继续访问Internet中的目的设备,而Internet中的目的设备发往手机的回应流量亦要经历该过程。为了实现上述功能,并且确保手机业务流量在DCN网络内部可以实现负载均衡,则需要在DCN网络内部部署NFVI分布式网关功能。
vUGW产品是基于华为CloudEdge解决方案孕育而生的统一分组网关,可同时应用于GPRS、UMTS、LTE方式的3GPP接入。vUGW在业务功能上支持GGSN、S-GW、P-GW等形态,可以满足运营商不同阶段、不同运营场景的多种组网需求。
vMSE的前身是MSE(Multi-Service Engine多业务引擎)。由于当前运营商网络中存在着很多功能盒子,包括防火墙盒子,视频加速盒子,头增强盒子以及URL过滤盒子等等。所有功能的补充都是以叠加的模式补丁安装上去的,逐渐导致网络变得越来越臃肿,以致业务上线,业务维护等都变得非常困难。为了解决这个问题,vMSE统一收编这些盒子的功能,并对这些功能进行统一的管理,为用户发起的数据业务进行增值业务处理。
NFVI分布式网关功能可以使用SR隧道或者VXLAN隧道承载业务流量,其中对于使用SR隧道的场景还可以分为分段式SR隧道场景以及端到端SR隧道场景。对于端到端SR隧道的场景,PE可以使用BGP VPNv4/VPNv6协议或BGP EVPN协议连接DCN网络。使用不同的协议其控制面实现原理也有所不同,本节将介绍使用BGP EVPN协议对应场景的实现原理。
组网介绍
如图12-106所示,该组网为NFVI分布式网关(BGP EVPN over E2E SR)的组网示意图。其中DCGW为DCN网络的边界网关,可以通过PE设备和外部交换Internet路由。L2GW/L3GW1和L2GW/L3GW2用于接入VNF(Virtualized Network Function)。VNF1和VNF2作为虚拟化网元可以分别部署并实现vUGW和vMSE的功能,并通过IPU(Interface Process Unit)与L2GW/L3GW1和L2GW/L3GW2连接。
功能部署
VNF和DCGW之间部署私网BGP邻居关系,用于VNF向DCGW发布手机路由(UE IP);
L2GW/L3GW1和L2GW/L3GW2上配置私网静态路由用于接入VNF,目的地址为VNF的地址,下一跳为IPU的地址;
在网络中部署EVPN路由反射器,既可以单独部署一台设备作为反射器,也可以通过配置使DCGW兼做反射器。本节以后一种情况为例进行介绍,即配置所有的DCGW、PE都和L2GW/L3GW建立BGP EVPN邻居关系,并且部署DCGW为EVPN路由反射器,L2GW/L3GW设备为客户端。L2GW/L3GW之间可以通过反射器来同步IPU的MAC路由或ARP路由,以及目的地址为VNF地址的IP前缀路由。
PE上配置静态缺省路由,并通过EVPN路由反射器将该缺省路由反射给L2GW/L3GW;
PE和L2GW/L3GW、DCGW和L2GW/L3GW之间分别部署SR隧道,用于承载流量报文;
手机通过VNF和Internet互访的流量被称为南北向流量,VNF1和VNF2间的流量传输被称为东西向流量。为了实现南北向流量和东西向流量的负载均衡,用户需要在DCGW和L2GW/L3GW上部署负载分担功能。
转发表项的建立
L2GW/L3GW上会部署与IPU接口对应网段数量的BD,并将BD绑定到与对应IPU接口相连的链路上,然后配置VBDIF接口作为IPU接口的网关。L2GW/L3GW上通过配置私网静态路由使L2GW/L3GW上可以建立路由转发表项,目的地址为VNF的目的地址,下一跳为IPU地址,出接口为对应的VBDIF。
图12-107 L2GW/L3GW上的静态路由转发表项L2GW/L3GW上配置指向VNF的私网静态路由后,这些静态路由将被引入到BGP EVPN路由表中并生成IP前缀路由,然后通过BGP EVPN邻居关系发往DCGW和PE。为了避免这些路由携带Gateway IP,导致流量传输到DCGW或PE后迭代VBDIF进行转发(DCGW和PE上没有VBDIF接口),所以DCGW和PE上需要配置入方向路由策略将收到的路由上的Gateway IP删除。
图12-108 PE和L2GW/L3GW上的转发表项L2GW/L3GW通过数据平面学到IPU的MAC地址信息和ARP信息,然后这些信息将以EVPN路由的形式发布给其它L2GW/L3GW,这些信息可以建立用于二层转发的ARP表项以及MAC转发表项。以L2GW/L3GW1为例,L2GW/L3GW1的MAC转发表项上目的MAC地址为IPU的MAC地址,对于与L2GW/L3GW1直连的IPU接口,MAC转发表项上会使用对应IPU接口作为出接口;对于通过其他L2GW/L3GW连接的IPU接口,MAC转发表项上会有下一跳,即其他L2GW/L3GW的BGP EVPN邻居地址,并且带有用于转发的SR隧道出接口。
L2GW/L3GW之间会相互发送目的IP为VNF地址的路由,如果两个VNF连接的是不同的L2GW/L3GW,且在L2GW/L3GW之间使用路由转发,则可能会出现流量环路问题。因此L2GW/L3GW上需要配置路由策略,使L2GW/L3GW间发送路由时在路由上添加Gateway IP,Gateway IP地址保持为原有的下一跳地址,即IPU的地址,出接口为VBDIF接口。这样在按照此路由进行L2GW/L3GW间的流量转发时,L2GW/L3GW会按照MAC转发表进行转发,避免产生路由环路。
由于L2GW/L3GW和VNF间存在多条链路及静态路由,为了实现负载分担,需要在配置静态路由引入到BGP EVPN路由表时使能ADD-PATH功能。
图12-109 L2GW/L3GW上的MAC转发表项为了与VNF之间建立私网BGP邻居关系,DCGW需要将自己的Loopback地址发布给L2GW/L3GW。VNF和DCGW之间成功建立私网BGP邻居关系后,VNF可以将手机路由发往DCGW,然后DCGW会将手机路由以IP前缀路由的形式通过BGP EVPN邻居关系发送给L2GW/L3GW。这些路由在对外发送过程中会通过路由策略添加Gateway IP,Gateway IP为VNF的IP地址。IP前缀路由到达L2GW/L3GW后,L2GW/L3GW上会生成私网转发表项。然后L2GW/L3GW会将EVPN路由通过EBGP EVPN邻居关系发送给PE,使PE生成私网转发表项,目的地址为手机路由的IP地址,下一跳为VNF的IP地址,迭代到通往VNF的路由,该路由对应的出接口为SR隧道接口。
图12-110 PE和L2GW/L3GW上的转发表项由于DCN网络内部不需要感知外部路由,PE需要配置路由策略使PE向L2GW/L3GW仅能发送缺省路由。
图12-111 PE和L2GW/L3GW上的转发表项PE可以与外部交换Internet中的路由,例如Internet中的服务器的地址。
为了实现流量传输过程中的负载均衡,PE和L2GW/L3GW上可以部署负载分担和ADD-PATH功能,实现对南北向流量和东西向流量的负载均衡:
南北向流量的负载均衡:以图12-106中的PE1为例,PE1可以从L2GW/L3GW1和L2GW/L3GW2上收到到达VNF2的私网路由。缺省情况下,在配置负载分担功能后,PE1向VNF2发送流量时会分别向L2GW/L3GW1和L2GW/L3GW2各发送一半流量。但是L2GW/L3GW1仅有一条链路连接VNF2,而L2GW/L3GW2有两条链路连接VNF2,所以这样的负载分担功能并没有达到负载均衡的效果,因此还需要在L2GW/L3GW上部署ADD-PATH功能。在L2GW/L3GW上部署ADD-PATH功能后,L2GW/L3GW2会将目的地址相同的两条路由都发布给DCGW1,从而实现负载均衡。
东西向流量的负载均衡:以图12-106中的L2GW/L3GW1为例,由于L2GW/L3GW2上部署了ADD-PATH功能,L2GW/L3GW1上会从L2GW/L3GW2收到两条EVPN路由,同时L2GW/L3GW1上还会有一条下一跳为IPU3的静态路由,这些路由的目的地址都是VNF2的地址。为了实现负载均衡,需要部署静态路由和EVPN路由间的负载分担功能。
流量转发流程
手机用户流量发送到基站(Node),由基站封装到GTP(GPRS Tunnelling Protocol)隧道中,隧道的目的地址为VNF的地址。PE根据私网路由转发表将封装后的报文通过SR隧道转发至L2GW/L3GW;
L2GW/L3GW收到封装的报文后将查询私网路由转发表,发现VNF地址对应的转发表项的下一跳是IPU地址,出接口为VBDIF接口,所以命中VBDIF所对应的网段。在该网段中查ARP表项,再根据ARP信息查找MAC转发表,根据MAC向VNF转发;
报文到达VNF后,VNF进行GTP隧道解封装,根据解封装处理后的用户报文的目的地址查路由表,根据VNF的缺省网关,用户报文将向L2GW/L3GW转发;
报文到达L2GW/L3GW后,系统将在L2GW/L3GW上查找私网路由转发表。根据PE发布给L2GW/L3GW的缺省路由,报文将在封装私网标签后通过迭代到的SR隧道向PE转发;
报文到达PE,系统将根据私网标签找到并使用对应私网转发表向Internet转发。
Internet中的设备向用户手机发送回应流量,回应流量的目的地址是手机路由的目的地址,因为手机路由是L2GW/L3GW通过BGP VPNv4/v6邻居发布给PE,再由PE发布给Internet,因此回应流量必然需要先走到L2GW/L3GW;
回应流量报文到达PE后,在PE上查找私网路由表,查到手机路由对应的转发表项,下一跳为L2GW/L3GW,出接口为SR隧道。回应流量报文在被封装上私网标签和SR标签后发往L2GW/L3GW。
报文到达L2GW/L3GW后,根据私网标签找到对应私网转发表项,根据私网转发表项,找到对应的VBDIF接口,然后根据VBDIF接口对应的MAC转发表项向VNF转发;
报文到达VNF后,VNF对报文进行处理,查找到该手机目的地址对应的基站,然后封装一层GTP隧道信息,目的地址是对应基站,然后根据缺省网关向L2GW/L3GW转发;
L2GW/L3GW收到报文后,在私网路由转发表中进行查找,命中PE发布给L2GW/L3GW的缺省路由,然后报文将在封装私网标签后迭代并使用SR隧道向PE转发;
报文到达PE后根据私网标签找到并使用对应私网转发表向基站转发,由基站解封装后发送给对应的用户手机。
VNF1收到用户报文后,如果发现需要送到VNF2处理,则根据VNF2的地址信息重新封装进入隧道传输,目的地址为VNF2,根据缺省路由发往L2GW/L3GW;
L2GW/L3GW收到报文后查找私网路由转发表,发现存在多条负载分担的转发表项,有的出接口指向IPU,有的下一跳为其它L2GW/L3GW;
若是命中其它L2GW/L3GW的路径,则报文封装EVPN Label信息并迭代使用SR隧道到达L2GW/L3GW2,在L2GW/L3GW2上根据EVPN Label找到BD,然后查找目的MAC地址向VNF2转发;
VNF2收到报文并处理后会再继续向Server转发,在此之后的转发流程就和南北向流量的转发流程相同。