ADDC(Application Driver Data Center)即应用驱动数据中心,通过虚拟化技术,VxLAN技术、BGP-EVPN等技术实现了数据中心资源统一调配管理。数据中心资源不仅包括常见的网络资源,计算资源、安全资源同时还包括出口资源,有时我们将出口资源概括在网络资源内。随着数据中心进一步发展,关于数据中心的出口要求越来越多,也越来越多样,有时由于业务的特性要求一个租户需要对应多个出口。以金融行业为例,大型商业银行以及省级农信,他们利用自身科技方面的雄厚资本运用行业云向中小金融机构输出金融科技及新型金融业务,从而解决中小金融机构自身科技能力薄弱、资金少、专业科技人员匮乏等实际问题。在金融行业云应用中需要为相同业务部署去往不同区域的外网多出口,例如互联网出口、连接各地市租户的广域网出口;同时为了满足各机构之间的隔离需要为其规划不同的VPC隔离。为了应对这一问题,ADDC方案提供了多种出口方式以及多出口特性方案。
本文分别从组网、使用场景以及具体的实现原理等几个方面详细介绍单租户多业务出口以及运营商多链路两种特性出口方案。
单租户多业务出口即同一个VPC(Virtual Private Cloud虚拟私有云)租户相同业务有多个出口。通过单租户多业务出口可以实现针对不同出口进行规划不同的安全级别,以及针对不同区域分别部署边界设备实现物理隔离,从而提高安全性、提高带宽利用率等等。
在讨论ADDC单租户多业务出口实现原理之前,我们先来了解下单租户多业务出口组网情况。假设存在某金融行业用户,省级机构内网虚拟机部署业务应用系统,OA出口(Office Automation,办公自动化)通过广域网连接多家地市联社机房,业务应用系统数据库部署在各个地市联社机房。
根据业务情况可以将访问模型概括为:
1. 互联网用户访问业务应用系统
2. 业务应用系统访问数据库获取数据信息
图1 金融行业用户单租户多业务出口组网图
根据上述的业务流量访问情况,首先我们可以为多家地市联社规划不同的VPC来满足不同租户之间的隔离,并且部署同一VPC租户相同业务有两个出口,即互联网出口和OA出口。互联网出口单独部署Border设备以及防火墙,防火墙连接到外网核心交换机实现访问Internet。OA出口同样也部署独立的Border设备以及防火墙,防火墙连接内网核心通过广域网和地市联社机房互通。Internet出口和OA出口分别属于不同的VPN,由于内网业务需要同时访问互联网出口以及OA出口,所以内网业务VPN需要和Internet外网的VPN以及OA出口VPN互通,从而实现单租户多业务出口。
控制器及云平台实现原理:
图2 单租户多业务出口实现框架
如图2所示,为单租户多业务出口的实现框架,为了实现一个租户多出口,我们为每个出口都创建不同的vRouter(虚拟路由器)分别为vpc Router、vpc Router-OA,并且绑定各自的外部网络。租户选择一个出口作为自己的缺省出口,选择缺省出口对应的虚拟路由器为缺省路由器(图中以vpc Router为缺省路由器为例)。租户的子网绑定缺省虚拟路由器,下发缺省路由,添加去OA区域的明细路由,采用Router-link(虚拟路由器连接)功能拉通租户缺省路由器以及OA区路由器。
以图1某金融行业多出口实现为例,首先我们需要为Internet出口以及OA出口都设定一个vRouter,将Internet出口的vRouter当做缺省vRouter,将业务子网绑定在缺省路由器上。此时缺省的Internet出口作为非共享网关出口为业务子网提供Internet出口(共享网关:开启此功能后,出口网关绑定的虚拟路由器如果建立了虚拟路由器连接,则该出口网关可为对端虚拟路由器提供出口网关功能,但不能为本端虚拟路由器提供出口网关功能)。通过以上配置控制器会为缺省路由器对应的设备组(边界设备以及防火墙)下发缺省路由,而缺省路由的下一跳指向Internet出口。
OA出口为共享网关,不需要绑定业务子网,仅需要绑定外部网络。OA出口灵活路由需要单独下发,控制器为OA出口设备组(边界设备以及防火墙)下发明细路由(路由前缀为地市网络地址),最后我们通过Router-link(虚拟路由器连接)功能拉通缺省路由器以及OA出口路由器从而实现路由互引。
为满足几十家地市联社的访问隔离,可以为每个地市联社单独规划VRF。为了节省防火墙Context资源,可以采用防火墙共享模式,即在一个Context中规划多个VRF。
路由引入原理说明:
单租户多业务出口实现通过Router-link功能保证租户业务VPN可以学习到缺省出口的缺省路由,以及其他出口的明细路由。接下来,详细介绍Router-link功能如何实现路由引入。
前面介绍了各个租户间可以通过VPN实例(VPN-instance)进行隔离,VPN实例又称为VRF(Virtual Routing and Forwarding,虚拟路由和转发)实例。每个VPN实例都相对独立,确保VPN数据的独立性和安全性。那么VPN实例通过什么方式将不同的VPN实例进行隔离呢?主要通过三个方面:
1. 每个VPN实例维护一张独立的路由表(当然也包括了独立的地址空间)。
2. 每个VPN实例拥有一组归属于这个VRF的接口的集合,以及有基于这些接口的转发表。
3. 每个VPN实例拥有一组只用于本VRF的路由协议。
EVPN协议通过RD(Route Distinguisher,路由标识符)以及VPN Target属性(也称为Route Target)控制不同VPN之间的路由渗透。EVPN路由包含RD字段,通过RD字段用来区分VSI的EVPN路由,以免EVPN路由冲突。而VTEP/PE设备在发布EVPN路由时,会携带VPN Target扩展团体属性,VPN Target属性定义了本地发送的EVPN路由可以被哪些VTEP/PE所接收以及VTEP/PE可以接收哪些远端VTEP/PE发送来的EVPN路由。MP-BGP通过VPN Target属性来控制EVPN路由信息的发布与接收。
VPN Target属性分为以下两种,每一种都可以包括多个属性值:
1. Export Target属性:本地VTEP/PE在通过BGP的Update消息将EVPN路由发送给远端VTEP时,将Update消息中携带的VPN Target属性设置为Export Target。
2. Import Target属性:VTEP/PE收到其它VTEP/PE发布的Update消息时,将消息中携带的VPN Target属性与本地配置的Import Target属性进行比较,只有二者中存在相同的属性值时,才会接收该消息中的EVPN路由。
与RD类似,Route Target也有三种格式:
1. 16位自治系统号:32位用户自定义数字,例如:100:1。
2. 32位IPv4地址:16位用户自定义数字,例如:172.1.1.1:1。
3. 32位自治系统号:16位用户自定义数字,其中的自治系统号最小值为65536,例如:65536:1。
EVPN路由的路径属性的扩展团体属性中包含了RT列表,路由发布时可以包含多个RT值。如表1所示,BGP EVPN路由的RD和RT可以在多个视图下配置。
对象 | 配置视图 |
RD | l EVPN实例视图 l VSI实例下的EVPN实例视图 l VPN实例视图 |
Route Target | l EVPN实例视图 l VSI实例下的EVPN实例视图 l VPN实例视图 l VPN实例IPv4地址族视图 l VPN实例IPv6地址族视图 l VPN实例EVPN视图 其中,VPN实例视图下的配置可以用于IPv4 VPN、IPv6 VPN和EVPN;VPN实例IPv4地址族视图下的配置仅用于IPv4 VPN;VPN实例IPv6地址族视图下的配置仅用于IPv6 VPN;VPN实例EVPN视图下的配置仅用于EVPN。VPN实例IPv4地址族视图、VPN实例IPv6地址族视图和VPN实例EVPN视图下配置的优先级高于VPN实例视图下的配置 |
表1 RD和Route Target的配置视图
接下来我们看一下在ADDC分布式网关场景下,设备在发布和接收BGP EVPN路由时,是如何选择RD和Route Target。
1. 发布IMET路由和仅包含MAC地址信息的MAC/IP发布路由时,携带EVPN实例视图下配置的RD和Export Target;接收该类路由时,将路由中的Route Target属性与本地EVPN实例视图下配置的Import Target进行比较。
2. 发布包含ARP/ND信息的MAC/IP发布路由时,携带EVPN实例视图下配置的RD,并同时携带EVPN实例视图下配置的Export Target和VPN实例/公网实例下为EVPN配置(VPN实例视图、VPN实例EVPN视图、公网实例视图、公网实例EVPN视图下配置)的Export Target;接收该类路由时,将路由中的Route Target属性与本地VPN实例/公网实例下为EVPN配置的Import Target进行比较。
3. 发布IP前缀路由时,携带VPN实例/公网实例下为IPv4 VPN配置或IPv6 VPN配置的Export Target;接收该类路由时,将路由中的Route Target属性与本地VPN实例/公网实例下为IPv4 VPN或IPv6 VPN配置的Import Target进行比较。
在ADDC多出口解决方案中不需要网络设计人员关心RT以及RD值的取值,只需要网络设计人员根据业务互通需求,在云平台或者控制器页面上将需要互通的两个VPN配置router-link,由控制器将两个VPN互通所需的配置通过NETCONF南向协议下发至各个网元设备。如图3所示,为云平台配置router-link页面,选择本端路由器以及对端路由器将他们连接起来。
图3 云上配置Router-link页面
假如本端租户路由器VPN为VPNA,对端路由器为OA区域路由器VPN为VPN2,控制器向设备下发如图4所示配置,进行VPN路由互引,让租户VPNA和OA区域VPN2的路由能够互相学习。
图4 VPNA与VPN1路由互引配置
VPN路由互引过程:
互联网出口的Router下发业务VPN命名为VPNA,控制器会下发配置至互联网出口的Border设备以及Leaf设备路由互引配置。OA出口Router下发业务VPN命名为VPN2,控制器下发配置至OA出口Border。通过图4配置,实现业务VPNA发布BGP路由时会携带ExportTarget属性1:10168,同时通过路由策略的应用也会携带Export Target属性0:10168。而OA出口私网VPN2的Import Target属性加入了0:10168,因此在接收到其它设备发布的VPNIPv4、EVPN路由时,检查其Export Target属性与本地VPN2的Import Target属性匹配,把路由加入到该VPN实例的路由表中。反之亦然,这样就完成了业务VPNA和OA出口私网VPN2的路由互引。
运营商多链路方案即一个租户可以有多个运营商网络出口并且可以通过配置不同的运营商网络优先级实现当主运营商网络出现故障时自动切换到其他的运营商网络出口。通过运营商多链路出口方案,实现了运营商链路单点故障时可以进行云内路由的快速切换。
图5 运营商多链路出口组网图
在运营商多链路出口方案组网中,数据中心互联网业务区出口的防火墙连接内网核心,而核心设备连接多个运营商网络,从而增加外部运营商链路的可靠性。Internet用户可以通过不同的运营商网络访问数据中心内网互联网业务虚拟机。不同租户VPC可以在云上选择不同的运营商优先级,当主运营商出口链路异常时,备运营商路由快速生效,完成快速切换,以便外网用户可以通过备运营商恢复业务访问。
防火墙通过静态路由指向不同的运营商网络,通过不同的VPN实现不同运营商网络之间的隔离。内网虚拟机对外提供浮动IP,针对不同运营商划分不同的公网地址池。
控制器及云平台实现如图6所示。
图6 运营商多链路出口实现框架
每个虚拟路由器都关联多个运营商出口,采用muti-segment(网络分段)模型来实现运营商多链路出口。一个虚拟路由器可以绑定不同出口网关(对应不同运营商),通过虚拟路由器绑定外部网络与出口网关的IP段匹配来决定出口设备;并根据segment ID来决定逻辑链路VLAN ID。
云上多个运营商出口对应多个外网出口(云上外网出口名称需要和控制器上配置的外网出口名称保持一致并且不能是中文),每个外网出口配置不同子网包含不同的VLAN范围。
针对多运营商多链路出口配置规划同一个公网地址池,选择移动、电信、联通出口并分别指定VLAN;不同的运营商外网出口对应不同的外部网关,包含不同的公网地址池子网规划不同的外网IP范围,如下图7所示。
图7 运营商网络云上配置举例
多个运营商出口共用一个vRouter,控制器为其创建“默认出口网关”,云上为缺省路由器绑定多个运营商各自的外网出口,并设置不同的优先级。每个VPC可以调整各自的运营商出口优先级,控制器会下发不同的路由优先级来实现主备运营商的选择。
设备实现:
控制器针对不同运营商出口会向防火墙下发不同的逻辑子接口,并分别绑定的不同外网VPN,如图8所示。
图8 运营商多链路出口逻辑组网图
图9 防火墙设备配置
防火墙北向缺省路由采用浮动路由来实现主备运营商路由切换,下一跳分别指向联通以及电信运营商设备接口,配置下发到路由表中只有优先级高的路由生效,当出现链路异常主路由的下一跳不可达时,主路由就会失效,而备份路由会在路由表中生效,从而实现路由的自动切换。
为了实现路由快速切换,可以配置NQA检测,在静态路由下发时Track运营商出口链路的下一跳。
图10 联动功能示意图
以联通链路检测为例,创建NQA测试组,通过NQA测试组监测目的地址183.134.213.129(联通运营商设备接口)是否可达,并且创建和NQA测试组关联的Track项。当183.134.213.129地址可达时,NQA会将监测结果通知给Track模块,Track模块将该Track项的状态变为Positive。当183.134.213.129地址不可达时,NQA将监测结果通知给Track模块,Track模块将该Track项的状态变为Negative。
静态路由和Track项关联,如果Track模块通知静态路由Track项的状态为Positive,则静态路由模块将这条路由置为有效;如果Track模块通知静态路由Track项的状态为Negative,则静态路由模块将这条路由置为无效。
NQA检测的时间间隔以及探测次数的选择,可以根据网络收敛要求以及NQA的规模来权衡配置。
方案中NAT有两种实现方式,分别为SNAT和DNAT。一般SNAT用于内网主动访问外网时采用NAT outbound替换私网IP,而DNAT用于外网主动访问内网时虚拟机私网和公网地址1:1映射用公网地址对外提供服务。SNAT实现采用上行子接口地址段作为公网地址池,而DNAT网关一般是给一个私网IP配置一个浮动IP。
不管是单租户多业务出口还是运营商多链路出口都实现了同一个业务具备多个出口的功能,但是两者也是存在一些不同点以及使用场景的区别。如果业务网络需要同时访问多个出口可以使用单租户多业务出口实现,如果业务网络需要提供多个出口,但是业务网络根据需要同时仅会访问一个出口,两个出口之间作为冗余备份,可以使用运营商多链路出口实现。