BESTPATH_WEIGHT

  • 2020.06.12
  • BGP
BESTPATH_WEIGHT

宛先経路が複数ある場合、以下のアルゴリズムに従ってベストパスが一つ選択され、ルーティングテーブルに登録されます。

優先度 アトリビュート
1 WEIGHT
2 LOCAL_PREF
3 自生成ルート
4 AS_PATH
5 ORIGIN
6 MED
7 IGP>EGP>incomplete

8以降も存在しますが一旦ここまで知っておけばBGPの経路制御で困ることはほぼほぼないかと思います。
WEIGHTアトリビュートはcisco独自のアトリビュートです。

今回はWEIGHTアトリビュートを紹介します。

WEIGHTアトリビュートはローカルエリアで影響するアトリビュートです。
WEIGHTがついている場合、最優先で比較されます。

ある宛先が複数経路存在するときどの経路を通っていくかを決めるのがこのWEIGHTアトリビュートです。
数値が”大きいほう”が優先されます。

SW1

interface Ethernet0/0
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 100
switchport mode trunk
duplex auto
!
interface Ethernet0/1
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 101
switchport mode trunk
duplex auto

interface Vlan100
ip address 10.1.1.1 255.255.255.0
!
interface Vlan101
ip address 20.1.1.1 255.255.255.0
!
router bgp 100
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 100
neighbor 20.1.1.2 remote-as 100
!

SW2

interface Ethernet0/0
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 100
switchport mode trunk
duplex auto

interface Ethernet1/0
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 102
switchport mode trunk
duplex auto

interface Vlan1
no ip address
shutdown
!
interface Vlan100
ip address 10.1.1.2 255.255.255.0
!
interface Vlan102
ip address 30.1.1.2 255.255.255.0
!
router bgp 100
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 next-hop-self
neighbor 30.1.1.1 remote-as 200
!

SW3
interface Ethernet0/1
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 101
switchport mode trunk
duplex auto

interface Ethernet1/1
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 103
switchport mode trunk
duplex auto

interface Vlan101
ip address 20.1.1.2 255.255.255.0
!
interface Vlan103
ip address 40.1.1.2 255.255.255.0
!
router bgp 100
bgp log-neighbor-changes
neighbor 20.1.1.1 remote-as 100
neighbor 20.1.1.1 next-hop-self
neighbor 40.1.1.1 remote-as 200

SW4
interface Loopback0
ip address 1.1.1.1 255.255.255.0

interface Ethernet1/0
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 102
switchport mode trunk
duplex auto
!
interface Ethernet1/1
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 103
switchport mode trunk
duplex auto

interface Vlan102
ip address 30.1.1.1 255.255.255.0
!
interface Vlan103
ip address 40.1.1.1 255.255.255.0
!
router bgp 200
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0
neighbor 30.1.1.2 remote-as 100
neighbor 40.1.1.2 remote-as 100
!

WEIGHTアトリビュートを変更するには2種類の方法があります。

①ネイバーのweightを変更する
②変更したいプレフィックスをroute-mapで指定してweightを変更する

現状、1.1.1.0/24はSW2をベストパスとしています。

Switch1#sh ip bgp
BGP table version is 6, local router ID is 20.1.1.1
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 foundNetwork          Next Hop            Metric LocPrf Weight Path
* i 1.1.1.0/24       20.1.1.2                 0    100      0 200 i
*>i                  10.1.1.2                 0    100      0 200 i

①の方法で変更してみます。

Switch1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch1(config)#router bgp 100
Switch1(config-router)#nei 20.1.1.2 weight 32768
Switch1#sh ip bgp
BGP table version is 7, local router ID is 20.1.1.1
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 foundNetwork          Next Hop            Metric LocPrf Weight Path
*>i 1.1.1.0/24       20.1.1.2                 0    100  32768 200 i
* i                  10.1.1.2                 0    100      0 200 i

SW3のネイバーに対してweightが反映されSW3をベストパスとしています。

次に②の方法で変更します。
SW1がSW2/SW3から経路を受信する際にweightアトリビュートを付与させます。

今回はプレフィックスリストを使用してルートマップに適用します。
SW3を経由するよう、SW3のweightを高くします。

Switch1(config)#route-map WEIGHT_SW2 permit 10
Switch1(config-route-map)#match ip address prefix-list WEIGHT
Switch1(config-route-map)#set weight 10000
Switch1(config-route-map)#route-map WEIGHT_SW3
Switch1(config-route-map)#match ip add prefix-list WEIGHT
Switch1(config-route-map)#set weight 32768
Switch1(config)#router bgp 100
Switch1(config-router)#nei 10.1.1.2 route-map WEIGHT_SW2 in
Switch1(config-router)#nei 20.1.1.2 route-map WEIGHT_SW3 in

show ip bgp よりSW3をベストパスとして選択していることが分かります。

Switch1#sh ip bgp
BGP table version is 10, local router ID is 20.1.1.1
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 foundNetwork          Next Hop            Metric LocPrf Weight Path
*>i 1.1.1.0/24       20.1.1.2                 0    100  32768 200 i
* i                  10.1.1.2                 0    100  10000 200 i

WEIGHTは最優先のアトリビュートなだけあって扱いやすいですが意図せずWEIGHTアトリビュートが付与され想定外の経路選択となる場合があります。

例えば、BGP内に再配送された経路は32768のWEIGHTが付きます。

試しにnullスタを書いて再配送してみると確かにWEIGHTが付与されていることが分かります。

 

Switch1(config)#ip route 1.1.1.0 255.255.255.0 null 0

Switch1(config)#router bgp 100
Switch1(config-router)#redistribute static
Switch1(config-router)#end
Switch1#sh ip bgp
BGP table version is 13, local router ID is 20.1.1.1
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
*>  1.1.1.0/24       0.0.0.0                  0         32768 ?

最後に、本当に最優先なの?を確認しておきます。
LOCAL_PREFも同様にローカルエリア内で影響のあるアトリビュートですがWEIGHTよりも優先度は低いです。
LOCAL_PREFは数値の大きい方をベストパスとして選択します。

今回はSW3をWEIGHTによりベストパスとしていますが、

SW2: LP500
SW3:LP200

としてLPがWEIGHTよりも優先されないことを確認します。

Switch1#conf t
Switch1(config)#route-map WEIGHT_SW2 permit 10
Switch1(config-route-map)#set local-preference 500
Switch1(config)#route-map WEIGHT_SW3 permit 10
Switch1(config-route-map)#set local-preference 200
Switch1#clear ip bgp * so
Switch1#sh ip bgp
BGP table version is 18, local router ID is 20.1.1.1
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 foundNetwork          Next Hop            Metric LocPrf Weight Path
* i 1.1.1.0/24       10.1.1.2                 0    500  10000 200 i
*>i                  20.1.1.2                 0    200  32768 200 i

このように、LPによらずWEIGHTが優先されて経路選択されていることが分かります。

BGPカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。
TOP