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

BGP ORIGIN属性

目次

ORIGINとは

ORIGIN(Type code 1)は、その経路がどうやってBGPに入ったかを示すwell-known mandatoryのパス属性です(BGPパス属性とベストパス選択)。値は1バイトで、経路をBGPに持ち込んだルータが決め、RFC 4271の5.1.1は他のルータが変更すべきでないとしています。

3つの値

値名前意味
0IGPBGPを動かしているルータ自身が、AS内部の経路として明示的にBGPへ入れた。
1EGPBGPの前身であるEGP(RFC 904)から学習した。EGPは使われていないため、現在の運用で見ることはない。
2Incomplete上記以外の方法でBGPに入った。再配布(redistribute)で入れた経路がこれにあたる。

show bgpでは各行の末尾1文字で表されます(i / e / ?)。UPDATEの中では1バイトの数値(0 / 1 / 2)で、showの1文字はそれを丸めた表示です。

*>iの3文字目のiはステータスコードの「internal(iBGPで学習)」で、行末のiとは別物です。

どの操作でどの値になるか

BGPへの入れ方ORIGIN
networkで明示的に指定するIGP(i)
aggregate-addressで集約経路を生成する構成要素がすべてIGPならIGP。1本でもIncompleteがあればIncomplete、Incompleteは無くEGPが1本でもあればEGP(RFC 4271 9.2.2.2、BGP経路集約)
redistributeで他プロトコル・スタティック・接続経路から再配布するIncomplete(?)

networkは管理者が1つずつ宣言する方法でIGP、redistributeは他プロトコルの経路をまとめて流し込む方法でBGPから見ると素性が分からないためIncompleteです。

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

ベストパス選択の5段階目で比較され、小さいほう(IGP < EGP < Incomplete)が優先されます。 実際にはLOCAL_PREFやAS_PATH長で先に決着することが多く、ORIGINが効くのはそれより前がすべて同点のときです。同じプレフィックスをAS内の2箇所からnetworkとredistributeで入れた場合などが該当します。

eBGPへ広告するときにORIGINをIGPに揃える

自AS発の経路をnetworkで入れれば最初からIGPです。redistributeを使うと自AS発でもiと?が混在し、隣のASのベストパス選択に影響することがあります。これを避ける選択肢が、eBGPへ出すときにルートポリシーでIGPへ揃える方法です。

ORIGINの書き換えは「どうやってBGPに入ったか」の情報を消す操作で、RFC 4271の5.1.1が「他のスピーカーは変更すべきでない」とする値です。?の混在が問題になる場合の対処にとどめ、他ASから受け取った経路(トランジット)に適用しないよう注意します。

単純な書き方は、そのピアへ出すすべての経路をIGPにするものです。

IOS XR すべての経路のORIGINをIGPに揃える
route-policy EBGP-OUT
  set origin igp
  pass
end-policy
!
router bgp <AS番号>
 neighbor <eBGPピアのアドレス>
  address-family ipv4 unicast
   route-policy EBGP-OUT out
  !
 !
!
IOS XE すべての経路のORIGINをIGPに揃える
route-map EBGP-OUT permit 10
 set origin igp
!
router bgp <AS番号>
 address-family ipv4
  neighbor <eBGPピアのアドレス> activate
  neighbor <eBGPピアのアドレス> route-map EBGP-OUT out

IOS XRのpass、IOS XEのpermit 10はどちらも「すべての経路を通す」意味で、無いと経路がまったく広告されません。

この形はトランジット経路にも効きます。自AS発の経路だけに限定するには、AS_PATHが空であること(^$)を条件にします。 自AS番号の追加はルートポリシーの評価より後なので、出方向ポリシーから見ると自AS発の経路はAS_PATHが空です。

IOS XR 自AS発の経路だけIGPに揃える
as-path-set LOCAL-ORIGIN
  ios-regex '^$'
end-set
!
route-policy EBGP-OUT
  if as-path in LOCAL-ORIGIN then
    set origin igp
  endif
  pass
end-policy
IOS XE 自AS発の経路だけIGPに揃える
ip as-path access-list 1 permit ^$
!
route-map EBGP-OUT permit 10
 match as-path 1
 set origin igp
!
route-map EBGP-OUT permit 20

IOS XEのpermit 20は一致しなかった経路を通すための空エントリで、無いと自AS発以外がすべて破棄されます。

実機での検証

XRd 26.1.1を6台使い、(1) 他が同点のときORIGINがベストパスを決めること、(2) 出方向ポリシーでORIGINを書き換えたとき全経路と^$限定で何が違うか、を確認します。

ルータAS役割
R165001192.168.99.0/24をnetworkで広告(ORIGINはi)。実体はLoopback99
R265001観測点。 R1のiとR3の?を同時に受け取る
R365001同じ192.168.99.0/24をredistribute staticで広告(ORIGINは?)。R4とeBGP
R465002R3から受け取る。出方向ポリシーの効果を見る相手
R5650032つ先のAS。書き換えがここまで伝わるかを見る
R665004トランジット経路の供給元。192.168.6.0/24はnetwork(i)、192.168.66.0/24はredistribute static(?)

AS 65001内はOSPFエリア0、iBGPはLoopback0どうしのフルメッシュです。R3のスタティックはR1のLoopback0(10.0.0.1)を指す再帰スタティックなので、R3の経路が選ばれても転送はR1のLoopback99に届きます。

STEP操作確かめること
0なし(初期状態)1〜4段目が同点で、ORIGINが5段目で決着する(iが勝つ)
1R1のno network 192.168.99.0/24iの経路が消え、R2のベストが?に変わる。R4・R5・R6の行末も?になる
2R1のnetworkを戻すSTEP 0の状態に戻る
3R3にEBGP-OUT-ALL(全経路set origin igp)自AS発だけでなくトランジット経路までiに書き換わる
4R3にEBGP-OUT-LOCAL(^$限定、最終状態)自AS発だけがiになり、トランジットは?のまま

各STEPでR4・R5から192.168.99.1へping 50発とtracerouteを取り、どちらの経路で転送されたかも記録しています。

STEP 0:ORIGINがベストパスを決める

R2のBGPテーブルでは192.168.99.0/24だけ2行あります。行末がi(R1から)と?(R3から)です。

R2 show bgp(STEP 0)
RP/0/RP0/CPU0:R2#show bgp
Sun Sep 27 12:33:27.495 UTC
BGP router identifier 10.0.0.2, local AS number 65001
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 11
BGP main routing table version 11
BGP NSR Initial initsync version 3 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

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
*> 192.168.2.0/24     0.0.0.0                  0         32768 i
*>i192.168.3.0/24     10.0.0.3                 0    100      0 i
*>i192.168.4.0/24     10.3.4.4                 0    100      0 65002 i
*>i192.168.5.0/24     10.3.4.4                      100      0 65002 65003 i
*>i192.168.6.0/24     10.1.6.6                 0    100      0 65004 i
*>i192.168.66.0/24    10.1.6.6                 0    100      0 65004 ?
*>i192.168.99.0/24    10.0.0.1                 0    100      0 i
* i                   10.0.0.1                 0    100      0 ?

Processed 8 prefixes, 9 paths

詳細を見ると、1〜4段目はすべて同点です。NEXT_HOPもIGPメトリックも同じで、違うのはORIGINだけです。

R2 show bgp 192.168.99.0/24(STEP 0)
RP/0/RP0/CPU0:R2#show bgp 192.168.99.0/24
Sun Sep 27 12:33:28.055 UTC
BGP routing table entry for 192.168.99.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                  8            8
Last Modified: Sep 27 12:25:36.023 for 00:07:52
Paths: (2 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 8
  Path #2: Received by speaker 0
  Not advertised to any peer
  Local, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.3 (10.0.0.3)
      Origin incomplete, metric 0, localpref 100, valid, internal
      Received Path ID 0, Local Path ID 0, version 0
順序比較項目Path #1(R1から)Path #2(R3から)結果
1WEIGHT00同点
2LOCAL_PREF100100同点
3自身が生成した経路どちらもiBGPで学習どちらもiBGPで学習同点
4AS_PATHの長さ0(AS内で生成)0(AS内で生成)同点
5ORIGINIGPIncompletePath #1が優先

R3のスタティックがR1のLoopback0を指しているため、NEXT_HOPはどちらも10.0.0.1です。どちらが選ばれても転送先は同じR1で、AS 65002のR4から192.168.99.1へのpingも通ります。

R2 show route bgp(STEP 0)
RP/0/RP0/CPU0:R2#show route bgp
Sun Sep 27 12:33:27.791 UTC

B    192.168.1.0/24 [200/0] via 10.0.0.1, 00:07:52
B    192.168.3.0/24 [200/0] via 10.0.0.3, 00:08:03
B    192.168.4.0/24 [200/0] via 10.3.4.4, 00:08:03
B    192.168.5.0/24 [200/0] via 10.3.4.4, 00:08:03
B    192.168.6.0/24 [200/0] via 10.1.6.6, 00:07:51
B    192.168.66.0/24 [200/0] via 10.1.6.6, 00:07:51
B    192.168.99.0/24 [200/0] via 10.0.0.1, 00:07:52
R4 ping / traceroute 192.168.99.1(STEP 0)
RP/0/RP0/CPU0:R4#ping 192.168.99.1 source 192.168.4.1 count 50 timeout 1
Sun Sep 27 12:34:51.497 UTC
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 192.168.99.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (50/50), round-trip min/avg/max = 6/11/52 ms
RP/0/RP0/CPU0:R4#traceroute 192.168.99.1 source 192.168.4.1 probe 3 timeout 1 maxttl 6
Sun Sep 27 12:34:53.105 UTC

Type escape sequence to abort.
Tracing the route to 192.168.99.1

 1  10.3.4.3 6 msec  5 msec  4 msec 
 2  10.1.3.1 10 msec  *  10 msec 

STEP 1:iの経路を消すと?が選ばれる

R1からnetworkを外してiの経路を消します。

R1 network の削除(STEP 1、R1のcommit)
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Sun Sep 27 12:37:03.574 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router bgp 65001
 address-family ipv4 unicast
  no network 192.168.99.0/24
 !
!
end

R2のベストパスはR3からのOrigin incompleteだけになり、隣のAS 65004(R6)でも行末がiから?に変わります。

R2 show bgp 192.168.99.0/24(STEP 0)
RP/0/RP0/CPU0:R2#show bgp 192.168.99.0/24
Sun Sep 27 12:33:28.055 UTC
BGP routing table entry for 192.168.99.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                  8            8
Last Modified: Sep 27 12:25:36.023 for 00:07:52
Paths: (2 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 8
  Path #2: Received by speaker 0
  Not advertised to any peer
  Local, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.3 (10.0.0.3)
      Origin incomplete, metric 0, localpref 100, valid, internal
      Received Path ID 0, Local Path ID 0, version 0
R2 show bgp 192.168.99.0/24(STEP 1)
RP/0/RP0/CPU0:R2#show bgp 192.168.99.0/24
Sun Sep 27 12:39:55.014 UTC
BGP routing table entry for 192.168.99.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker                 12           12
Last Modified: Sep 27 12:37:39.023 for 00:02:16
Paths: (1 available, best #1)
  Not advertised to any peer
  Path #1: Received by speaker 0
  Not advertised to any peer
  Local, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.3 (10.0.0.3)
      Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 12
R6 show bgp(STEP 0)
RP/0/RP0/CPU0:R6#show bgp
Sun Sep 27 12:36:27.824 UTC
BGP router identifier 10.0.0.6, local AS number 65004
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 10
BGP main routing table version 10
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

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     10.1.6.1                 0             0 65001 i
*> 192.168.2.0/24     10.1.6.1                               0 65001 i
*> 192.168.3.0/24     10.1.6.1                               0 65001 i
*> 192.168.4.0/24     10.1.6.1                               0 65001 65002 i
*> 192.168.5.0/24     10.1.6.1                               0 65001 65002 65003 i
*> 192.168.6.0/24     0.0.0.0                  0         32768 i
*> 192.168.66.0/24    0.0.0.0                  0         32768 ?
*> 192.168.99.0/24    10.1.6.1                 0             0 65001 i

Processed 8 prefixes, 8 paths
R6 show bgp(STEP 1)
RP/0/RP0/CPU0:R6#show bgp
Sun Sep 27 12:42:58.136 UTC
BGP router identifier 10.0.0.6, local AS number 65004
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 11
BGP main routing table version 11
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

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     10.1.6.1                 0             0 65001 i
*> 192.168.2.0/24     10.1.6.1                               0 65001 i
*> 192.168.3.0/24     10.1.6.1                               0 65001 i
*> 192.168.4.0/24     10.1.6.1                               0 65001 65002 i
*> 192.168.5.0/24     10.1.6.1                               0 65001 65002 65003 i
*> 192.168.6.0/24     0.0.0.0                  0         32768 i
*> 192.168.66.0/24    0.0.0.0                  0         32768 ?
*> 192.168.99.0/24    10.1.6.1                               0 65001 ?

Processed 8 prefixes, 8 paths

R1 - R6間のキャプチャーでは、UPDATEのORIGINが数値で見えます。STEP 1のNo.4はINCOMPLETE (2)、STEP 2でnetworkを戻した後のNo.3はIGP (0)です。

STEP 1 R1 - R6間 No.4 UPDATE(R1 → R6)tshark -V(抜粋)
Border Gateway Protocol - UPDATE Message
<snip>
        Path Attribute - MP_REACH_NLRI
<snip>
            Next hop: 10.1.6.1
<snip>
                192.168.99.0/24
<snip>
        Path Attribute - ORIGIN: INCOMPLETE
<snip>
            Origin: INCOMPLETE (2)
        Path Attribute - AS_PATH: 65001 
<snip>
                AS4: 65001
STEP 2 R1 - R6間 No.3 UPDATE(R1 → R6)tshark -V(抜粋)
Border Gateway Protocol - UPDATE Message
<snip>
        Path Attribute - MP_REACH_NLRI
<snip>
            Next hop: 10.1.6.1
<snip>
                192.168.99.0/24
<snip>
        Path Attribute - ORIGIN: IGP
<snip>
            Origin: IGP (0)
        Path Attribute - AS_PATH: 65001 
<snip>
                AS4: 65001
        Path Attribute - MULTI_EXIT_DISC: 0

上のtshark出力のパケット(STEP 1 No.4、ORIGIN 2)のpcapをダウンロード

上のtshark出力のパケット(STEP 2 No.3、ORIGIN 0)のpcapをダウンロード

STEP 2でR1のnetworkを戻すと、R2のベストパスはOrigin IGPに戻ります。以降はこの状態から始めます。

STEP 3:出方向ポリシーで全経路のORIGINをIGPにする

R3からR4へのeBGPに、すべての経路をIGPにするポリシーを当てます。

R3 EBGP-OUT-ALL の適用(STEP 3、R3のcommit)
RP/0/RP0/CPU0:R3#show configuration commit changes last 1
Sun Sep 27 12:50:01.577 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
route-policy EBGP-OUT-ALL
  set origin igp
  pass
end-policy
!
router bgp 65001
 neighbor 10.3.4.4
  address-family ipv4 unicast
   route-policy EBGP-OUT-ALL out
  !
 !
!
end

R3がR4へ広告する経路の行末を、適用前(STEP 2)と後(STEP 3)、そして^$で限定した後(STEP 4)で比べます。

R3 show bgp neighbors 10.3.4.4 advertised-routes(STEP 2)
RP/0/RP0/CPU0:R3#show bgp neighbors 10.3.4.4 advertised-routes
Sun Sep 27 12:47:10.448 UTC
Network            Next Hop        From            AS Path
192.168.1.0/24     10.3.4.3        10.0.0.1        65001i
192.168.2.0/24     10.3.4.3        10.0.0.2        65001i
192.168.3.0/24     10.3.4.3        Local           65001i
192.168.6.0/24     10.3.4.3        10.0.0.1        65001 65004i
192.168.66.0/24    10.3.4.3        10.0.0.1        65001 65004?
192.168.99.0/24    10.3.4.3        Local           65001?

Processed 6 prefixes, 6 paths
R3 show bgp neighbors 10.3.4.4 advertised-routes(STEP 3)
RP/0/RP0/CPU0:R3#show bgp neighbors 10.3.4.4 advertised-routes
Sun Sep 27 12:53:39.252 UTC
Network            Next Hop        From            AS Path
192.168.1.0/24     10.3.4.3        10.0.0.1        65001i
192.168.2.0/24     10.3.4.3        10.0.0.2        65001i
192.168.3.0/24     10.3.4.3        Local           65001i
192.168.6.0/24     10.3.4.3        10.0.0.1        65001 65004i
192.168.66.0/24    10.3.4.3        10.0.0.1        65001 65004i
192.168.99.0/24    10.3.4.3        Local           65001i

Processed 6 prefixes, 6 paths
R3 show bgp neighbors 10.3.4.4 advertised-routes(STEP 4)
RP/0/RP0/CPU0:R3#show bgp neighbors 10.3.4.4 advertised-routes
Sun Sep 27 13:00:07.773 UTC
Network            Next Hop        From            AS Path
192.168.1.0/24     10.3.4.3        10.0.0.1        65001i
192.168.2.0/24     10.3.4.3        10.0.0.2        65001i
192.168.3.0/24     10.3.4.3        Local           65001i
192.168.6.0/24     10.3.4.3        10.0.0.1        65001 65004i
192.168.66.0/24    10.3.4.3        10.0.0.1        65001 65004?
192.168.99.0/24    10.3.4.3        Local           65001i

Processed 6 prefixes, 6 paths

STEP 3では自AS発の192.168.99.0/24がiになった一方、トランジット経路の192.168.66.0/24まで?からiに書き換わっています。R4の先のAS 65003(R5)からも同じに見えます。

R5 show bgp(STEP 3)
RP/0/RP0/CPU0:R5#show bgp
Sun Sep 27 12:55:11.954 UTC
BGP router identifier 10.0.0.5, local AS number 65003
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 12
BGP main routing table version 12
BGP NSR Initial initsync version 3 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

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     10.4.5.4                               0 65002 65001 i
*> 192.168.2.0/24     10.4.5.4                               0 65002 65001 i
*> 192.168.3.0/24     10.4.5.4                               0 65002 65001 i
*> 192.168.4.0/24     10.4.5.4                 0             0 65002 i
*> 192.168.5.0/24     0.0.0.0                  0         32768 i
*> 192.168.6.0/24     10.4.5.4                               0 65002 65001 65004 i
*> 192.168.66.0/24    10.4.5.4                               0 65002 65001 65004 i
*> 192.168.99.0/24    10.4.5.4                               0 65002 65001 i

Processed 8 prefixes, 8 paths

キャプチャーでも確かめられます。STEP 3のNo.3では192.168.66.0/24のORIGINがIGP (0)です。

STEP 3 R3 - R4間 No.3 UPDATE(R3 → R4、192.168.66.0/24)tshark -V(抜粋)
Border Gateway Protocol - UPDATE Message
<snip>
        Path Attribute - MP_REACH_NLRI
<snip>
            Next hop: 10.3.4.3
<snip>
                192.168.66.0/24
<snip>
        Path Attribute - ORIGIN: IGP
<snip>
            Origin: IGP (0)
        Path Attribute - AS_PATH: 65001 65004 
<snip>
                AS4: 65001
                AS4: 65004
上のtshark出力のパケット(STEP 3 No.3、トランジット経路が0)のpcapをダウンロード

STEP 4:自AS発の経路だけIGPに揃える

^$を条件に加えて、自AS発の経路だけを対象にします。

R3 EBGP-OUT-LOCAL の適用(STEP 4、R3のcommit)
RP/0/RP0/CPU0:R3#show configuration commit changes last 1
Sun Sep 27 12:56:30.352 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
as-path-set LOCAL-ORIGIN
  ios-regex '^$'
end-set
!
no route-policy EBGP-OUT-ALL
route-policy EBGP-OUT-LOCAL
  if as-path in LOCAL-ORIGIN then
    set origin igp
  endif
  pass
end-policy
!
router bgp 65001
 neighbor 10.3.4.4
  address-family ipv4 unicast
   route-policy EBGP-OUT-LOCAL out
  !
 !
!
end

トランジット経路は?に戻りました。同じNo.3のUPDATEで、192.168.66.0/24だけがINCOMPLETE (2)です。

STEP 4 R3 - R4間 No.3 UPDATE(R3 → R4、192.168.66.0/24)tshark -V(抜粋)
Border Gateway Protocol - UPDATE Message
<snip>
        Path Attribute - MP_REACH_NLRI
<snip>
            Next hop: 10.3.4.3
<snip>
                192.168.66.0/24
<snip>
        Path Attribute - ORIGIN: INCOMPLETE
<snip>
            Origin: INCOMPLETE (2)
        Path Attribute - AS_PATH: 65001 65004 
<snip>
                AS4: 65001
                AS4: 65004
上のtshark出力のパケット(STEP 4 No.3、トランジット経路が2)のpcapをダウンロード

R4のテーブルでも、192.168.99.0/24はi、192.168.66.0/24は?に分かれています。

R4 show bgp(STEP 4)
RP/0/RP0/CPU0:R4#show bgp
Sun Sep 27 13:00:53.285 UTC
BGP router identifier 10.0.0.4, local AS number 65002
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 13
BGP main routing table version 13
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

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     10.3.4.3                               0 65001 i
*> 192.168.2.0/24     10.3.4.3                               0 65001 i
*> 192.168.3.0/24     10.3.4.3                 0             0 65001 i
*> 192.168.4.0/24     0.0.0.0                  0         32768 i
*> 192.168.5.0/24     10.4.5.5                 0             0 65003 i
*> 192.168.6.0/24     10.3.4.3                               0 65001 65004 i
*> 192.168.66.0/24    10.3.4.3                               0 65001 65004 ?
*> 192.168.99.0/24    10.3.4.3                 0             0 65001 i

Processed 8 prefixes, 8 paths

advertised-routesには65001が付いて表示されますが、これはポリシー評価より後に付きます。ポリシーから見たAS_PATHは空で^$に一致し、192.168.66.0/24は65004だったため一致しません。

192.168.1.0/24や192.168.2.0/24も^$に一致しますが、もともとIGPなので見た目は変わりません。

検証Configおよびshow結果

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

ファイル内容
..._show.txtshow version / show interface description / show route / show bgp / show bgp summary / show route bgp / show bgp(192.168.99.0/24・192.168.6.0/24・192.168.66.0/24) / show bgp neighbors / ピアごとのadvertised-routes・routes・received routes / show bgp update-group / show bgp process / show rpl route-policy。R1〜R3はshow ospf neighbor / show route ospf、R1・R3はshow route 192.168.99.0/24(R3はshow cefも)を含む
..._log.txtそのSTEPの範囲だけに絞ったshow logging
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._ping.txtR4・R5から192.168.99.1へのping 50発とtraceroute
..._trace.txtshow bgp trace neighborとshow bgp trace error
..._commit.cfgそのSTEPで実際にコミットされた設定(設定を変えたルータのみ)

STEP 0:初期状態(iと?の2経路)

ルータshow出力syslogrunning-configpingtrace投入した設定
R1showlogrun—trace—
R2showlogrun—trace—
R3showlogrun—trace—
R4showlogrunpingtrace—
R5showlogrunpingtrace—
R6showlogrun—trace—

STEP 1:R1のnetwork 192.168.99.0/24を削除

ルータshow出力syslogrunning-configpingtrace投入した設定
R1showlogrun—tracecommit
R2showlogrun—trace—
R3showlogrun—trace—
R4showlogrunpingtrace—
R5showlogrunpingtrace—
R6showlogrun—trace—

STEP 2:R1のnetworkを戻す

ルータshow出力syslogrunning-configpingtrace投入した設定
R1showlogrun—tracecommit
R2showlogrun—trace—
R3showlogrun—trace—
R4showlogrunpingtrace—
R5showlogrunpingtrace—
R6showlogrun—trace—

STEP 3:R3にEBGP-OUT-ALL(全経路のORIGINをIGPに)

ルータshow出力syslogrunning-configpingtrace投入した設定
R1showlogrun—trace—
R2showlogrun—trace—
R3showlogrun—tracecommit
R4showlogrunpingtrace—
R5showlogrunpingtrace—
R6showlogrun—trace—

STEP 4:R3にEBGP-OUT-LOCAL(^$限定、最終状態)

ルータshow出力syslogrunning-configpingtrace投入した設定
R1showlogrun—trace—
R2showlogrun—trace—
R3showlogrun—tracecommit
R4showlogrunpingtrace—
R5showlogrunpingtrace—
R6showlogrun—trace—

パケットキャプチャーはSTEPごとに取得しています。

STEPR3 - R4間R4 - R5間R1 - R6間
0pcappcappcap
1pcappcappcap
2pcappcappcap
3pcappcappcap
4pcappcappcap

参考

資料タイトル概要
RFC 4271A Border Gateway Protocol 4 (BGP-4)4.3でORIGINの3つの値、5.1.1で生成と変更の扱い、9.1.2.2でベストパス選択での比較、9.2.2.2で集約時のORIGINを定義。
RFC 904Exterior Gateway Protocol Formal SpecificationORIGINの値EGPが指すプロトコルの仕様。現在は使われていない。
IANABorder Gateway Protocol (BGP) Parametersパス属性のType codeなど、BGPで使われる番号の割り当て一覧。

関連記事