「2024-08-28 プロトコル別 断時間チューニング」の版間の差分

提供:hkatou_Lab
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の7版が非表示)
29行目: 29行目:




なお無効であっても遅延時間自体は存在する
なお無効であっても遅延時間はデフォルト値が存在する
|}
|}
{| class="wikitable"
{| class="wikitable"
73行目: 73行目:
|  -
|  -
|show spanning-tree
|show spanning-tree
|断時間を測定する ping ホストを収容するポートで portfast 未設定 + RSTP の場合、BPDU Proposal を送信して、対向側の Agreement を数十秒待機するため、断時間が延びてしまう
|断時間を測定する ping ホストを収容するポートで portfast 未設定 + RSTP の場合、BPDU Proposal を送信して、対向側の Agreement 送信を数十秒待機するため、断時間が延びてしまう




PC RSTP Agreement を返さない
 
 
PC など RSTP Agreement を返さない機器を収容するポートに、portfast を設定する
 
冗長試験では ping 端末や IXIA のポートに設定しておくのを忘れがち
|-
|[https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3650/software/release/3se/consolidated_guide/command_reference/b_consolidated_3650_3se_cr/b_consolidated_3650_3se_cr_chapter_0100.html#wp2980123731 switchport nonegotiate]
|Disable
|switchport mode dynamic auto
| -
|show interfaces switchport
|Administrative Mode Dynamic がデフォルト設定で、DTP によるネゴシエートが行われる
 
* リンクダウン冗長試験からのリンクアップ復旧時に、DTP ネゴシエーションの時間復旧が遅れる
 
 
短くしたい場合は switchport nonegotiate を設定する
|}
|}


111行目: 127行目:




ルータとスイッチで動作が異なる
 
ルータのみ up 時も設定可能
 
ISP 用途では、対向側の IX 事業者が光スイッチを切り替える際に、ローカル側の ISP で光の瞬断を検出させないように carrier-delay 値を大きくするケースが存在する <ref>[https://www.janog.gr.jp/meeting/janog26/doc/post-ixp-touda.pdf JANOG26 IXPセッション ~頑張ってトラフィック支えてます~]
 
光スイッチによる可用性向上
 
顧客間トラヒックへの影響の極小化 『顧客ルータがLink断検知しない』 ⇒ BGP peer 断しない 顧客ルータでLink断検知のconfig調整が必要な場合あり</ref>
|}
|}
{| class="wikitable"
{| class="wikitable"
304行目: 327行目:
!備考
!備考
|-
|-
|NSF /
|NSF
NSF Helper
|Disable
|Disable
|  -
|  -
|bgp graceful-restart
|bgp graceful-restart
|show ip bgp neighbors <Peer_IP>
|show ip bgp neighbors <Peer_IP>




364行目: 387行目:


対向側ピアでサブネットルートをフィルタリングしている場合に有効と思われる
対向側ピアでサブネットルートをフィルタリングしている場合に有効と思われる
復旧にかかる時間を短縮可能
|-
|-
|Enable
|Enable
427行目: 452行目:


Support for this feature was introduced only on the C9500-32C, C9500-32QC, C9500-48Y4C, and C9500-24Y4C models of the Cisco Catalyst 9500 Series Switches.</ref>
Support for this feature was introduced only on the C9500-32C, C9500-32QC, C9500-48Y4C, and C9500-24Y4C models of the Cisco Catalyst 9500 Series Switches.</ref>
|}
==== Stack ====
{| class="wikitable"
!カテゴリ
!デフォルト
!デフォルト設定
!変更値
!確認コマンド
!備考
|-
|stack-mac
|Disable
| -
|[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/17-3/command_reference/b_173_9300_cr/stack_manager_and_high_availability_commands.html#wp3566399843 stack-mac persistent timer 0]
|[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/17-3/command_reference/b_173_9300_cr/stack_manager_and_high_availability_commands.html#wp3647919377 show switch]
Mac persistency wait time: Indefinite
|MAC アドレスを使用するプロトコル・機能の、再収束を無くします
* STP ブリッジ ID
* [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/16-6/configuration_guide/b_166_lyr2_lyr3_9300_cg/b_166_lyr2_lyr3_9300_cg_chapter_011.html#con_1342634 LACP / PAgP] <ref>[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/16-6/configuration_guide/b_166_lyr2_lyr3_9300_cg/b_166_lyr2_lyr3_9300_cg_chapter_011.html#concept_F06AB167EE3B4A16AA158999901757A5 デバイス スタックおよび LACP]
LACP の場合、システム ID は、アクティブ デバイスから取得したスタック MAC アドレスが使用されます。アクティブ デバイスに障害が発生したり、スタックを離れ、スタンバイ デバイスが新しいアクティブ デバイスが変更になっても、LACP システム ID は変更されません。デフォルトでは、LACP 設定はアクティブ デバイスの変更後も影響を受けません。</ref> <ref>[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/17-3/command_reference/b_173_9300_cr/stack_manager_and_high_availability_commands.html#wp3566399843 stack-mac persistent timer]
'''(注)  '''PAgP フラップを回避するには、'''stack-mac persistent timer 0''' を使用してスタック MAC 永続待機タイマーを無期限に設定する必要があります。</ref>
* SVI <ref>'''[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/17-3/command_reference/b_173_9300_cr/stack_manager_and_high_availability_commands.html#wp3566399843 stack-mac persistent timer]'''
'''(注)''' スタック MAC アドレスを変更しない場合、レイヤ 3 インターフェイスのフラップが発生しません。</ref>
未設定の場合は、筐体切替時に Active 機の MAC を Standby 機で引き継がないため、再収束が発生し断時間となります
|}
|}


454行目: 511行目:


== Juniper ==
== Juniper ==
hold-time up <milliseconds> down <milliseconds>
set interfaces <int_id> hold-time up <milliseconds> down <milliseconds>
 
set protocols ospf overload timeout <seconds>
 
set protocols ospf3 overload timeout <seconds>
 
* BGP が未収束の状態で、OSPF でルーティングされることを防ぐ
* オーバーロード = 過負荷に見せる


== 更新履歴 ==
== 更新履歴 ==
2021/10/17 初版作成
2021/10/17 : 初版作成
 
2023/09/14 : link debounce , carrier-delay を追加


2023/09/14 link debounce , carrier-delay を追加
2024/08/28: stack-mac persistent timer 0 を追加


== 引用 ==
== 引用 ==

2024年9月12日 (木) 15:37時点における最新版

君はこのドキュメントを参考にしてもいいし、しなくてもいい

Cisco

レイヤ 1

link debounce タイマー

Catalyst 9000
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
link debouce Disable 240 ms 120 - 1200ms まで 120 刻み show interface debounce ハードウェアでリンクダウン検出を行う時間を遅延させる設定

Catalyst 9500 では IOS-XE 17.6.1- で対応

Catalyst 9600 では IOS-XE 17.3.3- で対応


RJ-45 とファイバーで遅延時間が異なる


なお無効であっても遅延時間はデフォルト値が存在する

Nexus 9000
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
link debouce Disable 0 ms 0 - 5000ms show interface debounce ハードウェアでリンクダウン検出を行う時間を遅延させる設定

0 で無効化

link-up オプションで up 時も遅延させることが可能

レイヤ 2

LAN Switching

Catalyst
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
spanning-tree portfast [trunk]


spanning-tree portfast edge [trunk]

Disable no spanning-tree portfast [trunk]


spanning-tree portfast edge [trunk]

- show spanning-tree 断時間を測定する ping ホストを収容するポートで portfast 未設定 + RSTP の場合、BPDU Proposal を送信して、対向側の Agreement 送信を数十秒待機するため、断時間が延びてしまう



PC など RSTP Agreement を返さない機器を収容するポートに、portfast を設定する

冗長試験では ping 端末や IXIA のポートに設定しておくのを忘れがち

switchport nonegotiate Disable switchport mode dynamic auto - show interfaces switchport Administrative Mode Dynamic がデフォルト設定で、DTP によるネゴシエートが行われる
  • リンクダウン冗長試験からのリンクアップ復旧時に、DTP ネゴシエーションの時間復旧が遅れる


短くしたい場合は switchport nonegotiate を設定する

レイヤ 3

carrier-delay タイマー

IOS-XE
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
carrier-delay Disable 2 seconds ルータ : [up | down] {seconds | msec milliseconds}

スイッチ : {seconds | msec milliseconds}


Cat3850 の場合

seconds : <0-60>

msec : <0-1000>

? リンクダウンをソフトウェアが検知するまでの遅延時間を制御する


歴史的に IOS はルータで使用されており、当時の貧弱な CPU リソースを保護するため、リンク フラッピングによるルーティング プロトコルの切り替え・切り戻しの再計算に時間を確保する必要があった


ルータのみ up 時も設定可能

ISP 用途では、対向側の IX 事業者が光スイッチを切り替える際に、ローカル側の ISP で光の瞬断を検出させないように carrier-delay 値を大きくするケースが存在する [1]

IOS-XR
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
carrier-delay Disable 0 second { down milliseconds [ up milliseconds ] | up milliseconds [ down milliseconds ] }


msec : <0 ~ 65535 >

show interface IOS-XR は IOS と比較して新しい Network OS であり、CPU リソースが潤沢 + ルーティング プロトコルの収束を高速に行いたいため、carrier-delay のデフォルト値は 0 秒となっている
NX-OS (Nexus5000)
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
carrier-delay Disable 0 second ?? {delay-seconds | msec milliseconds}


seconds : <0-60>

msec : <0-1000>

show interface Vlan インターフェースで使用可能

OSPF

router ospf <process_id>
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
NSF Helper Enable nsf cisco helper

nsf ietf helper

- show ip ospf


IETF NSF helper support enabled

Cisco NSF helper support enabled

隣接 NSF ルータが SSO フェイルオーバーした際、自ルータが FIB を保持する
NSF Disable - nsf show ip ospf


Non-Stop Forwarding enabled

自ルータが SSO フェイルオーバーした際、

隣接ルータで OSPF が Down しても FIB を保持してもらう

NSR Disable - nsr show ip ospf


Non-Stop Routing enabled

常時 OSPF プロセスの状態を SSO Active と Standby で同期する

実装難易度が高いため、低価格製品や IPv6 は対応していない場合が多い 自ルータが SSO フェイルオーバーした際、隣接ルータに影響を与えない

歴史的には NSF のほうが先に実装されている + IETF 標準であるため、NSF のほうが不具合が少なそう

BGP Disable - max-metric router-lsa on-startup wait-for-bgp show ip ospf


    Condition: on startup while BGP is converging, State: inactive

再起動後、BGP の経路を受信し終わるまで、LSA のメトリックを最大にして、OSPF でトラフィックを処理しない

フルルートのように収束に時間がかかる環境で有効

timers Enable timers throttle spf 5000 10000 10000


Cisco IOS XE Everest 16.5.1b 以降

timers throttle spf 50 200 5000

timers throttle spf 10 100 5000 show ip ospf


Initial SPF schedule delay 10 msecs

Minimum hold time between two consecutive SPFs 100 msecs

Maximum wait time between two consecutive SPFs 5000 msecs

単位 msec

1:SPF 遅延

2:1つ目と2つ目の SPF 計算の間の遅延

3:最大遅延

Cisco Classic IOS の OSPF はリンクダウン時に 6 秒程度の断時間が発生するが、これは最初の 5000msec の SPF 遅延時間による

  • 昔の CPU で高速に収束させると、CPU 負荷が高かったため


IOS-XE 16.5.1b 以降は、Fast Convergence Default Optimize でタイマーが高速化された

  • OSPF を設定すると、タイマーが Optimize された旨のメッセージが出力される
Enable timers throttle lsa 0 5000 5000


Cisco IOS XE Everest 16.5.1b 以降

timers throttle lsa 50 200 5000

timers throttle lsa 10 100 5000 show ip ospf


Initial LSA throttle delay 10 msecs

Minimum hold time for LSA throttle 100 msecs

Maximum wait time for LSA throttle 5000 msecs

単位 msec

1 : 最初の LSA 生成遅延

2 : 最小 LSA 生成遅延

3 : 最大 LSA 生成遅延

OSPF はリンクダウン時に 6 秒程度の断時間が発生するが、これは最初の 5000msec の時間による


IOS-XE 16.5.1b 以降は、Fast Convergence Default Optimize でタイマーが高速化された

Enable timers lsa arrival 1000

Cisco IOS XE Everest 16.5.1b 以降

timers lsa arrival 100

timers lsa arrival 80 show ip ospf


Minimum LSA arrival 80 msecs

単位 msec

LSA の最小受信間隔


IOS-XE 16.5.1b 以降は、Fast Convergence Default Optimize でタイマーが高速化された


BGP

router bgp <AS_Number>
カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
NSF Disable - bgp graceful-restart show ip bgp neighbors <Peer_IP>


Graceful Restart Capabilty:advertised and received

自ルータが SSO フェイルオーバーした際、隣接ルータで BGP が Down しても FIB を保持してもらう
NSR Disable - bgp graceful-restart

bgp sso route-refresh-enable


iBGP / eBGP : neighbor <BGP_Peer_IP> ha-mode sso

show ip bgp neighbors <Peer_IP>


  SSO is enabled

実装難易度が高いため、低価格製品や IPv6 は対応していない場合が多い

常時 BGP プロセスの状態を SSO Active と Standby で同期する

自ルータが SSO フェイルオーバーした際、隣接ルータに影響を与えない


歴史的には NSF のほうが先に実装されている + IETF 標準であるため、NSF のほうが不具合が少なそう

timers Enable bgp update-delay 120 bgp update-delay 1 - 1 つ目のピアとセッションを確立したあと、最適経路選択・経路通知を遅延させる時間


ただし、すべてのピアが Up した際は、最適経路選択・経路通知を行う

SSO かつ VSS などのクラスタリング系技術を使っており、かつ NSF / NSR を使用しておらず、論理ルータが 1 台のみの場合に使用すると、再起動後のトラフィック断を減らすことが可能

  • Ex) VSS で SSO フェイルオーバーし、再起動するまで 1 つのピアが Down しつづける時


もともとフルルートで収束に時間がかかることから動作しているタイマーであるため、フルルートの環境には向いていない

Enable bgp aggregate-timer 30 bgp aggregate-timer 0 - 0 の場合、集約ルートの広報を即時行う


有効な場合、タイマーの間サブネットルートを広報する


対向側ピアでサブネットルートをフィルタリングしている場合に有効と思われる

復旧にかかる時間を短縮可能

Enable timers bgp 60 180 timers bgp 10 30 show ip bgp neighbors


  Last read 00:00:01, last write 00:00:09, hold time is 30, keepalive interval is 10 seconds

キープアライブタイマーを 60 -> 10 秒、

ホールドダウンタイマーを 180 -> 30 秒に変更する


eBGP フルルート環境だとここまで短縮している例は見た記憶が無い

  • フルルートの受信に数分 - 十数分程度はかかるため、BGP ピアが Flap するのは CPU 使用率の観点から避けたい


eBGP では 15 / 45 , 20 / 60 くらいが一般的と思われる

BGP Additional Paths (PIC-Edge) Disable - bgp additional-paths select all

bgp additional-paths send receive

neighbor <Peer_IP> additional-paths send receive

show ip bgp neighbors


  Additional Paths send capability: advertised

  Additional Paths receive capability: advertised

バックアップ BGP ルートを RIB に保持することで、アクティブな FIB ルートが削除された際、すぐに切り替えられる機能
  • EIGRP のフィージブル サクセサと類似している



特に無効時のフルルート環境はルートを受信し終わるまで、ルート未受信の宛先トラフィックがダウンし続けてしまう

有効にすることで即時に FIB を切り替えられ、断時間を大幅に短くできるため、有効な機能といえる


有効時にピアが Down / Up するため、メンテナンス時間が必要


また、RIB の保持にメモリを使用するため要注意

  • FIB のルート数は足りているのに、RIB の消費メモリ量が多くなりすぎて、BGP が Flap する事例があった
  • 発生してしまった場合は、soft-reconfiguration inbound とともに Add-path は削除すると良い


スイッチではあまり対応していない

  • Catalyst 9500 では非サポート [2]
  • Catalyst 9500H では 16.8.1a- サポート [3]

Stack

カテゴリ デフォルト デフォルト設定 変更値 確認コマンド 備考
stack-mac Disable - stack-mac persistent timer 0 show switch


Mac persistency wait time: Indefinite

MAC アドレスを使用するプロトコル・機能の、再収束を無くします

未設定の場合は、筐体切替時に Active 機の MAC を Standby 機で引き継がないため、再収束が発生し断時間となります

用語解説

SSO = Stateful Switch Over.

ルータのルートプロセッサや、スイッチのスーパーバイザエンジンを、なるべく断時間が短くなるように切り替える仕組みのこと。

よくある勘違いとして、以下がある。

  • 勘違い : SSO + NSF 切替時は OSPF や BGP が隣接ルータでダウンしない (実際にはダウンする)
    • ネイバー・ピア ダウンしても NSF Helper で転送させる、NSR でダウンさせないなどの対処が必要
    • NSF はネイバー・ピア ダウンしても、FIB を保持する技術
  • 勘違い : HSRP も SSO により短時間で切り替えられる
    • 機種によるが、SSO Aware HSRP 機能が必要
    • ない場合は HSRP が両系でダウンするため、十数秒単位でトラフィック断が発生する

リファレンス

Change of Default OSPF and IS-IS SPF and Flooding Timers and iSPF Removal

BGP の追加パス

IGP/LDP/BGP Convergence Tuning (IOS/IOS-XE)



Juniper

set interfaces <int_id> hold-time up <milliseconds> down <milliseconds>

set protocols ospf overload timeout <seconds>

set protocols ospf3 overload timeout <seconds>

  • BGP が未収束の状態で、OSPF でルーティングされることを防ぐ
  • オーバーロード = 過負荷に見せる

更新履歴

2021/10/17 : 初版作成

2023/09/14 : link debounce , carrier-delay を追加

2024/08/28: stack-mac persistent timer 0 を追加

引用

  1. JANOG26 IXPセッション ~頑張ってトラフィック支えてます~ 光スイッチによる可用性向上 顧客間トラヒックへの影響の極小化 『顧客ルータがLink断検知しない』 ⇒ BGP peer 断しない 顧客ルータでLink断検知のconfig調整が必要な場合あり
  2. Unsupported Features: Cisco Catalyst 9500 Series Switches Border Gateway Protocol (BGP) Additional Paths
  3. Feature History for BGP Additional Paths Support for this feature was introduced only on the C9500-32C, C9500-32QC, C9500-48Y4C, and C9500-24Y4C models of the Cisco Catalyst 9500 Series Switches.
  4. デバイス スタックおよび LACP LACP の場合、システム ID は、アクティブ デバイスから取得したスタック MAC アドレスが使用されます。アクティブ デバイスに障害が発生したり、スタックを離れ、スタンバイ デバイスが新しいアクティブ デバイスが変更になっても、LACP システム ID は変更されません。デフォルトでは、LACP 設定はアクティブ デバイスの変更後も影響を受けません。
  5. stack-mac persistent timer (注)  PAgP フラップを回避するには、stack-mac persistent timer 0 を使用してスタック MAC 永続待機タイマーを無期限に設定する必要があります。
  6. stack-mac persistent timer (注) スタック MAC アドレスを変更しない場合、レイヤ 3 インターフェイスのフラップが発生しません。