一 背景

Google CloudVPC是网络租户的单元,一个VPC代表一个网络租户,不同网络租户间默认不通。在多个VPC间互通的方式,可以采用VPN连接,或者VPC Peering等方式。
Google Cloud VPC Peering 广播动态路由

Google Cloud VPC Peering 广播动态路由

但在VPC Peering中,VPC Peering的路由是不能传递的,比如下面的拓扑:
Google Cloud VPC Peering 广播动态路由

VPC1VPC2可以通讯,VPC2VPC3可以通讯,但VPC1VPC3间是不能通讯的。
目前Google Cloud支持Custom routes advertisement for VPC peering,支持动态路由在VPC Peering中传递,如下图:
Google Cloud VPC Peering 广播动态路由

VPC1VPC2通过VPC Peering实现互联,VPC2和右边的网络(VPC3On-Prem的网络)通过VPNInterconnect实现互通,并通过BGP传递了路由。此时通过Custom routes advertisement for VPC peering的功能,可以实现把VPC3/On-Prem的路由传递给VPC1。

用户多个Project的多个VPC需要共享一根VPN/Interconnect的线路时,可以采用这种方式实现。如下图:
Google Cloud VPC Peering 广播动态路由

本文将讨论本功能的具体实现方式。

二 实现

1 创建 VPC

手工创建三个VPC,如下图:
Google Cloud VPC Peering 广播动态路由

2 创建 VPN

VPC2VPC间创建VPN Tunnel
Google Cloud VPC Peering 广播动态路由

此时可以看到通过BGPVPC2VPC3的路由已经互相学习到:
Google Cloud VPC Peering 广播动态路由

3 调整 BGP 广播路由

考虑到在创建VPC Peering后,VPC1到路由需要传送到VPC3,所以在VPC2VPC3BGP宣告中,需要增加VPC1的网段:
Google Cloud VPC Peering 广播动态路由

可以看到,除了VPC2 Subnets的网段,还增加了VPC1的网段到Custom ranges中。
在路由表中可以查看到VPC3接收到了这三条路由:
Google Cloud VPC Peering 广播动态路由

4 创建 VPC Peering

创建vpc1 peering vpc2的两个peering
Google Cloud VPC Peering 广播动态路由

其中Import Customer Routes这里选中,表示接受从VPC2传过来的动态路由。
Google Cloud VPC Peering 广播动态路由

同样的,VPC2 peering VPC1的配置中,在Export Customer Routes的地方选中,表示这里学到的动态路由传递给Peering的对方。
可以看到创建好的Peering
Google Cloud VPC Peering 广播动态路由

5 查看路由并检测

查看路由:
VPC1的路由中,可以看到VPC Peering的路由包含VPC2的路由,但并没有包含VPC3的路由
Google Cloud VPC Peering 广播动态路由

通过gcloud命令行可以看到VPC3的路由:

复制代码
gcloud beta compute networks peerings list-routes vpc1peer2 --direction=incoming \
--network=vpc1 --region=asia-east1
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS
10.2.1.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.2.2.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.2.3.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.3.1.0/24 DYNAMIC_PEERING_ROUTE 100 accepted
10.3.2.0/24 DYNAMIC_PEERING_ROUTE 100 accepted
10.3.3.0/24 DYNAMIC_PEERING_ROUTE 100 accepted

通过VPC1内的VM,pingVPC3内的VM

Google Cloud VPC Peering 广播动态路由
可以ping通。说明两边的网络已经通了。

6 对静态路由的支持

Custom routes advertisement for VPC peering同时也支持静态路由的Peering间路由广播。
VPC3VPC2BGP session中,做路由控制,10.3.1.0/24 网段不被BGP广播,参考下面的左图,同时在VPC2中创建静态路由,10.3.1.0/24 指向VPN Tunnel,参考下面的右图:
Google Cloud VPC Peering 广播动态路由

Google Cloud VPC Peering 广播动态路由

Google Cloud VPC Peering 广播动态路由

10.3.1.0/24 的路由是静态路由了。检查VPC1收到的Peering路由:

复制代码
gcloud beta compute networks peerings list-routes vpc1peer2 --direction=incoming --network=vpc1 --region=asia-east1
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS
10.2.1.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.2.2.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.2.3.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted
10.3.1.0/24 STATIC_PEERING_ROUTE asia-east1 1000 accepted
10.3.2.0/24 DYNAMIC_PEERING_ROUTE 100 accepted
10.3.3.0/24 DYNAMIC_PEERING_ROUTE 100 accepted

可以看到是STATIC_PEERING_ROUTE的类型路由。
同样在 10.1.1.2 的VMping 10.3.1.2,可以ping通。
Google Cloud VPC Peering 广播动态路由

三 总结

通过VPC PeeringCustom routes advertisement for VPC peering的功能,用户可以实现一根VPN/Interconnect线路给多个Project的多个VPC共同使用。

文章版权归作者所有,未经许可不得转载。

评论

发布