はじめに
AWSにおけるネットワークモニタリングはサービス毎にメトリクスやログが充実しているものの、BGPモニタリングについては少し物足りないなと感じてました。
この度、AWS blogでNetwork ManagerによりBGPのネイバーやルートの状態変化を監視する方法が公開されてましたのでご紹介します(もしかすると以前より実装されてたかもですが汗)
AWSにおけるネットワークモニタリングの課題
AWSにおけるネットワークモニタリングは、上位レイヤーのサービスでは固有のメトリクスやログが提供される一方、下位レイヤーのサービスではトラフィックのパケット数/バイト数やBPS/PPSなどの情報のみ提供されるケースが多く見受けられます。
しかし、構築時や運用時におけるトラブルシュートなどを考えた場合には、例え下位レイヤーのサービスでも、VPN/BGPのトンネル/ネイバーやルートなどの状態変化は正確な事象把握のうえで是非確認したいポイントとなってきます。
VPNについては、Site-to-SiteVPNのメトリクスでトンネル状態変化を検知可能かつ、2022年8月19日リリースのログ出力機能でIKEフェーズや詳細なメッセージなども確認できる一方、
BGPについては、ネイバーやルートの状態変化を検知する方法がなく、詳細な情報を確認したい場合はサポートへ問い合わせるしかないのが現状でした。
AWS Network Managerによる検知と対処
TGWでBGPのメトリクスやログを確認できませんが、Network ManagerでグローバルネットワークにTGWを登録することでBGPのイベントを監視できるようになりました。
詳細なイベントの種類や説明は以下へ記載してます(トポロジ更新イベントは本記事のスコープから外れるため割愛します)
ステータス更新イベント
イベント | 説明 |
---|---|
VPN-CONNECTION-IPSEC-DOWN | VPNのIPsecトンネルがダウンした |
VPN-CONNECTION-IPSEC-UP | VPNのIPsecトンネルがアップした |
VPN-CONNECTION-BGP-DOWN | VPNのBGPネイバーがダウンした |
VPN-CONNECTION-BGP-ESTABLISH | VPNのBGPネイバーがアップした |
CONNECT_PEER_BGP_DOWN | TGWのConnect PeerのBGPネイバーがダウンした |
CONNECT_PEER_BGP_UP | TGWのConnect PeerのBGPネイバーがアップした |
ルーティング更新イベント
イベント | 説明 |
---|---|
CONNECT_PEER_DELETED | TGWのConnect Peerが変更された |
TGW-ROUTE-INSTALLED | TGWでルートが作成された |
TGW-ROUTE-UNINSTALLE | TGWでルートが削除された |
AWS Network Managerの検証
AWS blogやgithubにて、Network Managerによる検知や対処の手順や資材が紹介されてましたので、そちらを参考にして、下図の通り環境構築のうえ検証してみました。
以降、ポイントとなるVyOS、Network Manager、EventBridgeのみ記載しています。
VyOS作成 (VPNおよびBGPで接続するため)
- Maketplaceにて、以下のイメージから起動します。
- イメージは「VyOS Universal Router for AWS (Standard Support) - Pay-as-You-Go」
- バージョンは「1.3.5」
- Site-to-Site VPNにて、以下の設定をダウンロードします。
- ベンダーは「Vytta」
- プラットフォームは「Vyatta Network OS」
- ソフトウェアは「Vyatta Network OS 6.5+」
- IKEバージョンは「ikev1」
- 構成やバージョンの違いにより、設定を以下のように修正し、VyOSに流し込みます。
修正前 | 修正後 |
---|---|
set vpn ipsec site-to-site peer x.x.x.x local-address '<Public-IP-of-EIP>' | set vpn ipsec site-to-site peer x.x.x.x local-address '<Private-IP-of-ENI>' |
set protocols bgp 6xxxx neighbor x.x.x.x soft-reconfiguration 'inbound' | set protocols bgp 6xxxx neighbor x.x.x.x address-family ipv4-unicast soft-reconfiguration 'inbound' |
set protocols bgp 6xxxx network x.x.x.x/x | set protocols bgp 6xxxx address-family ipv4-unicast network x.x.x.x/x |
Network Manager登録
- Network Managerにて「グローバルネットワークを作成」を押します。
「グローバルネットワークにコアネットワークを追加する」のチェックは外すこと! - Network Manager > グローバルネットワーク > (作成済みグローバルネットワーク) > Transit Gatewayネットワーク > 概要にて「TransitGatewayを登録」を押します。
- Network Manager > グローバルネットワーク > (作成済みグローバルネットワーク) > Transit Gatewayネットワーク > イベントにて「CloudWatch Logs Insightsをオンボード」を押します。
EventBridge作成
- EventBridgeにて「ルールを作成」を押します。
イベントタイプ | イベントパターン |
---|---|
Network Manager Status Update | { "source": ["aws.networkmanager"], "detail-type": ["Network Manager Status Update"] } |
Network Manager Routing Uppdate | { "source": ["aws.networkmanager"], "detail-type": ["Network Manager Routing Update"] } |
テスト
- VyOSにて「reset ip bgp all」コマンドですべてのBGPネイバーをリセットすることにより、Network ManagerのイベントやSNSからのメールで下記メッセージが確認できました。
(レコードを展開することにより、例えば追加されたルートなどの詳細も確認できました。)
今後の期待
Network ManagerはTGWやCloudWANが対象であり、VGWやDXGWなどは対象となってません。
今後は同様のイベントが監視できるように、その他ゲートウェイも対象となることに期待!
まとめ
Network ManagerによりBGPネイバーやルートのなど状態変化が検知できるようになりました。
今まで以上に詳細な情報が確認でき、トラブルシュートなどで役立つものと思われます。
おわりに
AWSのネックワークモニタリングをご検討の方にとって、本記事の課題・対処がご参考になりますと幸いです。