CiscoルータでのBGPのコマンド帳と簡単なメモ | aopicoのブログ

aopicoのブログ

ブログの説明を入力します。
→しません。

テーマ:
試験を受けるときに作った簡易的なコマンド帳的なものとメモ。


最初に出てくる「ピアを確立するまでの状態」とパスアトリビュートは、個人的にすぐ忘れるので残しておこうと思った。

一度読んだ本を何回もめくるのはめんどくさいのでー。


BGP

4つのメッセージ

OPEN バージョン、AS番号、BGPルータID
UPDATE ネットワークアドレス、サブネット、パスアトリビュート。1つのUPDATEメッセージに1つのルート情報
KEEPALIVE デフォルトで60秒毎に送信し生存確認を行う。ホールドダウンタイムは180秒
NOTIFICATION エラーがあれば直ちにピア関係を切断




ピアを確立するまでの状態

Idle 初期状態。TCP接続のプロセスを開始。ピアへのルートがあるかどうかルーティングテーブルも確認。

Connect ネイバーとのTCP接続完了を待っている状態。 正常にTCP接続が完了すれば、OPENメッセージを送信してOPEN SENT状態に移行。接続ができなければ、Active状態へ移行

Active TCP接続の開始を試行している状態 正常にTCP接続が完了すれば、OPENメッセージを送信してOPEN SENT状態に移行 接続ができなければ、Connect状態へ移行。予期しないIPアドレスからTCP接続が行われると、Active状態のまま。

Open Sent OPENメッセージを送信し、OPENメッセージを待っている状態 受け取ったOPENメッセージにエラーがあればNOTIFICATIONを送信しIdle状態へ。 エラーがなしならば、KEEPALIVEを送信。ホールドタイムをネゴシエーション。

Open Confirm KEEPALIVEまたはNOTIFICATIONメッセージを待っている状態 KEEPALIVEがくればEstablished NOTIFICATIONがくればIdle

Established BGPネイバーが確立されている状態


パスアトリビュート



優先順位 path-attribute名 path-attribute属性 備考
1 Next-hop Well-known Mandatory 生成時は0.0.0.0
IGPからBGPへ再配送
自ルータのnetworkコマンド、またはaggrigate-addressコマンドで生成
2 Weight なし

Cisco独自

local(自ルータ内)でのみ
デフォルト値は32768

3 Local Preference Well-known Discretionary デフォルト値は100
他ASへアドバタイズ時消去
4 Local Routerで生成
ORIGINAL ROUTEとかかれる事もある
5 As-Path Well-known Mandatory
6 Origin Well-known Mandatory

値が大きくなるにつれて優先度は低くなる
IGP < EGP < INCOMPLETE

7 Med Optional Notransitive

・自ASへの入り口を他ASに指定
・デフォルトでは同ASのルートを比較

・メトリック

8 IBGPから学習したルートより、EBGPから学習したルートを優先



BGPでピアを確立する基本設定


EBGPでピアの確立

  1. ネイバーのインターフェースのipアドレスでピアを確立する

    (config)# router bgp <他AS番号>
    (config-router)# neighbor <ピアを確立したいネイバーのipアドレス> remote-as <他AS番号>

  2. ループバックインターフェースのipアドレスで確立する方法

    (config)# router bgp <他AS番号>
    (config-router)# neighbor <ネイバーのループバックインターフェースのipアドレス> remote-as <他ASの番号>
    (config-router)# neighbor <ループバックインターフェースのipアドレス> update-source loopback <ループバックインターフェースの番号>
    (config-router)# neighbor <ループバックインターフェースのipアドレス> ebgp-multihop <2~255>
    (ebgp-multihopコマンドはループバックアドレスに繋ぎたい側のルータで設定

    ループバックインターフェースに到達できるようにstatic routeを設定することも忘れずに!!

IBGPでピアの確立


  1. ネイバーのインターフェースのipアドレスでピアを確立

    (config)# router bgp <同じAS番号>

    (config-router)# neighbor <ネイバーのインターフェースのipアドレス> remote-as <同じAS番号>


  2. ループバックインターフェースのipアドレスでピアを確立


    前提条件として、まず、ospfなどのIGPでそれぞれのループバックインターフェースのipアドレスへの到達出来る設定がすんでいること

    (config)# router bgp <同AS内の番号>

    (config-router)# neighbor <ループバックインターフェースのipアドレス> remote-as <同じAS番号>

    (config-router)# neighbor <ループバックインターフェースのipアドレス> update-source loopback <ループバックインターフェースの番号>

この方法でフルメッシュにするならIGPなどで到達できるようにしておくこと。



showコマンド


BGPネイバーの概要


# show ip bgp summary


BGPネイバーの詳細情報


# show ip bgp neighbor


next-hop-self

EBGPで伝わってきたネットワークアドレスをIBGPでアドバタイズするときにnext hopを自分のアドレスにする(境界ルータで設定)
例:他AS → 自AS内

または、IEBGPで伝える
例:サブAS → サブAS

neighbor <ネクストホップを自ルータのアドレスにしたことを伝えたいネイバーのアドレス> next-hop-self


networkコマンド

ルート情報の元はOSPFやEIGRPやスタティック、直接接続でもなんでもよい。
ただしnetworkコマンドで打つルートは、ルーティングテーブルにあるルートと完全一致しているルートでなければならない。

network <アドバタイズしたいネットワークアドレス> mask <ネットワークアドレスのサブネット>

クラスフルネットワークの場合、mask以降は不要
例: 10.0.0.0/8ならば不要 10.1.1.0/24ならば必要


AS内のIGPルートから再配送するBGPルートを生成

IGPから再配送するとORIGINがIMCOMPLETEになるのでIGPにする


  1. アドバタイズするルートを許可するアクセスコントロールリスト(ACL)を作成

    (config)# access-list <シーケンスナンバー> permit <ネットワークアドレス> [必要ならば反転マスク]

  2. ルートマップを作成。
    再配送するルート情報(ネットワークアドレス)が1で作成したACLにマッチするならば、ORIGINアトリビュートをIGPに書き換える

    (config)# route-map <ルートマップ名> permit <このルートマップ自体のシーケンスナンバー>
    (config-route-map)# match ip address <1で作成したACLのシーケンスナンバー>
    (config-route-map)# set origin igp

  3. BGPで再配送の設定

    (config-router)# ridistribute <ルーティングプロトコル | static | connected > route-map <ルートマップ名>

BGP同期(IOS12.2(8)以降ではデフォルトで無効

(config-router)# synchronization


ルートリフレクタの設定(ルートリフレクタとなるルータのみに設定、ルートリフレクタクライアントには不要)

(config-router)# bgp cluster-id <10進数 | 32bitのipアドレスと同じ表記>
(config-router)#neighbor <ルートリフレクタクライアントのip address> route-reflecter-client


コンフェデレーションの設定

EBGPと同じくTTLが1なのでloop backを使わなくてもebgp-multihopを2以上に設定することを忘れず!!
他ASから認識されるパブリックなAS番号は1~64511が使われ、
自AS内のサブASはプライベートな64512~65355

(config)#router bgp サブ(内部)のAS番号(プライベート)
(config-router)# bgp confederation identifier 本来のAS番号(パブリック)
(config-router)# bgp confederation peers (ネイバーを確立したい他サブ(内部)AS番号)

サブAS内の内部ルータならこの設定は不要!


IEBGPネイバーの確立方法

  1. 通常のIPを使用(サブAS内部BGPスピーカとのネイバーの設定)

    (config-router)# neighbor <同じサブAS内のIEBGPのネイバーのIPアドレス> remote-as <サブASの番号>
    (config-router)# neighbor <同じサブAS内のIEBGPのネイバーのIPアドレス> ebgp-multihop <2以上の値>

  2. ループバックを使用(サブAS内部BGPスピーカとのネイバーの設定)

    (config-router)# neighbor <ループバックインターフェースのipアドレス> remote-as <サブASのID>
    (config-router)# neighbor <ループバックインターフェースのipアドレス> update-source loopback <ループバックインターフェースの番号>
    (config-router)# neighbor <ループバックインターフェースのipアドレス> ebgp-multihop <2~255>
ospfなどのIGPでループバックインタフェースに届く設定も忘れずに!!



ベストパス

LOCAL-PREFERENCE

(config)# route-map <ルートマップ名> permit <シーケンスナンバー>
(config-route-map)# match ip address <アクセスリストのシーケンスナンバー>
(config-route-map)# set local-preference <値>
(config-router)# neighbor <アドバタイズしてくるBGPスピーカのipアドレスを指定> route-map <ルートマップ名> in

Local-preferenceのデフォルト値の設定

(caonfig-router)bgp default local-preference <値>


MED(デフォルトでは設定されていない、show ip bgpで見ても何もない

(config)# route-map <ルートマップ名> permit <シーケンスナンバー>
(config-route-map)# match ip address <アクセスリストのシーケンスナンバー>
(config-route-map)# set metric <値>
(config-router)# neighbor <アドバタイズしたい他ASのBGPスピーカ> route-map <ルートマップ名> out


異なるASからMEDが通知されてきた場合、比較する方法
通常は同じASからアドバタイズされてきたものを比較する

(config-router)# bgp always-compare-med


ルート情報のフィルタ

  1. 正規表現でベストパスの選択

    (config)# ip as-path access-list <シーケンス番号> <正規表現>
    (config-router)# neighbor <対象のネイバーのアドレス> filter-list <上記のas-path access-listのシーケンス番号> <in | out>

    確認方法

    ① 指定した正規表現に一致するAS_PATHアトリビュートのみを表示

    show ip bgp regex <正規表現>

    ② 指定した正規表現でフィルター適用されたルートのみを表示

    show ip bgp filter-list


  2. アクセスコントロールリスト(ACL)

    (config)# access-list <シーケンシャル番号> permit <フィルタ対象のネットワークドレス> <必要であれば反転マスク>
    (config-router)# neighbor <ネイバーのアドレス> distribute-list <アクセスリストのシーケンシャル番号>


  3. ルートマップ

    (config)# access-list <シーケンシャル番号> permit <フィルタ対象のネットワークドレス> <必要であれば反転マスク>
    (config)# route-map <ルートマップ名> <シーケンシャル番号>

    (cofig-router)# neighbor <ネイバーのアドレス> route-map <ルートマップ名>

ルートマップなどのポリシーの変更または適用はネットワーク構成の変更とみなされないので、反映されるのに若干時間がかかる。(トリガードアップデートの対象外)

すぐに適用したければ以下のコマンド

# clear ip bgp <* | ネイバーのアドレス> <in | out >

Inはルーティングテーブルの要求
Outはルーティングテーブルをアドバタイズ



セッションのリセット

ハードリセットはTCPコネクションをクリアする


ハードリセット

# clear ip bgp < * | ネイバーのIPアドレス >


ソフトリセット

# clear ip bgp < soft > < in | out >



ASのエミュレート

(config)# access-list <シーケンスナンバー> permit <as-pathを追加したいネットワークアドレス> <必要であれば反転マスク>
(config)# route-map <ルートマップ名> permit <シーケンスナンバー>
(config-route-map)# match ip address <アクセスリストのシーケンスナンバー>
(config-route-map)# set as-path prepend <as-pasthアトリビュートに加えたいAS番号>
(config-route)# neighbor <ネイバーのipアドレス> route-map <ルートマップ名> out


経路集約

オプション指定しないと、集約前と集約後のルートをアドバタイズ
デフォルトでは集約前ルートのASパスアトリビュートは付加されない
(余談だが、EIGRPのip summaryコマンドで集約すると、集約前のメトリックの中から最小のもメトリックが適用される)
デフォルトで経路集約が無効



(config-router)# aggregate-address <ネットワークアドレス> <サブネットマスク> <summary-onlyなど>
(config-router)network <集約させたいネットワークアドレス> mask <サブネットマスク>

集約しても集約したアドレスがルーティングテーブルになければ以下のコマンドでスタティックルートを追加

(config)# ip route <集約したいネットワークアドレス> <サブネット> null0



BGPの認証

(config-router)# neighbor password <任意のパスワード>



特定のBGPピアを管理的にシャットダウン

(config-router)# neighbor shutdown



ピアグループでネイバーの確立

共通の設定をまとめて行うことにより簡素化、ルータの負荷も軽減できる

Cisco独自の機能

1、ピアグループを定義
2、ネイバーに適用

(config-router)# neighbor <ピアグループネーム> peer-group
(config-router)# neighbor <ネイバーのipアドレス> peer-group <ピアグループネーム>