我们都知道,对于企业来讲,随着业务的发展和重点不同,对网络的实际需求也是不同的,尤其是对于公有云的网络架构,随着AWS的功能完善和发展,越来越多的网络功能得以实现。本文将结合实际案例讲述如何以及为什么从DX过渡到DX gateway的

DX时期的网络方案

企业上云绝非一蹴而就的事情,这就意味着必然存在着一个本地云与公有云共同存在的时期,这就涉及到了本地IDC与云上IDC的互通问题。因我们启用业务上云的方案较早,当时的 AWS还仅有DX的功能,通过此功能我们可以使用AWS合作伙伴专线将本地IDC与AWS连接起来。具体网络架构如下:

DX的出现,使得企业可以通过DX的private VIF或者 public VIF将企业的分支/本地IDC与AWS连接起来。而为了实现高可用性,一般不会仅建立一个DX通道,可能会采用如下冗余方案:

  1. 两条不同ISP的专线通过不同DX location或者DX 设备连接到AWS的方案
  2. 一条ISP专线,一根Internet+IPsec VPN的方案
  3. 一条ISP专线,一根SD-WAN线路的方案
  4. 两根VPN线路的方案,(可以是Internet+IPsec VPN与SD-WAN的组合)等等 而因为对线路的时延可靠性等要求,我们当时选择了第一种方案,如下所示。

DX双专线接入时,双活的实现

因AWS DX功能比较弱,无法通过AWS侧设备实现路由的选路,这就导致我们需要通过远端局点的路由控制来实现主备路径的选择,从而使得两条路径互为备份。

如果要选择ISP A的专线为主用线路,则需要如下配置:

1.在Customer GW A上,从ISP A 的EBGP邻居接收路由时,使用route-map修改local-preference的值,将local-preference设置的大于B线路的,使得IDC本地到AWS时,优选A线路。 2.同时,在Customer GW B上向B线路的EBGP邻居发布路由时,使用route-map修改AS-path属性,在AS-path后增加几个as-path,使得AWS侧接收到B线路的路由为非优选路由。 3.当然,为了切换便利性,我们可以一次性写两套A、B分别为主用线路时的route-map,通过自动化工具,实现路径的一键切换。

配置参考如下:

Customer GW A上:
route-policy IN_EBGP_A permit node 10
if-match ip-prefix AWS
apply local-preference 200 
route-policy OUT_EBGP_A permit node 10
if-match ip-prefix LOCAL_IDC
route-policy IN_EBGP_B permit node 10
if-match ip-prefix AWS 
route-policy OUT_EBGP_B permit node 10
if-match ip-prefix LOCAL_IDC
Apply as-path 64512 64512  add

Customer GW B上:
route-policy IN_EBGP_A permit node 10
if-match ip-prefix AWS
route-policy OUT_EBGP_A permit node 10
if-match ip-prefix LOCAL_IDC
Apply as-path 64512 64512  add
route-policy IN_EBGP_B permit node 10
if-match ip-prefix AWS 
apply local-preference 200 
route-policy OUT_EBGP_B permit node 10
if-match ip-prefix LOCAL_IDC

经过一段时间的运行和实践,发现该方案有很多不足之处。比如,因DX功能限制,从ISP A学到的路由会向ISP B传递,从而导致路由环路或者专线路由条目超限的问题等。 在多次踩坑之后,痛定思痛,进行了DX到DX GW的改造。

DX Gateway是什么

先看一下没有DX gateway(以下简称DXGW)之前,如果要互联VPC是什么样的?

有了DXGW之后,又是什么样的呢?

每个DX Gateway都是跨所有公共AWS区域存在的全局对象,这就使得所有AWS区域之间可以通过网关进行所有的通信,大大减少了VIF的数量和BGP会话的数量,同时也简化了网络结构和维护成本。

更更重要的是,多了一个DXGW,相当于在DXGW侧多了一台路由器,路由多了一跳,从ISP A学到的路由再也不会默认向ISP B发布了,一劳永逸的解决了因DX功能限制而导致的路由环路和路由条目超限的问题。

DX Gateway如何实现双路径的选路?

改造为DX GW之后,双路径的主备切换和DX时保持一致,还是要通过企业本地IDC侧CE 上BGP的选路来控制的。配置同:DX双专线接入时,双活的实现。

DX Gateway的限制

当然,如此便利的DXGW也有一些限制条件,并不是任何时候都适用,限制如下:

  1. 关联到DXGW的VGW/VPC可以属于不同的区域,但必须属于同一个AWS账户
  2. VPC不能使用重复的IP地址段
  3. 一个DXGW最多可关联10个VIF/VGW
  4. 关联到同一个DXGW的private VIF之间不能进行数据访问
  5. 关联到同一个DXGW的VGW之间不能进行数据访问