【BGP】BGPの状態
BGPには隣接関係の確立までに6つの状態があります。
Idle
初期状態。TCP接続を開始するとConnect状態になる。
Connect
TCP接続の開始から終了までの状態。OPENメッセージを送るとOpen Sent状態になる。
Active
Connect状態でTCP接続を失敗した場合、リトライして完了までの状態。
OPENメッセージを送るとOpen Sent状態になる。
Open Sent
ピアからのOPENメッセージを待っている状態。メッセージを受け取りKeepAliveを送ると
Open Confirm状態になる。
Open Confirm
ピアからのKeepAliveを待ってる状態。ピアからKeepAliveを受け取るとEstablishedになる。
Established
BGPピアが確立した状態。
*BGPピアが確立するとベストパスのみをBGPネイバーにアドバタイズする。
【BGP】BGPの基本設定
1.bgpのプロセスを稼働
2.ネイバーの登録
3.BGPテーブルにルート情報を登録する。
(Config)#router bgp 3000
(Confi-router)#neighbor 10.1.1.2 remote-as 4000
(Config)#router bgp 4000
(Confi-router)#neighbor 10.1.1.1 remote-as 3000
(Confi-router)#network 10.3.1.0 mask 255.255.255.0
BGPでのnetworkコマンドはBGPテーブルにルート情報を登録する意味。
指定するnetworkコマンドは「ルーティングテーブル内のエントリと完全に一致」していること。
この場合10.3.1.0のネットワークはBGPで配布されているため左のルータで確認できる。
--
Router#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
B 10.3.1.0 [20/0] via 10.1.1.2, 00:57:47
C 10.2.1.0 is directly connected, Loopback0
C 10.1.1.0 is directly connected, FastEthernet1
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
B 10.3.1.0 [20/0] via 10.1.1.2, 00:57:47
C 10.2.1.0 is directly connected, Loopback0
C 10.1.1.0 is directly connected, FastEthernet1
--
【管理】ボーレートの設定
戻す時に文字化けするトラブルにあってしまったため残してきます。
bootのモードに入って下記コマンドでスイッチのボーレートを上げxmodemでIOSをコピーしました。
switch: set BAUD 115200
・コピー終了後、戻しのため下記コマンドで戻して起動させる。
switch: set BAUD 9600
switch: reset
ターミナルのボーレートも9600に合わすと起動ログが文字化けせず正常に表示されていたが。。。。
起動が終わったころに文字化けし出しました。
理由を探っていくとどうやらボーレート115200の時にwriteしており、
startup-configの方にもボーレートの設定が記録されるようで
コンフィグが読み込まれたタイミングでボーレートが115200となり、文字化けしたらしい。
一旦ターミナルのボーレートも115200に合わせてみてみると
下記の様なコンフィグが残っていました。
!
line con 0
speed 115200
・Configのボーレートをデフォルト9600に戻す
(Config-line)#speed 9600
*デフォルト値の場合show running-configでは表示されない。
ターミナルも9600に合わせて完了。
【BGP】ネイバー関係の構築においての注意
BGPはネイバー関係を構築する際に下記のコマンドを設定します。
neighbor [ネイバーアドレス] remote-as [AS番号]
但し、ピアの確立のためには条件があります。メッセージの送信元/先のアドレスが下記の通り。
送信元アドレス・・出力インタフェースのIPアドレス
この場合RAがRBからBGPパケットを受け取る場合、送信元のアドレスが10.1.1.2である必要がある。
これが満たされない場合パケットは無視されます。
・ループバックインタフェースをBGPネイバーのに指定したい場合どうするのか。
その場合の課題として3点あります
1.経路がなくなる。直接接続でない場合はloopbackまでの経路がないためBGPパケットが届きません。
対応:Staticルートなどを記述して経路を作成する。
2.BGPパケットの送信元アドレスがneighborコマンドのアドレスと不一致になる。ためピアが張れない。
対応:Update-sourceコマンドでBGPパケットの送信元アドレスを変更する。
3.eBGPのデフォルトTTLが1のため途中で破棄されて届かない。
対応:TTLを変更する。ebgp-multihopコマンドを使う。
【BGP】基本設定
1.bgpのプロセスを稼働
2.ネイバーの登録
3.BGPテーブルにルート情報を登録する。
(Config)#router bgp 3000
(Confi-router)#neighbor 10.1.1.2 remote-as 4000
(Config)#router bgp 4000
(Confi-router)#neighbor 10.1.1.1 remote-as 3000
(Confi-router)#network 10.3.1.0 mask 255.255.255.0
BGPでのnetworkコマンドはBGPテーブルにルート情報を登録する意味。
指定するnetworkコマンドは「ルーティングテーブル内のエントリと完全に一致」していること。
この場合10.3.1.0のネットワークはBGPで配布されているため左のルータで確認できる。
--
Router#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
B 10.3.1.0 [20/0] via 10.1.1.2, 00:57:47
C 10.2.1.0 is directly connected, Loopback0
C 10.1.1.0 is directly connected, FastEthernet1
--
【BGP】最適パスの選択
BGPの最適パスの選択にはパスアトリビュートが使われます。
Cisco独自アトリビュートのWeightを含めて選択アルゴリズムを解説します。
優先度の高い順に
- 「Weight」ローカルルータのみで有効。値が大きい方が優先。
- 「Local_Preference」内部ASの出口を示す。大きい値が優先。
- ローカルルート。自身で生成したルートが優先される。
- 「AS_PATH」通過するAS番号を示す。最短のルートが優先。
- 「ORIGIN」ルートの生成元を示す。IGP,EGP,IMCOMLETEの順で優先。
- 「MED」外部ASへの入り口を示す。値の小さい方が優先。
- ネイバータイプ。eBGP,iBGPの順で優先。
- IGPメトリック。値の小さい方が優先。
・アトリビュートを確認
#Show ip bgp
表記の見方
* ・・・Next Hopに到達可能
> ・・・最適経路
Network ・・・宛先ネットワーク
Next Hop ・・・Next Hopアトリビュート
Metric ・・・MEDアトリビュート
LocPrf ・・・Local_Preferenceアトリビュート
Weight ・・・Weightアトリビュート
Path ・・・AS_Pathアトリビュート
I,? ・・・Originアトリビュート
【BGP】Well-Known mandatory
Well-Known mandatory(既知必須)のパスアトリビュートについて
Origin
経路情報の生成もとを示す属性です。iBGP eBGP incompleteの3種類。
これによって経路の優先順位が決まります。
優先順位の高い順にiBGP - > eBGP -> incompleteとなります。
確認コマンド
#show ip bgp
iBGPは「i」と表記されるBGP内部で生成されたことを示す
eBGPは「e」と表記される
それ以外は「?」と表記される。再配布など。
Originの値はルートマップによって書き換えができます。
(config)# route-map Origin
(config-route-map)# set origin [ egp | igp | incomplete ]
(config-route-map)# set origin [ egp | igp | incomplete ]
AS_Path
BGPのAS_PathはアトリビュートWell-Known mandatoryの一つ
送られてきた経路情報のAS_Pathに自身のASがあればループと判断して受け取らないことで。ループを防ぎます。
そのため
eBGPピアに経路情報を送る場合はAS_Pathに自身のASを「追加」。
iBGPピアに経路情報を送る場合はAS_Pathに自身のASを「追加しない」。