亚马逊AWS官方博客
基于TGW和思科云业务路由器的企业混合云网络互联
一、背景
今天,越来越多的企业将工作负载迁移到云端,并通过专线或互联网将云下自建数据中心、企业总部和分支机构、其他云服务商上构建的数据中心实现互联,共同组成企业混合云架构。由于互联网线路具有更大的接入带宽和更低的价格和更高的灵活性,往往成为企业云互联的首选,因此,相关的解决方案如何实现是许多企业所关心的。
本文将介绍如何使用亚马逊云科技的网络托管服务TGW(Transit Gateway)与思科云业务路由器(包括CSR1000v和Catalyst 8000v)共同组建混合网络架构,并以思科Catalyst 8000v为例,通过对TGW和思科云业务路由器的配置来实现本解决方案。
二、架构设计
1. 逻辑拓扑
在这种网络混合架构中,企业云下节点通过高速的互联网线路接入,在亚马逊云科技术的Region中,创建Transit VPC,用于部署思科Catalyst 8000v,实现与企业其他网络的互联,Transit VPC(该VPC仅用于部署思科虚拟路由器,须配置面向互联网的公有子网和面向TGW的私有子网)与后端工作负载VPC的打通,通过TGW完成。网络的逻辑拓扑如下:
2. TGW与Catalyst 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等功能,介绍了一种高性能、高可靠、高安全性和较好性价比的混合云网络互联架构。本文可以作为类似组网方案及配置方法的参考。