Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Contrail でのアンダーレイ オーバーレイ マッピング

概要:Contrail Analytics を使用したアンダーレイ オーバーレイ マッピング

手記:

このトピックは、Contrail Networking リリース 2005 以前に適用されます。Contrail Networking リリース 2008 以降では、パケットがネットワーク内でたどるパスを表示できるようになりました。 トポロジービューでのパケットパスの表示を参照してください。

今日のクラウドデータセンターは、相互接続されたサーバーの大規模な集合体で構成されており、さまざまなアプリケーションを実行するためのコンピューティング能力とストレージ容量を提供します。サーバーは冗長TORスイッチで接続され、TORスイッチはスパインルーターに接続されます。クラウド展開は通常、複数のテナントによって共有され、通常、各テナントには複数の分離されたネットワークが必要です。複数の孤立したネットワークは、アンダーレイまたは物理接続上にトンネル(gre、ip-in-ip、mac-in-macなど)を形成することによって作成されるオーバーレイネットワークによって提供できます。

データがオーバーレイネットワーク内を流れると、Contrail はアンダーレイ ネットワーク内のトラフィックの統計情報を提供し、可視化できます。

Contrail でアンダーレイ オーバーレイ分析を利用可能

Contrail では、Contrail Web ユーザ インターフェイスで、アンダーレイ トラフィックとオーバーレイ トラフィックに関連するさまざまな分析を表示できます。以下は、オーバーレイ アンダーレイ トラフィックの統計と可視化のために Contrail が提供する分析の一部です。

  • アンダーレイ ネットワークのトポロジーを表示します。

    物理アンダーレイ ネットワークのユーザー インターフェイス ビューで、接続されているサーバー(Contrail Compute)とサーバー上の仮想マシンを表示します。

  • トポロジー内の任意の要素の詳細を表示します。

    2 つの要素間の pRouter、vRouter、または仮想マシン リンクの詳細を表示できます。また、選択した要素に対応するグラフィカルビューでトラフィック統計を表示することもできます。

  • オーバーレイ フローのアンダーレイ パスを表示します。

    オーバーレイ フローを指定すると、そのフローに使用されるアンダーレイ パスを取得し、トポロジ ビューでパスをマッピングできます。

アーキテクチャとデータ収集

オーバーレイ フローをアンダーレイ パスにマッピングするためのデータの蓄積は、Contrail モジュール間で複数の手順で実行されます。

以下は、重要な手順の概要です。

  1. SNMP コレクター モジュールは、物理ルーターをポーリングします。

    SNMP コレクター モジュールは、Contrail 設定モジュールから物理ルーターの認証と設定を受け取り、SNMP プロトコルを使用してすべての物理ルーターをポーリングします。コレクターは、データを Contrail 分析コレクターにアップロードします。SNMP 情報は、pRouter UVE(物理ルーター ユーザーに見えるエンティティ)に保存されます。

  2. フロー統計の収集には、IPFIX プロトコルと sFlow プロトコルが使用されます。

    物理ルーターは、収集プロトコルの1つであるInternet Protocol Flow Information Export(IPFIX)または sFlow(レイヤー2でのパケットエクスポートのサンプリングフローの業界標準)を使用して、フロー統計情報をコレクターに送信するように設定されています。

  3. トポロジ モジュールが SNMP 情報を読み取ります。

    Contrail トポロジ モジュールは、分析 API から pRouter UVE から SNMP 情報を読み取り、ネイバー リストを計算して、ネイバー情報を pRouter UVE に書き込みます。このネイバー リストは、物理トポロジーを表示するために Contrail WebUI によって使用されます。

  4. Contrail のユーザー インターフェイスは、トポロジと統計情報を読み取り、表示します。

    Contrail ユーザー インターフェイス モジュールは、Contrail 分析からトポロジ情報を読み取り、物理トポロジを表示します。また、分析に保存された情報を使用して、リンク統計のグラフを表示したり、アンダーレイ ネットワーク上のオーバーレイ フローのマップを表示したりします。

アンダーレイ オーバーレイ マッピングの新しいプロセス/サービス

contrail-snmp-collectorcontrail-topology は、どちらも contrail-analytics ノードに追加される新しいデーモンです。contrail-analytics パッケージには、これらの新機能とその関連ファイルが含まれています。contrail-status に新しいサービスが表示されます。

例:contrail-status

次に、 contrail-status を使用して、アンダーレイ オーバーレイ マッピングの新しいプロセスとサービスのステータスを表示する例を示します。

例:サービス コマンド

service コマンドを使用して、新しいサービスを開始、停止、および再起動できます。次の例を参照してください。

アンダーレイ オーバーレイ マッピングのための外部インターフェイス設定

このセクションでは、Contrail 分析でアンダーレイ オーバーレイ マッピングを成功させるために必要な外部インターフェースの設定について説明します。

物理トポロジー

一般的な物理トポロジーには、次のようなものがあります。

  • ToR スイッチに接続されたサーバー。

  • スパインスイッチに接続されたToRスイッチ。

  • コアスイッチに接続されたスパインスイッチ。

次に、トポロジーが Contrail WebUI 分析でどのように表示されるかの例を示します。

図 1: 分析トポロジー Analytics Topology

SNMP 設定

contrail-snmp-collectorがSNMPデータを読み取れるように、物理デバイスにSNMPを設定します。

以下に、ジュニパーネットワークス デバイスからの SNMP 設定例を示します。

set snmp community public authorization read-only

IPFIX と sFlow の設定

フローサンプルは、物理デバイスによって contrail-collector に送信されます。 contrail-collector はフロー サンプルを受信するための sFlow プロトコルと IPFIX プロトコルをサポートしているため、MXシリーズ デバイスや ToR スイッチなどの物理デバイスは、これらのプロトコルのいずれかを使用してサンプルを送信するように設定する必要があります。

例:sFlow 設定

次に、sFlow の構成例を示します。サンプルでは、IP 変数 <source ip>は、sflow 送信元として機能するデバイスに到達可能なループバックまたは IP を指し、もう 1 つの IP 変数 <collector_IP_data> はコレクター デバイスのアドレスです。

例:IPFIX の設定

以下は、ジュニパーネットワークスデバイスからのIPFIX設定の例です。IP アドレス変数 <ip_sflow collector> は sflow コレクター(制御コレクター分析ノード)を表し、 <source ip> はコレクターにフローデータを送信するために使用されるルーター/スイッチ デバイス上の送信元(発信)インターフェイスを表します。Contrail クラスタから到達可能な場合は、lo0 アドレスにすることもできます。

Contrail の SNMP コレクターへの pRouter 情報の送信

完全な分析情報を読み取って表示するには、物理デバイスに関する情報をSNMPコレクターに送信する必要があります。通常、pRouter 情報は contrail-config から取得されます。

contrail-configからpRouter情報を取得するSNMPコレクター

物理ルーターを contrail-config に追加するには、Contrailのユーザーインターフェイスを使用するか、直接API、プロビジョニングなどのスクリプトを使用します。設定が contrail-configに入ると、 contrail-snmp-collectorcontrail-configから物理ルーター情報を取得します。SNMP コレクターは、このリストとその他の設定パラメーターを使用して、SNMP クエリを実行し、pRouter UVE に入力します。

図 2:[Add Physical Router] ウィンドウ Add Physical Router Window

pRouter UVE

pRouter UVE には、次の形式の URL を使用して、 contrail-analytics-api からシステムの REST API からアクセスします。

http://<host ip>:8081/analytics/uves/prouters

以下は、pRouter REST API からの出力例です。

図 3: pRouter REST API Sample Output From a pRouter REST APIからの出力例

pRouter UVE の詳細は、次の形式の URL を使用して、システムから取得できます。

http://<host ip>:8081/analytics/uves/prouter/a7-ex3?flat

以下は、pRouter UVE の出力例です。

図4:pRouter UVESample Output From a pRouter UVEからの出力例

アンダーレイ オーバーレイ分析用の Contrail ユーザー インターフェイス

トポロジー ビューと関連機能には、Contrail Web ユーザー インターフェイスの [ Monitor > Physical Topology] からアクセスします。

Web UI での物理トポロジーの有効化

Contrail Web UI で [Physical Topology ] セクションを有効にするには、次の手順を実行します。

  1. すべてのcontrail-webui ノードの /etc/contrail/config.global.js ファイルに次の行を追加します。
  2. webui スーパーバイザーを再起動します。

    service supervisor-webui restart

    [ Physical Topology] セクションが Contrail Web UI で使用できるようになりました。

仮想マシン レベルでのトポロジの表示

Contrail のユーザー インターフェイスでは、表示されたトポロジーを仮想マシン レベルまでドリルダウンできます。次の図は、a7s36 vRouter でインスタンス化された仮想マシンと、それぞれに関連する完全な物理トポロジーを示しています。

図 5: vRouter Physical Topology Related to a vRouterに関連する物理トポロジー

トレース フロー

[ Trace Flows ] タブをクリックして、アクティブなフローのリストを表示します。フローのパスを表示するには、アクティブなフローリストでフローをクリックし、[ フローをトレース] ボタンをクリックします。選択したフローがアンダーレイでたどったパスが表示されます。次に例を示します。

図 7: アクティブなフロー List of Active Flowsのリスト

トレース フロー機能の制限

トレース フロー機能は、ip traceroute を使用してフローに関与する 2 つの vRouter 間のパスを決定するため、パス内のレイヤ 2 ルータがリストされていないため、トポロジに表示されないなど、ip トレースルートと同じ制限があります。

検索フローとマップ フロー

フローの検索」 タブをクリックして検索ダイアログを開き、「 検索 」ボタンをクリックして検索条件に一致するフローをリストします。リストからフローを選択して [フローのマップ(Map Flow )] をクリックすると、トポロジ内の選択したフローがたどるアンダーレイ パスが表示されます。次に例を示します。

図 8:アンダーレイ パス Underlay Path

オーバーレイからアンダーレイへのフローマップスキーマ

オーバーレイ フローのアンダーレイ マッピング情報を照会するスキーマは、次の形式の URL を使用してシステム上でアクセスできる REST API から取得されます。

http://<host ip>:8081/analytics/table/OverlayToUnderlayFlowMap/schema

例:オーバーレイからアンダーレイへのフローマップスキーマ

pRouter 間のアンダーレイ データのスキーマは、次の場所にある Contrail インストールで定義されています。

http://<host ip>:8081/analytics/table/StatTable.UFlowData.flow/schema

例:アンダーレイのフロー データ スキーマ

例:フローマップの一般的なクエリ

以下は、一般的なクエリです。内部的には、 analytics-apiFlowRecordTableに対してクエリを実行し、次に StatTable.UFlowData.flowに対してクエリを実行して、特定のオーバーレイ フローで取得されたアンダーレイ パスを示す (prouter, pifindex) ペアのリストを返します。

オーバーレイ アンダーレイ マッピングのモジュール操作

SNMP コレクタの動作

Contrail SNMP コレクターは、Net-SNMP ライブラリを使用して、物理ルーターまたは任意の SNMP エージェントと通信します。SNMP パケットを受信すると、データは Python 辞書に変換され、対応する UVE オブジェクトが作成されます。その後、UVE オブジェクトは SNMP コレクターにポストされます。

SNMP モジュールは、設定可能な期間スリープした後、コレクター プロセスをフォークし、プロセスが完了するのを待ちます。コレクター プロセスは、照会するデバイスのリストを調べます。デバイスごとに、グリーンレット タスク(Python コルーチン)をフォークし、SNMP データを蓄積し、概要を JSON ファイルに書き込み、終了します。その後、親プロセスは JSON ファイルを読み取り、UVE を作成し、UVE をコレクターに送信し、再びスリープ状態になります。

SNMP コレクターから送信される pRouter UVE は、未加工の MIB 情報のみを伝送します。

例:pRouter UVE で伝送される pRouter エントリ

以下の定義は、pRouterUVEで運ばれるpRouterEntryを示しています。さらに、LldpTable 定義の例を示します。

以下では、以下で定義される仮想テーブルを作成します。

トポロジ モジュールの動作

トポロジ モジュールは、SNMP コレクターによってポストされた UVE を読み取り、ネイバー テーブルを計算して、リモート システム名、ローカルおよびリモート インターフェイス名、リモート タイプ(pRouter または vRouter)、およびローカルおよびリモート ifindices をテーブルに入力します。トポロジ モジュールはしばらくスリープし、UVE を読み取り、ネイバー テーブルを計算して UVE をコレクターにポストします。

トポロジ モジュールによって送信される pRouter UVE はネイバー リストを伝送するため、クライアントはすべての pRouter ネイバー リストをまとめて完全なトポロジを計算できます。

対応する pRouter UVE の定義は次のとおりです。

IPFIX および sFlow コレクタの動作

IPFIX および sFlow コレクタが Contrail コレクタに実装されました。コレクターは IPFIX と sFlow のサンプルを受信し、分析データベースに統計サンプルとして保存します。

例:IPFIX sFlow コレクタ データ

次の定義は、統計サンプルに格納されるデータと、クエリの実行に使用できるインデックスを示しています。

アンダーレイ オーバーレイ マッピングのトラブルシューティング

このセクションには、アンダーレイ オーバーレイ マッピングで発生する可能性のあるエラーを調査できるさまざまなリンクがあります。

システムログ

contrail-snmp-collectorcontrail-topologyのログは、インストール済みの Contrail システムでは次の場所にあります。

/var/log/contrail/contrail-snmp-collector-stdout.log

/var/log/contrail/contrail-topology.log

Introspectユーティリティ

Contrail システムで次の形式の URL を使用して、SNMP データおよびトポロジ データの Introspect ユーティリティにアクセスします。

  • SNMP データ イントロスペクト

    http://<host ip>:5920/Snh_SandeshUVECacheReq?x=PRouterEntry

  • トポロジーデータのイントロスペクト

    http://<host ip>:5921/Snh_SandeshUVECacheReq?x=PRouterLinkEntry

pRouter オブジェクトを追加するスクリプト

pRouter オブジェクトを contrail-config に追加する通常のメカニズムは、Contrail UI を使用することです。ただし、Contrail vnc-apiを使用してこれらのオブジェクトを追加することもできます。pRouter を 1 つ追加するには、ファイルを cfg-snmp.py という名前で保存し、次に示すように コマンドを実行します。

python cfg-snmp.py

例: cfg-snmp.py のコンテンツ