BGP ルートとルート選択のトラブルシューティング
このガイドでは、ルートの選択、ルートの伝播、ルートの優先度など、BGP ルートに関連する問題のトラブルシューティングについて説明します。
他のトラブルシューティング情報については、以下をご覧ください。
IPv6 BGP セッションは確立されるが、IPv4 ルートが交換されない
VLAN アタッチメントまたは HA VPN ゲートウェイのスタックタイプが
IPV4_IPV6
であることを確認します。VLAN アタッチメントのスタックタイプが正しくない場合は、VLAN アタッチメントを修正します。HA VPN ゲートウェイの場合は、HA VPN ゲートウェイとそのトンネルを再作成します。Cloud Router が正しく構成されていることを確認します。次のコマンドを実行します。
gcloud compute routers describe ROUTER-NAME
出力で、次の値を確認します。
bgpPeers.enableIpv4
はtrue
bgpPeers.ipv4NexthopAddress
とbgpPeers.peerIpv4NexthopAddress
が存在する
一部のオンプレミスの IPv4 または IPv6 プレフィックスが使用できない
一部のオンプレミスの IPv4 または IPv6 プレフィックスが使用できない場合は、割り当てと上限、またはサブネット範囲の重複を確認します。
カスタム学習ルートが機能していない
カスタム学習ルートを構成していて、トラフィックの損失、ping エラーなど、ルートに関連する問題が発生した場合は、次の操作を行います。
- BGP セッションでルートが正しく構成されていることを確認します。
- BGP セッションが実行中であることを確認します。
- ドロップされたルートを確認します。
- 割り当てと上限を確認します。
- 重複するサブネット範囲を確認します。
詳細については、カスタム学習ルートのステータスを確認するをご覧ください。
ドロップされたルートを確認する
ルートがドロップされたかどうかを確認するには、次のコマンドを実行します。
gcloud compute routers get-status ROUTER_NAME \
--region=REGION
次のように置き換えます。
ROUTER_NAME
: Cloud Router の名前。REGION
: Cloud Router が配置されているリージョン。
出力は次のようになります。routeStatus
が active
に設定されていることを確認します。
kind: compute#routerStatusResponse
result:
bestRoutesForRouter:
- asPaths:
- asLists:
- 65200
pathSegmentType: AS_SEQUENCE
creationTimestamp: '2024-03-22T13:57:15.533-07:00'
destRange: 10.128.0.0/20
kind: compute#route
network: https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/VPC_NAME
nextHopIp: 169.254.73.246
nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/vpnTunnels/VPN_NAME
priority: 100
routeStatus: ACTIVE
routeType: BGP
bgpPeerStatus:
- advertisedRoutes:
- destRange: 10.128.0.0/20
kind: compute#route
network: https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/aneta-vpc
nextHopIp: 169.254.73.245
nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/vpnTunnels/VPN_NAME
priority: 100
routeType: BGP
enableIpv6: false
ipAddress: 169.254.73.245
linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/vpnTunnels/VPN_NAME
md5AuthEnabled: false
name: aneta-bgp
numLearnedRoutes: 1
peerIpAddress: 169.254.73.246
state: Established
status: UP
uptime: 10 hours, 11 minutes, 0 seconds
uptimeSeconds: '36660'
network: https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/VPC_NAME
アクティブなルートの場合、bestRoutesForRouter.routeStatus
値は ACTIVE
になります。ドロップされたルートの場合は DROPPED
になります。
割り当てと上限を確認する
Cloud Router で学習したルートの上限を超過していないことを確認します。Cloud Router の学習したルートの数を確認するには、そのステータスを確認します。
上限、関連するログメッセージ、指標、問題の解決方法については、次の表をご覧ください。
上限 | ガイダンス | ||
---|---|---|---|
上限について | 学習したルートには 2 つの上限があります。これらの上限によって、学習したルートの最大数が直接定義されることはありません。代わりに、一意の宛先プレフィックスの最大数が定義されます。
最初の上限は、VPC ネットワークで使用される動的ルーティング モードに関係なく該当します。2 つ目の上限は、VPC ネットワークがグローバル動的ルーティング モードを使用している場合にのみ有効です。Cloud Router の上限の詳細については、上限をご覧ください。 |
学習したルート | 特定リージョン内のすべての Cloud Router によって同じリージョン内のサブネットに適用される、学習したルートの一意の宛先の最大数 |
ログ | これらの制限のいずれかが発生すると、Cloud Logging に limit-exceeded メッセージが表示されます。このメッセージを表示する高度なクエリを作成する方法については、Cloud Router の Logging のドキュメント内の関連するクエリをご覧ください。 |
||
指標 | 次の指標を使用して、現在の上限と使用量を確認することもできます。指標の先頭には
これらの指標は、 |
||
問題を解決する | ルートの上限の問題を解決するには、次の操作を行います。ルートの数が上限を大幅に超えている場合には、両方を行うことで効果があります。
|
重複するサブネットの範囲を確認する
VPC サブネットの IPv4 および IPv6 アドレス範囲が、オンプレミス ネットワークからアドバタイズされたルートと完全には重複していないことを確認します。IPv4 と IPv6 の範囲が重複すると、ルートが破棄される可能性があります。これは、Cloud Router が学習した動的ルートに重複するカスタム静的ルートにも適用されます。以下のシナリオでは、Cloud Router が受信したプレフィックスは無視されます(カスタム動的ルートは作成されません)。
学習したプレフィックスが、VPC ネットワーク内にあるサブネットのプライマリまたはセカンダリ IPv4 / IPv6 アドレス範囲と完全に一致する場合。
学習したプレフィックスが、VPC ネットワーク内のカスタム静的ルートの宛先と完全に一致する場合。
学習したプレフィックスが、VPC ネットワーク内にあるサブネットのプライマリまたはセカンダリ IPv4 / IPv6 アドレス範囲よりも明確である(より長いサブネット マスクがある)場合。
学習したプレフィックスが、VPC ネットワーク内のカスタム静的ルートの宛先よりも明確である(より長いサブネット マスクがある)場合。
詳細については、VPC ルートの概要のルートの適用範囲と順序をご覧ください。
オンプレミス ネットワークから学習されたルートが他の VPC ネットワークに伝達されない
単一の Cloud Router では、ある BGP ピアから他の BGP ピア(他の VPC ネットワーク内の Cloud Router を含む)に学習したルートを再アドバタイズできません。
たとえば、次のハブとスポークのトポロジでは、Cloud Router が複数の VPC ネットワーク間のルート アドバタイズをサポートできません。
Google Cloud のネットワーク トポロジに関する推奨事項については、VPC 設計のためのベスト プラクティスとリファレンス アーキテクチャをご覧ください。
さらに、Google Cloud でハブ アンド スポーク トポロジを構築して管理するには、Network Connectivity Center を使用できます。
プレフィックスが BGP セッションにインポートされない(AS パスプリペンド)
AS パスの先頭付加は、コントロール プレーンと VPC ネットワークとは無関係です。AS パスの長さは、以下のシナリオで説明するように、各 Cloud Router ソフトウェア タスク内でのみ考慮されます。
1 つの Cloud Router のソフトウェア タスクが 2 つ以上の BGP セッションから同じ宛先を学習した場合は、次のようになります。
- ソフトウェア タスクは、AS パスの長さが最も短いネクストホップの BGP セッションを選択します。
- ソフトウェア タスクは、宛先、ネクストホップ、MED の情報を Cloud Router のコントロール プレーンに送信します。
- コントロール プレーンは、この情報を使用して 1 つ以上の候補ルートを作成します。各候補の基本優先度は、受信した MED に設定されています。
2 つ以上の Cloud Router のソフトウェア タスクが 2 つ以上の BGP セッションから同じ宛先を学習した場合は、次のようになります。
- 各ソフトウェア タスクは、AS パスの長さが最も短いネクストホップの BGP セッションを選択します。
- 各ソフトウェア タスクは、宛先、ネクストホップ、MED の情報を Cloud Router のコントロール プレーンに送信します。
- コントロール プレーンは、この情報を使用して 2 つ以上の候補ルートを作成します。各候補の基本優先度は、受信した MED に設定されています。
Cloud Router のコントロール プレーンは、VPC ネットワークの動的ルーティング モードに従って、1 つ以上の動的ルートを VPC ネットワークにインストールします。グローバル動的ルーティング モードでは、各リージョンの動的ルートの優先度は、Cloud Router のリージョンとは異なるリージョンに合わせて調整されます。Google Cloud がルートを選択する方法について詳しくは、VPC ドキュメントのルーティング順序をご覧ください。
multi-NIC VM で NIC ごとに異なるルートが取得される
これは想定内の動作です。固有の VPC ネットワーク内の multi-NIC VM 用に、それぞれのネットワーク インターフェース(NIC)を構成する必要があります。各 Cloud Router は 1 つの VPC ネットワークにカスタム動的ルートを作成します。したがって、1 つの Cloud Router が学習したルートは、multi-NIC VM の 1 つのネットワーク インターフェースにのみ適用されます。VM のネットワーク インターフェースから送信されたパケットは、そのインターフェースの VPC ネットワークに適用されるルートのみを使用します。
トラフィックが非対称にルーティングされる
上り(内向き)のトラフィックと下り(外向き)のトラフィックが異なるパスを使用する場合、トラフィックは非対称にルーティングされます。たとえば、2 つの Cloud VPN トンネルがあるとします。VPC ネットワークからの下り(外向き)トラフィックが最初のトンネルを使用し、VPC ネットワークへの上り(内向き)トラフィックは 2 番目のトンネルを使用します。
非対称ルーティングは、オンプレミス ルーターと Cloud Router によってアドバタイズされた優先パスが一致しない場合に発生します。VPC ネットワークへの上り(内向き)トラフィックの場合は、Cloud Router を使用してアドバタイズ ルートの優先度を構成します。詳細については、学習したルートをご覧ください。
他の属性(ルーター ID や発信元 ASN など)が影響を及ぼす可能性があるため、BGP の最適なパス選択の仕組みについてデバイスのドキュメントをご覧ください。たとえば、次のリソースをご覧ください。
Cisco: BGP の最適パスの選択
Fortinet: BGP ハンドブック
Juniper: BGP パスの選択
VPC ネットワークからの下り(外向き)トラフィックの場合は、オンプレミス ルーターの MED 値を確認してください。
デフォルト ルート(0.0.0.0/0
または ::/0
)がインターネット ゲートウェイにトラフィックを送信している
VPC ネットワークを作成すると、Google Cloud は、ネクストホップがデフォルトのインターネット ゲートウェイである、優先度が 1000
のデフォルト ルートを自動的に作成します。
デフォルトのインターネット ゲートウェイのネクストホップを持つルートは、インターネット アクセス要件を満たす VM でのみ使用できます。
限定公開の Google アクセスを使用する場合など、Google API やサービスにアクセスするには、デフォルトのインターネット ゲートウェイをネクストホップとするルートを使用することも必要です。
次の例は、インターネットまたは Google API とサービスへのトラフィックがブロックされる原因となる可能性がある状況について説明します。
自動的に作成されたデフォルト ルート(デフォルト インターネット ゲートウェイのネクストホップのあるルート)を削除した場合。
自動的に作成されたデフォルト ルートを置き換え、代わりのルートのネクストホップがデフォルト インターネット ゲートウェイと異なる場合。
Cloud Router が、自動的に作成されたデフォルト ルートよりも優先度が高い宛先となる
0.0.0.0/0
や::/0
のルートを学習した場合。
ネクストホップが明確でない
Google Cloud のルート選択アルゴリズムの仕組みについては、VPC ルート ドキュメントの適用範囲と順序をご覧ください。
IPv6 トラフィックがルーティングされない
IPv6 ホストに接続する際に問題が発生した場合は、次のようにします。
IPv4 ルートが正しくアドバタイズされていることを確認します。最初に IPv4 トラフィックを確認することで、一般的なネットワークの問題を除外できます。IPv4 ルートがアドバタイズされない場合は、このドキュメントに記載している一般的なトラブルシューティング手順を実施してください。
ファイアウォール ルールを調べて、VPC ネットワークとオンプレミス ネットワーク間で IPv6 トラフィックが許可されていることを確認します。
VPC ネットワークとオンプレミス ネットワークで IPv6 サブネット範囲が重複していないことを確認します。重複するサブネットの範囲を確認するをご覧ください。
学習したルートの割り当てと上限を超過したかどうかを判断します。学習したルートの割り当てを超過すると、IPv4 プレフィックスの前に IPv6 プレフィックスがドロップされます。割り当てと上限を確認するをご覧ください。
IPv6 構成を必要とするすべてのコンポーネントが正しく構成されていることを確認します。
VPC サブネットが、
IPV4_IPV6
スタックタイプを使用するように構成されている。VPC サブネットの
--ipv6-access-type
がINTERNAL
に設定されている。サブネット上の Compute Engine VM が IPv6 アドレスで構成されている。
HA VPN ゲートウェイまたは Dedicated Interconnect の VLAN アタッチメントが、
IPV4_IPV6
スタックタイプを使用するように構成されている。BGP ピアで IPv6 の使用が有効になっており、BGP セッションに正しい IPv6 ネクストホップ アドレスが構成されている。
Cloud Router のステータスとルートを表示するには、Cloud Router のステータスとルートの表示をご覧ください。
BGP セッション構成を表示するには、BGP セッション構成の表示をご覧ください。
次のステップ
Cloud Logging を使用して Cloud Router をモニタリングする方法の詳細については、ログと指標の表示をご覧ください。
サポートの利用で、その他のサポートを確認する。
BGP セッションの状態については、BGP セッションの状態をご覧ください。
Bidirectional Forwarding Detection(BFD)に関連する診断メッセージとセッションの状態については、BFD 診断メッセージとセッション状態をご覧ください。
Router アプライアンスを有する Cloud Router の使用に関連する問題については、Network Connectivity Center のドキュメントでルーター アプライアンスのトラブルシューティングをご覧ください。