マイクロソフトは、主要な Azure 管理ツールの 1 つである、ネットワークのダウンタイムを引き起こすバグの約 70% を防止するために設計されたシミュレーターを世界に公開しました。
CrystalNet と呼ばれるこのシミュレーターは、Microsoft Research が管理者向けに作成した設計ツールで、定期的なメンテナンスやアップグレード中のダウンタイムを回避するのに役立ちます。
レドモンドは、CrystalNet を「クラウド規模の高忠実度ネットワーク エミュレーター」であり、「実稼働構成がロードされたコンテナーと仮想マシンのネットワークで実際のネットワーク デバイス ファームウェアを実行する」ものだと説明しています。
著者らが、米国計算機協会(ACM)の2017年オペレーティングシステムと原理に関するシンポジウムで発表した論文[PDF]で説明しているように、彼らは「ネットワークの停止の6%の原因となっている」人為的エラーを含む、さまざまな種類の障害モードにも対処したいと考えていました。
以下の表は、Microsoft が CrystalNet の作成中に収集した 2 年間分の停止データの詳細を示しています。
原因 | 割合(%) | 例 |
---|---|---|
ソフトウェアのバグ | 36 | ルーター、ミドルボックス、管理ツールのバグ |
設定バグ | 27 | 間違ったACLポリシー、トラフィックのブラックホール、ルートリーク |
人為的ミス | 6 | 誤入力、予期せぬ設計上の欠陥 |
ハードウェア障害 | 29 | ASICドライバの障害、サイレントパケットドロップ、ファイバー切断、停電 |
身元不明 | 2 | 一時的な障害 |
CrystalNet は表の最後の 2 つの項目をカバーしていませんが、それでも Azure で問題が発生する原因の 69% をカバーしています。
問題の説明は非常に困難です。CrystalNet の目的は、クラウド規模のネットワークにおいて、ルーティング ソフトウェアのバグや、2 つのベンダーが同じプロトコルを異なる方法で実装しているために発生する相互運用性の障害 (機能停止の最大 36%) に対処できるシミュレーションおよび検証環境を作成することです。
このシステムは、ほぼすべてのベンダーが環境を仮想化する動きを活用しています。これにより、研究者はAzureネットワークのコントロールプレーンをコンテナ環境に複製することができました。
「CrystalNetは、仮想サンドボックス内で実際のネットワークデバイスのファームウェアを実行します。…デバイスサンドボックスを仮想リンクで相互接続することで、実際のトポロジを模倣します。エミュレートされたデバイスに実際の構成を読み込み、エミュレートされたネットワークに実際のルーティング状態を注入します。」
ユーザー向けに、ソフトウェアには、以下に示すように、シミュレーションを構成、作成、削除したり、テストを実行したり、ネットワークの状態を観察したりするための API が含まれています。
レドモンド自身も CrystalNet の導入に満足しており、移行中も本番環境のトラフィックは継続していたものの、地域の Azure ネットワークを「ユーザーに影響を与えるインシデントゼロ」で標準化されたアーキテクチャに移行するのに貢献したと述べています。
この論文は、Microsoft Azure と Microsoft Research のスタッフである Honqiang Harry Liu、Yibo Zhu、Jitu Padhye、Jiaxin Cao、Sri Tallapragada、Nuno Lopes、Andrey Rybalchenko、Guohan Lu、Lihua Yuan によって執筆されました。 ®