NFVI分布式网关(分段式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隧道承载业务流量的NFVI分布式网关功能的实现原理。
组网介绍
如图12-86所示,该组网为NFVI分布式网关(分段式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的地址;
DCGW和L2GW/L3GW的任意两个设备之间建立BGP EVPN邻居关系。L2GW/L3GW可以通过BGP EVPN邻居关系向其他设备扩散指向VNF的静态路由。DCGW可以通过BGP EVPN邻居关系向L2GW/L3GW发布本地Loopback路由和缺省路由;
DCGW和PE设备间建立BGP VPNv4/v6邻居关系。DCGW可以通过BGP VPNv4/v6邻居关系向PE设备发布手机路由,以及接收外部的Internet路由;
PE和DCGW、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-87 L2GW/L3GW上的静态路由转发表项L2GW/L3GW通过数据平面学到IPU的MAC地址信息和ARP信息,然后这些信息将以EVPN路由的形式发布给DCGW,这些信息可以建立用于二层转发的ARP表项以及MAC转发表项。
L2GW/L3GW的MAC转发表项上目的MAC地址为IPU的MAC地址,对于与L2GW/L3GW直连的IPU接口,MAC转发表项上会使用对应IPU接口作为出接口;对于可以通过其他L2GW/L3GW连接的IPU接口(图12-86中L2GW/L3GW2对应的IPU3和IPU4),MAC转发表项上会有下一跳,即其他L2GW/L3GW的BGP EVPN邻居地址,并且带有用于转发的SR隧道出接口。
DCGW的MAC转发表项上目的MAC地址为IPU的MAC地址,下一跳为L2GW/L3GW的BGP EVPN邻居地址,并且带有用于转发的SR隧道出接口。
为了使入方向流量仅通过二层转发,建议用户通过配置使各个设备之间仅能相互发布ARP(ND)类型的路由,这样DCGW和L2GW/L3GW不会基于IP地址信息生成IP前缀路由。但是如果用户通过配置使各个设备间可以发布IRB(IRBv6)路由,则需要在接收路由的设备上使能IRB非对称模式。
图12-88 DCGW和L2GW/L3GW上的MAC转发表项L2GW/L3GW上配置私网静态路由后,这些静态路由将被引入到BGP EVPN路由表,然后通过BGP EVPN邻居关系以IP Prefix路由的形式发送给DCGW。
由于L2GW/L3GW和VNF间存在多条链路及静态路由,为了实现负载分担,需要在配置静态路由引入到BGP EVPN路由表时使能ADD-PATH功能。
缺省情况下,DCGW收到的IP前缀路由的下一跳地址为L2GW/L3GW的IP地址并迭代SR隧道,但是这样会使入方向流量以三层转发的形式进行发送。为了使入方向流量实现二层转发,L2GW/L3GW上需要部署路由策略为这些发往DCGW的静态路由添加Gateway IP,Gateway IP地址为IPU接口的地址。DCGW收到携带Gateway IP的IP前缀路由后将不再直接迭代隧道,而是进行IP迭代,最终使DCGW上的路由转发表项的目的地址为VNF的IP地址,下一跳为IPU接口地址,出接口为IPU所在网段对应的VBDIF接口。这样如果有流量要发往VNF,则可以基于此转发表项查找到对应VBDIF接口,然后基于VBDIF接口查找对应ARP表项和MAC表项进行二层转发。
图12-89 DCGW和L2GW/L3GW上的转发表项为了与VNF之间建立私网BGP邻居关系,DCGW需要将自己的Loopback地址发布给L2GW/L3GW。VNF和DCGW之间成功建立私网BGP邻居关系后,VNF可以将手机路由发往DCGW,下一跳为VNF的地址。
图12-90 DCGW和L2GW/L3GW上的转发表项由于DCN网络内部不需要感知外部路由,DCGW需要配置路由策略使DCGW除了向L2GW/L3GW发送Loopback路由之外,仅能发送缺省路由。
图12-91 DCGW和L2GW/L3GW上的转发表项DCGW作为DCN网络的边界网关设备可以与外部PE设备交换Internet中的路由,例如Internet中的服务器的地址。
图12-92 DCGW和L2GW/L3GW上的转发表项PE设备可以通过BGP VPNv4/v6邻居关系从DCGW获取手机路由和VNF IP地址的路由,这些路由的下一跳为DCGW,出接口为到达DCGW的SR隧道。
图12-93 PE、DCGW和L2GW/L3GW上的转发表项为了实现流量传输过程中的负载均衡,DCGW和L2GW/L3GW上可以部署负载分担和ADD-PATH功能,实现对南北向流量和东西向流量的负载均衡:
南北向流量的负载均衡:以图12-86中的DCGW1为例,DCGW1可以从L2GW/L3GW1和L2GW/L3GW2上收到到达VNF2的EVPN路由。缺省情况下,在配置负载分担功能后,DCGW1向VNF2发送流量时会分别向L2GW/L3GW1和L2GW/L3GW2各发送一半流量。但是L2GW/L3GW1仅有一条链路连接VNF2,而L2GW/L3GW2有两条链路连接VNF2,所以这样的负载分担功能并没有达到负载均衡的效果,因此还需要在L2GW/L3GW上部署ADD-PATH功能。在L2GW/L3GW上部署ADD-PATH功能后,L2GW/L3GW2会将目的地址相同的两条路由都发布给DCGW1,从而实现负载均衡。
东西向流量的负载均衡:以图12-86中的L2GW/L3GW1为例,由于L2GW/L3GW2上部署了ADD-PATH功能,L2GW/L3GW1上会从L2GW/L3GW2收到两条EVPN路由,同时L2GW/L3GW1上还会有一条下一跳为IPU3的静态路由,这些路由的目的地址都是VNF2的地址。为了实现负载均衡,需要部署静态路由和EVPN路由间的负载分担功能。
流量转发流程
手机用户流量发送到基站(Node),由基站封装到GTP(GPRS Tunnelling Protocol)隧道中,隧道的目的地址为VNF的地址。PE根据私网路由转发表将封装后的报文通过SR隧道转发至DCGW;
DCGW收到封装的报文后将查询私网路由转发表,发现VNF地址对应的转发表项的下一跳是IPU地址,出接口为VBDIF接口,所以命中VBDIF所对应的网段。在该网段中查ARP表项,再根据ARP信息查找MAC转发表,根据MAC转发表迭代SR隧道向L2GW/L3GW转发;
报文到达L2GW/L3GW上,根据EVPN Label找到对应BD,然后在BD中查找MAC转发表项,根据MAC信息向VNF转发;
报文到达VNF后,VNF进行GTP隧道解封装,根据解封装处理后的用户报文的目的地址查路由表,根据VNF的缺省网关,用户报文将向L2GW/L3GW转发;
报文到达L2GW/L3GW后,系统将在L2GW/L3GW上查找私网路由转发表。根据DCGW发布给L2GW/L3GW的缺省路由,报文将在封装私网标签后通过迭代到的SR隧道向DCGW转发;
报文到达DCGW,系统将根据私网标签找到并使用对应私网转发表向PE转发,即重新封装私网标签与SR标签后向PE转发。
Internet中的设备向用户手机发送回应流量,回应流量的目的地址是手机路由的目的地址,因为手机路由是VNF通过私网BGP邻居发布给DCGW,再由DCGW通过PE发布给Internet,因此回应流量必然需要先走到VNF;
回应流量报文到达PE后,在PE上查找私网路由表,查到手机路由对应的转发表项,下一跳为DCGW,出接口为SR隧道。回应流量报文在被封装上私网标签和SR标签后发往DCGW。
回应流量报文到达DCGW后,在DCGW查找私网路由表,查到手机路由对应的转发表项,这些路由来自于DCGW和VNF的私网BGP邻居关系,这部分路由迭代最终结果为一至多个VBDIF口,流量负载分担到这些VBDIF接口,在VBDIF内查ARP信息,然后查找到MAC转发表项,根据MAC转发表项,回应流量报文将在封装EVPN Label后迭代并使用SR隧道后向L2GW/L3GW转发;
报文到达L2GW/L3GW后,根据EVPN Label找到对应BD,在BD内进一步查找MAC转发表项进行转发,根据MAC信息得到出接口信息,向VNF转发;
报文到达VNF后,VNF对报文进行处理,查找到该手机目的地址对应的基站,然后封装一层隧道信息,目的地址是对应基站,然后根据缺省网关向L2GW/L3GW转发;
L2GW/L3GW收到报文后,在私网路由转发表中进行查找,命中DCGW发布给L2GW/L3GW的缺省路由,然后报文将在封装私网标签后迭代并使用SR隧道向DCGW转发;
报文到达DCGW后根据私网标签找到对应私网路由转发表,命中缺省路由(或明细路由),使报文通过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转发,在此之后的转发流程就和南北向流量的转发流程相同。