StarOS (ASR5500, VPC) にて ICSR (Interchassis Session Recovery) 冗長構成を取る時の、 active / standby 決定と route modifier (通称 rtmod) の関係について説明します。
Node-A / Node-B の ICSR ペアにて、両系初期起動時に Node-A が active になって欲しい場合、Node-A に「chassis-mode primary」と設定しているかと思います。
(Node-A の config 抜粋)
context SRP
service-redundancy-protocol
chassis-mode primary
ICSR に使われる SRP (Service Redundancy Protocol) プロトコルにて、active / standby は「rtmod 値の小さい方が active になる」という規則で決められています。rtmod 値は、SRP Hello というメッセージで定期的に相手に伝えることで相互に把握され、切替動作が発生する度に値が増えて行き 0 から 32 の間で推移します。また、ノード起動時には「primary と設定した方は 33、設定していない方は 34」という仮の rtmod 値で立ち上がるようになっています。
起動時の推移
両系起動時の推移はこのようになっています。
- 両系起動時: Node-A (rtmod = 33) / Node-B (rtmod = 34)
- SRP Hello交換: お互いの値を知る
- Active側決定: Node-A (rtmod = 0) / Node-B (rtmod = 1)
「primary と設定した方が rtmod = 0 で active になる」と記憶している方も多いと思いますが、実際には仮の値を経てそのようなステータスに落ち着いています。なお、ノードを再起動した際には「以前の rtmod 値を記憶しておらず」、再起動直後はやはり仮の rtmod 値 (33 か 34) をもっています。
切替発生時の推移
その後、計画的に切替動作を起こした場合の推移はこのようになっています。
- Node-A にて「srp initiate-switchover」コマンドを発行し手動切替を実施
- Node-A から switchover request メッセージが出る
- Node-B から switchover response success メッセージが返る
- Node-B は active に推移し、rtmod = 1 のまま (変更する必要がない)
- Node-A は standby に推移し、rtmod = 2 となる (Node-B よりも1つ大きい値になる)
更に切替動作が繰り返されると、rtmod 値は上記の流れで大きくなっていきます。実際にあまり大きな値を見たことがないという方は、以下のような設定が入っていないか確認してみてください。下記の設定の場合、rtmod の値が 5 まで進んだ場合は 0 に戻るようになります。
(Node-A, Node-B の config 抜粋)
context SRP
service-redundancy-protocol
route-modifier threshold 5
ここで説明した active / standby の関係や rtmod の値は、「show srp info」コマンドで確認できます。
(出力例)
show srp info
Service Redundancy Protocol:
-------------------------------------------------------------------------------
Context: SRP
Local Address: 192.168.1.1
Chassis State: Active <-----
Chassis Mode: Primary
Chassis Priority: 100
Local Tiebreaker: 5E-04-00-04-00-00
Route-Modifier: 0 <-----
Peer Remote Address: 192.168.1.2
Peer State: Standby <-----
Peer Mode: Backup
Peer Priority: 125
Peer Tiebreaker: 5E-04-00-02-00-00
Peer Route-Modifier: 1 <-----