BGP関連でよく使うコマンドをご紹介します。
BGP関連のステータスを確認するにはCLIでのコマンド実行が必須となります。
GUIではネイバーが確立したログ情報やルーティングテーブルを確認するぐらいしか、
BGP関連のステータスなどを確認することができません。
BGP基本設定編
- 構成図
- get router info routing-table all:ルーティングテーブルの確認
- get router info bgp summary:簡潔にネイバー情報を確認
- get router info bgp network:BGPの経路情報を確認
- get router info bgp network 192.168.2.0/24
- get router info bgp neighbors:ネイバーの情報を確認
- get router info bgp neighbors 10.0.0.2:個別ネイバーの情報を確認
- get router info bgp neighbors 10.0.0.2 advertised-routes:ネイバーへ広報している経路を確認
- get router info bgp neighbors 10.0.0.2 recieved-route:ネイバーから受信している経路を確認
- execute router clear bgp all:BGPハードクリア
- execute router clear bgp ip 10.0.0.2:ネイバーを指定してBGPハードクリア
- execute router clear bgp ip 10.0.0.2 soft:BGPソフトクリア
- 最後に
構成図
基本設定編で使用した構成図をもとに、BGPに関するコマンドをご紹介していきます。
get router info routing-table all:ルーティングテーブルの確認
『get router info routing-table all』で、
ルーティングテーブルを確認することにより、
BGPで経路を学習しているか確認することができます。
FortiGate_A # get router info routing-table all Routing table for VRF=0 Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP 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, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default S* 0.0.0.0/0 [5/0] via 192.168.11.1, port4 C 10.0.0.0/30 is directly connected, port1 C 192.168.1.0/24 is directly connected, port2 B 192.168.2.0/24 [20/0] via 10.0.0.2, port1, 00:02:53 C 192.168.11.0/24 is directly connected, port4
各経路情報の一番左のアルファベットが、
ルーティングプロトコルを表示しています。
『B』がBGPで学習している経路です。
get router info bgp summary:簡潔にネイバー情報を確認
『get router info bgp summary』で、
ネイバーが確立しているかを確認することができます。
FortiGate_A # get router info bgp summary BGP router identifier 10.0.0.1, local AS number 100 BGP table version is 2 2 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.0.2 4 200 11 11 1 0 0 00:07:12 1 Total number of neighbors 1
確認方法としては、
一番右の『State/PfxRcd』の欄が受信している経路数になりますので、
こちらのカウンタが上がっていることでネイバーが確立できているとわかります。
現在は『1』となっていますので、
10.0.0.2とネイバー確立していて、1経路受信しているということが分かります。
設定などが間違っていて、ネイバーが確立できない場合は、
『idle』や『Active』のようなBGPの遷移ステータスが表示されます。
ネイバーが確立するまでには数秒程度かかりますので、
確認が早すぎても『Active』などが表示される場合があります。
FortiGate_A # get router info bgp summary BGP router identifier 10.0.0.1, local AS number 100 BGP table version is 2 1 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.0.2 4 200 21 31 0 0 0 00:00:01 Idle Total number of neighbors 1 FortiGate_A # get router info bgp summary BGP router identifier 10.0.0.1, local AS number 100 BGP table version is 2 1 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.0.2 4 200 20 29 0 0 0 00:00:03 Active Total number of neighbors 1
get router info bgp network:BGPの経路情報を確認
『get router info bgp network』でBGPの経路情報を確認することができます。
どのようなBGPパスアトリビュートが付与されているかや、
ベストパス以外に経路を受信しているかなどを確認することができます。
FortiGate_A # get router info bgp network BGP table version is 3, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight RouteTag Path *> 192.168.1.0 0.0.0.0 100 32768 0 i <-/1> *> 192.168.2.0 10.0.0.2 0 0 0 200 i <-/1> Total number of prefixes 2
『192.168.1.0』の経路はNextHopが0.0.0.0になっており、
Pathがi(同一AS)となっていますので、
自分自身が広報している経路だということがわかります。
『192.168.2.0』はNextHopが10.0.0.2で、
Pathが200 iとなっていることから、
AS200から受信した経路でそのネクストホップが10.0.0.2ということで、
外部から受信した経路だということがわかります。
一番左に『*>』がついている経路がベストパスとなります。
ベストパスでない経路は『>』とアスタリスクが付きません。
インターネット回線2本でそれぞれBGPを使用するマルチホーム構成で使用する場合など、
同じ経路を複数受信する際に経路の優先順位なども確認することができます。
ステータスに『Weight』とありますが、
Cisco独自のBGPパスアトリビュートである『Weight』を、
FortiGateでも使用することができます。
get router info bgp network 192.168.2.0/24
『get router info bgp network』の後ろに、
『get router info bgp network 192.168.2.0/24』のように、
確認したい経路を指定することで、
経路の情報を個別に確認することができます。
FortiGate_A # get router info bgp network 192.168.2.0 BGP routing table entry for 192.168.2.0/24 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 200 10.0.0.2 from 10.0.0.2 (10.0.0.2) Origin IGP metric 0, localpref 100, valid, external, best Last update: Wed Jan 13 14:29:02 2021
『get router info bgp network』の方がBGPパスアトリビュートの比較がしやすいのですが、
『Last update』(学習した時間)が表示されるので、
特定経路宛に通信できない状態などになっているときに使用すると良いかと思います。
get router info bgp neighbors:ネイバーの情報を確認
『get router info bgp neighbors』でネイバーの情報を確認することができます。
FortiGate_A # get router info bgp neighbors BGP neighbor is 10.0.0.2, remote AS 200, local AS 100, external link BGP version 4, remote router ID 10.0.0.2 BGP state = Established, up for 00:23:12 Last read 00:00:15, hold time is 180, keepalive interval is 60 seconds Configured hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received (old and new) Address family IPv4 Unicast: advertised and received Address family IPv6 Unicast: advertised and received Received 181 messages, 1 notifications, 0 in queue Sent 252 messages, 138 notifications, 0 in queue Route refresh request: received 0, sent 0 Minimum time between advertisement runs is 30 seconds For address family: IPv4 Unicast BGP table version 3, neighbor version 2 Index 1, Offset 0, Mask 0x2 Community attribute sent to this neighbor (both) 1 accepted prefixes, 1 prefixes in rib 1 announced prefixes For address family: IPv6 Unicast BGP table version 1, neighbor version 1 Index 1, Offset 0, Mask 0x2 Community attribute sent to this neighbor (both) 0 accepted prefixes, 0 prefixes in rib 0 announced prefixes Connections established 2; dropped 1 Local host: 10.0.0.1, Local port: 179 Foreign host: 10.0.0.2, Foreign port: 11861 Nexthop: 10.0.0.1 Nexthop global: :: Nexthop local: :: BGP connection: non shared network Last Reset: 00:23:22, due to BGP Notification sent Notification Error Message: (OPEN Message Error/Bad Peer AS.)
『get router info bgp summary』よりも詳細な情報を確認することができます。
詳細すぎるので、逆に確認しずらくなるかもしれませんが、
4行目の『BGP state = Established』とEstablishedになっていることで、
BGPネイバーが確立できているということが分かります。
5行目、6行目のKeepalive、Holdtimeなどのタイマー値が、
設定した値になっているかもよく確認する点かと思います。
get router info bgp neighbors 10.0.0.2:個別ネイバーの情報を確認
複数のネイバーがある場合、
『get router info bgp neighbors』ではすべてのネイバーが表示されてしまいます。
『get router info bgp neighbors 10.0.0.2』のように、
ネイバーのIPアドレスを指定して実行することで、
特定のネイバーだけの情報を表示させることができます。
FortiGate_A # get router info bgp neighbors 10.0.0.2 BGP neighbor is 10.0.0.2, remote AS 200, local AS 100, external link BGP version 4, remote router ID 10.0.0.2 BGP state = Established, up for 00:32:02 Last read 00:00:35, hold time is 180, keepalive interval is 60 seconds Configured hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received (old and new) Address family IPv4 Unicast: advertised and received Address family IPv6 Unicast: advertised and received Received 191 messages, 1 notifications, 0 in queue Sent 262 messages, 138 notifications, 0 in queue Route refresh request: received 0, sent 0 Minimum time between advertisement runs is 30 seconds For address family: IPv4 Unicast BGP table version 3, neighbor version 2 Index 1, Offset 0, Mask 0x2 Community attribute sent to this neighbor (both) 1 accepted prefixes, 1 prefixes in rib 1 announced prefixes For address family: IPv6 Unicast BGP table version 1, neighbor version 1 Index 1, Offset 0, Mask 0x2 Community attribute sent to this neighbor (both) 0 accepted prefixes, 0 prefixes in rib 0 announced prefixes Connections established 2; dropped 1 Local host: 10.0.0.1, Local port: 179 Foreign host: 10.0.0.2, Foreign port: 11861 Nexthop: 10.0.0.1 Nexthop global: :: Nexthop local: :: BGP connection: non shared network Last Reset: 00:32:12, due to BGP Notification sent Notification Error Message: (OPEN Message Error/Bad Peer AS.)
表示される内容は『get router info bgp neighbors』と全く同じです。
get router info bgp neighbors 10.0.0.2 advertised-routes:ネイバーへ広報している経路を確認
『get router info bgp neighbors 10.0.0.2 advertised-routes』を実行することで、
指定したネイバーへ広報している経路を確認することができます。
FortiGate_A # get router info bgp neighbors 10.0.0.2 advertised-routes BGP table version is 3, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight RouteTag Path *> 192.168.1.0 10.0.0.1 100 32768 0 i <-/-> Total number of prefixes 1
ネイバーが確立しているにも関わらず、
対向のネイバーでこちらの経路を学習できていないときなどに、
こちらからは経路を広報しているかという確認で使用することが多いです。
こちらからは経路が広報されている場合は、
道中の経路や対向の設定で学習できていないということが切り分けできます。
get router info bgp neighbors 10.0.0.2 recieved-route:ネイバーから受信している経路を確認
『get router info bgp neighbors 10.0.0.2 received-routes』を実行することで、
指定したネイバーから受信している経路情報を確認することができます。
FortiGate_A # get router info bgp neighbors 10.0.0.2 received-routes BGP table version is 3, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight RouteTag Path *> 192.168.2.0 10.0.0.2 0 0 200 i <-/-> Total number of prefixes 1
Route-mapなどで受信する経路を制御している場合、
表示される経路はRoute-map適用前の経路情報となります。
Route-map適用後の経路情報は、
『get router info bgp network』で確認することができますので、
合わせて確認することで、
Route-mapによる経路制御が正しく動作していることを確認することができます。
注意事項:追加設定が必要
本コマンドを実行するためには追加設定が必要となります。
『config router bgp』→『config neighbor』→ネイバーを指定して、
『set soft-reconfiguration enable』を入力します。
config neighbor edit "10.0.0.2" set soft-reconfiguration enable set remote-as 200 next end
追加設定をせずにコマンドを実行すると下記のようなエラー表示となり、
正しい実行結果を得ることができません。
FortiGate_A # get router info bgp neighbors 10.0.0.2 received-routes % Inbound soft reconfiguration not enabled
通常BGPテーブル(get router info bgp networkで確認できるもの)は1つなのですが、
こちらの設定を使用することで、
Route-map適用前の受信経路に対するBGPテーブルが作成されます。
このテーブル保持するために、使用されるメモリ数が増大してしまいます。
インターネット上のフルルートを学習している場合など、
数万経路を受信する場合は例外として、
MPLSのネットワーク内に流れている数百経路~数千経路程度であれば、
気にせず有効にして良いかと思います。
execute router clear bgp all:BGPハードクリア
『execute router clear bgp all』でBGPのハードクリアを実行することができます。
FortiGate_A # execute router clear bgp all
実行しても何もレスポンスはありません。
ログを確認するか『get router info bgp summary』でなどで、
BGPのネイバーが確立している時間がリセットされていることを確認することで、
正しくBGPのハードクリアを行うことができたことが確認できるかと思います。
BGPのハードクリアを行うタイミングとしては、
networkコマンドを追加した場合などネットワーク構成に関する変更を行った際は、
『end』で抜けた場合など設定を反映した時点で経路広報が行われますが、
Route-mapを適用した場合などネットワーク構成に関わらない変更を行った場合は、
そのままでは設定が反映されず、反映するにはBGPのクリアを実施する必要があります。
ハードクリアをすることで、ネイバーが切断されて再確立し、
このタイミングで適用したRoute-mapなどが反映されます。
BGPのネイバーが一度切れ、その後経路を学習してという流れになりますので、
その際に通信断が発生する可能性があります。
こちらのコマンドを商用環境などで利用する場合は、実行タイミングに要注意です。
設定や構成などを確認して絶対に間違っていないし、ミスもない。
けれどもBGPが確立しないなどの場合に、
困ったときの再起動のようにおまじない的に使用することもあります。
大抵はなにかミスがありますので、設定などもう一度見直してみましょう。
execute router clear bgp ip 10.0.0.2:ネイバーを指定してBGPハードクリア
『execute router clear bgp ip 10.0.0.2』と、
『ip 10.0.0.2』とネイバーを指定することで、
指定したネイバーのみハードクリアを実行することができます。
FortiGate_A # execute router clear bgp ip 10.0.0.2
複数ネイバーがある状態で先程のハードクリアを実行すると、
すべてのネイバーが切断されて再確立します。
特定のネイバーのみクリアを行いたい場合は、
ネイバーを指定してハードクリアを行うようにしましょう。
execute router clear bgp ip 10.0.0.2 soft:BGPソフトクリア
『execute router clear bgp ip 10.0.0.2 soft』で、
BGPのソフトクリアすることも可能です。
FortiGate_A # execute router clear bgp ip 10.0.0.2 soft
こちらのコマンドもBGPの設定で、
『set soft-reconfiguration enable』が必要となります。
ソフトクリアはBGPネイバーを確立した状態で経路情報の更新を行います。
新たに作成したRoute-mapを適用したいときなどに使用します。
ネイバーの切断はありませんが、瞬断の可能性はありますので、
商用環境では実行のタイミングに要注意です。
最後に
BGPに関連するコマンドについてご紹介しました。
BGPに関連するコマンドはご紹介した以外にもたくさんありますが、
これらのコマンドを抑えておけば、
MPLSサービスでBGPを使用する場合などは問題ないかと思います。
BGP以外の設定・コマンドについてはこちら
おすすめ書籍(FortiOS5.2系)
おすすめ書籍(FortiOS6.0系)