Skip to content

BGP Workshop

  • AS 間でルート情報を交換
  • EGP: ルート情報を AS 単位で考える( BGP の前のプロトコル)
  • IGP( OSPF とか) AS の中のやりとり
  • BGP でやりとりされるルート数は 2018 年で 70 万以上
  • TCP でやりとりされる
  • トリガードアップデート
  • パスアトリビュートが付加されるのでルート情報が正確
  • グローバル AS 番号
  • プライベート AS 番号(64512~65535)
  • 16 ビットから 32 ビットに拡張可能
  • 予約されている番号もある
  • 他の AS と接続を 1 つだけ持っている AS
  • グローバル AS 番号を割り当てられない

マルチホーム非トランジット AS

Section titled “マルチホーム非トランジット AS”
  • 複数の AS と接続している AS
  • 他の AS に経路情報を伝搬しない
  • 複数の AS と接続している AS
  • 他の AS に経路情報を教えてあげる
  • AS 内はすべてのルータが BGP を喋れる必要はない
  • eBGP:自ルータの AS 番号とネイバールータの AS 番号が異なる
    • AD 値は 20
  • iBGP:自ルータの AS 番号とネイバールータの AS 番号が同じ
    • AD 値は 200
  • AD 値(アドミニストレーティブディスタンス)
    • 経路の優先順位
    • 小さい方が優先される
  • IEBGP:コンフェデレーションを使用したときに利用するネイバー(あんま使わない)
    • 1 つの AS を複数のサブ AS に分ける
  • ルーティングテーブルとは違う
  • BGP で送受信するルート情報を保持する DB
  • BGP ネイバーから受信したルート情報はすべて BGP テーブルに格納される
  • 「>」がベストパス
  • OPEN
    • 基本情報をやりとり
    • これがやりとりできないとコネクションが確立できない
  • UPDATE
    • 経路情報のやりとり
  • KEEPALIVE
    • 生存確認
    • Hold time 時間内にやりときできないとダウンしたとみなす
    • Hold time の 1/3 が Hello を送る間隔
  • NOTIFICATION
    • エラーで Peer をクローズする

Well-known mandatory( 既知必須 )全ての BGP ルータで識別できて、全ての Update メッセージに含まれる
Well-known discretinary( 既知任意 )全ての BGP ルータで識別できるが、 Update メッセージに含まれるかは任意
Optional transitive( オプション通知 )全ての BGP ルータで識別できない可能性があるが、 BGP ネイバーへは通知する
Optional non-transitive(オプション非通知)全ての BGP ルータで識別できない可能性があり、 BGP ネイバーへは通知しない
  • ORIGIN
    • 経路の発生源を示す
優先度アトリビュートshow ip bgp説明
0IGPiAS 内部で IGP により生成された BGP ルート。このルートは BGP の設定で network コマンドまたは aggregate-address コマンドによって発生する
1EGPeAS 外部から EGP により生成された BGP ルート。このルートは、レガシープロトコルの EGP 経由で学習されることによって発生する。先ずない表示
2Incomplete?ルートの生成元が不明なルート、または別の方法で学習されたルート。通常は、 AS 内部の IGP ルート BGP へ再配布することによって発生する
  • AS_PATH
    • 経路情報がどの AS を経由してきたかを示す
    • 広報するときに左端に自 AS を追加
    • IBGP に広報するときは AS_PATH は変更されない
    • AS_PATH に自 AS 番号がある場合ループと判断して経路は破棄する

ループを防ぐためのルール

eBGP->iBGPOK
iBGP->eBGPOK
eBGP->eBGPOK
iBGP->iBGPNG
  • NEXT_HOP
    • ルータに対するネクストホップ
  • 流れ
    • BGP を有効にする
    • ネイバーの設定
    • BGP でアドバタイズするルート情報を指定する
  • EBGP では、 BGP パケットの TTL が「1」であるため、ネイバーを確立するためには、ルータ間で直接接続している必要がある
  • 直接接続していない場合、 ebgp-multihop コマンドで TTL を変更

BGP でアドバタイズするルート情報を指定する

Section titled “BGP でアドバタイズするルート情報を指定する”
  • ルーティングテーブルに載ってないと BGP テーブルに載らない
  • clear ip bgp * soft [in / out]
    • TCP 接続を切断しないでできる