この記事は、データセンター スイッチの Distinguished Engineer である Sundar Iyer によるブログ「How Assurance Fundamentally Changes Networking」(2018/1/30)の抄訳です。
宇宙飛行士になろうという「インテント(意図)」を抱いたとき、あなたはまだ 6 歳でした(覚えていないかもしれませんが)。インテントはすばらしいものですが、宇宙飛行士が宇宙空間を生き抜くためには、それだけでは十分ではありません。金星の大気圏内に入ったときに突然ビープ音が鳴り出したと想像してください。持続的な温度上昇から保護するための宇宙服の熱シールドが、臨界温度に達しようとしています。しかし、通信デバイスから、指令センターの励ましの声が聞こえてきます。「シールドは持ちこたえるから大丈夫。いつでもサポートできるから安心しろ」。これが「アシュアランス(保証)」というものではないでしょうか。
大規模で複雑なシステムを管理するときには、インテント アシュアランス、つまり、自分が意図したとおりにシステムが機能する保証があればよいのにと願いたくなります。しかし、Roland Acra がブログ Introducing the Cisco Network Assurance Engine(邦訳:Cisco Network Assurance Engine の導入)で述べているように、現在のデータセンターでは、ほとんどすべてがリアクティブに行われています。変更管理(新しいセキュリティ ポリシーでデータベースのアクセスがブロックされた)、日常の運用(プライマリ メール サーバにアクセスできないので、午前 2 時にネットワーク オペレータに電話しなければならない)、コンプライアンス(ファイアウォールをバイパスする WAN ポートに LAN ケーブルを直接接続してしまった(これは実際に起きたことです))など、挙げればきりがありません。
アシュアランスとは
アシュアランスとは、インテントどおりにネットワークが継続的に稼働するという保証です。しかしこのインテントには、ネットワーキングのアンダーレイやオーバーレイの管理(ルート、VLAN、サブネット、BGP など)から、テナントおよびアプリケーション レベルのポリシーや状態(セキュリティ、QOS、VM 移行など)まで、あらゆるものが含まれます。
データセンターのインテントは、ロード バランサ、ファイアウォール、VM オーケストレータなど異種のデバイスでも指定され、HIPAA や PCI のコンプライアンスなどのビジネス インテントを超越することもあります。実際、データセンターで行われるあらゆることの背後に、インテントが存在しています。
何らかの方法でこのインテントを魔法のように保証することができたら、どんなにいいでしょう。
そう簡単にはいきません。データセンターは複雑にできています。何万もの設定がプログラミングされています。そうした設定間のインタラクションと、動的な状態とデータ パスの状態を示す何百万ものインスタンスが正確であることが、継続的に確保されなければなりません。
たとえば Skype トラフィックの接続が断続的にとぎれる問題があったとします。その根本原因は、アプリケーション、デバイス、セキュリティ ポリシー、帯域幅などのさまざまな要素とは関係のないものでした。原因は、BGP 経由で動的にインポートされたサブネットのオーバーラップによって、ビデオ トラフィックが誤った方向に送信されたことにありました。
意図しない相手に会話が漏れてしまうことを想像してください。セキュリティが休眠状態になっていたのです。これはまずい状況です。
膨大な複雑さ。この問題の重大性は、データセンターに対するインプット(何千もの設定、動的な状態など)だけでなく、状態空間についても考慮することによって、明らかになります。
たとえば、1 万のセキュリティ ポリシーが適用されているとします。従来セキュリティ ポリシーは、パケット ヘッダーのフィールドで定義され、概ね 144 ビットにわたって指定されていました。つまり、パケット ヘッダーの可能性が 2144 通りもあり、それらについてセキュリティ インテントを正しく保証しなければならないことになります。これは大変な数です。私が 6 歳のころに知っていた最も大きな数は、10 億でした。2144 はそれよりもずいぶん多い数です。
ポリシーが正しく設定されていることをチェックするために、そこまで膨大なテスト パケットを送信するのは理不尽です。まったく過酷な仕事です。
人的ミス。すでに退職したオペレータによって過去に追加されていた 1 万ものセキュリティ ポリシーに、さらに 2 ~ 3 のセキュリティ ポリシーを追加する仕事を命じられたら、どうしますか。過去に設定されたポリシーの組み合わせが、新規のものと重複していたらどうでしょう。それは、パケット ヘッダーの 2144 通りの可能性のうちの 1 つなのです。また、追加する数が 100 だったらどうしますか。設定の大波に押し流されてしまうのではないでしょうか。
複数のベンダー製のデバイスを管理し設定するとなれば、事態はさらに困難になります。ロード バランサ、VM、ネットワークの同期が失われたらどうなるでしょうか。これは人的ミスか動的な問題か、あるいは何か他の原因があるのでしょうか。こうした問題の根本原因を特定するにはどうすればよいでしょうか。ことわざで言うところの「干し草の中の 1 本の針」は、どうしたら見つけられるでしょうか。
窮地を救う数学。多くの人は大きな数字を見ると圧倒されますが、数学者はそうではありません。無限大にすら慣れていると言う数学者もいます(しかし、それはここでの話とは関係ありません)。ここで求められるのは、1 つの抽象モデルを作り上げて、非常に広大かつ抽象的な状態空間を網羅する合理的な理論を構築するためのスマートな手法を開発することです。
数学者はこれを形式的手法と呼びます。この概念は新しいものではありません。すでにスタンフォード大学、イリノイ大学、コーネル大学、カリフォルニア大学バークレー校、テキサス大学オースティン校、海軍大学院、パデュー大学、プリンストン大学や、産業界の研究所、さらには新興企業の研究者が、この分野において将来性のある研究や製品開発を行っています。産業界では、失敗すると甚大な損失が出てしまう分野で、形式的手法が利用されます。半導体メーカーは、何十億ものトランジスタを出荷する前に、形式的検証を実施しています。宇宙産業でも形式的検証が行われています(冒頭の熱シールドの話を思い出してください)。そして私たちソフトウェア業界でも、多数の形式的ツール(静的チェック、動的テスト、コード検証、メモリのプロファイリング)を使用して、アプリケーションの正常性を確保しています。
私たちネットワーク オペレータは羨望のため息を漏らすしかありませんでした。しかし状況は変わっています。
ネットワーク業界におけるモデルベースのアシュアランス
2015 年の終わりに、私たちは、形式的な数学的手法の恩恵をデータセンター内のネットワーク オペレータのために活用することを目的として、Candid Alpha Team を立ち上げました。このチームの目標は、高度に差別化された包括的なソリューションをこれまでにないスピードで提供することにあります。その結果、インテントベースのソフトウェア定義型ネットワーク データセンターにクローズドループ アシュアランスを提供し、自己修復ネットワークの基盤となる、初めてのソリューションが完成しました。
このすばやいイノベーションと実行はどのように達成されたのでしょうか。そこには、アドバンスド サービスや、技術運用チーム、そしてシスコのソフトウェア定義型アプリケーション セントリック インフラストラクチャ(ACI)データセンター ネットワークを構築してテストするソフトウェア/ハードウェア/QA エンジニアから学んだ、数十年にわたる専門知識が活用されています。
その専門知識を活用することで、お客様にとって最も重要な問題をモデリングすることができました。
70 % のネットワーク障害の原因になっている 10 % の理由とは何か。
データセンターのオペレータが誰でも実践すべき行動とは何か。
包括的であること。ACI のような、大規模インテントベース ネットワークの動作をモデリングできるシステムを構築するには、非常に複雑な手順が必要になります。包括性を確保するために、私たちはネットワークのあらゆる側面(アンダーレイ/オーバーレイ/テナント ネットワーク)をモデリングしました。正確なモデルを構築するために、コントローラ、スイッチ ソフトウェア、さらには(適切な場合には)スイッチ ハードウェアから情報を収集しました。そしてプロトコル、セキュリティ、VLAN、エンドポイント、VM、ポート、ルート、BGP とのインタラクション、リソース、テナントなどをはじめ、さまざまな要素をモデリングしました。
私たちは複数の方法でモデリングの範囲を急速に広げています。第 1 に、F5 および Citrix ロード バランサ、ファイアウォール、仮想マシン オーケストレータ/ハイパーバイザなどのサードパーティ製デバイスとネットワークとのインタラクションをモデリングしています。第 2 に、Splunk や ServiceNow などのサードパーティ製運用ツールチェーンとの統合を確立しました。第 3 に、Turbonomic などのワークロード最適化ツールとの統合を確立しつつあります。これは壮大な仕事であり、個人的にも非常に勉強になっています。こんな言葉を聞いたことがないでしょうか。「教えるモデリングすることができるまでは、何かを本当に知ったことにはならない」。
私たちは社内向けの正式な検証ツールを開発し、徹底してモデルの最適化を行い、設置面積が小さいサーバでもモデルを実行できるようにしました。最初のバージョンは 3 つの VM だけで動作するものですが、すでに 100 リーフを超える規模をサポートしています。
確実なアシュアランス。形式的な数学的手法の背後には、ネットワークの抽象的表現を正確に構築するという主要目的があります。モデルを利用することで、ネットワークで発生し得るあらゆる動作について考察し、不測の事態に備えることができます。
つまり、ネットワーク運用を、予測的かつプロアクティブなものにすることができるのです。たとえばフロー数が 5 万のネットワークで、発生し得る新たなフローがインテントどおりに動作するかどうかを予測することができます。新しいルート、ネットワークに新たに追加される VM、データセンターに新たに適用されるポリシーなどについても、同じことが言えます。
これは従来とは根本的に異なるアプローチです。たとえば、「現在、ヘルスケア アプリケーションが患者データベース サーバに接続されている」と確認することと、データセンターの現在の構成と動的な状態に基づいて「他のサーバがその患者データベースにアクセスすることは絶対にない」と証明することはまったく別物であり、後者のほうがはるかに困難です。モデルを利用すれば、そうした複雑な問いを構成して証明を行い、インテントを保証することができます。
これからの数回のブログ記事で、このテクノロジーの可能性を詳しく探っていきたいと思います。なぜ今モデルベースのアシュアランスが重要なのか、そして、なぜインテントによる裏付けでアシュアランスが強化されるのか、その理由を説明します。また、アシュアランスによって実現可能なことと不可能なことについて論じます。
Hasta la vista。きっと、またお目にかかれることでしょう。アシュアランス(保証)します。