BGPパケットキャプチャの見方【フィールド構造・確認ポイント・具体例つき】

  • URLをコピーしました!

BGP 障害対応では パケットキャプチャ(pcap)で BGP のやり取りを直接確認する のが非常に有効です。
本記事では、初心者〜実務者までが 実際にどこを見るべきかを即判断できる よう、BGP パケット構造・確認項目・正常例/異常例をまとめます。

目次

1. BGP パケットをキャプチャする方法

■ Cisco IOS の例

monitor capture CAP interface GigabitEthernet0/0 both
monitor capture CAP match ipv4 host 10.0.0.2
monitor capture CAP start
! --- 収集後 ---
monitor capture CAP export flash:bgp.pcap
monitor capture CAP stop

■ Linux で tcpdump

sudo tcpdump -i eth0 port 179 -w bgp.pcap

2. BGP パケット構造(理解必須)

BGP メッセージは4種類。これを理解すれば解析は可能です。

メッセージ役割
OPENBGP セッション開始(AS 番号、Hold Timer など交換)
KEEPALIVEセッション維持
UPDATE経路情報の通知 / 撤回
NOTIFICATIONエラー通知(受信側がセッションを落とす)

3. Wireshark で見るべきポイント

チェックポイント①:TCP セッション確立

BGP は TCP/179 を使用。以下を確認:

  • SYN → SYN/ACK → ACK が成立しているか
  • MSS/Window に異常がないか

正常例

TCP  SYN
TCP  SYN, ACK
TCP  ACK

異常例

SYN 無限リトライ → 相手が応答していない(FW/ACL)

チェックポイント②:OPEN メッセージ

以下が一致しないと確立しません。

  • AS 番号 (My AS / Remote AS)
  • BGP Identifier
  • Hold Time
  • Capabilities

正常例

My AS: 65001
Hold Time: 180
BGP Identifier: 192.168.1.1
Capabilities: Route Refresh, 4-byte AS, MP-BGP

異常例

  • AS 番号不一致
  • Capabilities 不一致(例:IPv6無し)
  • BGP Identifier 重複

チェックポイント③:KEEPALIVE

OPEN 成功後すぐに KEEPALIVE が返る。

正常例

BGP KEEPALIVE
BGP KEEPALIVE

異常

KEEPALIVE が返らない → 一方向通信 / CPU 遅延

チェックポイント④:UPDATE メッセージ

経路広告(NLRI)の内容を確認。

  • NLRI
  • AS-PATH
  • NEXT_HOP
  • MED / LOCAL_PREF
  • Withdrawn Routes

正常例

NLRI: 10.10.0.0/16
AS_PATH: 65001 65010
NEXT_HOP: 192.168.1.2

異常例

  • NEXT_HOP が自分から到達不可
  • AS-PATH が無限ループ
  • 広告されるはずの prefix が無い

チェックポイント⑤:NOTIFICATION(BGPダウン原因)

セッションが落ちる瞬間、必ず送信される。

異常例

BGP NOTIFICATION
Error Code: 2 (Open Message Error)
Subcode: 2 (Bad Peer AS)

→ AS番号ミスで落とされている。

4. BGP セッションが確立しない時の分析例

■ ケース①:AS 番号が不一致

My AS: 65001
Remote expects: 65010

→ AS の設定ミス。

Cisco修正例

router bgp 65001
  neighbor 192.168.1.2 remote-as 65010

■ ケース②:ACL / FW による遮断

SYN →
SYN →
SYN → (応答なし)

修正例

access-list 100 permit tcp host 192.168.1.1 host 192.168.1.2 eq 179

■ ケース③:NEXT_HOP 解決不可

NLRI: 10.10.0.0/16
NEXT_HOP: 10.0.0.254

→ 10.0.0.254 へ ping 不達。

原因:IGP で next-hop が解決不可

修正

OSPF / static で next-hop 解決。

■ ケース④:Hold Timer Expired

Error Code: 4 (Hold Timer Expired)

KEEPALIVE 未達が原因。

5. BGP パケットを見る順番(結論)

  1. TCP ハンドシェイク
  2. OPEN 内容一致
  3. KEEPALIVE の継続性
  4. UPDATE 内容の正常性
  5. NOTIFICATION の有無

この順番で見れば、どの段階で問題が発生しているかが一発で分かる。

6. まとめ

この記事を読めば、以下ができるようになります。

  • BGP パケットキャプチャから問題箇所特定
  • 正常/異常の判別
  • AS不一致、FW遮断、NEXT_HOP 不達の診断
  • NOTIFICATION で落ちた理由の特定
目次