アクティブ/パッシブ BGP接続
完全ガイド
「メイン道路」と「バックアップ道路」で安全な高速道路ネットワークを構築しよう — 物流ネットワークのたとえで理解するDirect Connect冗長化設計
🎯 最初に押さえる4つのポイント
物流ネットワークのたとえ
Direct ConnectのActive/Passive BGP設定を、身近な「物流ネットワーク」にたとえて理解しましょう。あなたは全国展開する物流会社の配送設計担当者です。
| 🚚 物流のたとえ | ☁ AWS用語 | 解説 |
|---|---|---|
| 東京配送センター | データセンター1(DC1) | オンプレミスの主要拠点。本番系ネットワークの起点。 |
| 大阪配送センター | データセンター2(DC2) | オンプレミスの副次拠点。開発系ネットワークの起点。 |
| 高速道路ルートA | DX接続1(Active) | 本番系トラフィックのメインルート。常に使用される道。 |
| 高速道路ルートB | DX接続2(Passive) | 障害時のバックアップルート。普段は待機状態。 |
| 中央配送ハブ | Direct Connect Gateway | すべてのDX接続を束ねる中継ハブ。BGPリフレクタとして機能。 |
| 配送先の倉庫群 | VPC(本番/開発) | AWS側のネットワーク。VGWまたはTGW経由で接続。 |
| 配送指示書の優先度 | BGP Local Preference | 社内で「どの道を優先するか」を指定するルール。値が大きいほど優先。 |
| 経由地の数 | BGP AS_Path | 目的地までの経由AS数。少ないほど「近い」と判断される。 |
| 受入口の優先表示 | BGP MED | 外部に「この入口から入ってほしい」と伝える指標。値が小さいほど優先。 |
| 相手先への配送希望書 | BGP Community | AWS側に「こちらのルートを優先してほしい」と伝える仕組み。 |
Active/Passiveの基本概念
Active/Passive構成とは、2本以上のDirect Connect接続を用意し、通常時は1本(Active)を使い、障害時にもう1本(Passive)に自動フェイルオーバーする冗長化パターンです。
Active/Active vs Active/Passive
🟢 Active/Active
- 両方のDX接続を同時に使用
- ECMP(等コストマルチパス)でロードバランシング
- 帯域幅を最大活用できる
- 同じCommunityタグ(例: 7224:7200)を両方に設定
🔴 Active/Passive
- 通常時は1本だけ使用
- 障害時にPassiveへフェイルオーバー
- 非対称ルーティングを回避しやすい
- 異なるCommunityタグ(7224:7300と7224:7100)で優先度差を設定
全体アーキテクチャ図
以下は、2つのDXロケーションを使ったActive/Passive構成の全体像です。DC1からのDX接続をActive(本番系)、DC2からのDX接続をPassive(バックアップ)として構成しています。
図1: Active/Passive DX構成 — 実線がActive(メインルート)、破線がPassive(バックアップ)
3つのBGPパス属性
Active/Passive制御に使う3つのBGPパス属性を、物流ネットワークのたとえで理解しましょう。
iBGPピア間(同一AS内)でのみ使用。社内で「この道を優先しなさい」と指示する仕組み。最も効果的な制御手段。
AS番号の連結リスト。Prependingで意図的に経路を長くして、特定パスを非優先にできる。eBGP/iBGP両方で有効。
マルチホーム環境で外部ASに「この入口を使って」と伝える指標。評価順位が低いため補助的な使用が推奨される。
BGP経路選択の評価順序
AWSがDirect Connect経由でルーティングを決定する際の評価順序です。上位の条件が優先されます。
図2: BGP Best Path評価フロー — 上位条件から順に評価、同条件ならECMP
Outbound制御(オンプレミス → AWS)
Outbound制御は「物流でいえば、配送センターからどの高速道路を使って荷物を出すか」を決めることです。自社のルーター(DC1/DC2)で設定します。
方法1: Local Preferenceで制御(推奨)
社内(iBGPピア間)で「本番系は東京ルートを優先、開発系は大阪ルートを優先」と指示する方法です。最も直感的で効果的な手法です。
図3: Local Preferenceで本番/開発のOutboundを分離
方法2: AS_Path Prependingで制御
AWS側から受信したルートのAS_Pathを意図的に長くすることで、「この道は遠い」とルーターに認識させます。
Inbound制御(AWS → オンプレミス)
Inbound制御は「AWS側から戻ってくるトラフィックがどのDX接続を通るか」を決めることです。物流にたとえると「倉庫から配送センターへの返品ルートを指定する」ようなものです。
BGP Communityタグによるインバウンド制御
図4: BGP Communityタグで戻りトラフィックのDX接続を制御
AS_Path Prependingによるインバウンド制御
Community以外に、自社のプレフィックスをAWSに広告する際にAS_Pathを長くすることでも制御できます。Passive側のルーターで、AWS向け広告にAS番号をPrependします。
BGP Communityタグ 詳細
Private/Transit VIF用 ローカルプリファレンスCommunity
| Communityタグ | 優先度 | 用途 | 物流のたとえ |
|---|---|---|---|
| 7224:7100 | Low | Passive(バックアップ)VIF | 🔴 「この入口は緊急時だけ使ってください」 |
| 7224:7200 | Medium | Active/Active構成の両方、またはデフォルト | 🟡 「通常の受入口です」 |
| 7224:7300 | High | Active(メイン)VIF | 🟢 「最優先の受入口です」 |
Active/Passive設定パターン
設定例
Outbound制御: Local Preference(Cisco IOS)
! DC1: 本番系を優先(LP 200)、開発系を非優先(LP 100) ip prefix-list PROD_NETS permit 10.0.1.0/24 ip prefix-list DEV_NETS permit 10.0.2.0/24 route-map SET-LP-IBGP-DC1 permit 10 match ip address prefix-list PROD_NETS set local-preference 200 route-map SET-LP-IBGP-DC1 permit 20 match ip address prefix-list DEV_NETS set local-preference 100 router bgp 65000 neighbor 192.168.1.2 remote-as 65000 neighbor 192.168.1.2 route-map SET-LP-IBGP-DC1 out
! DC2: 開発系を優先(LP 200)、本番系を非優先(LP 100) route-map SET-LP-IBGP-DC2 permit 10 match ip address prefix-list PROD_NETS set local-preference 100 route-map SET-LP-IBGP-DC2 permit 20 match ip address prefix-list DEV_NETS set local-preference 200 router bgp 65000 neighbor 192.168.1.1 remote-as 65000 neighbor 192.168.1.1 route-map SET-LP-IBGP-DC2 out
Inbound制御: BGP Community(Cisco IOS)
! DC1 (Active): 高優先度 Community 7224:7300 を付与して広告 ip prefix-list MY_NETS permit 172.16.1.0/24 ip prefix-list MY_NETS permit 172.16.2.0/24 route-map SET-COMM-HIGH permit 10 match ip address prefix-list MY_NETS set community 7224:7300 router bgp 65000 neighbor 169.254.254.41 remote-as 65001 neighbor 169.254.254.41 route-map SET-COMM-HIGH out neighbor 169.254.254.41 send-community
! DC2 (Passive): 低優先度 Community 7224:7100 を付与して広告 route-map SET-COMM-LOW permit 10 match ip address prefix-list MY_NETS set community 7224:7100 router bgp 65000 neighbor 169.254.254.33 remote-as 65001 neighbor 169.254.254.33 route-map SET-COMM-LOW out neighbor 169.254.254.33 send-community
AWS CLI: VIF作成時のBGP設定
# Private VIF(Active側)の作成 aws directconnect create-private-virtual-interface \ --connection-id dxcon-abc12345 \ --new-private-virtual-interface \ virtualInterfaceName=prod-active-vif,\ vlan=100,\ asn=65000,\ authKey=my-bgp-key,\ amazonAddress=169.254.254.41/30,\ customerAddress=169.254.254.42/30,\ directConnectGatewayId=dxgw-abc12345 # Private VIF(Passive側)の作成 aws directconnect create-private-virtual-interface \ --connection-id dxcon-def67890 \ --new-private-virtual-interface \ virtualInterfaceName=prod-passive-vif,\ vlan=200,\ asn=65000,\ authKey=my-bgp-key-2,\ amazonAddress=169.254.254.33/30,\ customerAddress=169.254.254.34/30,\ directConnectGatewayId=dxgw-abc12345
# CloudFormation: Active/Passive VIF構成 AWSTemplateFormatVersion: '2010-09-09' Resources: ActiveVIF: Type: AWS::DirectConnect::VirtualInterface Properties: ConnectionId: dxcon-abc12345 VirtualInterfaceName: prod-active-vif Type: private Vlan: 100 Asn: 65000 DirectConnectGatewayId: dxgw-abc12345 PassiveVIF: Type: AWS::DirectConnect::VirtualInterface Properties: ConnectionId: dxcon-def67890 VirtualInterfaceName: prod-passive-vif Type: private Vlan: 200 Asn: 65000 DirectConnectGatewayId: dxgw-abc12345
ベストプラクティス vs アンチパターン
✅ ベストプラクティス
- 異なるDXロケーションを使って冗長性を確保する
- Active/PassiveにはBGP Communityタグ(7224:7300/7100)を使う
- 同じプレフィックス長で広告し、BGP属性で制御する
- OutboundはLocal Pref、InboundはCommunityと方向別に制御手段を分ける
- 定期的にフェイルオーバーテストを実施する
- ステートフルFWがある場合はActive/Passiveを選択する
❌ アンチパターン
- 同じDXロケーションに2本のDXを集約する(単一障害点)
- Communityタグを設定せずにActive/Passiveを期待する
- Active側だけ/24、Passive側は/25で広告する(プレフィックス長の不一致)
- Local PrefとAS_Path Prependingを矛盾する設定で併用する
- フェイルオーバーのテストを一度もしない
- MEDだけでActive/Passiveを制御しようとする(不安定)
トラブルシューティング
確認コマンド
! BGPテーブル確認 show ip bgp show ip bgp 10.0.1.0/24 ! Local Preference確認 show ip bgp 10.0.1.0/24 | include localpref ! Community確認 show ip bgp community ! BGPネイバー状態 show ip bgp summary show ip bgp neighbors 169.254.254.41 advertised-routes
# VIFの状態確認 aws directconnect describe-virtual-interfaces \ --virtual-interface-id dxvif-abc12345 # BGPピアの状態確認 aws directconnect describe-virtual-interfaces \ --query "virtualInterfaces[].bgpPeers" # DX接続の状態確認 aws directconnect describe-connections
📚 ANS-C01 試験対策ポイント
よくある質問(FAQ)
📝 DX Active/Passive BGP チートシート
➡ Outbound制御(行き)
Local Preference: 社内ルーターで設定。値が大きい方が優先。iBGPピア間で共有。最推奨。
⬅ Inbound制御(帰り)
BGP Community: 7224:7300=High、7224:7200=Medium、7224:7100=Low。Active側にHigh、Passive側にLowを設定。
📚 評価順序
プレフィックス長 → Local Pref → AS_Path → MED → ECMP。プレフィックス長が最強。同長が前提条件。
⚠ 最重要注意
異なるプレフィックス長で広告すると、BGP属性の設定がすべて無効化される。必ず同じプレフィックス長で広告すること。
🛡 Active/Passive設定
Active: Community 7224:7300 + LP 200。Passive: Community 7224:7100 + LP 100。send-communityを忘れない。
🚧 フェイルオーバー高速化
BFD有効化でサブ秒検知。デフォルトBGPタイマー(Hold 90秒)は遅すぎる場合がある。