🐯

Cloud Router 設計完全ガイド

2024/03/11に公開

はじめに

記事の目的

こんにちは、クラウドエース SRE部 に所属している\textcolor{red}{赤髪}がトレードマークの Shanks です。

僕は Security&Networking カテゴリで Google Cloud Partner Top Engineer をいただけたこともあり、社内からネットワークに関する幅広い相談を受ける機会が増えています。
その中でも、Cloud Router の設計・構築でアドバイスを求められることがあります。

システム要件によって、Cloud Interconnect・Cloud VPN・Cloud NAT を採用するケースがあります。
それらは、複数のプロダクトが複合的に利用されるサービスであり、Cloud Router も一緒に利用されるため、通信要件に対して重要な役割を果たします。

しかし、Cloud Router に焦点をあてた設計に必要な情報が十分には提供されていないように感じられることがあります。
本記事は「Cloud Router 設計完全ガイド」と称して、設計・構築・運用の観点でわかりやすく整理することを目的としたものです。

ターゲットとなる読者層

  • Cloud Interconnect を設計・運用・計画している方
  • Cloud NAT を設計・運用・計画している方
  • BGP と周辺技術の知識を有する方

記事のゴール

  • 設計ポイント / 注意ポイントを理解する
    • 設計すべき情報の整理
    • ベストプラクティス

やること・やらないこと

本記事で紹介するスコープは以下のとおりです。

観点 スコープ 備考
推奨設計 別記事「Cloud Interconnect 設計完全ガイド」と一部重複する場合があります
注意事項 別記事「Cloud Interconnect 設計完全ガイド」と一部重複する場合があります
制限事項 別記事「Cloud Interconnect 設計完全ガイド」と一部重複する場合があります
ベストプラクティス解説 別記事「Cloud Interconnect 設計完全ガイド」と一部重複する場合があります
実際の接続 🚫
構築手順 🚫

ポイント

原則として、本番環境では以下のポイントを押さえることが推奨されます。
各 Step で 1 つずつみていきましょう。

  • 主に利用する優先経路が設計されているか?
  • メンテナンス計画は適切か?
  • BGP セッションは信頼性があるか?

Step1 経路制御の最適化

優先経路制御(MED 値)

med

Cloud Router は、対向ルータ(オンプレミス ルータ)によって広告された MED 値を使用して、基本優先度を計算します。
MED の値が小さければ小さいほど優先的な経路として処理されます。
このとき、MED 値が同じ場合、ECMP の動作を行います。

ECMP(Equal Cost Multi Path)とは

ECMP(等価コスト マルチパス)とは、同じセッションのトラフィック(つまり、同じ送信元と宛先を持つトラフィック)を、等コストの複数のパスを介して送信することを可能にするネットワーク ルーティング戦略のことです。

Juniper Networks 公式ドキュメントより引用

そのため、主系と副系の冗長構成としている場合、主系の MED 値を小さいものに、副系の MED 値を大きいものに設定することで以下の動作を行います。

  • 通常時:MED 値が低い主経路を利用して通信する(MED 100 の経路)
  • 障害時:MED 値が高い副経路を利用して通信する(MED 1000 の経路)

99.99% の高可用性の構成を採用している場合、原則として送信元から一番近いリージョンの Cloud Interconnect 接続でトラフィックが送受信されます。
このとき、たすき掛けの構成である場合、「処理されたくないリージョンの経路」は MED 値を極端に大きいものに設定しておくと良いでしょう。

基本優先度の最適化

基本優先度は 065535 までの整数で指定できます。(デフォルトは100

Cloud Interconnect 等で SLA 99.99% の構成を採用しているとき、VPC ルートにはそれぞれの Cloud Router が学習したルーティング情報が反映されます。
その際、VPC ルートにはそれぞれの MED 値が設定された複数のエントリが追加されます。

このとき注意すべき点として、リージョン内外のコストの違いが挙げられます。

ケース MED 値の最小 MED 値の最大 指定方法
リージョン 201 9999 Google により自動で計算
リージョン 0 200 ユーザが任意の値を指定

上記でも述べたとおり、MED 値は低いほど優先的に処理される仕組みです。
そのため、慎重に設計をしないと予期せぬ経路でトラフィックが転送される恐れがあります。

正常時には利用しない冗長経路等は 10,200以上の MED 値を設定することで、常に 200 以下の MED 値が設定された正常経路を選択することができます。
このように、「利用する経路はなるべく小さい MED 値」とし、「利用しない経路はなるべく大きく、正常経路とかけ離れた MED 値」となるようにしてください。

Step2 メンテナンス計画

Cloud Router のメンテナンスの考慮

Cloud Router は ソフトウェアで定義された BGP スピーカー / BGP レスポンダーです。
新しい機能の追加や信頼性向上を目的として、定期的にソフトウェアアップデートが Google により行われます。

Cloud Router のメンテナンスは自動プロセスで、ルーティングを中断しないように設計されています。
メンテナンス イベントの所要時間は 60 秒以内です。

このとき、オンプレミス ルータで経路消失によるダウンタイムを短縮するためには、BFD とグレースフルリスタートを適切に設計・設定してください。
詳細は、後述の「信頼性のあるBGP セッションの設計」を参照してください。

Step3 信頼性のある BGP セッションの設計

BGP タイマー

Cloud Router には、キープアライブ タイマーとホールド タイマーを設定することができます。
BGP のセッションが切断していないか接続状態を監視するためのヘルスチェックのようなものです。
どちらも Cloud Router とオンプレミス ルーターで同じ値に設定する必要があります。

  • キープアライブ タイマー
    • 定期的に BGP メッセージを交換する間隔
    • デフォルト値: 20 秒
  • ホールド タイマー
    • 最後のキープアライブ メッセージ受信後、ルート削除までの待機時間
    • デフォルト値: キープアライブ タイマー × 3

BFD(Bidirectional Forwarding Detection)

bfd

BFD(Bidirectional Forwarding Detection)は、ネットワークパス上の障害を迅速に検出するためのプロトコルです。
BFD は、ほとんどの商用ルーターでサポートされています。
通常、BGP ベースの障害検出では 60 秒かかりますが、BFD ベースであればわずか 5 秒で障害を検出します。

BFD を設定するには、オンプレミスルータと合わせて以下の項目を設定します。
Cloud Router とオンプレミスルータのどちらか片方は初期化モードを Active に設定する必要があります。
(双方で Active にすることも可能です)

設定項目 説明 デフォルト値
BFD セッションの初期化モード Active、Passive、Disabled の 3 つから選択する Disabled
BFD の最小送信間隔 BGP ピアに送信される BFD 制御パケットの最小送信間隔 1,000 ms(最大 30,000 ms)
BFD の最小受信間隔 BGP ピアから受信する BFD 制御パケットの最小受信間隔 1,000 ms(最大 30,000 ms)

グレースフルリスタート

グレースフル リスタートを使用すると、BGP デバイスの障害が発生した際にダウンタイムを最小限に抑えることができます。
通常、なんらかの障害によって BGP セッション断が発生したとき、BGP セッションを再起動させようとする処理がルータに発生します。
このとき、グレースフル リスタートが有効であれば、一時的な中断やデータ損失なしに再起動の処理を行うことができます。

また、BFD とグレースフルリスタートを併用することで、Cloud Router のソフトウェア メンテナンス イベント中のトラフィックに影響を与えずに再起動することができます。
そのため、BFD とグレースフルリスタートは併用することを推奨します。

Appendix:Cloud Router の上限値

router-quota

クォータとして、Cloud Router の合計上限数VPC との接続上限数が各リージョン毎に設定されています。
Cloud Router は Cloud NAT や Cloud VPN 等でも構成要素の1つとして利用されています。

そのため、冗長回線を利用する際に、回線ごとに Cloud Router を用意するのではなく、複数の VPN トンネルや VLAN アタッチメントを単一の Cloud Router に接続する構成とすることを推奨します。
複数の回線が単一の Cloud Router に接続されていたとしても、Cloud Router の内部でソフトウェア スタックが分離されて処理されるため影響を与えません。

Appendix:サポートする ASN

各 Cloud Router はすべての BGP セッションで同じ ASN(AS番号) を使用します。
Partner Interconnect にはグローバル ASN が使用されますが、Dedicated Interconnect ではプライベート ASN が必要です。
また、Partner Interconnect で VLAN アタッチメントの BGP セッションを管理する Cloud Router は、Dedicated Interconnect の BGP セッションを管理できません。

接続オプション 利用できる ASN 種別 利用できる ASN 範囲
Partner Interconnect グローバル ASN ・1~64511
Dedicated Interconnect プライベート ASN ・64512~65534
・4200000000~4294967294

ベストプラクティス

  • BFD で高可用性の構成を採用する
    • オンプレミスで BFD がサポートされている場合、Cloud Router と双方で有効にすること
    • サポートされていない場合、BGP デバイスを冗長化し、リスクを軽減すること
  • グレースフルリスタートでダウンタイムの影響を最小限に抑えること
    • オンプレミスで グレースフルリスタート がサポートされている場合、Cloud Router と双方で有効にすること
    • サポートされていない場合、BGP デバイスを冗長化し、リスクを軽減すること
  • 機密情報等のセキュリティ対応は別途考慮すること
    • オンプレミスで MD5 認証がサポートされている場合、Cloud Router と双方で有効にすること

まとめ

Cloud Router を設計する際には、上記のベストプラクティスや注意事項を考慮に入れることで、基本的なポイントを押さえることができます。
この設計ガイドが一助となれば幸いです。

Special Thanks

本記事は、クラウドエース新卒社員 Nomachi 🍑さんに執筆協力をお願いしました。
弊社は新卒社員からリードエンジニアまでメンバー全員が Google Cloud のプロフェッショナル集団という高い意識でお客様のビジネスに貢献いたします。

Discussion