[GCP] Cloud VPN 接続した VPC にリージョンの異なる複数サブネットを追加してみる

2020.06.30

こんにちは、菊池です。

以下のエントリにて、GCPのVPCへの高可用性(HA)VPN接続を試してみました。

今度は、この接続しているVPCに対して、同じリージョンあるいは異なるリージョンのサブネットを追加して、BGPの経路情報がどのようになるか確認してみました。

サブネット追加時の経路変化

初期状態サブネット1つ(asia-east1)

こちらの記事のように、サブネット1つのVPCに対してのVPN接続は確立した状態からスタートします。

VPNトンネル、BGP共にアップした状態です。

オンプレのルータ側は、等コストロードバランスが有効になるように、下記の通りmaximum-pathsを追加しています。

router bgp 65000
 bgp log-neighbor-changes
 neighbor 169.254.0.1 remote-as 65100
 neighbor 169.254.0.1 timers 20 60 60
 neighbor 169.254.0.5 remote-as 65100
 neighbor 169.254.0.5 timers 20 60 60
 address-family ipv4
  network 10.10.10.0 mask 255.255.255.0
  neighbor 169.254.0.1 activate
  neighbor 169.254.0.5 activate
  maximum-paths 2
 exit-address-family

この状態で、BGPテーブルを確認すると、以下の通りVPCサブネットへの経路を受け取り、両方のトンネルを使用するようにベストパスが選定されています。

#show ip bgp
BGP table version is 13, local router ID is 192.168.1.253
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.10.0/24    0.0.0.0                  0         32768 i
 *m  172.16.0.0       169.254.0.5            100             0 65100 ?
 *>                   169.254.0.1            100             0 65100 ?

ルートテーブルにも、2つの経路が追加されています。

#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Vlan1
L        10.10.10.254/32 is directly connected, Vlan1
S        10.212.134.0/24 [1/0] via 10.10.10.253
      169.254.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        169.254.0.0/30 is directly connected, Tunnel100
L        169.254.0.2/32 is directly connected, Tunnel100
C        169.254.0.4/30 is directly connected, Tunnel101
L        169.254.0.6/32 is directly connected, Tunnel101
B     172.16.0.0/16 [20/100] via 169.254.0.5, 04:53:57
                    [20/100] via 169.254.0.1, 04:53:57
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet0/5
L        192.168.1.253/32 is directly connected, GigabitEthernet0/5

サブネット追加:asia-east2

それではサブネットを追加していきます。リージョンasia-east2にサブネットを追加します。

VPCコンソールから[サブネットの追加]を選択します。

リージョンとIPアドレス範囲を設定します。

追加できました。

VPCのルートテーブルには、追加されたサブネットのIP範囲がデフォルトで追加されています。

オンプレ側のルータを見てみましょう。まずはBGPテーブルです。追加された172.17.0.0/16は、経路によってメトリックが313と312で異なっています。

#show ip bgp
BGP table version is 14, local router ID is 192.168.1.253
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.10.0/24    0.0.0.0                  0         32768 i
 *m  172.16.0.0       169.254.0.5            100             0 65100 ?
 *>                   169.254.0.1            100             0 65100 ?
 *   172.17.0.0       169.254.0.5            313             0 65100 ?
 *>                   169.254.0.1            312             0 65100 ?

メトリックの小さい、169.254.0.1を経由する経路のみがルートテーブルに追加されました。

#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Vlan1
L        10.10.10.254/32 is directly connected, Vlan1
S        10.212.134.0/24 [1/0] via 10.10.10.253
      169.254.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        169.254.0.0/30 is directly connected, Tunnel100
L        169.254.0.2/32 is directly connected, Tunnel100
C        169.254.0.4/30 is directly connected, Tunnel101
L        169.254.0.6/32 is directly connected, Tunnel101
B     172.16.0.0/16 [20/100] via 169.254.0.5, 04:56:01
                    [20/100] via 169.254.0.1, 04:56:01
B     172.17.0.0/16 [20/312] via 169.254.0.1, 00:00:12
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet0/5
L        192.168.1.253/32 is directly connected, GigabitEthernet0/5

サブネット追加:us-east1

続いて、リージョンus-east1にサブネットを追加してみます。

先ほどと同様に、サブネットを追加しました。

オンプレ側のルータでBGPテーブルを確認します。こちらも、asia-east2を追加したときと同様に、2つの経路でメトリックが異なっています。

#show ip bgp
BGP table version is 16, local router ID is 192.168.1.253
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.10.0/24    0.0.0.0                  0         32768 i
 *m  172.16.0.0       169.254.0.5            100             0 65100 ?
 *>                   169.254.0.1            100             0 65100 ?
 *   172.17.0.0       169.254.0.5            313             0 65100 ?
 *>                   169.254.0.1            312             0 65100 ?
 *>  172.18.0.0       169.254.0.1            495             0 65100 ?
 *                    169.254.0.5            497             0 65100 ?

メトリックの小さい169.254.0.1を経由する経路がルートテーブルに追加されました。

#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Vlan1
L        10.10.10.254/32 is directly connected, Vlan1
S        10.212.134.0/24 [1/0] via 10.10.10.253
      169.254.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        169.254.0.0/30 is directly connected, Tunnel100
L        169.254.0.2/32 is directly connected, Tunnel100
C        169.254.0.4/30 is directly connected, Tunnel101
L        169.254.0.6/32 is directly connected, Tunnel101
B     172.16.0.0/16 [20/100] via 169.254.0.5, 04:57:53
                    [20/100] via 169.254.0.1, 04:57:53
B     172.17.0.0/16 [20/312] via 169.254.0.1, 00:02:04
B     172.18.0.0/16 [20/495] via 169.254.0.1, 00:00:05
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet0/5
L        192.168.1.253/32 is directly connected, GigabitEthernet0/5

サブネット追加:asia-east1

今度は、VPNゲートウェイ/Cloudルータと同じasia-east1にサブネットを追加してみます。

手順はこれまでと同じです。

オンプレ側ルータのBGPテーブルを確認します。この場合は、2つのトンネルから同じメトリックの経路情報を受け取っています。

#show ip bgp
BGP table version is 18, local router ID is 192.168.1.253
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.10.0/24    0.0.0.0                  0         32768 i
 *m  172.16.0.0       169.254.0.5            100             0 65100 ?
 *>                   169.254.0.1            100             0 65100 ?
 *   172.17.0.0       169.254.0.5            313             0 65100 ?
 *>                   169.254.0.1            312             0 65100 ?
 *>  172.18.0.0       169.254.0.1            495             0 65100 ?
 *                    169.254.0.5            497             0 65100 ?
 *m  172.19.0.0       169.254.0.1            100             0 65100 ?
 *>                   169.254.0.5            100             0 65100 ?

そのため、ルートテーブルにも2つの経路が採用されました。

#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Vlan1
L        10.10.10.254/32 is directly connected, Vlan1
S        10.212.134.0/24 [1/0] via 10.10.10.253
      169.254.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        169.254.0.0/30 is directly connected, Tunnel100
L        169.254.0.2/32 is directly connected, Tunnel100
C        169.254.0.4/30 is directly connected, Tunnel101
L        169.254.0.6/32 is directly connected, Tunnel101
B     172.16.0.0/16 [20/100] via 169.254.0.5, 04:59:52
                    [20/100] via 169.254.0.1, 04:59:52
B     172.17.0.0/16 [20/312] via 169.254.0.1, 00:04:03
B     172.18.0.0/16 [20/495] via 169.254.0.1, 00:02:04
B     172.19.0.0/16 [20/100] via 169.254.0.5, 00:00:23
                    [20/100] via 169.254.0.1, 00:00:23
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet0/5
L        192.168.1.253/32 is directly connected, GigabitEthernet0/5

MEDの変更

ここで、GCPのCloudルータからアドバイタイズする経路情報をいじってみます。片方のトンネルのみ、MEDの値を変えてみてみましょう。トンネルの詳細から、[BGPセッションを変更] に進みます。

ここまでの検証で、asia-east1の経路はデフォルトMED:100でアドバタイズしてくるのがわかりましたので、MED:200に設定してみます。

オンプレ側ルータのBGPテーブルで、結果を確認してみます。asia-east1のサブネットの経路情報は、片方が200になりました。デフォルトのMED:100の方の経路が優先されベストパスに選出されています。また、他のサブネットの経路情報についても、先ほどまでと比べて100加算されたメトリックになっています。

#show ip bgp
BGP table version is 22, local router ID is 192.168.1.253
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.10.10.0/24    0.0.0.0                  0         32768 i
 *>  172.16.0.0       169.254.0.5            100             0 65100 ?
 *                    169.254.0.1            200             0 65100 ?
 *>  172.17.0.0       169.254.0.5            313             0 65100 ?
 *                    169.254.0.1            412             0 65100 ?
 *   172.18.0.0       169.254.0.1            595             0 65100 ?
 *>                   169.254.0.5            497             0 65100 ?
 *   172.19.0.0       169.254.0.1            200             0 65100 ?
 *>                   169.254.0.5            100             0 65100 ?

 

#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.1.1
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Vlan1
L        10.10.10.254/32 is directly connected, Vlan1
S        10.212.134.0/24 [1/0] via 10.10.10.253
      169.254.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        169.254.0.0/30 is directly connected, Tunnel100
L        169.254.0.2/32 is directly connected, Tunnel100
C        169.254.0.4/30 is directly connected, Tunnel101
L        169.254.0.6/32 is directly connected, Tunnel101
B     172.16.0.0/16 [20/100] via 169.254.0.5, 00:00:51
B     172.17.0.0/16 [20/313] via 169.254.0.5, 00:00:51
B     172.18.0.0/16 [20/497] via 169.254.0.5, 00:00:51
B     172.19.0.0/16 [20/100] via 169.254.0.5, 00:00:51
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, GigabitEthernet0/5
L        192.168.1.253/32 is directly connected, GigabitEthernet0/5

まとめ

GCPとの高可用性(HA)VPNに、VPCのサブネットを追加したときの経路情報の変化を確認しました。

  • Cloudルータと同じリージョンのサブネットの経路は、2つのトンネルでメトリックが同じになる
  • Cloudルータと異なるリージョンのサブネットの経路は、2つのトンネルでメトリックに差がある
  • CloudルータでアドバタイズするMEDを変更すると、他リージョンのメトリックには加算される

ということがわかりました。シンプルな接続であれば、特段意識することはないかもしれませんが、複数リージョン/拠点との接続の際は経路のハンドリングに気をつけましょう。