シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

IOS における BGP の Next-Hop Tracking の動作について

[toc:faq]

BGP の Next-Hop Tracking (以下 NHT)は、next-hop に到達するために使用する経路に更新があった場合、動的に scan を実施しより早いコンバージェンスを実現するための機能です。

 

このドキュメントでは、コマンドリファレンスに記載されている内容だけではわかりにくい、動作仕様について、コマンド出力とともに紹介します。

※このドキュメントでは IOS での動作について取り扱います。IOS-XR, IOS-XE では動作やパラメータが違う場合がありますのでご注意ください。

構成

--------------------------------------------------------------------------------------------------------------------------

(各機器の詳細設定はドキュメント最後に掲載)

 

   +--10.1.1.0/24(cost 10)--+  +--10.23.1.0/24--[R3](AS65003)-- 172.20.1.0/24

[R1]       (AS65000)        [R2]

   +--10.1.2.0/24(cost100)--+  +--10.24.1.0/24--[R4](AS65004)-- 192.168.1.0/24

 

R1-R2 : iBGP, IGP として OSPF (10.x.x.x を広報)

R2-R3 : eBGP(eBGP multihop)

R2-R4 : eBGP(disable-connected-check)

※説明簡素化のため、すべて loopback 同士で session 確立

 

eBGP のための経路はお互いに static を設定、R2 では static を OSPF へ再配信

R2 は他に loopback 2 つを BGP にて広報(10.22.22.22/32, 10.222.222.222/32)

(※以下、出力例はすべて 15.1(4)M3 を使用)

--------------------------------------------------------------------------------------------------------------------------

Next-Hop Tracking の基本動作

現在サポートされている IOS では default で有効な機能となります。無効にするためには no bgp nexthop trigger enable コマンドを設定します。

default では、経路に更新があってから 5 秒後に scan を実施するようになっています。この値は bgp nexthop trigger delay SEC コマンドによって調整可能です。scan 実施時に、 next-hop に対して使用可能な経路がない場合は、その next-hop を使用する BGP 経路はすべて削除され、その逆の場合には追加が行われます。

Tracking の対象となるアドレスは、BGP 経路の next-hop となるアドレスです。このアドレスは、show ip bgp コマンドの Next Hop 列でも確認できますが、prefix が多い場合などには show ip bgp nexthops コマンドで要約されたものが確認できます。

--------------------------------------------------------------------------------------------------------------------------

R1#show ip bgp

BGP table version is 21, local router ID is 1.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, x best-external, f RT-Filter

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i10.22.22.22/32   2.2.2.2                  0    100      0 i

*>i10.222.222.222/32

                    2.2.2.2                  0    100      0 i

*>i172.20.1.0/24    3.3.3.3                  0    100      0 65003 i

*>i192.168.1.0      4.4.4.4                  0    100      0 65004 i

--------------------------------------------------------------------------------------------------------------------------

R1#show ip bgp nexthops

# Paths  Nexthop Address

       2   2.2.2.2

       1   3.3.3.3

       1   4.4.4.4

R1#

--------------------------------------------------------------------------------------------------------------------------

この状態で R2-R4 間の Link を down させると、4.4.4.4 への経路がなくなるため、それを Trigger として Next-hop の Scan が動作します。以下の debug はその際の出力例となります。経路削除後に NHT により scan がスケジューリングされ、その約 5 秒後に実施されている様子が確認できます。このNext-hop Scan により、next-hop が 4.4.4.4 となる経路が削除されています。

--------------------------------------------------------------------------------------------------------------------------

debug ip routing, debug ip bgp event nexthop を有効にしています

R1#

06:37:13.483: RT: del 4.4.4.4 via 10.1.1.2, ospf metric [110/20]    <--Link down に伴う OSPF 経路削除

06:37:13.483: RT: delete subnet route to 4.4.4.4/32

06:37:13.483: EvD: accum. penalty decayed to 0 after 749 second(s)

06:37:13.483: EvD: charge penalty 500, new accum. penalty 500, flap count 24     <-- penalty (後述)の加算と、scan のスケジューリング

06:37:13.483: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:19, 19000 , scheduling nexthop scan in 5 secs

R1#

06:37:18.487: BGP: BGP Event nhop timer                              <--Next-hop scan の実施と、4.4.4.4 を経由する経路の削除

06:37:18.487: BGP: tbl IPv4 Unicast:base Nexthop walk

06:37:18.491: RT: del 192.168.1.0 via 4.4.4.4, bgp metric [200/0]

06:37:18.491: RT: delete network route to 192.168.1.0/24

R1#

--------------------------------------------------------------------------------------------------------------------------

Dampening の penalty とその半減期


NHT には dampening の機能も含まれています。アドレスが一つ更新されるたびに penalty が 500 加算されます。加算後の plenalty の値によって、Next-hop scan が実施されるタイミングが変化します。

 

  • 950 以下の場合 : コマンドで設定した秒数のタイミング(default = 5 秒後)にスケジューリング
  • 950 を超える場合 : 以下の計算式により、penalty が 100 以下に減少するタイミングにスケジューリング

 

更新イベントのたびに penalty は加算されますが、すでに Next-hop scan のスケジューリングが行われている場合、再度のスケジューリングは行われません。

 

この penalty は単純な減算ではなく、8 秒で半分となるように減少していきます(半減期 8 秒)。厳密な計算式は複雑なものとなりますが、おおむね 1 秒あたり 92% に減るものとして概算することができます。例えば 500 が加算された場合、そのままの他にイベントがない場合には 19 秒後に 100 以下となります。ip dampening などと違い、このパラメータ(penalty の加算値、半減期の値等)の変更はできません。また、NHT を使用する場合、この dampening 動作を停止させることもできません

 

penalty の加算対象イベントは更新全般ですので、経路の追加・削除・更新いずれも対象となり、それらのイベントの度に加算されます。また、その next-hop を使用する経路数にかかわらず next-hop のアドレス単位での加算となります。今回の構成例ですと、2.2.2.2 は 2 つのパスで使用されていますが、これにより penalty が 2 倍になるということはありません。

 

R1 の E0/0 が down し、2.2.2.2/32, 3.3.3.3/32, 4.4.4.4/32 の3経路が更新された場合の出力例

--------------------------------------------------------------------------------------------------------------------------

debug ip routing, debug ip bgp event nexthop を有効にしています

R1#

07:22:06.831: is_up: Ethernet0/0 0 state: 6 sub state: 1 line: 1

R1#

07:22:09.347: RT: updating ospf 2.2.2.2/32 (0x0):

    via 10.1.2.2 Et1/0

 

07:22:09.347: RT: closer admin distance for 2.2.2.2, flushing 1 routes

07:22:09.347: RT: add 2.2.2.2/32 via 10.1.2.2, ospf metric [110/101]

07:22:09.347: RT: updating ospf 10.1.1.0/24 (0x0):

    via 10.1.2.2 Et1/0

 

07:22:09.347: RT: add 10.1.1.0/24 via 10.1.2.2, ospf metric [110/110]

07:22:09.347: RT: updating ospf 4.4.4.4/32 (0x0):

    via 10.1.2.2 Et1/0

 

07:22:09.347: RT: closer admin distance for 4.4.4.4, flushing 1 routes

07:22:09.347: RT: add 4.4.4.4/32 via 10.1.2.2, ospf metric [110/120]

07:22:09.347: RT: updating ospf 3.3.3.3/32 (0x0):

    via 10.1.2.2 Et1/0

 

07:22:09.347: RT: closer admin distance for 3.3.3.3, flushing 1 routes

07:22:09.347: RT: add 3.3.3.3/32 via 10.1.2.2, ospf metric [110/120]

07:22:09.351: EvD: accum. penalty decayed to 0 after 83 second(s)

07:22:09.351: EvD: charge penalty 500, new accum. penalty 500, flap count 44    

07:22:09.351: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:19, 19000 , scheduling nexthop scan in 5 secs

07:22:09.351: EvD: accum. penalty decayed to 500 after 0 second(s)

07:22:09.351: EvD: charge penalty 500, new accum. penalty 1000, flap count 45

07:22:09.351: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:27, 27000 , timer already running

※2回目の加算ですでに 950 を超えていますが、すでにスケジューリングされているため Next-hop scan が実行されるタイミングは変わりません。

07:22:09.351: EvD: accum. penalty decayed to 1000 after 0 second(s)

07:22:09.351: EvD: charge penalty 500, new accum. penalty 1500, flap count 46

07:22:09.351: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:32, 32000 , timer already running

※3つの対象アドレスが同時に更新されているため、最終的に penalty が 1500 まで上昇しています。

R1#

07:22:14.367: BGP: BGP Event nhop timer

07:22:14.367: BGP: tbl IPv4 Unicast:base Nexthop walk

--------------------------------------------------------------------------------------------------------------------------

この dampening は、経路変更のイベントが発生した直後の Next-hop scan の時点で IGP がコンバージェンスしている場合にはあまり影響を与えませんが、next-hop が使用する経路が頻繁に flap する場合などに考慮する必要が出てきます。

以下は 2.2.2.2/32 を意図的に連続で flap させた場合の例です。

--------------------------------------------------------------------------------------------------------------------------

09:01:28.423: RT: del 2.2.2.2 via 10.1.1.2, ospf metric [110/11]

09:01:28.423: RT: delete subnet route to 2.2.2.2/32

09:01:28.423: EvD: accum. penalty decayed to 0 after 3119 second(s)

09:01:28.423: EvD: charge penalty 500, new accum. penalty 500, flap count 8

09:01:28.423: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:19, 19000 , scheduling nexthop scan in 5 secs

※初回の経路削除時ではdefault 通り 5 秒後のスケジューリングとなります

09:01:33.431: BGP: BGP Event nhop timer

09:01:33.431: BGP: tbl IPv4 Unicast:base Nexthop walk

09:01:33.435: RT: del 10.22.22.22 via 2.2.2.2, bgp metric [200/0]

09:01:33.435: RT: delete subnet route to 10.22.22.22/32

09:01:33.435: RT: del 10.222.222.222 via 2.2.2.2, bgp metric [200/0]

09:01:33.435: RT: delete subnet route to 10.222.222.222/32

※Next-hop scan のタイミングで 2.2.2.2 に対する有効な経路がないため、 next-hop に 2.2.2.2 を使用している BGP 経路が削除されています

 

09:01:35.851: RT: updating ospf 2.2.2.2/32 (0x0):

    via 10.1.1.2 Et0/0

 

09:01:35.851: RT: add 2.2.2.2/32 via 10.1.1.2, ospf metric [110/11]

09:01:35.855: EvD: accum. penalty decayed to 272 after 7 second(s)     <--前回のイベントから 7 秒経過し 272 まで減少したことを示します

09:01:35.855: EvD: charge penalty 500, new accum. penalty 772, flap count 9

09:01:35.855: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:24, 24000 , scheduling nexthop scan in 5 secs

※このように経路追加時にも penalty および Next-hop scan のスケジューリングが行われます

※この時点ではまだ 500 を加算しても 772 と、 950 を超えていないため 5 秒後のスケジューリングとなります

09:01:40.863: BGP: BGP Event nhop timer

09:01:40.863: BGP: tbl IPv4 Unicast:base Nexthop walk

09:01:40.863: RT: updating bgp 10.22.22.22/32 (0x0):

    via 2.2.2.2

 

09:01:40.863: RT: add 10.22.22.22/32 via 2.2.2.2, bgp metric [200/0]

09:01:40.863: RT: updating bgp 10.222.222.222/32 (0x0):

    via 2.2.2.2

 

09:01:40.863: RT: add 10.222.222.222/32 via 2.2.2.2, bgp metric [200/0]

※Next-hop scan のタイミングで 2.2.2.2 に対する有効な経路があるため、 next-hop に 2.2.2.2 を使用している BGP 経路が追加されています

 

09:01:40.939: RT: del 2.2.2.2 via 10.1.1.2, ospf metric [110/11]

09:01:40.939: RT: delete subnet route to 2.2.2.2/32

09:01:40.943: EvD: accum. penalty decayed to 500 after 5 second(s)

09:01:40.943: EvD: charge penalty 500, new accum. penalty 1000, flap count 10

09:01:40.943: BGP(0): IPv4 Unicast::base nexthop modified, reuse in 00:00:27, 27000 , scheduling nexthop scan in 27 secs

※再度経路が削除されると、今度は加算後の penalty が 950 を超えたため、5 秒後ではなく

1000 が 100 まで減少する 27 秒後に Next-hop scan がスケジューリングされています

R1#

--------------------------------------------------------------------------------------------------------------------------

全機器設定

--------------------------------------------------------------------------------------------------------------------------

!

hostname R1

!

interface Loopback0

  ip address 1.1.1.1 255.255.255.255

!

interface Ethernet0/0

  ip address 10.1.1.1 255.255.255.0

  ip ospf cost 10

!

interface Ethernet1/0

  ip address 10.1.2.1 255.255.255.0

  ip ospf cost 100

!

router ospf 65000

  network 1.1.1.1 0.0.0.0 area 0

  network 10.1.0.0 0.0.255.255 area 0

!

router bgp 65000

  bgp log-neighbor-changes

  neighbor 2.2.2.2 remote-as 65000

  neighbor 2.2.2.2 update-source Loopback0

!

end

--------------------------------------------------------------------------------------------------------------------------

!

hostname R2

!

interface Loopback0

  ip address 2.2.2.2 255.255.255.255

!

interface Loopback22

  ip address 10.22.22.22 255.255.255.255

!

interface Loopback222

  ip address 10.222.222.222 255.255.255.255

!

interface Ethernet0/0

  ip address 10.1.1.2 255.255.255.0

  ip ospf cost 10

!

interface Ethernet1/0

  ip address 10.1.2.2 255.255.255.0

  ip ospf cost 100

!

interface Serial2/0

  ip address 10.23.1.2 255.255.255.0

!

interface Serial3/0

  ip address 10.24.1.2 255.255.255.0

!

router ospf 65000

  redistribute static metric-type 1 subnets

  network 2.2.2.2 0.0.0.0 area 0

  network 10.1.0.0 0.0.255.255 area 0

!

router bgp 65000

  bgp log-neighbor-changes

  no bgp nexthop trigger enable

  network 10.22.22.22 mask 255.255.255.255

  network 10.222.222.222 mask 255.255.255.255

  neighbor 1.1.1.1 remote-as 65000

  neighbor 1.1.1.1 update-source Loopback0

  neighbor 3.3.3.3 remote-as 65003

  neighbor 3.3.3.3 ebgp-multihop 255

  neighbor 3.3.3.3 update-source Loopback0

  neighbor 4.4.4.4 remote-as 65004

  neighbor 4.4.4.4 disable-connected-check

  neighbor 4.4.4.4 update-source Loopback0

!

ip route 3.3.3.3 255.255.255.255 Serial2/0 10.23.1.3

ip route 4.4.4.4 255.255.255.255 Serial3/0 10.24.1.4

!

end

--------------------------------------------------------------------------------------------------------------------------

!

hostname R3

!

interface Loopback0

  ip address 3.3.3.3 255.255.255.255

!

interface Ethernet0/0

  ip address 172.20.1.3 255.255.255.0

!

interface Serial2/0

  ip address 10.23.1.3 255.255.255.0

!

router bgp 65003

  bgp log-neighbor-changes

  network 172.20.1.0 mask 255.255.255.0

  neighbor 2.2.2.2 remote-as 65000

  neighbor 2.2.2.2 ebgp-multihop 255

  neighbor 2.2.2.2 update-source Loopback0

!

ip route 2.2.2.2 255.255.255.255 Serial2/0 10.23.1.2

!

end

--------------------------------------------------------------------------------------------------------------------------

!

hostname R4

!

interface Loopback0

  ip address 4.4.4.4 255.255.255.255

!

interface Ethernet0/0

  ip address 192.168.1.4 255.255.255.0

!

interface Serial3/0

  ip address 10.24.1.4 255.255.255.0

!

router bgp 65004

  bgp log-neighbor-changes

  network 192.168.1.0

  neighbor 2.2.2.2 remote-as 65000

  neighbor 2.2.2.2 disable-connected-check

  neighbor 2.2.2.2 update-source Loopback0

!

ip route 2.2.2.2 255.255.255.255 Serial3/0 10.24.1.2

!

end

--------------------------------------------------------------------------------------------------------------------------

バージョン履歴
改訂番号
1/1
最終更新:
‎08-15-2012 07:03 PM
更新者:
 
ラベル(1)