装置に障害が発生した時に通信を止めることが許されないのと同じように,オペレーションによって通信が止まることも許されません。オペレーションの中で通信を維持するのが難しいものの一つがソフトウエアのアップデートです。ここでは,ソフトウエアのアップデート時の動作について見ていきましょう。

ソフトウエア・アップデート時も通信を止めない

 アラクサラネットワークスのルーター/LANスイッチでは,ソフトウエアをアップデートする際も2重化を利用します。以下,これまでと同様に,AX6700Sを例に説明します。

 コントロール・エンジンやフォワーディング・エンジンのソフトウエアをアップデートする必要が生じた場合でも,ネットワークを止められないケースは多々あります。ネットワークはすでに情報インフラの地位を確立しており,常時稼働しているのが当たり前になっているからです。特に,アラクサラのルーター/LANスイッチのように,通信事業者の網の中で使われる装置となると,ソフトウエアをアップデートする際に,ハードウエアのパケット転送はもちろん,各種プロトコル処理も止めてはなりません。

 ソフトウエアのアップデート時でも装置を止めないためには,以下の三つの課題があります。それは,(1)異なるバージョンのソフトウエア間でも2重化の情報を同期できること,(2)ソフトウエアのアップデート中も経路変更などのプロトコル処理を受け付けること,(3)バージョンアップ/バージョンダウンの両方に対応すること――です。

 システムを稼働させながら,2重化されたモジュールを同時にアップデートするのは不可能です。片側でシステムを稼働させつつ,もう片方のソフトウエアをアップデートするという方法をとらざるを得ません。そうなると,片側をアップデートした後は,2重化されたモジュールで異なるバージョンのソフトウエアが動くことになります。そのため,異なるバージョン間での情報同期が必要になるのです。

 また,アップデート作業は時間のかかる作業です。その間のプロトコル状態の変更に対応できないと,結果としてネットワークを停止させてしまうことになってしまいます。そのため,バージョンアップ作業中においてもプロトコル処理は継続し,ハードウエアの設定やフォワーディング・テーブルの更新などを実施できなければいけません。

 もう一つ重要な点はバージョンダウンです。アップデート作業は厳密なスケジュールに則って行われる場合も多く,決められた時間内に作業を完了する必要があります。万が一トラブルが発生した場合には,元のバージョンに戻して復旧した上でアップデートの作業自体を延期することもあり得ます。このように,作業途中から旧バージョンに戻すバージョンダウン作業にも対応している必要があります。通信を止めないソフトウエア・アップデートとは,バージョンアップだけでなくバージョンダウンもできる必要があるわけです。

2重化を利用してソフトウエアをアップデートする

 それでは具体的にAX6700Sのソフトウエア・アップデートの手順を見ていきましょう(図8)。

図8●2重化を利用したソフトウェアアップデート手順
図8●2重化を利用したソフトウェアアップデート手順
待機系のアップデートと2重化系の切り替えを組み合わせた手順で,通信を止めずにソフトウエアをアップデートする。

 手順は大きく4段階に分かれます。それは,[手順1] 待機系コントロールエンジンに新ソフトウエアをインストールする,[手順2] コントロールエンジンを切り替え,新バージョンを運用系として動作開始,[手順3] 旧運用系のコントロールエンジンをアップデートし,両方を新バージョンとする,[手順4] コントロールエンジンを切り替え,元の状態に戻す――です。

 [手順1]では,待機系のコントロール・エンジンに新ソフトウエアをインストールし,待機系のみ再起動します。再起動前の運用系は正常時と同様に動作し,プロトコル処理やハードウエアのパケット転送には変化ありません。待機系が再起動すると,2重化の情報同期をやり直します。この時,異なるバージョン間での情報同期となります。装置内イーサネットによる通信での同期においては,パケットのフォーマットや内容について上位・下位双方の互換性が必要であり,異なるバージョンのコントロール・エンジンで解釈できるようにしておかなければなりません。旧バージョンが新バージョンのパケットを解釈する必要もあります。

 また,同様に,フォワーディング・エンジンの同期専用メモリーに格納されている異なるバージョンの情報にもアクセスできなければいけません。こちらも上位・下位双方の互換性が必要であり,新バージョンが書き込んだ情報を旧バージョンが読み込みます(図9)。

図9●異なるバージョン間の情報同期
図9●異なるバージョン間の情報同期
運用系・待機系が異なるバージョンのソフトウエア間でも情報を同期できるようにする。
[画像のクリックで拡大表示]

 [手順2]では,コントロール・エンジンの2重化切り替えを行い,新バージョンのコントロール・エンジンが運用系となり動作を開始します。新バージョンの機能拡張などによりハードウエア制御の処理が変更になる場合がありますが,このような場合でもハードウエア処理は停止させずパケット転送は継続できるようにします。

 [手順3]~[手順4]は,両方のコントロール・エンジンを新バージョンに揃えて運用状態を元に戻す手順です。これが完了するとソフトウエアのアップデート作業は終了です。

 [手順1]~[手順4]において,待機系を再起動した時の情報同期処理は,全情報を再同期するので,情報量に応じた時間を要します。この間も通常の動作を継続しており,プロトコル情報の更新に伴うフォワーディング・テーブルの更新やハードウエア状態の変更などは随時処理します。同期と情報のアップデートは並行して行えるように作りこまれています。

同期情報の一貫性の作りこみが重要

 ルーターやLANスイッチは運用期間が長く,5~10年,時にはそれ以上の期間使用され,その間に度々ソフトウエアをアップデートする必要が生じます。その間,同期する情報の一貫性は維持しなければなりません。また,アップデート対象となるソフトウエアのバージョンはあらゆる組み合わせが可能でなければならず,特別なバージョンに依存しないことが重要です。製品に求められる機能は年々複雑になり,実装も進化しますが,情報の同期に関する仕様を維持することは最優先課題です。長い期間のすべての機能開発において不整合が発生しないよう考慮して実装しています。

 以上のように,ルーター/LANスイッチは,突然の障害やソフトウエア・アップデート,モジュール交換などのオペレーションにおいてユーザーの通信を通常通りに継続するために装置内のモジュールを2重化する仕組みを持っています。さらに,単にモジュールを2重化するだけでなく,システムが全体が停止しないような仕組みがソフトウエアで作りこまれているのです。

林 剛久(はやし たけひさ) アラクサラネットワークスCTO
1980年に日立製作所入社。メインフレームやUNIXサーバーなどのコンピュータ関連開発に従事したのちに,1998年よりルーターおよびスイッチ開発チームの責任者となる。独自開発ASICのハードウエア転送によるハイエンド高速ルーター/スイッチ・シリーズを製品化。また,世界に先駆けてIPv6を実装し,実用化をリードする。現在,日立製作所とNECが合弁で立ち上げたルーター/スイッチ事業会社であるアラクサラネットワークスのCTOを勤める。(アラクサラネットワークスのホームページ

野崎 信司(のざき しんじ) アラクサラネットワークス 第一ソフト開発部
1996年に日立製作所入社。以来,ネットワーク機器のソフトウエア開発に従事し,STPやGSRPといったレイヤー2機能などを担当した。現在はアラクサラネットワークスにて高信頼化や高機能化などの技術検討・開発に取組んでいる。