亚马逊AWS官方博客

基于TGW和思科云业务路由器的企业混合云网络互联

一、背景

今天,越来越多的企业将工作负载迁移到云端,并通过专线或互联网将云下自建数据中心、企业总部和分支机构、其他云服务商上构建的数据中心实现互联,共同组成企业混合云架构。由于互联网线路具有更大的接入带宽和更低的价格和更高的灵活性,往往成为企业云互联的首选,因此,相关的解决方案如何实现是许多企业所关心的。

本文将介绍如何使用亚马逊云科技的网络托管服务TGW(Transit Gateway)与思科云业务路由器(包括CSR1000v和Catalyst 8000v)共同组建混合网络架构,并以思科Catalyst 8000v为例,通过对TGW和思科云业务路由器的配置来实现本解决方案。

 二、架构设计

1.     逻辑拓扑

在这种网络混合架构中,企业云下节点通过高速的互联网线路接入,在亚马逊云科技术的Region中,创建Transit VPC,用于部署思科Catalyst 8000v,实现与企业其他网络的互联,Transit VPC(该VPC仅用于部署思科虚拟路由器,须配置面向互联网的公有子网和面向TGW的私有子网)与后端工作负载VPC的打通,通过TGW完成。网络的逻辑拓扑如下:

2.     TGWCatalyst 8000v连接方式

目前,TGW与Transit VPC支持三种连接方式,下面就针对互联方式的选择进行分析和讨论:

上图中Host VPC用于部署EC2等云端资源,Transit VPC用来部署Catalyst 8000v虚拟路由器,并通过TGW实现Region内VPC的互联。

Option 1: Transit VPC与TGW通过VPN Attachment方式实现互联,中间采用IPSEC隧道实现TGW与Transit VPC中虚拟路由器的连接。但目前由于亚马逊云科技中国区TGW没有IPSEC功能,因此这种互联方式只能在Global Region中使用,中国区无法实现。

Option 2:Transit VPC通过VPC Attachment方式与TGW实现互联,这种方式需要在TGW路由表、Transit VPC路由表和Catalyst 8000v虚拟路由器中通过静态路由的方式实现路由配置,一旦网络规模较大,网段较多,配置和管理非常不灵活,不推荐使用。

Option 3:Transit VPC通过Connect Attachement方式与TGW实现互联,这种方式在TGW与虚拟路由器之间建立GRE隧道,并启动BGP,实现了云端网络和企业网络之间动态路由功能,目前是最为灵活的配置方式,也是本文测试样例所采用的互联方式。

3.     TGW Connect Attachment工作原理

Connect Attachment使用了GRE技术,在TGW与Transit VPC路由器之间建立GRE Tunnel,并在此之上运行BGP路由协议。为了保证可靠性,TGW与每台路由器会自动建立两个GRE Tunnel,这个在后续的配置中会看到。

TGW与Transit VPC的互联互通,需要创建三个层面的连接,首先需要创建VPC Attachment,将Transit VPC挂接在TGW上,以保证TGW与Catalyst 8000v LAN侧端口的互通;第二,创建Connect Attachment,将TGW和Transit VPC关联在一起;第三,在Connect Attachment中创建Connect Peer,这里将会定义GRE Tunnel和BGP路由协议。

Connect Attachment有几个重要的参数,在具体配置的时候会使用,这里先进行一个说明:

  • TGW CIDR Block:在TGW上预留的一个IP地址段,用于TGW与Catalyst 8000v 在underlay层的互通,并在此之上建立GRE Tunnel(Overlay层)。
  • TGW GRE Address:TGW CIDR Block中选取一个地址,配置在TGW上。
  • Peer GRE Address:TGW CIDR Block中选取地址配置在Catalyst 8000v的LAN侧端口。
  • BGP Inside CIDR Block:是配置在GRE Tunnel端口上的IP地址,子网掩码必须为/29,网段只能从254.0.0中选择,其中169.254.0.0 – 5.0/29和169.254.169.248/29不可用,为内部预留地址。
  • Amazon Inside ASN:在创建TGW时输入,是配置在TGW上的BGP ASN,选择范围64512-65534,默认为64512。
  • Peer ASN:Catalyst 8000v上配置的BGP ASN。

 三、参考配置

下面就以一个具体的测试项目,来详细说明TGW与Catalyst 8000v的配置步骤,测试拓扑如下图所示。

上图中北京Region模拟客户的亚马逊云科技的云端数据中心,宁夏Region模拟企业自建数据中心或在其他云服务提供商上的数据中心,北京Region和宁夏Region选择Internet线路,并通过GRE Tunnel实现互联。每个Region中都定义两个VPC,以北京Region为例,BJ-APP-VPC为部署EC2资源的Host VPC,BJ-Transit-VPC为部署Catalyst 8000v的Transit VPC,两个VPC通过TGW连接在一起,TGW与Transit VPC通过Connect Attachment互通。北京Region详细的网络参数说明如下:

  • BJ-APP-VPC CIDR:10.0.0/16
  • BJ-APP-VPC Subnet:10.0.0/24
  • BJ-Transit-VPC CIDR:20.0.0/16
  • BJ-CSR-Private Subnet:20.2.0/24,这个是Catalyst 8000v LAN侧端口IP subnet。
  • Catalyst 8000v LAN端口IP Address:20.2.10
  • BJ-CSR-Public Subnet:20.1.0/24,这个是Catalyst 8000v WAN侧端口IP subnet。
  • Catalyst 8000v WAN端口IP Address:20.1.20
  • TGW CIDR:15.0.0/24
  • TGW IP Address:15.0.10
  • BGP Inside GRE Address:254.10.0/29,这个地址段是TGW与Catalyst 8000v的GRE Tunnel IP地址。
  • Catalyst 8000v GRE Tunnel IP:254.10.1
  • TGW GRE Tunnel IP:254.10.2
  • BJ Region与NX Region Catalyst 8000v之间GRE Tunnel IP Subnet:254.200.0/24
  • BJ CSR Tunnel IP:254.200.1,NX CSR Tunnel IP:169.254.200.2

下面就以北京Region为例,说明配置的过程。

1.     启动Catalyst 8000v虚拟路由器

如何创建Transit VPC及相关资源这里就不赘述了,直接进入到启动Catalyst 8000v的步骤。在BJ-Transit-VPC中,进入EC2 launch页面,点击Amazon Web Services Marketplace,在搜索栏输入Catalyst 8000v,可以搜索出AMI,点击select。

根据性能的需求,选择EC2的类型,选择Next。

Network选择BJ-Transit-VPC,将Catalyst 8000v启动在BJ Transit VPC中。在Subnet中选择BJ-CSR-WAN端口,表示启动Catalyst 8000v时第一张网卡是在BJ-CSR-Public subnet中,用来连接internet。

还需要为Catalyst 8000v中添加第二张网卡,用于LAN侧连接。

Catalyst 8000v创建成功后,需要disable source/destination check,否则数据报文无法在多张网卡之间转发。

其他步骤与launch普通EC2没有区别,此处不再赘述。

2.     创建TGW

在Transit Gateway的配置界面中,选择Create Transit Gateway,这里需要输入TGW名称和ASN,默认会使用64512。

在Transit gateway CIDR blocks中输入10.15.0.0/24,后续创建Connect Peer会调用。

3.     创建TGW Attachment

首先创建VPC Attachment,Attachment type选择VPC,subnet ID一览中选择BJ-Transit-Private的subnet,因为需要将Catalyst 8000v的LAN子网attach到TGW,这样才能够在LAN侧端口与TGW之间建立GRE隧道。

创建Connect Attachment,Attachment type选择Connect,在Transport attachment ID一栏中选择刚才创建的VPC attachment。

在创建完Connect Attachment之后,还需要在Connect Attachment基础上建立TGW与Catalyst 8000v的GRE Tunnel和BGP Peer。在TGW Attachment的配置界面中,选择已经创建成功的Connect Attachment,然后选择界面下方的Connect Peers,点击Create connect peer。

在Transit gateway GRE address一栏中输入TGW CIDR中的一个IP地址,因为TGW CIDR为10.15.0.0/24,这里选择的地址为10.15.0.10;Peer GRE address一栏输入对端Catalyst 8000v LAN端口的IP地址,这里是10.20.2.10;BGP inside CIDR blocks输入GRE Tunnel端口所分配的IP地址段,这里为169.254.10.0/29,系统会自动为Catalyst 8000v和TGW分配GRE tunnle IP地址;Peer ASN输入Catalyst 8000v所配置的BGP ASN,因为TGW 所配置的BGP ASN为64512,为简化BGP配置,建议采用eBGP建立neighbor,因此需要输入的ASN为非64512,这里选择65510,如果不输入,系统默认会给Catalyst 8000v分配ASN 64512。

Connect Peer创建完成后,系统会自动生成一条记录并显示GRE Tunnel的状态和BGP Peer的状态。从这条记录中可以看到,peer BGP address为169.254.10.1,这个地址是分配给Catalyst 8000v LAN侧GRE Tunnle的IP地址;Transit gateway BGP address有两个,地址分别是169.254.10.2和169.254.10.3,这两个是配置在TGW上的地址,目的是为了提供可靠性,TGW会自动生成2个GRE Tunnel端口,分别与Catalyst 8000v建立GRE Tunnel和BGP neighbor。

从上面的状态表中可以看到,GRE和BGP的状态都是Down的,原因是Catalyst 8000v的配置需要SSH到路由器中手工添加。另外,Catalyst 8000v LAN侧地址(10.20.2.10)和TGW CIDR(10.15.0.10)要相互可达,需要在BJ-CSR-Private路由表中添加静态路由,否则Catalyst 8000v的LAN端口没有路由到达TGW。在BJ-CSR-LAN路由表中,添加静态路由,Target选择TGW上创建的与Transit VPC实现互联的VPC Attachment。

至此,TGW的相关配置基本完成了,后续需要登录到Catalyst 8000v中配置路由器。

4.     Catalyst 8000v相关配置

回到EC2配置界面,选择Catalyst 8000v实例,点击右上角Connect,获取登录路由器信息。需要注意的是,ssh的用户名为ec2-user,而非页面上显示的root。

用ec2-user登录该路由实例,后续的配置工作都需要通过思科IOS CLI进行配置了。

以下详细介绍创建GRE Tunnel和BGP的IOS配置命令。

首先需要为LAN端口添加IP地址,在创建的Catalyst 8000v实例中,只有第一张网卡的IP地址会自动配置上去,其他的IP地址必须手工配置,并no shutdown。

interface GigabitEthernet2
ip address 10.20.2.10 255.255.255.0

然后,需要添加一条到达TGW CIDR block的静态路由,下一跳为10.20.2.1,在亚马逊云科技中,每个子网的第一个地址为这个subnet的网关,该静态路由创建了Catalyst 8000v到TGW在Underlay层上的路由可达性。

ip route 10.15.0.0 255.255.255.0 10.20.2.1

第三,创建Catalyst 8000v与TGW的GRE Tunnel端口,其中tunnel IP必须与亚马逊云科技中自动分配的一致,这里是169.254.10.1,tunnel source为Catalyst 8000v LAN端口IP地址,tunnel destination是TGW分配的underlay IP地址。

interface Tunnel1
ip address 169.254.10.1 255.255.255.248
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source 10.20.2.10
tunnel destination 10.15.0.10

第四,创建到NX region的GRE tunnel。如果需要进行传输加密,可采用IPSEC Tunnel,本例采用GRE tunnel,其中tunnel destination是对端NX region Catalyst 8000v WAN端口分配的公网IP地址。

interface Tunnel10
ip address 169.254.200.1 255.255.255.0
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source GigabitEthernet1
tunnel destination 52.83.117.100

第五,创建BGP neighbor,从下面的配置可以看出,169.254.10.2/169.254.10.3分别是TGW上的GRE tunnel IP地址,BGP ASN为64512;NX Region Catalyst 8000v tunnel IP是169.254.200.2,BGP ASN为65520.

router bgp 65510
bgp router-id 169.254.10.1
bgp log-neighbor-changes
redistribute static
neighbor 169.254.10.2 remote-as 64512
neighbor 169.254.10.2 ebgp-multihop 2
neighbor 169.254.10.2 timers 10 30 30
neighbor 169.254.10.3 remote-as 64512
neighbor 169.254.10.3 ebgp-multihop 2
neighbor 169.254.10.3 timers 10 30 30
neighbor 169.254.200.2 remote-as 65520

配置完成后,确认GRE Tunnel 端口状态为Up/Up,并且能够ping通tunnel端口,BGP neighbor能够建立起来。需要注意的是,TGW CIDR中的IP地址10.15.0.10是无法ping通的。

最后确认路由表成功学习到了BJ Host VPC的CIDR以及NX Region中的子网。

到这里,本次测试的所有配置都已经完成。

四、总结

本文基于亚马逊云科技Transit Gateway(TGW)和思科公司Catalsyt8000v虚拟路由器所提供的BGP、GRE、IPSEC等功能,介绍了一种高性能、高可靠、高安全性和较好性价比的混合云网络互联架构。本文可以作为类似组网方案及配置方法的参考。

本篇作者

马健

思科(中国)有限公司资深网络架构师,负责思科大中华区企业网产品线及解决方案的技术支持和咨询工作。在企业网络、运营商网络领域具有20多年的丰富经验,拥有Cisco Certified Internetwork Expert(CCIE #12207)、AWS Certified Advanced Networking Specialty、Certified Kubernetes Administrator等相关认证。

宁琛

亚马逊云科技解决方案架构师,帮助初创企业客户在亚马逊云平台上实现业务部署。在企业IT网络领域有多年的实践经验,拥有AWS Certified Advanced Networking Specialty和Cisco Certified Internetwork Expert(CCIE #4751)等网络技术相关认证。