PR

【FortiGate】BGPでよく使うコマンド

FortiGate
スポンサーリンク

BGP関連でよく使うコマンドをご紹介します。

BGP関連のステータスを確認するにはCLIでのコマンド実行が必須となります。
GUIではネイバーが確立したログ情報やルーティングテーブルを確認するぐらいしか、
BGP関連のステータスなどを確認することができません。

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系)

FortiGate
スポンサーリンク
シェアする
NWWをフォローする
NWWブログ
タイトルとURLをコピーしました