↓ メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. BGP記事一覧/

BGP WEIGHT属性

目次

WEIGHTとは

WEIGHTは、そのルータ1台の中だけで経路の優先度を決めるシスコ独自のパラメータです。RFCで定義されたパス属性ではなく、UPDATEに載る場所が無いので隣のルータには伝わりません(BGPパス属性とベストパス選択)。

項目内容
Type codeなし(BGPのパス属性ではない)
分類シスコ独自のローカル値
値16ビットの符号なし整数(0〜65535)。大きいほうが優先
既定値受信した経路は0、自分で生成した経路は32768
伝わる範囲そのルータの中だけ。広告には載らない
定義Understand the Importance of BGP Weight Path Attribute(シスコ)

大きいほうが優先で、LOCAL_PREFと同じ向きです。IOS XRのshow bgpではWeight列に出ます。

広告には載らない

iBGPピアにもeBGPピアにも伝わらないので、WEIGHTは「このルータから出ていくトラフィックの向きを、このルータだけで変えたい」場面の道具です。AS全体で出口をそろえるならLOCAL_PREFを使います。

既定値は0、自分で生成した経路は32768

経路既定のWEIGHT
BGPピアから受信した経路0
自分で生成した経路(network文、redistribute、集約)32768

同じプレフィックスを自分でも生成しピアからも受け取っている場合、何もしなければ自分で生成したほうが勝ちます。 ベストパス選択の3番目にも「自分で生成した経路」がありますが、1番目のWEIGHTで先に決まります。

ベストパス選択での位置づけ

WEIGHTはベストパス選択の1番目です。

順位条件
1WEIGHTが大きい
2LOCAL_PREFが大きい
3自分で生成した経路
4AS_PATHが短い
5ORIGINが小さい(IGP < EGP < incomplete)
6MEDが小さい
7eBGP > iBGP
……

WEIGHTに差を付けた時点で、下の条件は一切見られません。 効きすぎるので、対象プレフィックスを絞るなどの注意が要ります。

LOCAL_PREFとの使い分け

WEIGHTとLOCAL_PREFはどちらも大きいほうが優先で出口を決めますが、効く範囲が違います。

項目WEIGHTLOCAL_PREF
BGPのパス属性かいいえ(シスコ独自)はい(well-known discretionary、Type 5)
広告に載るか載らないiBGPピアへは載る(eBGPピアへは載らない)
効く範囲設定したルータ1台AS全体
ベストパス選択の順位1番目2番目
既定値0 / 自局生成は32768100

WEIGHTはAS内の他のルータに伝わらないため、AS内でベストパスの判断が食い違い、経路がループする形になりうる点に注意が要ります。

設定方法

IOS XRでは2つの入れ方があります。ネイバー単位で入れるとshow bgp neighborにDefault weight 200と出ます。

ネイバー単位(そのピアから受け取る経路すべてに同じ値)

router bgp 65001
 neighbor 10.1.4.4
  address-family ipv4 unicast
   weight 200

ルートポリシー(プレフィックスを絞って値を変える)

route-policy SET-WEIGHT
  if destination in (192.168.5.0/24) then
    set weight 200
  endif
  pass
end-policy
!
router bgp 65001
 neighbor 10.1.4.4
  address-family ipv4 unicast
   route-policy SET-WEIGHT in

実機での検証

XRd 26.1.1を6台使い、8つのSTEPで確認します。

WEIGHT検証ラボのトポロジ。AS 65001のR1・R2がAS 65002のR4とeBGPで接続し、R4はAS 65003のR5とも接続する。R5はAS 65004のR6と、R6はR1とも接続する。R1は192.168.5.0/24をR4経由・R6経由・R2経由の3経路で学習する
ASルータ役割
65001R1・R2AS境界。R3とiBGPフルメッシュ(Loopback0、next-hop-self)+OSPF area 0
65001R3AS内部。eBGPピアを持たない
65002R4R1・R2・R5とeBGP
65003R5R4・R6とeBGP。192.168.5.0/24を広告
65004R6R5・R1とeBGP。192.168.6.0/24を広告

STEP 0〜3の観測対象はR1から見た 192.168.5.0/24 で、3方向からAS_PATH長2で届きます。

  • R4から(65002 65003)
  • R6から(65004 65003)
  • R2からiBGPで(65002 65003)

STEP 4〜7は192.168.6.0/24に切り替え、R6が広告するプレフィックスをR1自身にも生成させて32768の効き方を見ます。

STEP操作見たいこと
0ポリシーなし全パスがWeight 0。自局生成の192.168.1.0/24だけ32768
1R1のR4向けにweight 200R1のベストがR4経由へ。R3は変わらない(ルータローカル)
2R1のR6向け入方向にLOCAL_PREF 200LOCAL_PREFで優遇してもWEIGHTが勝つ
3weight 200を撤去ここで初めてLOCAL_PREFが効く
4R1に192.168.6.0/24のstatic+networkを追加自局生成の32768が受信経路に勝つ
5networkにset weight 0を付けるWEIGHTを下げても自局生成が勝ったまま
6R1のR6向けにweight 40000R6経由が勝ち、自局経路が「浮いた」状態になる
7R6のLoopback1をshutdown(最終状態)自局経路が浮上してベストに戻る

STEP 0:初期状態

R1のBGPテーブルのWeight列を見ます。

R1:show bgp(STEP 0)
Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0/24     0.0.0.0                  0         32768 i
*>i192.168.2.0/24     10.0.0.2                 0    100      0 i
*>i192.168.3.0/24     10.0.0.3                 0    100      0 i
* i192.168.4.0/24     10.0.0.2                 0    100      0 65002 i
*>                    10.1.4.4                 0             0 65002 i
*                     10.1.6.6                               0 65004 65003 65002 i
* i192.168.5.0/24     10.0.0.2                      100      0 65002 65003 i
*                     10.1.4.4                               0 65002 65003 i
*>                    10.1.6.6                               0 65004 65003 i
*> 192.168.6.0/24     10.1.6.6                 0             0 65004 i

Processed 6 prefixes, 10 paths

自分で広告している192.168.1.0/24だけが32768で、受け取った経路はすべて0です。192.168.5.0/24は3パスのうちR6経由がベストですが、これは下位の条件によるものです。

STEP 1:R1のR4向けに weight 200 を入れる

R4(10.1.4.4)から受け取る経路にWEIGHT 200を付けます。

router bgp 65001
 neighbor 10.1.4.4
  address-family ipv4 unicast
   weight 200
R1:show bgp(STEP 1)
Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0/24     0.0.0.0                  0         32768 i
*>i192.168.2.0/24     10.0.0.2                 0    100      0 i
*>i192.168.3.0/24     10.0.0.3                 0    100      0 i
* i192.168.4.0/24     10.0.0.2                 0    100      0 65002 i
*>                    10.1.4.4                 0           200 65002 i
*                     10.1.6.6                               0 65004 65003 65002 i
* i192.168.5.0/24     10.0.0.2                      100      0 65002 65003 i
*>                    10.1.4.4                             200 65002 65003 i
*                     10.1.6.6                               0 65004 65003 i
*> 192.168.6.0/24     10.1.6.6                 0             0 65004 i

Processed 6 prefixes, 10 paths

R4からの2経路が200になり、192.168.5.0/24のベストがR4経由に移りました。AS_PATH長もLOCAL_PREFも変えていません。 routes(入方向ポリシー適用後)とreceived routes(適用前)を並べると、受信時に付く値であることが分かります。

R1:show bgp neighbors 10.1.4.4 routes(適用後)
Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
*> 192.168.4.0/24     10.1.4.4                 0           200 65002 i
*> 192.168.5.0/24     10.1.4.4                             200 65002 65003 i

Processed 2 prefixes, 2 paths
R1:show bgp neighbors 10.1.4.4 received routes(適用前)
Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
*  192.168.4.0/24     10.1.4.4                 0             0 65002 i
*  192.168.5.0/24     10.1.4.4                               0 65002 65003 i

Processed 2 prefixes, 2 paths

R3から見ると何も変わっていない

同じAS内のR3のBGPテーブルです。

R3:show bgp(STEP 1)
Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
*>i192.168.1.0/24     10.0.0.1                 0    100      0 i
*>i192.168.2.0/24     10.0.0.2                 0    100      0 i
*> 192.168.3.0/24     0.0.0.0                  0         32768 i
*>i192.168.4.0/24     10.0.0.1                 0    100      0 65002 i
* i                   10.0.0.2                 0    100      0 65002 i
*>i192.168.5.0/24     10.0.0.1                      100      0 65002 65003 i
* i                   10.0.0.2                      100      0 65002 65003 i
*>i192.168.6.0/24     10.0.0.1                 0    100      0 65004 i

Processed 6 prefixes, 8 paths

R3の192.168.5.0/24は0のままで、R1の200は伝わっていません。

UPDATEにWEIGHTは載っていない

ベストがR4経由に変わったことでR1がR3へ再広告したUPDATEが、R1-R3間キャプチャーのNo.111です。

No.111 R1 → R3(iBGP)tshark -V
Border Gateway Protocol - UPDATE Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 64
    Type: UPDATE Message (2)
    Withdrawn Routes Length: 0
    Total Path Attribute Length: 41
    Path attributes
        Path Attribute - MP_REACH_NLRI
            Flags: 0x90, Optional, Extended-Length, Non-transitive, Complete
<snip>
            Type Code: MP_REACH_NLRI (14)
            Length: 13
            Address family identifier (AFI): IPv4 (1)
            Subsequent address family identifier (SAFI): Unicast (1)
            Next hop: 10.0.0.1
                IPv4 Address: 10.0.0.1
            Number of Subnetwork points of attachment (SNPA): 0
            Network Layer Reachability Information (NLRI)
                192.168.5.0/24
                    MP Reach NLRI prefix length: 24
                    MP Reach NLRI IPv4 prefix: 192.168.5.0
        Path Attribute - ORIGIN: IGP
            Flags: 0x40, Transitive, Well-known, Complete
<snip>
            Type Code: ORIGIN (1)
            Length: 1
            Origin: IGP (0)
        Path Attribute - AS_PATH: 65002 65003 
            Flags: 0x40, Transitive, Well-known, Complete
<snip>
            Type Code: AS_PATH (2)
            Length: 10
            AS Path segment: 65002 65003
                Segment type: AS_SEQUENCE (2)
                Segment length (number of ASN): 2
                AS4: 65002
                AS4: 65003
        Path Attribute - LOCAL_PREF: 100
            Flags: 0x40, Transitive, Well-known, Complete
<snip>
            Type Code: LOCAL_PREF (5)
            Length: 4
            Local preference: 100

属性はMP_REACH_NLRI・ORIGIN・AS_PATH・LOCAL_PREFの4つだけで、WEIGHTに相当するものはありません。

上のtshark出力のパケット(No.111 UPDATE)のpcapをダウンロード

STEP 2:LOCAL_PREF 200 を入れてもWEIGHTが勝つ

R6(10.1.6.6)から受け取る192.168.5.0/24にLOCAL_PREF 200を付けます。

route-policy LP-200
  if destination in (192.168.5.0/24) then
    set local-preference 200
  endif
  pass
end-policy
!
router bgp 65001
 neighbor 10.1.6.6
  address-family ipv4 unicast
   route-policy LP-200 in
R1:show bgp 192.168.5.0/24(STEP 2)
RP/0/RP0/CPU0:R1#show bgp 192.168.5.0/24

Tue Sep  8 10:24:35.554 UTC
BGP routing table entry for 192.168.5.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 11           11
Last Modified: Sep  8 10:24:08.774 for 00:00:26
Paths: (5 available, best #2)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Not advertised to any peer
  65002 65003, (received & used)
    10.0.0.2 (metric 3) from 10.0.0.2 (10.0.0.2)
      Origin IGP, localpref 100, valid, internal
      Received Path ID 0, Local Path ID 0, version 0
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  65002 65003
    10.1.4.4 from 10.1.4.4 (10.0.0.4)
      Origin IGP, localpref 100, weight 200, valid, external, best, group-best
      Received Path ID 0, Local Path ID 1, version 10
      Origin-AS validity: (disabled)
  Path #3: Received by speaker 0
  Not advertised to any peer
  65002 65003, (received-only)
    10.1.4.4 from 10.1.4.4 (10.0.0.4)
      Origin IGP, localpref 100, valid, external
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)
  Path #4: Received by speaker 0
  Not advertised to any peer
  65004 65003
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, localpref 200, valid, external, group-best
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)
  Path #5: Received by speaker 0
  Not advertised to any peer
  65004 65003, (received-only)
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, localpref 100, valid, external
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)

Path #4(R6経由)がlocalpref 200、Path #2(R4経由)がlocalpref 100, weight 200で、ベストはPath #2のままです。1番目で決着しているため2番目は見られません。(received-only)のPath #3・#5は入方向ポリシー適用前のコピーで、選択の対象ではありません。

STEP 3:WEIGHTを外すとLOCAL_PREFが効く

weight 200だけを撤去します。

router bgp 65001
 neighbor 10.1.4.4
  address-family ipv4 unicast
   no weight 200
R1:show bgp 192.168.5.0/24(STEP 3)
RP/0/RP0/CPU0:R1#show bgp 192.168.5.0/24

Tue Sep  8 10:28:08.555 UTC
BGP routing table entry for 192.168.5.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 13           13
Last Modified: Sep  8 10:27:04.774 for 00:01:03
Paths: (3 available, best #2)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Not advertised to any peer
  65002 65003, (received & used)
    10.1.4.4 from 10.1.4.4 (10.0.0.4)
      Origin IGP, localpref 100, valid, external, group-best
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  65004 65003
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, localpref 200, valid, external, best, group-best
      Received Path ID 0, Local Path ID 1, version 13
      Origin-AS validity: (disabled)
  Path #3: Received by speaker 0
  Not advertised to any peer
  65004 65003, (received-only)
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, localpref 100, valid, external
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)

ベストがR6経由(Path #2)に移り、localpref 200が効いています。

STEP 4:R1でも 192.168.6.0/24 を生成する

R6が広告している192.168.6.0/24を、R1でもNull0へのstaticとnetwork文で生成します。R6が落ちたときの受け皿としてよくある構成です。

router static
 address-family ipv4 unicast
  192.168.6.0/24 Null0
 !
!
router bgp 65001
 address-family ipv4 unicast
  network 192.168.6.0/24
R1:show bgp 192.168.6.0/24(STEP 4)
RP/0/RP0/CPU0:R1#show bgp 192.168.6.0/24

Tue Sep  8 10:31:04.448 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 14           14
Last Modified: Sep  8 10:30:36.774 for 00:00:27
Paths: (2 available, best #1)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Local
    0.0.0.0 from 0.0.0.0 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, local, best, group-best
      Received Path ID 0, Local Path ID 1, version 14
  Path #2: Received by speaker 0
  Not advertised to any peer
  65004, (received & used)
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, metric 0, localpref 100, valid, external, group-best
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)

自局生成のPath #1がweight 32768でベストになり、R6からのPath #2(WEIGHT 0)は1番目で負けています。R1が外へ広告する内容も変わります。

R1:show bgp neighbors 10.1.4.4 advertised-routes(STEP 4)
RP/0/RP0/CPU0:R1#show bgp neighbors 10.1.4.4 advertised-routes

Tue Sep  8 10:31:07.589 UTC
Network            Next Hop        From            AS Path
192.168.1.0/24     10.1.4.1        Local           65001i
192.168.2.0/24     10.1.4.1        10.0.0.2        65001i
192.168.3.0/24     10.1.4.1        10.0.0.3        65001i
192.168.4.0/24     10.1.4.1        10.1.4.4        65001 65002i
192.168.5.0/24     10.1.4.1        10.1.6.6        65001 65004 65003i
192.168.6.0/24     10.1.4.1        Local           65001i

Processed 6 prefixes, 6 paths

192.168.6.0/24がFrom Local、AS_PATH 65001になりました(STEP 3までは中継で65001 65004)。一方でRIBには注意が要ります。

R1:show route(STEP 4)
RP/0/RP0/CPU0:R1#show route

Tue Sep  8 10:31:02.368 UTC

Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
       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, E - EGP
       i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
       U - per-user static route, o - ODR, L - local, G  - DAGR, l - LISP
       A - access/subscriber, a - Application route
       M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
       s - local SRv6 route, z - local IID route

Gateway of last resort is not set

L    10.0.0.1/32 is directly connected, 00:18:58, Loopback0
O    10.0.0.2/32 [110/3] via 10.1.3.3, 00:18:18, GigabitEthernet0/0/0/0
O    10.0.0.3/32 [110/2] via 10.1.3.3, 00:18:24, GigabitEthernet0/0/0/0
C    10.1.3.0/24 is directly connected, 00:18:52, GigabitEthernet0/0/0/0
L    10.1.3.1/32 is directly connected, 00:18:52, GigabitEthernet0/0/0/0
C    10.1.4.0/24 is directly connected, 00:18:52, GigabitEthernet0/0/0/1
L    10.1.4.1/32 is directly connected, 00:18:52, GigabitEthernet0/0/0/1
C    10.1.6.0/24 is directly connected, 00:18:52, GigabitEthernet0/0/0/2
L    10.1.6.1/32 is directly connected, 00:18:52, GigabitEthernet0/0/0/2
O    10.2.3.0/24 [110/2] via 10.1.3.3, 00:18:24, GigabitEthernet0/0/0/0
O    10.2.4.0/24 [110/3] via 10.1.3.3, 00:18:18, GigabitEthernet0/0/0/0
C    192.168.1.0/24 is directly connected, 00:18:58, Loopback1
L    192.168.1.1/32 is directly connected, 00:18:58, Loopback1
B    192.168.2.0/24 [200/0] via 10.0.0.2, 00:16:58
B    192.168.3.0/24 [200/0] via 10.0.0.3, 00:16:58
B    192.168.4.0/24 [20/0] via 10.1.4.4, 00:03:58
B    192.168.5.0/24 [20/0] via 10.1.6.6, 00:03:58
S    192.168.6.0/24 is directly connected, 00:00:27, Null0

staticのAD(1)はeBGP(20)より小さいので、RIBはNull0のstaticのままで、R1自身は192.168.6.0/24宛てを転送できません。以降のSTEPで動くのはBGPテーブルと広告の側です。

STEP 5:自局生成のWEIGHTを 0 に下げてみる

network文にルートポリシーを付けてset weight 0し、自局生成を弱めてみます。

route-policy SET-WEIGHT-0
  set weight 0
  pass
end-policy
!
router bgp 65001
 address-family ipv4 unicast
  network 192.168.6.0/24 route-policy SET-WEIGHT-0
R1:show bgp 192.168.6.0/24(STEP 5)
RP/0/RP0/CPU0:R1#show bgp 192.168.6.0/24

Tue Sep  8 10:33:51.523 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 15           15
Last Modified: Sep  8 10:33:17.774 for 00:00:33
Paths: (2 available, best #1)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Local
    0.0.0.0 from 0.0.0.0 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, local, best, group-best
      Received Path ID 0, Local Path ID 1, version 15
  Path #2: Received by speaker 0
  Not advertised to any peer
  65004, (received & used)
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, metric 0, localpref 100, valid, external, group-best
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)

WEIGHTは落ちましたが、ベストはPath #1のままです。並んだ後の条件(3番目の「自分で生成した経路」、4番目のAS_PATH長0対1)がどちらも自局生成に有利だからです。WEIGHTは0が下限なので、受信経路を選ばせるには受信側を32768より上に持ち上げるしかありません。

STEP 6:R6向けに weight 40000 を入れる

R1のR6向けネイバーにWEIGHT 40000を設定します。

router bgp 65001
 neighbor 10.1.6.6
  address-family ipv4 unicast
   weight 40000
R1:show bgp 192.168.6.0/24(STEP 6)
RP/0/RP0/CPU0:R1#show bgp 192.168.6.0/24

Tue Sep  8 10:37:03.692 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 18           18
Last Modified: Sep  8 10:36:36.774 for 00:00:27
Paths: (3 available, best #2)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local
    0.0.0.0 from 0.0.0.0 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, local, group-best
      Received Path ID 0, Local Path ID 0, version 0
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  65004
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, metric 0, localpref 100, weight 40000, valid, external, best, group-best
      Received Path ID 0, Local Path ID 1, version 18
      Origin-AS validity: (disabled)
  Path #3: Received by speaker 0
  Not advertised to any peer
  65004, (received-only)
    10.1.6.6 from 10.1.6.6 (10.0.0.6)
      Origin IGP, metric 0, localpref 100, valid, external
      Received Path ID 0, Local Path ID 0, version 0
      Origin-AS validity: (disabled)

R6からのPath #2がweight 40000でベストになり、自局生成のPath #1はテーブルに居るがベストでない状態になりました。広告も65001 65004の中継に戻ります。

ネイバー単位のWEIGHTはそのピアからの全プレフィックスに効くので、192.168.4.0/24と192.168.5.0/24もR6経由に変わります。絞るなら入方向ルートポリシーのset weightを使います。

STEP 7:R6の Loopback1 を落とす(最終状態)

R6のLoopback1をshutdownします。

interface Loopback1
 shutdown
R1:show bgp 192.168.6.0/24(STEP 7)
RP/0/RP0/CPU0:R1#show bgp 192.168.6.0/24

Tue Sep  8 10:39:59.616 UTC
BGP routing table entry for 192.168.6.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 19           19
Last Modified: Sep  8 10:39:28.774 for 00:00:30
Paths: (1 available, best #1)
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to update-groups (with more than one peer):
    0.3 0.4 
  Local
    0.0.0.0 from 0.0.0.0 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, local, best, group-best
      Received Path ID 0, Local Path ID 1, version 19

R6からのパスが消え、自局生成の経路がベストに浮上しました。

R1:show bgp neighbors 10.1.4.4 advertised-routes(STEP 7)
RP/0/RP0/CPU0:R1#show bgp neighbors 10.1.4.4 advertised-routes

Tue Sep  8 10:40:02.832 UTC
Network            Next Hop        From            AS Path
192.168.1.0/24     10.1.4.1        Local           65001i
192.168.2.0/24     10.1.4.1        10.0.0.2        65001i
192.168.3.0/24     10.1.4.1        10.0.0.3        65001i
192.168.4.0/24     10.1.4.1        10.1.6.6        65001 65004 65003 65002i
192.168.5.0/24     10.1.4.1        10.1.6.6        65001 65004 65003i
192.168.6.0/24     10.1.4.1        Local           65001i

Processed 6 prefixes, 6 paths

広告もLocal / 65001に戻りました。普段はR6経由を使い、R6が落ちたときだけ自分の経路が出る、フローティングスタティックと同じ考え方をWEIGHTで作れます。ただしR1のRIBはNull0のままで、R1自身は転送しません。使えるのは集約経路のアンカーのように「広告を出すこと自体が目的」の場合です。

検証Configおよびshow結果

各STEPで6台すべてから、次の3種類をルータごとに取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 7)。

ファイル内容
..._show.txtshow version / show interface description / show route / show bgp / show bgp neighbors <ピア> advertised-routes・routes・received routes など
..._log.txtそのSTEPの範囲に絞ったshow logging(logmsgのマーカー時刻をshow logging startに指定)
..._run.txtそのSTEP時点のshow running-config

最終状態のR1には、192.168.6.0/24のNull0 static、network 192.168.6.0/24 route-policy SET-WEIGHT-0、R6向けのweight 40000、192.168.5.0/24にLOCAL_PREF 200を付けるLP-200が入っています。R6はLoopback1がshutdownされた状態です。

STEP 0:初期状態

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 1:R1のR4向けに weight 200

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 2:R1のR6向け入方向に LOCAL_PREF 200

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 3:weight 200 を撤去

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 4:R1に 192.168.6.0/24 のstatic+network を追加

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 5:network に set weight 0 を付ける

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 6:R1のR6向けに weight 40000

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

STEP 7:R6の Loopback1 を shutdown(最終状態)

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R5showlogrun
R6showlogrun

R1-R3間(iBGP)のキャプチャー全体です。

検証で取得したキャプチャー全体(bgp-weight.pcap)をダウンロード

参考

資料タイトル概要
CiscoUnderstand the Importance of BGP Weight Path AttributeWEIGHTがシスコ独自でローカルにしか効かないこと、既定値が0、自局生成では32768になることを説明した文書。
CiscoSelect BGP Best-path Algorithmベストパス選択の13ステップ。WEIGHTが1番目にあることを確認できる。
CiscoConfigure and Verify BGP Path Selection in IOS-XRIOS XRでのベストパス選択の確認方法。

関連記事