【BGP】Weight属性 動作確認 Cisco

スポンサーリンク

Weight属性とは

 Weightは、シスコ独自のBGP属性で、特定のパスを選択するために使用します。 Weightは、ルータローカルでのみ使用され、他のBGPルータとは交換されません。 同じプレフィックスに対して、値が大きい方のルートを優先します。

スポンサーリンク

検証

構成

 R2とR3にループバックで同じプレフィックス23.23.23.23/32をR6にアドバタイズします。 ここで、R6にWeightを設定し、R3からのプレフィックス経路を優先してみます。

 まず、WEIGTHの設定をせず、eBGPの設定をします。

R2(config)#int loopback23
R2(config-if)#ip add 23.23.23.23 255.255.255.255
R2(config)#router bgp 23
R2(config-router)#network 23.23.23.23 mask 255.255.255.255
R2(config-router)#neighbor 192.168.26.6 remote-as 6
R3(config)#int loopback23
R3(config-if)#ip add 23.23.23.23 255.255.255.255
R3(config)#router bgp 23
R3(config-router)#network 23.23.23.23 mask 255.255.255.255
R3(config-router)#neighbor 192.168.36.6 remote-as 6
R6(config)#router bgp 6
R6(config-router)#neighbor 192.168.26.2 remote-as 23
R6(config-router)#neighbor 192.168.36.3 remote-as 23

 R6のBGPテーブルを見てみます。

R6#sh ip bgp
BGP table version is 2, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found


     Network          Next Hop            Metric LocPrf Weight Path
 *   23.23.23.23/32   192.168.36.3             0             0 23 i
 *>                   192.168.26.2             0             0 23 i

 R2とR3から23.23.23.23/32を学習し、R2からのルートをベストパスと認識しています。 23.23.23.23/32の情報をもう少し詳しくみていきます。

R6#sh ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (2 available, best #2, table default)
  Advertised to update-groups:
     2         
  23
    192.168.36.3 from 192.168.36.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, external
  23
    192.168.26.2 from 192.168.26.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, external, best

 すべてのBGP属性は同じであるため、最後にルータIDが比較され、小さい方をベストパスに選択します。

neighborへのWeight設定

 では、R3の方を優先するようにWeightを設定します。

R6(config)#router bgp 6
R6(config-router)#neighbor 192.168.36.3 weight 100

 デフォルト値は0です。R3からアドバタイズされたルートは、WIEGHTを100にします。 このままでは、設定が反映されないため、BGPプロセスをクリアします。

R6#clear ip bgp *
*Apr 27 14:44:27.595: %BGP-5-ADJCHANGE: neighbor 192.168.26.2 Down User reset
*Apr 27 14:44:27.595: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.26.2 IPv4 Unicast topology base removed from session  User reset
*Apr 27 14:44:27.607: %BGP-5-ADJCHANGE: neighbor 192.168.36.3 Down User reset
*Apr 27 14:44:27.611: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.36.3 IPv4 Unicast topology base removed from session  User reset
*Apr 27 14:44:28.583: %BGP-5-ADJCHANGE: neighbor 192.168.36.3 Up 
*Apr 27 14:44:28.583: %BGP-5-ADJCHANGE: neighbor 192.168.26.2 Up

 R6のBGPテーブルを確認します。

R6#sh ip bgp
BGP table version is 2, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found


     Network          Next Hop            Metric LocPrf Weight Path
 *   23.23.23.23/32   192.168.26.2             0             0 23 i
 *>                   192.168.36.3             0           100 23 i

 R3からのルートのWEIGHTが100となり、ベストパスとして認識しています。 以下の出力からもWEIGHTが変更され、ベストパスがR3に変更されていることが確認できます。

R6#sh ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (2 available, best #2, table default)
  Advertised to update-groups:
     3         
  23
    192.168.26.2 from 192.168.26.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, external
  23
    192.168.36.3 from 192.168.36.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, weight 100, valid, external, best

route-mapを使用したWeight設定

 今は、ネイバーに対して、Weightを設定しましたが、ネイバーに対して、特定のルートだけ、Weightを変更した場合もあります。この場合は、route-mapを設定します。 R2とR3に新たにループバック32.32.32.32/32を追加し、23.23.23.23/32と合わせて、R3を優先にします。

R2(config)#int lo 32
R2(config-if)#ip add 32.32.32.32 255.255.255.255
R2(config)#router bgp 23
R2(config-router)#network 32.32.32.32 mask 255.255.255.255
R3(config)#int lo32
R3(config-if)#ip add 32.32.32.32 255.255.255.255
R3(config)#router bgp 23
R3(config-router)#network 32.32.32.32 mask 255.255.255.255

 R6のBGPテーブルを見ると、両方のループバックがともにR3を優先しています。

R6#sh ip bgp
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found


     Network          Next Hop            Metric LocPrf Weight Path
 *   23.23.23.23/32   192.168.26.2             0             0 23 i
 *>                        192.168.36.3             0           100 23 i
 *>  32.32.32.32/32   192.168.36.3             0           100 23 i
 *                    192.168.26.2             0             0 23 I

 では、一旦、R6のWeightの設定を消します。

R6(config)#router bgp 6
R6(config-router)#no  neighbor 192.168.36.3 weight 100

 23.23.23.23をアクセスリスト1で設定し、それに該当するものは、Weightを100にします。
route-map SETWEIGHT permit 1000は、setコマンドが無く、アクセスリスト1以外のルートに関して、何もしないという設定です。

R6(config)#access-list 1 permit 23.23.23.23 0.0.0.0
!
R6(config)#route-map SETWEIGHT permit 10
R6(config-route-map)#match ip address 1
R6(config-route-map)#set weight 100
R6(config-route-map)#route-map SETWEIGHT permit 1000

 これをR3のネイバー設定に反映します。

R6(config)#router bgp 6
R6(config-router)#neighbor 192.168.36.3 route-map SETWEIGHT in

 BGPプロセスをクリア後、再度 R6のBGPテーブルを確認します。

R6#sh ip bgp         
BGP table version is 3, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found


     Network          Next Hop            Metric LocPrf Weight Path
 *>  23.23.23.23/32   192.168.36.3             0           100 23 i
 *                    192.168.26.2             0             0 23 i
 *   32.32.32.32/32   192.168.36.3             0             0 23 i
 *>                   192.168.26.2             0             0 23 i

 23.23.23.23/32のみWEIGHTが100となり、R3が優先ルートとなります。また、32.32.32.32/32はWeightがデフォルトの0で、R2が優先ルートとなります。

route-map SETWEIGHT permit 1000を忘れた場合

 route-map の設定で、route-map SETWEIGHT permit 1000を忘れた場合、R6のBGPテーブルはどのように見えるでしょうか。

R6(config)#no route-map SETWEIGHT permit 1000

 BGPプロセスをクリア後、再度 R6のBGPテーブルを確認します。

R6#sh ip bgp
BGP table version is 3, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found


     Network          Next Hop            Metric LocPrf Weight Path
 *   23.23.23.23/32   192.168.26.2             0             0 23 i
 *>                   192.168.36.3             0           100 23 i
 *>  32.32.32.32/32   192.168.26.2             0             0 23 I

 R3から32.32.32.32/32を学習しなくなりました。route-map の最後は暗黙のDenyが適用され、Denyに該当すると、そのルートはフィルタされます。

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント