最初に出てくる「ピアを確立するまでの状態」とパスアトリビュートは、個人的にすぐ忘れるので残しておこうと思った。
一度読んだ本を何回もめくるのはめんどくさいのでー。
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(自ルータ内)でのみ |
3 | Local Preference | Well-known Discretionary | デフォルト値は100 他ASへアドバタイズ時消去 |
4 | Local Routerで生成 | ORIGINAL ROUTEとかかれる事もある |
|
5 | As-Path | Well-known Mandatory | |
6 | Origin | Well-known Mandatory | 値が大きくなるにつれて優先度は低くなる |
7 | Med | Optional Notransitive | ・自ASへの入り口を他ASに指定 ・メトリック |
8 | IBGPから学習したルートより、EBGPから学習したルートを優先 |
BGPでピアを確立する基本設定
EBGPでピアの確立
- ネイバーのインターフェースのipアドレスでピアを確立する
(config)# router bgp <他AS番号>
(config-router)# neighbor <ピアを確立したいネイバーのipアドレス> remote-as <他AS番号>
- ループバックインターフェースの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でピアの確立
ネイバーのインターフェースのipアドレスでピアを確立
(config)# router bgp <同じAS番号>
(config-router)# neighbor <ネイバーのインターフェースのipアドレス> remote-as <同じAS番号>
ループバックインターフェースの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にする
- アドバタイズするルートを許可するアクセスコントロールリスト(ACL)を作成
(config)# access-list <シーケンスナンバー>permit <ネットワークアドレス> [必要ならば反転マスク]
- ルートマップを作成。
再配送するルート情報(ネットワークアドレス)が1で作成したACLにマッチするならば、ORIGINアトリビュートをIGPに書き換える
(config)# route-map <ルートマップ名>permit <このルートマップ自体のシーケンスナンバー>
(config-route-map)# match ip address <1で作成したACLのシーケンスナンバー>
(config-route-map)# set origin igp
- BGPで再配送の設定
(config-router)#ridistribute <ルーティングプロトコル | static | connected > route-map <ルートマップ名>
BGP同期(IOS12.2(8)以降ではデフォルトで無効)
(config-router)# synchronization
ルートリフレクタの設定(ルートリフレクタとなるルータのみに設定、ルートリフレクタクライアントには不要)
(config-router)#
(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
(config-router)# bgp confederation identifier
(config-router)# bgp confederation peers
サブAS内の内部ルータならこの設定は不要!
IEBGPネイバーの確立方法
- 通常のIPを使用(サブAS内部BGPスピーカとのネイバーの設定)
(config-router)# neighbor <同じサブAS内のIEBGPのネイバーのIPアドレス> remote-as <サブASの番号>
(config-router)# neighbor <同じサブAS内のIEBGPのネイバーのIPアドレス> ebgp-multihop <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>
ベストパス
LOCAL-PREFERENCE
(config)# route-map <ルートマップ名>
(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 <ルートマップ名>
(config-route-map)# match ip address <アクセスリストのシーケンスナンバー>
(config-route-map)# set metric <値>
(config-router)# neighbor <アドバタイズしたい他ASのBGPスピーカ>
異なるASからMEDが通知されてきた場合、比較する方法
通常は同じASからアドバタイズされてきたものを比較する
(config-router)# bgp always-compare-med
ルート情報のフィルタ
- 正規表現でベストパスの選択
(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
- アクセスコントロールリスト(ACL)
(config)# access-list <シーケンシャル番号>permit <フィルタ対象のネットワークドレス> <必要であれば反転マスク>
(config-router)# neighbor <ネイバーのアドレス> distribute-list <アクセスリストのシーケンシャル番号>
- ルートマップ
(config)# access-list <シーケンシャル番号> permit<フィルタ対象のネットワークドレス> <必要であれば反転マスク>
(config)# route-map <ルートマップ名><シーケンシャル番号>
(cofig-router)# neighbor <ネイバーのアドレス> route-map <ルートマップ名>
ルートマップなどのポリシーの変更または適用はネットワーク構成の変更とみなされないので、反映されるのに若干時間がかかる。(トリガードアップデートの対象外)
すぐに適用したければ以下のコマンド
# clear ip bgp <* | ネイバーのアドレス>
Inはルーティングテーブルの要求
Outはルーティングテーブルをアドバタイズ
ハードリセットはTCPコネクションをクリアする
ハードリセット
# clear ip bgp < * | ネイバーのIPアドレス >
ソフトリセット
# clear ip bgp < soft > < in | out >
(config)# access-list <シーケンスナンバー> permit <as-pathを追加したいネットワークアドレス> <必要であれば反転マスク>
(config)# route-map <ルートマップ名>
(config-route-map)# match ip address <アクセスリストのシーケンスナンバー>
(config-route-map)# set as-path prepend <as-pasthアトリビュートに加えたいAS番号>
経路集約
オプション指定しないと、集約前と集約後のルートをアドバタイズ
デフォルトでは集約前ルートのASパスアトリビュートは付加されない
(余談だが、EIGRPのip summaryコマンドで集約すると、集約前のメトリックの中から最小のもメトリックが適用される)
デフォルトで経路集約が無効
(config-router)# aggregate-address <ネットワークアドレス> <サブネットマスク> <summary-onlyなど>
集約しても集約したアドレスがルーティングテーブルになければ以下のコマンドでスタティックルートを追加
(config)# ip route <集約したいネットワークアドレス> <サブネット> null0
BGPの認証
(config-router)# neighbor
特定のBGPピアを管理的にシャットダウン
(config-router)# neighbor
ピアグループでネイバーの確立
共通の設定をまとめて行うことにより簡素化、ルータの負荷も軽減できる
Cisco独自の機能
1、ピアグループを定義
2、ネイバーに適用
(config-router)#
(config-router)# neighbor <ネイバーのipアドレス> peer-group <ピアグループネーム>