この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
目次
Application Policy Infrastructure Controller(APIC)はネットワーク サービス デバイスを 2 つのタイプに分類します。
APIC はさらに、APIC に登録されたデバイスのインスタンスを 2 つのカテゴリに分類します。
デバイスの APIC 登録については、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
サービス デバイスでは、シングル コンテキストまたはマルチ コンテキストを指定できます。 マルチ コンテキストのデバイスは複数のルーティング ドメインをサポートするため、重複する IP アドレスをサポートするデバイスは異なるルーティング コンテキストで設定されます。
シングルコンテキストのデバイスは特定のテナントに登録する必要があります。 シングルコンテキストのデバイスは複数のテナントで共有できません。 マルチ コンテキストのデバイスは共通のテナントの下に登録し、複数のテナントで共有することができます。
Application Policy Infrastructure Controller(APIC)の設定は、多数の管理対象オブジェクト(MO)で構成されるオブジェクト モデルとして表されます。 デバイス タイプはメタ デバイス(MDev)をルートに持つ管理対象オブジェクトのツリーによって定義されます。 新しい MDev を定義することで、デバイス固有の XML ファイルが APIC の管理対象オブジェクト モデルを拡張します。
デバイス固有のファイルはメタ デバイス(vnsMDev)オブジェクトを定義する必要があります。 vnsMDev オブジェクトには、ベンダー名、デバイス パッケージのバージョン、サポートされるデバイスのバージョン、デバイス スプリクト バインディング、そしてこれらの機能をデバイスで実行するために必要な機能とパラメータを説明するデバイス モデルといったベンダー固有の情報を記述するメタデータがあります。
デバイス パッケージの各固有バージョンは、vnsMDev オブジェクトのインスタンスと APIC ポリシー マネジャーとの 1 つのインスタンスの作成を生じさせます。 APIC は、vnsMDev オブジェクトの多数のインスタンスをサポートします。 vnsMDev オブジェクトは、APIC グローバル ポリシーの下のインフラポリシー(infraInfra で表される)内に含まれます。 グローバル ポリシーは、polUni として表されるポリシーの集合体です。 次の図では、vnsMDev の APIC の管理対象オブジェクト階層との関係について説明します。
デバイス モデルは vnsMDev オブジェクトに抑制されます。 デバイス仕様ファイルは次の構造を必要とします。
<poliUni> <infraInfra> <vnsMDev> <!-- device Sepcification--> </vnsMdev> </infraInfra> </poliUni>
vnsMDev には次の属性がなければいけません。
vendor:デバイス パッケージのベンダーを識別します。
model:デバイス仕様によって管理されるデバイス モデルを識別します。
version:デバイス パッケージのバージョンを識別します。 APIC ではデバイス パッケージの 1 つまたは複数のバージョンをアップロードできます。 APIC では、APIC に登録されたデバイス インスタンスの管理に使用するデバイス パッケージを選択することができます。
デバイス パッケージに付加機能を追加したり、デバイスの最新リビジョンを管理するためにデバイス パッケージを更新する場合、デバイス パッケージのバージョンを増分することができます。 新しい機能を追加すると、デバイス パッケージのメジャー バージョンを増分する必要があります。 また、デバイス パッケージにバグ修正やマイナー拡張をすると、マイナー バージョンを増分する必要があります。
funcMask:GoTo または GoThrough モードで展開されるサービス機能を、デバイス パッケージがサポートするかどうかを示します。 デバイス パッケージは、サービス挿入の GoTo モードおよび GoThrough モードの両方をサポートします。 両方のモードがサポートされる場合、funcMask をカンマ区切りリストとして次の形式で定義してください。
GoTo,GoThrough
デバイスのサービス機能は、デバイス パッケージがこうした設定をサポートする場合のみ、GoTo または GoThrough とし展開できます。 通常、ファイアウォール デバイス パッケージの funcMask は、ファイアウォールがルート モードまたはトランスペアレント ブリッジ モードで展開されるよう、GoTo モードと GoThrough モードの両方をサポートしています。
次に、vnsMDev 属性の例を示します。
<vnsMDev vendor="Insieme" model="SampleDevice" version="1.0" funcMask="GoTo,GoThrough">
vnsMDev オブジェクトのインスタンスは、<vendor-model-version> 文字列によって識別されます。 APIC は、一意の各 <vendor-model-version> 文字列の vnsMDev インスタンスを作成します。
デバイス モデルは、次の要素で構成されています。
デバイスのスクリプト情報は <vnsDevScript> オブジェクトによって定義されます。 デバイスのスクリプト オブジェクトは、APIC API を定義する Python ファイルを関連付けます。 APIC はこれらの Python API を呼び出し、デバイス パッケージが定義するサービス機能をインスタンス化します。
デバイスのスクリプト オブジェクトには以下の属性が含まれます。
属性 |
タイプ |
説明 |
---|---|---|
ctrlrVersion |
文字列 |
コントローラ API バージョンの互換性を識別します。 文字列です。 APIC API バージョンと一致する必要があります。現在の許容値は "1.0" です。 |
minorversion |
文字列(512 文字) |
スクリプトのバージョンを識別します。 デバイス モデルを変更せずそのデバイス スクリプト用だけに作られたリビジョンをトレースするには、デバイス パッケージの開発者はこのバージョン文字列を使用する必要があります。 |
versionExpr |
文字列(512 文字) |
APIC は deviceValidate コール中、この versionExpr 文字列をスクリプトに渡します。 このデバイス パッケージがサポートするデバイスのバージョンを示すために、デバイス パッケージの開発者は文字列(標準の表現で可)を定義します。 |
minorversion 文字列は、デバイス パッケージの無停止アップグレードを提供します。 デバイスのスクリプトだけ変更され、モデルに変更がない場合、デバイス パッケージの開発者はマイナー バージョン文字列だけアップグレードする必要があります。 マイナーバージョンだけ変更され、デバイス パッケージのバージョンが増分されなかったことを APIC が識別すると、パッケージに関連するスクリプトが再起動され、デバイス パッケージに新た一連のなファイルがバンドルされます。 管理対象オブジェクト モデルは、デバイス パッケージに指定されたデバイス モデルによって更新されません。 これによって、デバイス パッケージを使用したグラフが再レンダリングを発生させずに、スクリプトの効率的なアップグレードが可能となります。
デバイス クレデンシャルのオブジェクトによって、デバイスと通信中でも、ベンダーは Application Policy Infrastructure Controller(APIC)が認証用にデバイスのスクリプトに渡すクレデンシャルのタイプを指定できます。 現在は、ユーザ名とパスワードによる認証のみサポートされています。 デバイス仕様ファイルは、次のオブジェクトを定義する必要があります。
<vnsMCred name=”username” key=”username”/> <vnsMCredSecret name=”password” key=”password”/>
デバイス仕様ファイルは、vnsMCred と vnsMCredSecret の 1 つだけのインスタンスを定義する必要があります。 デバイスの登録時に、ユーザ名およびパスワードのオブジェクトの値を入力します。 詳しくは、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
デバイスのインターフェイスは抽象的な方法でラベル付けする必要があります。 サービス機能におけるパケットの論理フローを表すために、機能をインターフェイスに関連付けます。 たとえば、ファイアウォール デバイスはインターフェイスを、信頼できるインターフェイス、信頼できないインターフェイス、クラスタ インターフェイス、および管理インターフェイスとしてラベル付けします。 信頼できないインターフェイスから受信したパケットをファイアウォール機能に送り、信頼できるインターフェイスから送出することも可能です。 別の例としては、デバイスがそのインターフェイスを外部、内部、HA、そして管理インターフェイスとしてラベル付けすることも可能です。 ロード バランシング機能によって、外部インターフェイスからパケットを受信し、内部インターフェイスを通じてプールにロード バランシングすることも可能です。 1 つの物理インターフェイス(仮想サービスの場合は vNIC)に、1 つまたは複数のラベルを割り当てることができます。 ラベルは、ロジカル デバイスおよびコンクリート デバイスの登録時に、デバイスのインターフェイスに割り当てられます。 1 つのアーム展開用の 1 つのインターフェイスに、複数のラベルを割り当てることができます。 デバイス モデルは、インターフェイスのラベルを指定する必要があります。 ラベルは vnsMIfLb オブジェクト タイプを使用して定義します。
次に、ラベルの定義の例を示します。
<vnsMIfLbl name="external" shortName="ext"/> <vnsMIfLbl name="internal" shortName="int"/> <vnsMIfLbl name="management" shortName="mgmt" />
vnsMIfLbl オブジェクトには、name 属性および shortName 属性を含める必要があります。 省略名は 4 文字以下にする必要があります。 デバイス仕様は vnsMIfLbl オブジェクトの 1 つまたは複数のタイプを定義することができます。
Application Policy Infrastructure Controller(APIC)によって、デバイスをスタンドアロン モード、高可用性アクティブ/スタンバイ モード、またはクラスタ イン アクティブ /アクティブ モードで展開することができます。 クラスタとデバイスの設定セクションを使用して、ベンダーは HA モードに関係なく、クラスタ内のクラスタまたは固有ノードに対応するあらゆる設定を指定することができます。 クラスタとデバイスの指定は必須ではありません。
デバイス仕様ファイルは、vnsClusterCfg と呼ばれるクラスタ設定オブジェクトを 1 つだけ定義できます。 クラスタ設定には、クラスタ全体の設定が含まれます。 クラスタに適用される設定は 1 つまたは複数のタイプ vnsMParam のオブジェクトによって示され、さらに 1 つまたは複数の vnsMFolder オブジェクトの下でロジカルにグループ化することができます。
Application Policy Infrastructure Controller(APIC)に登録されたロジカル デバイスのクラスタ設定の下で定義されたパラメータとフォルダをインスタンス化することができます。 クラスタ設定で定義された設定は、clusterModify() または clusterAudit() コール中にのみ、デバイスのスクリプトに渡されます。 クラスタの下で定義された設定はサービス機能によって参照できません。 クラスタ設定は、serviceModify()、serviceAudit()、serviceHealth()、または serviceCounters() API コール中にはスクリプトに渡されません。
デバイス パッケージの開発者は、vnsClusterCfg オブジェクト内のクラスタ レベル設定をすべて定義する必要があります。 たとえば、クラスタ設定にはネットワーク タイム プロトコル(NTP)サーバ設定と syslog サーバ IP アドレスを含めることができます。
次に、クラスタ設定の例を示します。
<vnsClusterCfg name="ClusterConfig"> <vnsMFolder key="SyslogConfig"> <vnsMParam key="ipaddress" description="Syslog Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> <vnsMFolder key="NTPConfig"> <vnsMParam key="ipaddress" description="NTP Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> </vnsClusterCfg>
デバイス仕様ファイルは、デバイス固有の設定を含む vnsDevCfg の 1 つのインスタンスを含むことができます。 vnsDevCfg は vnsClusterCfg に含まれています。 デバイス固有の設定は、1 つまたは複数の vnsMParam で表され、これをさらに 1 つまたは複数の vnsMFolder 下でグループ化できます。
デバイス設定の下で定義された設定は、ロジカル デバイス内のコンクリート デバイス登録時のユーザによってインスタンス化されます。 デバイス設定は、deviceAudit()、deviceModify()、deviceHealth()、deviceCounters() のコール時にのみ、デバイスのスクリプトに渡されます。 デバイス設定は、clusterModify() のコール、または clusterAudit() のコール時にはサービス機能から参照できません。
デバイス設定は、デバイスの HA モード、クラスタのピア IP アドレス、またはクラスタ内の特定のデバイスにプッシュされるポート チャネル(LACP)設定などの設定を含むことができます。
次に、デバイスの設定の例を示します。
<vnsClusterCfg name="ClusterConfig"> <vnsDevCfg name="DevCfg"> <vnsMFolder key="HighAvailabilityCfg" cardinality="n"> <vnsMParam key="peerIP" description="HA Pair peer IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> </vnsDevCfg> </vnsClusterCfg>
デバイス パッケージおよびデバイスはさまざまなサービス機能をサポートできます。 通常、デバイスのパケット転送を変換したり、それに作用する機能はサービス機能として表すことができます。 たとえば、SSL オフロード、VPN、サーバ ロード バランシングおよび Web アプリケーション フィルタリングは、デバイスがサポートする機能としてモデル化できます。 1 つまたは複数のこうした機能を、デバイス仕様ファイルでモデル化することができます。
機能は vnsMFunc オブジェクトで表されます。 vnsMFunc オブジェクトには name 属性があります。 デバイス パッケージ内で定義される各機能は、一意の名前でなければなりません。 その名前が、MDev のインスタンスの下で定義される機能の検索に使用されます。
vnsMFunc オブジェクトには、次のオブジェクトが含まれている必要があります。
特定のサービス機能を実行するのに必要なパラメータは、次のカテゴリの下で定義できます。
次に、機能設定の構造の例を示します。
<poliUni> <infraInfra> <vnsMDev> <!-- Generic Part --> <!-- Device Credentials --> <vnsMCred name=”username” key=”username”/> <vnsMCredSecret name=”password” key=”password”/> <!-- Interface Labels --> <vnsMIfLbl name="external" shortName="ext"/> <!-- Cluster Configuration --> <vnsClusterCfg name="ClusterCfg"> <!-- Device Configuration --> <vnsDevCfg name="DeviceConfig"> </vnsDevCfg> </vnsClusterCfg> <!-- Functional Configuration --> <!-- Global Functional Device Configuration --> <vnsMDevCfg> </vnsMDevCfg> <!-- Group Configuration --> <vnsGrpCfg> </vnsGrpCfg> <!—Function configuration: Could be one or more such configuration --> <vnsMFunc> </vnsMFunc> </vnsMdev> </infraInfra> </poliUni>
1 つの機能には少なくとも 1 つのコネクタ オブジェクト、vnsMConn が必要です。 1 つまたは複数の機能をリンクし、サービス グラフを形成するためにコネクタ オブジェクトが使用されます。 機能がトランジット機能の場合は、少なくとも 2 つのコネクタが必要です。 機能がコレクタのようなスタブ機能の場合は、1 つのコネクタでかまいません。 通常、パッシブ モードであり、デバイスにコピーされるパケットをキャプチャする IDS デバイスだけが、キャプチャ機能に定義された1 つのコネクタを持っています。 ファイアウォール、ロード バランサ、SSL オフロードなど、ほかの機能にはすべて 2 つ以上のコネクタがあります。 現在、Application Policy Infrastructure Controller(APIC)は 1 機能ごとに最大 2 つのコネクタをサポートしているので、すべてのトランジット機能で入力コネクタと出力コネクタを定義することが可能です。
コネクタは次の属性を持ちます。
属性 | 必須 | 説明 |
---|---|---|
name | Yes | コネクタの名前を指定します。 機能内のすべてのコネクタの名前は一意でなければなりません。 |
encType | Yes | コネクタのカプセル化タイプを指定します。 この属性はコネクタのトラフィックに使用されるカプセル化で、vlan または vxlan の値として指定されます。 値によって、パケットがカプセル化されてネットワークからデバイス VLAN または VXLA(カプセル化)に送られるかが指定されます。 仮想デバイスではカプセル化が仮想スイッチによって削除されることがあり、VLAN または VXLAN のカプセル化ヘッダーが仮想サービス デバイスによって認識されない場合があります。 現在、APIC がサポートするのは VLAN カプセル化だけです。 |
dir | No | コネクタの方向を指定します。 方向は input としても output としても指定できます。 |
cardinality | No | ある機能が任意のコネクタ タイプの複数のインスタンスをサポートする場合、デバイス モデルは濃度を n に設定することでこれを明示的に指定できます。 デフォルトでは、濃度は 1 です。 |
notification | No | エンドポイントまたはネットワークの接続/切断通知が、その機能のために作成されるのを許可します。 この属性は、コネクタに直接的または間接的に接続されたエンドポイント グループ(EPG)のためにエンドポイントまたはサブネットの関連付けが変化した場合、APIC がデバイスのスクリプトを呼び出すかどうかを指定するのに使用します。 通知は、次の値を指定できます。 通知属性が指定されていない場合は、デフォルトにより none になります。つまり、APIC はネットワークまたはエンドポイント API の接続も切断も行いません。 |
1 つのコネクタには、1 つの vnsRsInterface オブジェクトだけが含まれていなければいけません。 このオブジェクトは、vnsMIfLbl を使って定義されたラベルによって識別される特定のインターフェイスにコネクタを関連付けます。 APIC はサービス機能の実行中、この関係を使って特定のインターフェイス情報を渡します。 詳細については、ファブリック接続 を参照してください。
機能は、デバイス パッケージにバンドルされている gif イメージ ファイルにリンクする必要があります。 Application Policy Infrastructure Controller(APIC)はグラフ内の機能のため GUI でイメージを表示します。 このイメージは、特定のベンダ デバイスで実行されるグラフでの特定の機能のグラフィカル ID となります。
イメージへのリンクは、次の例に示すように、1 つの vnsMImage オブジェクトをインスタンス化することで実行されます。
<vnsMImage name="insieme.gif"/>
デバイス パッケージの開発者は、機能オブジェクトの下でサービス機能を設定するために必要なパラメータを定義できます。 vnsMFunc 下で定義されるすべてのパラメータは、特定の機能の下で範囲が決定されます。 機能下で定義されたパラメータは、1 つまたは複数のフォルダでさらにロジカルにグループ化することができます。
機能下で定義されたパラメータおよびフォルダは、機能のインスタンスが持続する場合は持続します。 Application Policy Infrastructure Controller(APIC)は、機能のインスタンスが削除されると、機能下で定義されたパラメータおよびフォルダを削除します。
機能下にあるパラメータおよびフォルダは、同じグラフまたは同じデバイスで実行される別のグラフ内の他の機能と共有したり、参照したりすることはできません。 機能下で定義されたパラメータおよびフォルダには、各機能のインスタンスごとに、デバイスにおける一意のインスタンスがなければいけません。 パラメータ範囲および機能のコンテキスト内に制限されたフォルダは、C 言語のローカル変数と類似しています。
次に、サービス機能のパラメータの定義の例を示します。
<vnsMFunc name="SLB"> <vnsMImage name="insieme.png"/> <vnsMConn name="external" dir="input" encType="vlan" notifications="endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="internal" dir="output" encType="vlan" notifications="endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="VServer" scopedBy="epg"> <vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="port" description="Port for Virtual server" validation="isL4Port"/> <vnsMParam key="persistencetype" description="persistencetype"/> <vnsMParam key="servicename" description="Service bound to this vServer"/> <vnsMParam key="servicetype" description="Service bound to this vServer" dType="str" validation="isProtocol"/> <vnsMParam key="clttimeout" description="Client timeout"/> </vnsMFolder> </vnsMFunc>
グループ設定下で定義されるパラメータとフォルダはすべて、グラフ内の複数の機能上で共有することができます。 デバイス パッケージの開発者は、グループ設定下にある 1 つのグラフ内の 1 つのデバイスで実行される複数の機能上で共有されるよう、パラメータとフォルダを定義することができます。
グループ設定内のパラメータとフォルダは、グラフのインスタンスの下にあります。 グラフのインスタンス内にある機能はすべて、設定を共有し、参照することができます。
グループ設定下で定義されるオブジェクトは、グラフのインスタンスが持続するかぎり持続します。 Application Policy Infrastructure Controller(APIC)は、グラフのインスタンスが削除されると、グループ設定下で定義されるパラメータおよびフォルダを削除します。 グループ設定下で定義されるパラメータにはすべて、デバイスのグラフごとに一意のインスタンスがなければいけません。パラメータを同じデバイスで実行される他のグラフのインスタンスで共有したり、参照したりすることはできません。
グループ設定は vnsGrpCfg オブジェクトで表されます。 vnsMDev の下には、vnsGrpCfg の 1 つの定義しかありません。 あるグループの下にあるすべてのグループ パラメータとフォルダは、vnsGrpCfg オブジェクト内に含まれなければいけません。
グループ設定下で定義されるパラメータおよびフォルダは、C 言語の静的変数と類似しています。 変数は機能を超えて持続します。
vnsMDev 設定下で定義されるパラメータおよびフォルダはすべて、複数グラフ上で複数の機能を共有することができます。 デバイス パッケージの開発者は、vnsMDevCfg の下で単一のデバイスで実行される、複数グラフ上の複数機能上で共有されるよう、パラメータおよびフォルダを定義することができます。
vnsMDev 設定下で定義されるオブジェクトは、パラメータまたはフォルダに参照するグラフのインスタンスが少なくとも 1 つあれば、持続します。 Application Policy Infrastructure Controller(APIC)は、すべてのグラフのインスタンス上のすべての機能が特定のデバイスから削除されると、vnsMDev 下で定義されるパラメータおよびフォルダを削除します。
マルチ コンテキストのデバイスでは、グローバル設定にはコンテキストごとに一意のインスタンスがなければいけません。 vnsMDev 下で定義されるパラメータおよびフォルダは、マルチ コンテキスト上では共有できません。
vnsMDev 設定下で定義されるパラメータおよびフォルダは、C 言語のグローバル変数と類似しています。
通常、インターフェイスで設定された IP アドレス、ルート、サブネットなどのネットワーク属性にはグローバル スコープがあります。 APIC によって割り当てられたカプセル化のタグはグローバル スコープで、複数のパラレルな機能を複数のグラフ上の同じネットワーク上で展開することが可能です。
サービス機能はグループまたは vnsMDevCfg 下で定義される特定のパラメータまたはフォルダを参照することができ、それによってグループまたはデバイス スコープ下で定義されるパラメータまたはフォルダのインスタンスを機能が使用可能になります。 フォルダとの関係は vnsMRel オブジェクトを使用して定義されます。 vnsMRel オブジェクトは vnsMFolder オブジェクト内にのみ存在できます。 1 つのフォルダでは、1 つまたは複数の関係オブジェクトを定義できます。
vnsMRel オブジェクトには次の属性があります。
属性 | 必須 | 説明 |
---|---|---|
key | Yes | オブジェクトを特定します。 各オブジェクト キーは、含む側のオブジェクト内に一意の値が必要です。 キーには英数字、「_」または「-」のみを使用できます。 キーでは他の文字は使えません。 Application Policy Infrastructure Controller(APIC)はキーを、含む側のオブジェクト内の特定のオブジェクトを検索するために使用します。 キー サイズは 512 文字以内に制限されています。 |
Description | Yes | この設定項目の説明を保持します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、関係の正確な説明と目的を入力する必要があります。 説明フィールドのサイズは 512 文字以内に制限されています。 |
mandatory | No | この関係が必須かどうかを指定します。 このプロパティはブール値(Yes または No)です。 デフォルトでは、関係は明示的に特定されないかぎり必須ではなく、ユーザが関係オブジェクトを特定する必要はありません。 デバイスで機能を実行するための任意の関係は必要ありません。 |
cardinality | No | この関係の発生数を指定します。 デフォルトでは、含まれているオブジェクトの下では関係のインスタンスは 1 つだけ許可されています。 関係オブジェクトの 1 つ以上のインスタンスをユーザがインスタンス化することが許されている場合、デバイス仕様ファイルで関係を cardinality="n" で定義する必要があります。 |
vnsMRel オブジェクトは、オブジェクトがどの関係を参照しているかを識別する vnsRsTarget オブジェクトを含みます。 ターゲットは、デバイス仕様ファイルで定義されるオブジェクトの完全修飾キーです。 vnsMRel オブジェクトには、vnsRsTarget オブジェクトの インスタンスを 1 つだけ含めることができます。
次に、関係オブジェクトの定義の例を示します。
<vnsMRel key="ServerConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Server"/> </vnsMRel>
上記の例は、機能内で定義された ServerConfig に、vnsMDevCfg 下で定義されたサーバ フォルダのインスタンスとの関係があることを示します。 デバイス設定下のフル パスで認定されたターゲット フォルダのインスタンス名を指定することで、関係をインスタンス化できます。 サービス機能がデバイスで実行されると、APIC が関係によって参照されるフォルダの特定のインスタンスを検索します。 APIC が一致するインスタンスを見つけると、サービス API コールで渡される設定ディクショナリにそのフォルダを含めます。 APIC はまた、機能設定ディクショナリの一部として関係のインスタンスを渡します。 API で渡される設定ディクショナリの例については、デバイス スクリプトの開発を参照してください。
vnsMDevCfg、vnsGrpCfg、または vnsMFunc 下で定義されるパラメータおよびフォルダはすべて、serviceAudit()、serviceModify()、serviceHealth()、および serviceCounters() 機能コール時にのみ、デバイスのスクリプトに渡されます。 vnsMDevCfg オブジェクトで定義されるパラメータおよびフォルダは、そのパラメータおよびフォルダを参照する関係オブジェクトのサービス機能がある場合のみ、サービス API コールで渡されます。
クラスタ、デバイス、機能設定は、1 つ以上の vnsMParam オブジェクトによって定義されます。 これらのオブジェクトは、vnsMFolder のオブジェクトとして表される 1 つまたは複数のフォルダでロジカルにグループ化できます。
設定パラメータは vnsMParam オブジェクト タイプで表されます。 デバイス パッケージは 1 つまたは複数の vnsMParam オブジェクトを持つことができます。 パラメータのオブジェクトには次の属性が含まれます。
属性 | 必須 | 説明 |
---|---|---|
key | Yes | メタ パラメータのキーを指定します。 このプロパティは、パラメータを一意に識別します。 各パラメータ キーは、含む側のオブジェクト内に一意の値が必要です。 キーには英数字、「_」または「-」のみを使用できます。 キーでは他の文字は使えません。 Application Policy Infrastructure Controller(APIC)はキーを、通常 vnsMFolder オブジェクトであるコンテナ オブジェクト内の特定のオブジェクトを検索するために使用します。 キー サイズは 512 文字以内に制限されています。 |
Description | Yes | この設定項目の説明を保持します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、パラメータの正確な説明と目的を入力する必要があります。 説明フィールドのサイズは 512 文字以内に制限されています。 |
mandatory | No | このパラメータが必須かどうかを指定します。 このプロパティはブール値(Yes または No)です。 デフォルトでは、パラメータは明示的に特定されないかぎり必須ではありません。 |
dType | No | このパラメータのデータ タイプを指定します。 これは、次の値を指定できます。 dType が指定されていない場合、パラメータのデフォルトは str です。 |
validation | No | このパラメータの値を APIC が検証するために使う検証式を指定します。 検証文字列は 255 文字を超えることはできません。 検証が指定されている場合、dType が str である必要はありません。 検証文字列は複合または比較のオブジェクト名を参照します。 詳細については、パラメータの検証を参照してください。 |
cardinality | No | このパラメータの発生数を指定します。 デフォルトでは、含まれているオブジェクトの下でパラメータのインスタンスは 1 つだけ許可されています。 パラメータ オブジェクトの 1 つ以上のインスタンスをユーザがインスタンス化することが許されている場合、デバイス固有ファイルがパラメータを cardinality="n" で定義する必要があります。 たとえば、ルートと呼ばれるパラメータ オブジェクトを持つデバイスで複数の静的ルータをインスタンス化できる場合、ルートのパラメータの濃度を cardinality="n" に設定してください。 |
次に、パラメータ オブジェクトの定義の例を示します。
<vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="subnetipaddress" description="Subnet IPAddress of the Device" dType="str" cardinality=”n” validation="isIPAddress"/>
設定パラメータは、フォルダの下でロジカルにグループ化できます。 フォルダは、1 つまたは複数のフォルダおよびパラメータを含むことができます。 フォルダは vnsMFolder オブジェクトによって表され、次の属性があります。
次に、フォルダのオブジェクトの定義の例を示します。
<vnsMFolder key="Server" scopedBy="epg"> <vnsMParam key="servername" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="domain" description="Domain name of the server"/> <vnsMParam key="ipaddress" description="Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder>
Application Policy Infrastructure Controller(APIC)は、vnsComparison および vnsComposite オブジェクトを使用してパラメータ検証を行うことができます。 デバイス パッケージの開発者は基本または複合比較を使って、すべての文字列タイプのパラメータの検証を定義し、関連付けることができます。
基本比較(vnsComparison)は次の演算を行うことができます。
比較オブジェクトの vnsComparison は、vnsMDev、vnsMFunc、vnsMFolder、vnsMParam、または vnsComposite オブジェクト下で定義されています。 vnsComparison オブジェクトには次の属性があります。
属性 | 必須 | 説明 |
---|---|---|
name | Yes | 比較アサーションの名前を保持します。 |
cmp | Yes | 比較演算子を定義します。 |
次の例では、正規表現一致を使って、パラメータが IP アドレスを検証します。
<vnsMParam key="vipaddress" description="VIP IPAddress" dType="str" validation="isIPAddress" /> <vnsComparison name="isIPAddress" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])" />
複合比較(vnsComposite)では、次のタイプの比較が実行されます。
複合オブジェクトは、1 つまたは複数の vnsComparison オブジェクトを含むことができます。 複合オブジェクトは、vnsMDev、vnsMFunc、vnsMFolder または vnsMParam 下で定義できます。 vnsComposite は次の属性を持ちます。
属性 | 必須 | 説明 |
---|---|---|
name | Yes | 複合の名前を保持します。 |
cmp | Yes | 実行する比較のタイプを定義します。 次の値が必要です。 |
次の例では、含まれる値のいずれかの一致を要素が定義します。
<vnsComposite name="isProtocol" comp="or"> <vnsComparison name="ip" cmp="eq" value="IP" /> <vnsComparison name="tcp" cmp="eq" value="TCP" /> <vnsComparison name="udp" cmp="eq" value="UDP" /> <vnsComparison name="http" cmp="eq" value="HTTP" /> </vnsComposite> <vnsComposite name="yesNo" comp="one"> <vnsComparison name="yes" cmp="eq" value="YES" /> <vnsComparison name="No" cmp="eq" value="NO" /> </vnsComposite>
デバイス仕様ファイルで、エラーの本質と可能な修正措置を説明する、ヘルプ文字列付きのエラー コードを定義することができます。 デバイスのスクリプトで、パラメータまたはフォルダによる機能実行時の問題が検出されると、スクリプトは特定のエラー コードに問題のあるオブジェクトのパスを返すことができます。 Application Policy Infrastructure Controller(APIC)は、デバイス仕様ファイルで定義されるエラー コードを参照し、エラーを表示すると同時に説明および対処方法を選択します。 エラー コードを定義するとエラーの原因と修正措置が説明され、ユーザがエラーを解決することができます。
エラー コードは vnsMDfcts オブジェクト下で定義されます。 デバイス仕様には、vnsMDev の下に vnsMDfcts のインスタンスが 1 つあります。 vnsMDfcts オブジェクトは、vnsMDfct オブジェクトに記述されている 1 つまたは複数のエラー コードを含むことができます。
vnsMDfct オブジェクトには次の属性を含みます。
属性 | 必須 | 説明 |
---|---|---|
code | Yes | 一意の問題を識別する aA ユニット 16 値を指定します。 |
Description | Yes | 問題について説明します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、正確な説明を入力する必要があります。 フィールド サイズは 512 文字以内に制限されています。 |
htmlFile | No | ユーザが問題を把握し、解決するためのオンライン ヘルプへの URL リンクを指定します。 フィールド サイズは 512 文字以内に制限されています。 |
recAct | Yes | 推奨処置を指定します。 APIC GUI は、このフィールドを使って、ユーザに推奨処置を提供します。 デバイス パッケージの開発者は、問題を解決するための正確な推奨処置を入力する必要があります。 フィールド サイズは 512 文字以内に制限されています。 |
次に、エラーのオブジェクトの定義の例を示します。
<vnsMDfcts> <vnsMDfct code="100" recAct="Configure a Netmask for the vipaddress" descr="VIP requires vipaddress and NetMask"/> <vnsMDfct code="200" recAct="Configure a relation to VIP Folder" descr="A function should have a valid relations to a VIP folder that is specifying the VIP Address and Netmask"/> </vnsMDfcts>
APIC によって、デバイス パッケージの開発者はデバイス モデル内の機能プロファイルを定義することができます。 機能プロファイルは、特定のアプリケーションに適した 1 つまたは複数の機能用のテンプレートです。 機能プロファイルは、グラフを定義する機能に有効なデフォルトによって、デバイス パッケージ内の抽象的グラフを定義することに相当します。 ユーザはサービス グラフの定義時にデバイス パッケージでビルトイン機能プロファイルを参照し、ビルトイン機能プロファイルを活用できます。 機能プロファイルを使用すれば、特定のアプリケーション用のサービス機能をインスタンス化するためにユーザが入力しなければならないパラメータの数が減少します。 デバイス パッケージの開発者は、適用できるだけの数の機能プロファイルを含めることができます。
次に、デバイス パッケージの機能プロファイルの定義の例を示します。
<vnsAbsFuncProfContr name = "FunctionProfiles"> <vnsAbsFuncProfGrp name = "Function Profiles for Service graph for an Application 1 "> <vnsAbsFuncProf name = "Function 1 Name"> <vnsRsProfToMFunc tDn="uni/infra/mDev-<vendor-model-version>/mFunc-function1"/> <vnsAbsDevCfg> <vnsAbsFolder key="Folder_Key" name="Folder Instance name" scopedBy="epg"> <vnsAbsParam name="Param Instance name” “key="Param Name" value="Value"/> … </vnsAbsFolder> … </vnsAbsDevCfg> <vnsAbsFuncCfg> <vnsAbsFolder key=”Folder_Key" name="Folder Instance name" scopedBy="epg"> <vnsAbsCfgRel key="relation_key" name=”rel name” targetName="targetValue"/> </vnsAbsFolder> … <vnsAbsFuncCfg> </vnsAbsFuncProf> <vnsAbsFuncProf name = "Function 2 Name"> <vnsRsProfToMFunc tDn="uni/infra/mDev-<vendor-model-version>/mFunc-function2"/> …. <vnsAbsFuncProf> </vnsAbsFuncProfGrp> <vnsAbsFuncProfGrp name = "Function Profiles for Service graph for an Application 2 "> … </vnsAbsFuncProfGrp> </vnsAbsFuncProfContr>
機能プロファイルの定義は <vnsAbsFuncProfContr> に含まれています。 それぞれの一義的アプリケーションのプロファイルは <vnsAbsFuncProfGrp> で指定されます。 <vnsAbsFuncProfGrp> 名は、テンプレートが定義されるアプリケーションに対して直観的であるべきです。 たとえば、機能プロファイルが web アプリケーションのロード バランシング機能用の場合、vnsAbsFuncProfGrp は「Web アプリケーション仮想サーバ」という名前であるべきです。
<vnsAbsFuncProfGrp> で指定される機能プロファイルは、必要に応じて 1 つまたは複数の機能を含むことができます。 グラフが同デバイス上の複数の機能の連動を必要とする場合、プロファイルは <vnsAbsFuncProfGrp> 内でそれらの機能のデフォルトを定義できます。 プロファイル内の各機能設定は <vnsAbsFuncProf> に含まれています。
各 vnsAbsFuncProf には、デバイス モデルによって定義される機能への 1 つの関係があります。 関係は機能プロファイルでインスタンス化される機能のタイプを指定します。 機能との関係は vnsAbsFuncProf に含まれるオブジェクトの vnsRsProfToMFunc によって定義されます。 vnsRsProfToMFunc には、機能オブジェクトの完全修飾名で機能を特定する tDn 属性があります。 この例は、デバイス モデル内の機能を指定する tDn を示しています。
これらの機能のパラメータを設定するメカニズムは、APIC でのサービス グラフの作成と同一です。 機能プロファイルのパラメータ、関係およびフォルダは、vnsMDevCfg、vnsGrpCfg、および vnsFuncCfg 下で定義されるパラメータ、関係およびフォルダのインスタンスである場合もあります。
ノースバウンド API を介したサービス グラフの作成については、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
次の図に、デバイスを表すオブジェクト モデルを示します。
次の表では、オブジェクト モデルでのオブジェクトについて説明します。
コンポーネント |
説明 |
---|---|
vnsMDev |
funcMask: "GoTo,GoThrough" |
vnsMCred |
デバイスにユーザを認証するために必要なクレデンシャルを表します。 たとえば、keyはキー ベースの認証スキームに使用されます。 このモデルは、このようなキー ベースのクレデンシャル認証のメタ情報を詳しく説明します。 |
vnsDevScript |
デバイスのスクリプト ハンドラを表します。 この管理対象オブジェクトには、名前、パッケージ名とバージョンを含むスクリプト ハンドラの関連属性のメタ情報が含まれます。 |
vnsClusterCfg |
クラスタ設定フォルダおよびパラメータが含まれます。 クラスタ設定は、デバイスのクラスタで実行されるグラフとは別に、デバイスのクラスタの機能性に影響を及ぼします。 |
vnsDevCfg |
デバイス固有の設定フォルダおよびパラメータが含まれます。 デバイス設定は、デバイスのクラスタで実行されるグラフとは別に、クラスタ内の特定のデバイスの機能性に影響を及ぼします。 |
vnsMCredSecret |
サービス デバイスにログインするためのパスワードが含まれます。 |
vnsMDevCfg |
基本レベルのデバイス設定を表します。 このオブジェクトはアンカーとして、さまざまなデバイス設定と共有設定(MGrpCfg)を区別します。 MDevCfg での設定は、複数グラフ上の機能の複数インスタンスで共有することができます。 |
vnMGrpCfg |
メタグループ設定を表します。 これにはグラフの複数の機能で共有できる設定の一部が含まれます。 グループ設定下での設定はグラフ インスタンス内にあり、他のグラフでは参照することができません。 |
vnsMFolder |
メタ フォルダ情報を表します。 モデルは MFolders および MParams で構成される汎用設定を使用します。 このオブジェクトでは設定を階層として指定できます。 |
vnsMParam |
設定を階層として指定することを可能にします。 このモデルでは、メタデータはキー、タイプ(整数、文字列)、およびパラメータに関連する他の属性で構成されます。 |
vnsMRel |
別のオブジェクトとのメタ関係を表します。 また、別のフォルダまたはパラメータの参照が可能です。 |
vnsMFunc |
デバイスの単一機能のメタデータが含まれます。 機能には、一連のコネクタと機能固有の設定ツリーが含まれます。 この管理対象オブジェクトには、このようなすべてのオペレーション用のメタデータが含まれます。 |
vnsMConn |
ロジカル機能間のコネクタを表します。 メタデータには、任意の接続の濃度、方向、およびカプセル化タイプ(VXLAN または VLAN)などがあります。 |
vnsMIfLbl |
インターフェイスのラベルを表します。 インターフェイスは、抽象的な方法によってデバイスでラベル付けできます。 たとえば、ファイアウォール デバイスは、信頼できるインターフェイス、信頼できないインターフェイス、管理インターフェイスを実装できます。 コンクリート モデルは、デバイスでサポートされるラベルの数を指定します。 |
vnsMImage |
機能のイメージ ファイルを表します。 この管理対象オブジェクトには、イメージ ファイルとその場所の詳細が含まれます。 グラフィカル ユーザ インターフェイス(GUI)のイメージを実行するのに使われます。 |
vnsMChainable |
すぐに親機能に従えるデバイスの機能名を指定します。 この管理対象オブジェクトには連鎖できる機能名が含まれます。 |
vnsAbsFuncProfContr |
機能プロファイル グループのコンテナです。 特定のアプリケーションの機能のプロファイル グループ(グラフ)の集合を定義します。 各機能のプロファイル グループは、特定のアプリケーションに対して特定のデフォルト パラメータが初期設定されている 1 つ以上の機能を含むことができます。 機能プロファイルのコンテナは、デバイス パッケージの開発者によるデバイス モデル内で定義することも、テナントで定義し、一連のアプリケーションにグラフのカタログを与えることも可能です。 |
vnsAbsFuncProfGrp |
機能プロファイル グループを表します。 特定のアプリケーションに対してデフォルト パラメータが初期設定されている機能の集合です。 機能プロファイル グループは、デバイス パッケージの開発者によるデバイス パッケージ内で定義することも、特定のアプリケーションのグラフのカタログとして APIC テナントによって定義することも可能です。 |
vnsAbsFuncProf |
機能プロファイルを表します。 これには vnsAbsDevCfg(vnsMDevCfg のインスタンス)、vnsAbsGrpCfg(vnsMGrpCfg のインスタンス)、および vnsAbsFuncCfg(vnsMFunc のインスタンス)が含まれます。 機能プロファイルはデバイス モデルで定義された特定の機能にリンクされます。 機能プロファイルはデバイス パッケージ内で定義することも、vnsAbsFuncProfGrp 内の機能のカタログとして APIC テナントで 定義することも可能です。 |
<polUni> <infraInfra> <vnsMDev vendor="Insieme" model="SampleDevice" version="1.0"> <vnsMIfLbl name="external"/> <vnsMIfLbl name="internal" /> <vnsMIfLbl name="management" /> <vnsMCred name="username" key="username"/> <vnsMCredSecret name="password" key="password"/> <vnsDevScript name="Insieme" packageName="DeviceScript.py" versionExpr="1.0" ctrlrVersion="1.0"/> <vnsComparison name="isAlpha" cmp="match" value="[a-zA-Z]+" /> <vnsComposite name="isL4Port" comp="or"> <vnsRange name="between1And64K" value1="0" value2="65535" /> </vnsComposite> <vnsComposite name="isProtocol" comp="or"> <vnsComparison name="ip" cmp="eq" value="IP" /> <vnsComparison name="tcp" cmp="eq" value="TCP" /> <vnsComparison name="udp" cmp="eq" value="UDP" /> <vnsComparison name="http" cmp="eq" value="HTTP" /> </vnsComposite> <vnsComposite name="yesNo" comp="or"> <vnsComparison name="yes" cmp="eq" value="YES" /> <vnsComparison name="No" cmp="eq" value="NO" /> </vnsComposite> <vnsComposite name="enableDisable" comp="or"> <vnsComparison name="enabled" cmp="match" value="ENABLED" /> <vnsComparison name="disabled" cmp="match" value="DISABLED" /> </vnsComposite> <vnsComposite name="onOff" comp="or"> <vnsComparison name="on" cmp="match" value="ON" /> <vnsComparison name="off" cmp="match" value="OFF" /> </vnsComposite> <vnsComparison name="isIPAddress" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/> <vnsComparison name="isIPMask" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/> <vnsMDfcts> <vnsMDfct code="100" recAct="Configure a Netmask for the vipaddress" descr="VIP requires vipaddress and NetMask"/> <vnsMDfct code="200" recAct="Configure a relation to VIP Folder" descr="Description of defect 100"/> </vnsMDfcts> <vnsMDevCfg name="DeviceConfig"> <vnsMFolder key="Network" scopedBy="epg"> <vnsMFolder key="vip"> <vnsMParam key="vipaddress" description="VIP IPAddress" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" dType="str" description="NetMask for the IP Address" validation="isIPMask"/> </vnsMFolder> <vnsMFolder key="subnetip"> <vnsMParam key="subnetipaddress" description="Subnet IPAddress of the Device" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" description="NetMask for the IP Address" dType="str" validation="isIPMask"/> </vnsMFolder> <vnsMFolder key="mgmtip"> <vnsMParam key="mgmtipaddress" description="Mgmtm IPAddress of the Device" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" dType="str" description="NetMask for the IP Address" validation="isIPMask"/> </vnsMFolder> </vnsMFolder> <vnsMFolder key="Monitor" scopedBy="epg"> <vnsMParam key="dup_state" description="dup_state"/> <vnsMParam key="dup_weight" description="dup_state"/> <vnsMParam key="state" description="state"/> <vnsMParam key="weight" description="state"/> </vnsMFolder> <vnsMFolder key="Server" scopedBy="epg"> <vnsMParam key="name" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="domain" description="Domain name of the server"/> <vnsMParam key="ipaddress" description="Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> <vnsMFolder key="Service" scopedBy="epg" cardinality="n"> <vnsMParam key="servicename" description="Service Name" dType="str" validation="isAlpha"/> <vnsMParam key="servicetype" description="Service Type" dType="str" validation="isProtocol"/> <vnsMParam key="servername" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="serveripaddress" description="Server IP Address" dType="str" validation="isIPAddress"/> <vnsMParam key="serviceport" description="IP port number for service" validation="isL4Port"/> <vnsMRel key="MonitorConfig" cardinality="n"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Monitor"/> </vnsMRel> </vnsMFolder> <vnsMGrpCfg name="SharedConfig"> </vnsMGrpCfg> <vnsMFolder key="Monitor" scopedBy="epg"> <vnsMParam key="dup_state" description="dup_state"/> <vnsMParam key="dup_weight" description="dup_state"/> <vnsMParam key="state" description="state"/> <vnsMParam key="weight" description="state"/> </vnsMFolder> </vnsMDevCfg> <vnsMGrpCfg name="SharedConfig"> </vnsMGrpCfg> <vnsMFunc name="SLB"> <vnsMImage name="slb.png"/> <vnsMConn name="external" dir="input" encType="vlan" notifications="Endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="internal" dir="output" encType="vlan" notifications="Endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="VServer" scopedBy="epg"> <vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="port" description="Port for Virtual server" validation="isL4Port"/> <vnsMParam key="persistencetype" description="persistencetype"/> <vnsMParam key="servicename" description="Service bound to this vServer"/> <vnsMParam key="servicetype" description="Service bound to this vServer" dType="str" validation="isProtocol"/> <vnsMParam key="clttimeout" description="Client timeout"/> <vnsMFolder key="VServerGlobalConfig" description="This references VServer global Configuration"> <vnsMRel key="ServiceConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Service"/> </vnsMRel> <vnsMRel key="ServerConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Server"/> </vnsMRel> <vnsMRel key="VipConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Network/mFolder-vip"/> <vnsRsConnector tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mFunc-SLB/mConn-external"/> </vnsMRel> </vnsMFolder> </vnsMFolder> </vnsMFunc> <vnsMFunc name="SSL"> <vnsMChainable name="SLB"/> <vnsMImage name="ssl.png"/> <vnsMConn name="internal" dir="input" encType="vlan"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="external" dir="output" encType="vlan"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="Certificate" scopedBy="epg"> <vnsMParam key="passplain" description="passplain"/> <vnsMParam key="servicename" description="servicename"/> <vnsMParam key="clientcertnotbefore" description="clientcertnotbefore"/> <vnsMParam key="serial" description="serial"/> <vnsMParam key="publickeysize" description="publickeysize"/> <vnsMParam key="subject" description="subject"/> <vnsMParam key="fipskey" description="fipskey"/> <vnsMParam key="data" description="data"/> <vnsMParam key="nodomaincheck" description="nodomaincheck"/> <vnsMParam key="priority" description="priority"/> <vnsMParam key="publickey" description="publickey"/> <vnsMParam key="version" description="version"/> <vnsMParam key="notificationperiod" description="notificationperiod"/> <vnsMParam key="issuer" description="issuer"/> <vnsMParam key="status" description="status"/> <vnsMParam key="clientcertnotafter" description="clientcertnotafter"/> <vnsMParam key="certkey" description="certkey"/> <vnsMParam key="passcrypt" description="passcrypt"/> <vnsMParam key="key" description="key"/> <vnsMParam key="password" description="password"/> <vnsMParam key="signaturealg" description="signaturealg"/> <vnsMParam key="expirymonitor" description="expirymonitor"/> <vnsMParam key="linkcertkeyname" description="linkcertkeyname"/> <vnsMParam key="inform" description="inform"/> <vnsMParam key="cert" description="cert"/> <vnsMParam key="daystoexpiration" description="daystoexpiration"/> </vnsMFolder> </vnsMFunc> </vnsMDev> </infraInfra> </polUni>
目次
Application Policy Infrastructure Controller(APIC)はネットワーク サービス デバイスを 2 つのタイプに分類します。
APIC はさらに、APIC に登録されたデバイスのインスタンスを 2 つのカテゴリに分類します。
デバイスの APIC 登録については、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
サービス デバイスでは、シングル コンテキストまたはマルチ コンテキストを指定できます。 マルチ コンテキストのデバイスは複数のルーティング ドメインをサポートするため、重複する IP アドレスをサポートするデバイスは異なるルーティング コンテキストで設定されます。
シングルコンテキストのデバイスは特定のテナントに登録する必要があります。 シングルコンテキストのデバイスは複数のテナントで共有できません。 マルチ コンテキストのデバイスは共通のテナントの下に登録し、複数のテナントで共有することができます。
Application Policy Infrastructure Controller(APIC)の設定は、多数の管理対象オブジェクト(MO)で構成されるオブジェクト モデルとして表されます。 デバイス タイプはメタ デバイス(MDev)をルートに持つ管理対象オブジェクトのツリーによって定義されます。 新しい MDev を定義することで、デバイス固有の XML ファイルが APIC の管理対象オブジェクト モデルを拡張します。
デバイス固有のファイルはメタ デバイス(vnsMDev)オブジェクトを定義する必要があります。 vnsMDev オブジェクトには、ベンダー名、デバイス パッケージのバージョン、サポートされるデバイスのバージョン、デバイス スプリクト バインディング、そしてこれらの機能をデバイスで実行するために必要な機能とパラメータを説明するデバイス モデルといったベンダー固有の情報を記述するメタデータがあります。
デバイス パッケージの各固有バージョンは、vnsMDev オブジェクトのインスタンスと APIC ポリシー マネジャーとの 1 つのインスタンスの作成を生じさせます。 APIC は、vnsMDev オブジェクトの多数のインスタンスをサポートします。 vnsMDev オブジェクトは、APIC グローバル ポリシーの下のインフラポリシー(infraInfra で表される)内に含まれます。 グローバル ポリシーは、polUni として表されるポリシーの集合体です。 次の図では、vnsMDev の APIC の管理対象オブジェクト階層との関係について説明します。
デバイス モデルは vnsMDev オブジェクトに抑制されます。 デバイス仕様ファイルは次の構造を必要とします。
<poliUni> <infraInfra> <vnsMDev> <!-- device Sepcification--> </vnsMdev> </infraInfra> </poliUni>
vnsMDev には次の属性がなければいけません。
vendor:デバイス パッケージのベンダーを識別します。
model:デバイス仕様によって管理されるデバイス モデルを識別します。
version:デバイス パッケージのバージョンを識別します。 APIC ではデバイス パッケージの 1 つまたは複数のバージョンをアップロードできます。 APIC では、APIC に登録されたデバイス インスタンスの管理に使用するデバイス パッケージを選択することができます。
デバイス パッケージに付加機能を追加したり、デバイスの最新リビジョンを管理するためにデバイス パッケージを更新する場合、デバイス パッケージのバージョンを増分することができます。 新しい機能を追加すると、デバイス パッケージのメジャー バージョンを増分する必要があります。 また、デバイス パッケージにバグ修正やマイナー拡張をすると、マイナー バージョンを増分する必要があります。
funcMask:GoTo または GoThrough モードで展開されるサービス機能を、デバイス パッケージがサポートするかどうかを示します。 デバイス パッケージは、サービス挿入の GoTo モードおよび GoThrough モードの両方をサポートします。 両方のモードがサポートされる場合、funcMask をカンマ区切りリストとして次の形式で定義してください。
GoTo,GoThrough
デバイスのサービス機能は、デバイス パッケージがこうした設定をサポートする場合のみ、GoTo または GoThrough とし展開できます。 通常、ファイアウォール デバイス パッケージの funcMask は、ファイアウォールがルート モードまたはトランスペアレント ブリッジ モードで展開されるよう、GoTo モードと GoThrough モードの両方をサポートしています。
次に、vnsMDev 属性の例を示します。
<vnsMDev vendor="Insieme" model="SampleDevice" version="1.0" funcMask="GoTo,GoThrough">
vnsMDev オブジェクトのインスタンスは、<vendor-model-version> 文字列によって識別されます。 APIC は、一意の各 <vendor-model-version> 文字列の vnsMDev インスタンスを作成します。
デバイス モデルは、次の要素で構成されています。
デバイスのスクリプト情報は <vnsDevScript> オブジェクトによって定義されます。 デバイスのスクリプト オブジェクトは、APIC API を定義する Python ファイルを関連付けます。 APIC はこれらの Python API を呼び出し、デバイス パッケージが定義するサービス機能をインスタンス化します。
デバイスのスクリプト オブジェクトには以下の属性が含まれます。
属性 |
タイプ |
説明 |
---|---|---|
ctrlrVersion |
文字列 |
コントローラ API バージョンの互換性を識別します。 文字列です。 APIC API バージョンと一致する必要があります。現在の許容値は "1.0" です。 |
minorversion |
文字列(512 文字) |
スクリプトのバージョンを識別します。 デバイス モデルを変更せずそのデバイス スクリプト用だけに作られたリビジョンをトレースするには、デバイス パッケージの開発者はこのバージョン文字列を使用する必要があります。 |
versionExpr |
文字列(512 文字) |
APIC は deviceValidate コール中、この versionExpr 文字列をスクリプトに渡します。 このデバイス パッケージがサポートするデバイスのバージョンを示すために、デバイス パッケージの開発者は文字列(標準の表現で可)を定義します。 |
minorversion 文字列は、デバイス パッケージの無停止アップグレードを提供します。 デバイスのスクリプトだけ変更され、モデルに変更がない場合、デバイス パッケージの開発者はマイナー バージョン文字列だけアップグレードする必要があります。 マイナーバージョンだけ変更され、デバイス パッケージのバージョンが増分されなかったことを APIC が識別すると、パッケージに関連するスクリプトが再起動され、デバイス パッケージに新た一連のなファイルがバンドルされます。 管理対象オブジェクト モデルは、デバイス パッケージに指定されたデバイス モデルによって更新されません。 これによって、デバイス パッケージを使用したグラフが再レンダリングを発生させずに、スクリプトの効率的なアップグレードが可能となります。
デバイス クレデンシャルのオブジェクトによって、デバイスと通信中でも、ベンダーは Application Policy Infrastructure Controller(APIC)が認証用にデバイスのスクリプトに渡すクレデンシャルのタイプを指定できます。 現在は、ユーザ名とパスワードによる認証のみサポートされています。 デバイス仕様ファイルは、次のオブジェクトを定義する必要があります。
<vnsMCred name=”username” key=”username”/> <vnsMCredSecret name=”password” key=”password”/>
デバイス仕様ファイルは、vnsMCred と vnsMCredSecret の 1 つだけのインスタンスを定義する必要があります。 デバイスの登録時に、ユーザ名およびパスワードのオブジェクトの値を入力します。 詳しくは、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
デバイスのインターフェイスは抽象的な方法でラベル付けする必要があります。 サービス機能におけるパケットの論理フローを表すために、機能をインターフェイスに関連付けます。 たとえば、ファイアウォール デバイスはインターフェイスを、信頼できるインターフェイス、信頼できないインターフェイス、クラスタ インターフェイス、および管理インターフェイスとしてラベル付けします。 信頼できないインターフェイスから受信したパケットをファイアウォール機能に送り、信頼できるインターフェイスから送出することも可能です。 別の例としては、デバイスがそのインターフェイスを外部、内部、HA、そして管理インターフェイスとしてラベル付けすることも可能です。 ロード バランシング機能によって、外部インターフェイスからパケットを受信し、内部インターフェイスを通じてプールにロード バランシングすることも可能です。 1 つの物理インターフェイス(仮想サービスの場合は vNIC)に、1 つまたは複数のラベルを割り当てることができます。 ラベルは、ロジカル デバイスおよびコンクリート デバイスの登録時に、デバイスのインターフェイスに割り当てられます。 1 つのアーム展開用の 1 つのインターフェイスに、複数のラベルを割り当てることができます。 デバイス モデルは、インターフェイスのラベルを指定する必要があります。 ラベルは vnsMIfLb オブジェクト タイプを使用して定義します。
次に、ラベルの定義の例を示します。
<vnsMIfLbl name="external" shortName="ext"/> <vnsMIfLbl name="internal" shortName="int"/> <vnsMIfLbl name="management" shortName="mgmt" />
vnsMIfLbl オブジェクトには、name 属性および shortName 属性を含める必要があります。 省略名は 4 文字以下にする必要があります。 デバイス仕様は vnsMIfLbl オブジェクトの 1 つまたは複数のタイプを定義することができます。
Application Policy Infrastructure Controller(APIC)によって、デバイスをスタンドアロン モード、高可用性アクティブ/スタンバイ モード、またはクラスタ イン アクティブ /アクティブ モードで展開することができます。 クラスタとデバイスの設定セクションを使用して、ベンダーは HA モードに関係なく、クラスタ内のクラスタまたは固有ノードに対応するあらゆる設定を指定することができます。 クラスタとデバイスの指定は必須ではありません。
デバイス仕様ファイルは、vnsClusterCfg と呼ばれるクラスタ設定オブジェクトを 1 つだけ定義できます。 クラスタ設定には、クラスタ全体の設定が含まれます。 クラスタに適用される設定は 1 つまたは複数のタイプ vnsMParam のオブジェクトによって示され、さらに 1 つまたは複数の vnsMFolder オブジェクトの下でロジカルにグループ化することができます。
Application Policy Infrastructure Controller(APIC)に登録されたロジカル デバイスのクラスタ設定の下で定義されたパラメータとフォルダをインスタンス化することができます。 クラスタ設定で定義された設定は、clusterModify() または clusterAudit() コール中にのみ、デバイスのスクリプトに渡されます。 クラスタの下で定義された設定はサービス機能によって参照できません。 クラスタ設定は、serviceModify()、serviceAudit()、serviceHealth()、または serviceCounters() API コール中にはスクリプトに渡されません。
デバイス パッケージの開発者は、vnsClusterCfg オブジェクト内のクラスタ レベル設定をすべて定義する必要があります。 たとえば、クラスタ設定にはネットワーク タイム プロトコル(NTP)サーバ設定と syslog サーバ IP アドレスを含めることができます。
次に、クラスタ設定の例を示します。
<vnsClusterCfg name="ClusterConfig"> <vnsMFolder key="SyslogConfig"> <vnsMParam key="ipaddress" description="Syslog Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> <vnsMFolder key="NTPConfig"> <vnsMParam key="ipaddress" description="NTP Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> </vnsClusterCfg>
デバイス仕様ファイルは、デバイス固有の設定を含む vnsDevCfg の 1 つのインスタンスを含むことができます。 vnsDevCfg は vnsClusterCfg に含まれています。 デバイス固有の設定は、1 つまたは複数の vnsMParam で表され、これをさらに 1 つまたは複数の vnsMFolder 下でグループ化できます。
デバイス設定の下で定義された設定は、ロジカル デバイス内のコンクリート デバイス登録時のユーザによってインスタンス化されます。 デバイス設定は、deviceAudit()、deviceModify()、deviceHealth()、deviceCounters() のコール時にのみ、デバイスのスクリプトに渡されます。 デバイス設定は、clusterModify() のコール、または clusterAudit() のコール時にはサービス機能から参照できません。
デバイス設定は、デバイスの HA モード、クラスタのピア IP アドレス、またはクラスタ内の特定のデバイスにプッシュされるポート チャネル(LACP)設定などの設定を含むことができます。
次に、デバイスの設定の例を示します。
<vnsClusterCfg name="ClusterConfig"> <vnsDevCfg name="DevCfg"> <vnsMFolder key="HighAvailabilityCfg" cardinality="n"> <vnsMParam key="peerIP" description="HA Pair peer IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> </vnsDevCfg> </vnsClusterCfg>
デバイス パッケージおよびデバイスはさまざまなサービス機能をサポートできます。 通常、デバイスのパケット転送を変換したり、それに作用する機能はサービス機能として表すことができます。 たとえば、SSL オフロード、VPN、サーバ ロード バランシングおよび Web アプリケーション フィルタリングは、デバイスがサポートする機能としてモデル化できます。 1 つまたは複数のこうした機能を、デバイス仕様ファイルでモデル化することができます。
機能は vnsMFunc オブジェクトで表されます。 vnsMFunc オブジェクトには name 属性があります。 デバイス パッケージ内で定義される各機能は、一意の名前でなければなりません。 その名前が、MDev のインスタンスの下で定義される機能の検索に使用されます。
vnsMFunc オブジェクトには、次のオブジェクトが含まれている必要があります。
特定のサービス機能を実行するのに必要なパラメータは、次のカテゴリの下で定義できます。
次に、機能設定の構造の例を示します。
<poliUni> <infraInfra> <vnsMDev> <!-- Generic Part --> <!-- Device Credentials --> <vnsMCred name=”username” key=”username”/> <vnsMCredSecret name=”password” key=”password”/> <!-- Interface Labels --> <vnsMIfLbl name="external" shortName="ext"/> <!-- Cluster Configuration --> <vnsClusterCfg name="ClusterCfg"> <!-- Device Configuration --> <vnsDevCfg name="DeviceConfig"> </vnsDevCfg> </vnsClusterCfg> <!-- Functional Configuration --> <!-- Global Functional Device Configuration --> <vnsMDevCfg> </vnsMDevCfg> <!-- Group Configuration --> <vnsGrpCfg> </vnsGrpCfg> <!—Function configuration: Could be one or more such configuration --> <vnsMFunc> </vnsMFunc> </vnsMdev> </infraInfra> </poliUni>
1 つの機能には少なくとも 1 つのコネクタ オブジェクト、vnsMConn が必要です。 1 つまたは複数の機能をリンクし、サービス グラフを形成するためにコネクタ オブジェクトが使用されます。 機能がトランジット機能の場合は、少なくとも 2 つのコネクタが必要です。 機能がコレクタのようなスタブ機能の場合は、1 つのコネクタでかまいません。 通常、パッシブ モードであり、デバイスにコピーされるパケットをキャプチャする IDS デバイスだけが、キャプチャ機能に定義された1 つのコネクタを持っています。 ファイアウォール、ロード バランサ、SSL オフロードなど、ほかの機能にはすべて 2 つ以上のコネクタがあります。 現在、Application Policy Infrastructure Controller(APIC)は 1 機能ごとに最大 2 つのコネクタをサポートしているので、すべてのトランジット機能で入力コネクタと出力コネクタを定義することが可能です。
コネクタは次の属性を持ちます。
属性 | 必須 | 説明 |
---|---|---|
name | Yes | コネクタの名前を指定します。 機能内のすべてのコネクタの名前は一意でなければなりません。 |
encType | Yes | コネクタのカプセル化タイプを指定します。 この属性はコネクタのトラフィックに使用されるカプセル化で、vlan または vxlan の値として指定されます。 値によって、パケットがカプセル化されてネットワークからデバイス VLAN または VXLA(カプセル化)に送られるかが指定されます。 仮想デバイスではカプセル化が仮想スイッチによって削除されることがあり、VLAN または VXLAN のカプセル化ヘッダーが仮想サービス デバイスによって認識されない場合があります。 現在、APIC がサポートするのは VLAN カプセル化だけです。 |
dir | No | コネクタの方向を指定します。 方向は input としても output としても指定できます。 |
cardinality | No | ある機能が任意のコネクタ タイプの複数のインスタンスをサポートする場合、デバイス モデルは濃度を n に設定することでこれを明示的に指定できます。 デフォルトでは、濃度は 1 です。 |
notification | No | エンドポイントまたはネットワークの接続/切断通知が、その機能のために作成されるのを許可します。 この属性は、コネクタに直接的または間接的に接続されたエンドポイント グループ(EPG)のためにエンドポイントまたはサブネットの関連付けが変化した場合、APIC がデバイスのスクリプトを呼び出すかどうかを指定するのに使用します。 通知は、次の値を指定できます。 通知属性が指定されていない場合は、デフォルトにより none になります。つまり、APIC はネットワークまたはエンドポイント API の接続も切断も行いません。 |
1 つのコネクタには、1 つの vnsRsInterface オブジェクトだけが含まれていなければいけません。 このオブジェクトは、vnsMIfLbl を使って定義されたラベルによって識別される特定のインターフェイスにコネクタを関連付けます。 APIC はサービス機能の実行中、この関係を使って特定のインターフェイス情報を渡します。 詳細については、ファブリック接続 を参照してください。
機能は、デバイス パッケージにバンドルされている gif イメージ ファイルにリンクする必要があります。 Application Policy Infrastructure Controller(APIC)はグラフ内の機能のため GUI でイメージを表示します。 このイメージは、特定のベンダ デバイスで実行されるグラフでの特定の機能のグラフィカル ID となります。
イメージへのリンクは、次の例に示すように、1 つの vnsMImage オブジェクトをインスタンス化することで実行されます。
<vnsMImage name="insieme.gif"/>
デバイス パッケージの開発者は、機能オブジェクトの下でサービス機能を設定するために必要なパラメータを定義できます。 vnsMFunc 下で定義されるすべてのパラメータは、特定の機能の下で範囲が決定されます。 機能下で定義されたパラメータは、1 つまたは複数のフォルダでさらにロジカルにグループ化することができます。
機能下で定義されたパラメータおよびフォルダは、機能のインスタンスが持続する場合は持続します。 Application Policy Infrastructure Controller(APIC)は、機能のインスタンスが削除されると、機能下で定義されたパラメータおよびフォルダを削除します。
機能下にあるパラメータおよびフォルダは、同じグラフまたは同じデバイスで実行される別のグラフ内の他の機能と共有したり、参照したりすることはできません。 機能下で定義されたパラメータおよびフォルダには、各機能のインスタンスごとに、デバイスにおける一意のインスタンスがなければいけません。 パラメータ範囲および機能のコンテキスト内に制限されたフォルダは、C 言語のローカル変数と類似しています。
次に、サービス機能のパラメータの定義の例を示します。
<vnsMFunc name="SLB"> <vnsMImage name="insieme.png"/> <vnsMConn name="external" dir="input" encType="vlan" notifications="endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="internal" dir="output" encType="vlan" notifications="endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="VServer" scopedBy="epg"> <vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="port" description="Port for Virtual server" validation="isL4Port"/> <vnsMParam key="persistencetype" description="persistencetype"/> <vnsMParam key="servicename" description="Service bound to this vServer"/> <vnsMParam key="servicetype" description="Service bound to this vServer" dType="str" validation="isProtocol"/> <vnsMParam key="clttimeout" description="Client timeout"/> </vnsMFolder> </vnsMFunc>
グループ設定下で定義されるパラメータとフォルダはすべて、グラフ内の複数の機能上で共有することができます。 デバイス パッケージの開発者は、グループ設定下にある 1 つのグラフ内の 1 つのデバイスで実行される複数の機能上で共有されるよう、パラメータとフォルダを定義することができます。
グループ設定内のパラメータとフォルダは、グラフのインスタンスの下にあります。 グラフのインスタンス内にある機能はすべて、設定を共有し、参照することができます。
グループ設定下で定義されるオブジェクトは、グラフのインスタンスが持続するかぎり持続します。 Application Policy Infrastructure Controller(APIC)は、グラフのインスタンスが削除されると、グループ設定下で定義されるパラメータおよびフォルダを削除します。 グループ設定下で定義されるパラメータにはすべて、デバイスのグラフごとに一意のインスタンスがなければいけません。パラメータを同じデバイスで実行される他のグラフのインスタンスで共有したり、参照したりすることはできません。
グループ設定は vnsGrpCfg オブジェクトで表されます。 vnsMDev の下には、vnsGrpCfg の 1 つの定義しかありません。 あるグループの下にあるすべてのグループ パラメータとフォルダは、vnsGrpCfg オブジェクト内に含まれなければいけません。
グループ設定下で定義されるパラメータおよびフォルダは、C 言語の静的変数と類似しています。 変数は機能を超えて持続します。
vnsMDev 設定下で定義されるパラメータおよびフォルダはすべて、複数グラフ上で複数の機能を共有することができます。 デバイス パッケージの開発者は、vnsMDevCfg の下で単一のデバイスで実行される、複数グラフ上の複数機能上で共有されるよう、パラメータおよびフォルダを定義することができます。
vnsMDev 設定下で定義されるオブジェクトは、パラメータまたはフォルダに参照するグラフのインスタンスが少なくとも 1 つあれば、持続します。 Application Policy Infrastructure Controller(APIC)は、すべてのグラフのインスタンス上のすべての機能が特定のデバイスから削除されると、vnsMDev 下で定義されるパラメータおよびフォルダを削除します。
マルチ コンテキストのデバイスでは、グローバル設定にはコンテキストごとに一意のインスタンスがなければいけません。 vnsMDev 下で定義されるパラメータおよびフォルダは、マルチ コンテキスト上では共有できません。
vnsMDev 設定下で定義されるパラメータおよびフォルダは、C 言語のグローバル変数と類似しています。
通常、インターフェイスで設定された IP アドレス、ルート、サブネットなどのネットワーク属性にはグローバル スコープがあります。 APIC によって割り当てられたカプセル化のタグはグローバル スコープで、複数のパラレルな機能を複数のグラフ上の同じネットワーク上で展開することが可能です。
サービス機能はグループまたは vnsMDevCfg 下で定義される特定のパラメータまたはフォルダを参照することができ、それによってグループまたはデバイス スコープ下で定義されるパラメータまたはフォルダのインスタンスを機能が使用可能になります。 フォルダとの関係は vnsMRel オブジェクトを使用して定義されます。 vnsMRel オブジェクトは vnsMFolder オブジェクト内にのみ存在できます。 1 つのフォルダでは、1 つまたは複数の関係オブジェクトを定義できます。
vnsMRel オブジェクトには次の属性があります。
属性 | 必須 | 説明 |
---|---|---|
key | Yes | オブジェクトを特定します。 各オブジェクト キーは、含む側のオブジェクト内に一意の値が必要です。 キーには英数字、「_」または「-」のみを使用できます。 キーでは他の文字は使えません。 Application Policy Infrastructure Controller(APIC)はキーを、含む側のオブジェクト内の特定のオブジェクトを検索するために使用します。 キー サイズは 512 文字以内に制限されています。 |
Description | Yes | この設定項目の説明を保持します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、関係の正確な説明と目的を入力する必要があります。 説明フィールドのサイズは 512 文字以内に制限されています。 |
mandatory | No | この関係が必須かどうかを指定します。 このプロパティはブール値(Yes または No)です。 デフォルトでは、関係は明示的に特定されないかぎり必須ではなく、ユーザが関係オブジェクトを特定する必要はありません。 デバイスで機能を実行するための任意の関係は必要ありません。 |
cardinality | No | この関係の発生数を指定します。 デフォルトでは、含まれているオブジェクトの下では関係のインスタンスは 1 つだけ許可されています。 関係オブジェクトの 1 つ以上のインスタンスをユーザがインスタンス化することが許されている場合、デバイス仕様ファイルで関係を cardinality="n" で定義する必要があります。 |
vnsMRel オブジェクトは、オブジェクトがどの関係を参照しているかを識別する vnsRsTarget オブジェクトを含みます。 ターゲットは、デバイス仕様ファイルで定義されるオブジェクトの完全修飾キーです。 vnsMRel オブジェクトには、vnsRsTarget オブジェクトの インスタンスを 1 つだけ含めることができます。
次に、関係オブジェクトの定義の例を示します。
<vnsMRel key="ServerConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Server"/> </vnsMRel>
上記の例は、機能内で定義された ServerConfig に、vnsMDevCfg 下で定義されたサーバ フォルダのインスタンスとの関係があることを示します。 デバイス設定下のフル パスで認定されたターゲット フォルダのインスタンス名を指定することで、関係をインスタンス化できます。 サービス機能がデバイスで実行されると、APIC が関係によって参照されるフォルダの特定のインスタンスを検索します。 APIC が一致するインスタンスを見つけると、サービス API コールで渡される設定ディクショナリにそのフォルダを含めます。 APIC はまた、機能設定ディクショナリの一部として関係のインスタンスを渡します。 API で渡される設定ディクショナリの例については、デバイス スクリプトの開発を参照してください。
クラスタ、デバイス、機能設定は、1 つ以上の vnsMParam オブジェクトによって定義されます。 これらのオブジェクトは、vnsMFolder のオブジェクトとして表される 1 つまたは複数のフォルダでロジカルにグループ化できます。
設定パラメータは vnsMParam オブジェクト タイプで表されます。 デバイス パッケージは 1 つまたは複数の vnsMParam オブジェクトを持つことができます。 パラメータのオブジェクトには次の属性が含まれます。
属性 | 必須 | 説明 |
---|---|---|
key | Yes | メタ パラメータのキーを指定します。 このプロパティは、パラメータを一意に識別します。 各パラメータ キーは、含む側のオブジェクト内に一意の値が必要です。 キーには英数字、「_」または「-」のみを使用できます。 キーでは他の文字は使えません。 Application Policy Infrastructure Controller(APIC)はキーを、通常 vnsMFolder オブジェクトであるコンテナ オブジェクト内の特定のオブジェクトを検索するために使用します。 キー サイズは 512 文字以内に制限されています。 |
Description | Yes | この設定項目の説明を保持します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、パラメータの正確な説明と目的を入力する必要があります。 説明フィールドのサイズは 512 文字以内に制限されています。 |
mandatory | No | このパラメータが必須かどうかを指定します。 このプロパティはブール値(Yes または No)です。 デフォルトでは、パラメータは明示的に特定されないかぎり必須ではありません。 |
dType | No | このパラメータのデータ タイプを指定します。 これは、次の値を指定できます。 dType が指定されていない場合、パラメータのデフォルトは str です。 |
validation | No | このパラメータの値を APIC が検証するために使う検証式を指定します。 検証文字列は 255 文字を超えることはできません。 検証が指定されている場合、dType が str である必要はありません。 検証文字列は複合または比較のオブジェクト名を参照します。 詳細については、パラメータの検証を参照してください。 |
cardinality | No | このパラメータの発生数を指定します。 デフォルトでは、含まれているオブジェクトの下でパラメータのインスタンスは 1 つだけ許可されています。 パラメータ オブジェクトの 1 つ以上のインスタンスをユーザがインスタンス化することが許されている場合、デバイス固有ファイルがパラメータを cardinality="n" で定義する必要があります。 たとえば、ルートと呼ばれるパラメータ オブジェクトを持つデバイスで複数の静的ルータをインスタンス化できる場合、ルートのパラメータの濃度を cardinality="n" に設定してください。 |
次に、パラメータ オブジェクトの定義の例を示します。
<vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="subnetipaddress" description="Subnet IPAddress of the Device" dType="str" cardinality=”n” validation="isIPAddress"/>
設定パラメータは、フォルダの下でロジカルにグループ化できます。 フォルダは、1 つまたは複数のフォルダおよびパラメータを含むことができます。 フォルダは vnsMFolder オブジェクトによって表され、次の属性があります。
次に、フォルダのオブジェクトの定義の例を示します。
<vnsMFolder key="Server" scopedBy="epg"> <vnsMParam key="servername" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="domain" description="Domain name of the server"/> <vnsMParam key="ipaddress" description="Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder>
Application Policy Infrastructure Controller(APIC)は、vnsComparison および vnsComposite オブジェクトを使用してパラメータ検証を行うことができます。 デバイス パッケージの開発者は基本または複合比較を使って、すべての文字列タイプのパラメータの検証を定義し、関連付けることができます。
基本比較(vnsComparison)は次の演算を行うことができます。
比較オブジェクトの vnsComparison は、vnsMDev、vnsMFunc、vnsMFolder、vnsMParam、または vnsComposite オブジェクト下で定義されています。 vnsComparison オブジェクトには次の属性があります。
次の例では、正規表現一致を使って、パラメータが IP アドレスを検証します。
<vnsMParam key="vipaddress" description="VIP IPAddress" dType="str" validation="isIPAddress" /> <vnsComparison name="isIPAddress" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])" />
複合比較(vnsComposite)では、次のタイプの比較が実行されます。
複合オブジェクトは、1 つまたは複数の vnsComparison オブジェクトを含むことができます。 複合オブジェクトは、vnsMDev、vnsMFunc、vnsMFolder または vnsMParam 下で定義できます。 vnsComposite は次の属性を持ちます。
次の例では、含まれる値のいずれかの一致を要素が定義します。
<vnsComposite name="isProtocol" comp="or"> <vnsComparison name="ip" cmp="eq" value="IP" /> <vnsComparison name="tcp" cmp="eq" value="TCP" /> <vnsComparison name="udp" cmp="eq" value="UDP" /> <vnsComparison name="http" cmp="eq" value="HTTP" /> </vnsComposite> <vnsComposite name="yesNo" comp="one"> <vnsComparison name="yes" cmp="eq" value="YES" /> <vnsComparison name="No" cmp="eq" value="NO" /> </vnsComposite>
デバイス仕様ファイルで、エラーの本質と可能な修正措置を説明する、ヘルプ文字列付きのエラー コードを定義することができます。 デバイスのスクリプトで、パラメータまたはフォルダによる機能実行時の問題が検出されると、スクリプトは特定のエラー コードに問題のあるオブジェクトのパスを返すことができます。 Application Policy Infrastructure Controller(APIC)は、デバイス仕様ファイルで定義されるエラー コードを参照し、エラーを表示すると同時に説明および対処方法を選択します。 エラー コードを定義するとエラーの原因と修正措置が説明され、ユーザがエラーを解決することができます。
エラー コードは vnsMDfcts オブジェクト下で定義されます。 デバイス仕様には、vnsMDev の下に vnsMDfcts のインスタンスが 1 つあります。 vnsMDfcts オブジェクトは、vnsMDfct オブジェクトに記述されている 1 つまたは複数のエラー コードを含むことができます。
vnsMDfct オブジェクトには次の属性を含みます。
属性 | 必須 | 説明 |
---|---|---|
code | Yes | 一意の問題を識別する aA ユニット 16 値を指定します。 |
Description | Yes | 問題について説明します。 APIC GUI で使用する説明フィールドで、ユーザにヘルプを提供します。 デバイス パッケージの開発者は、正確な説明を入力する必要があります。 フィールド サイズは 512 文字以内に制限されています。 |
htmlFile | No | ユーザが問題を把握し、解決するためのオンライン ヘルプへの URL リンクを指定します。 フィールド サイズは 512 文字以内に制限されています。 |
recAct | Yes | 推奨処置を指定します。 APIC GUI は、このフィールドを使って、ユーザに推奨処置を提供します。 デバイス パッケージの開発者は、問題を解決するための正確な推奨処置を入力する必要があります。 フィールド サイズは 512 文字以内に制限されています。 |
次に、エラーのオブジェクトの定義の例を示します。
<vnsMDfcts> <vnsMDfct code="100" recAct="Configure a Netmask for the vipaddress" descr="VIP requires vipaddress and NetMask"/> <vnsMDfct code="200" recAct="Configure a relation to VIP Folder" descr="A function should have a valid relations to a VIP folder that is specifying the VIP Address and Netmask"/> </vnsMDfcts>
APIC によって、デバイス パッケージの開発者はデバイス モデル内の機能プロファイルを定義することができます。 機能プロファイルは、特定のアプリケーションに適した 1 つまたは複数の機能用のテンプレートです。 機能プロファイルは、グラフを定義する機能に有効なデフォルトによって、デバイス パッケージ内の抽象的グラフを定義することに相当します。 ユーザはサービス グラフの定義時にデバイス パッケージでビルトイン機能プロファイルを参照し、ビルトイン機能プロファイルを活用できます。 機能プロファイルを使用すれば、特定のアプリケーション用のサービス機能をインスタンス化するためにユーザが入力しなければならないパラメータの数が減少します。 デバイス パッケージの開発者は、適用できるだけの数の機能プロファイルを含めることができます。
次に、デバイス パッケージの機能プロファイルの定義の例を示します。
<vnsAbsFuncProfContr name = "FunctionProfiles"> <vnsAbsFuncProfGrp name = "Function Profiles for Service graph for an Application 1 "> <vnsAbsFuncProf name = "Function 1 Name"> <vnsRsProfToMFunc tDn="uni/infra/mDev-<vendor-model-version>/mFunc-function1"/> <vnsAbsDevCfg> <vnsAbsFolder key="Folder_Key" name="Folder Instance name" scopedBy="epg"> <vnsAbsParam name="Param Instance name” “key="Param Name" value="Value"/> … </vnsAbsFolder> … </vnsAbsDevCfg> <vnsAbsFuncCfg> <vnsAbsFolder key=”Folder_Key" name="Folder Instance name" scopedBy="epg"> <vnsAbsCfgRel key="relation_key" name=”rel name” targetName="targetValue"/> </vnsAbsFolder> … <vnsAbsFuncCfg> </vnsAbsFuncProf> <vnsAbsFuncProf name = "Function 2 Name"> <vnsRsProfToMFunc tDn="uni/infra/mDev-<vendor-model-version>/mFunc-function2"/> …. <vnsAbsFuncProf> </vnsAbsFuncProfGrp> <vnsAbsFuncProfGrp name = "Function Profiles for Service graph for an Application 2 "> … </vnsAbsFuncProfGrp> </vnsAbsFuncProfContr>
機能プロファイルの定義は <vnsAbsFuncProfContr> に含まれています。 それぞれの一義的アプリケーションのプロファイルは <vnsAbsFuncProfGrp> で指定されます。 <vnsAbsFuncProfGrp> 名は、テンプレートが定義されるアプリケーションに対して直観的であるべきです。 たとえば、機能プロファイルが web アプリケーションのロード バランシング機能用の場合、vnsAbsFuncProfGrp は「Web アプリケーション仮想サーバ」という名前であるべきです。
<vnsAbsFuncProfGrp> で指定される機能プロファイルは、必要に応じて 1 つまたは複数の機能を含むことができます。 グラフが同デバイス上の複数の機能の連動を必要とする場合、プロファイルは <vnsAbsFuncProfGrp> 内でそれらの機能のデフォルトを定義できます。 プロファイル内の各機能設定は <vnsAbsFuncProf> に含まれています。
各 vnsAbsFuncProf には、デバイス モデルによって定義される機能への 1 つの関係があります。 関係は機能プロファイルでインスタンス化される機能のタイプを指定します。 機能との関係は vnsAbsFuncProf に含まれるオブジェクトの vnsRsProfToMFunc によって定義されます。 vnsRsProfToMFunc には、機能オブジェクトの完全修飾名で機能を特定する tDn 属性があります。 この例は、デバイス モデル内の機能を指定する tDn を示しています。
これらの機能のパラメータを設定するメカニズムは、APIC でのサービス グラフの作成と同一です。 機能プロファイルのパラメータ、関係およびフォルダは、vnsMDevCfg、vnsGrpCfg、および vnsFuncCfg 下で定義されるパラメータ、関係およびフォルダのインスタンスである場合もあります。
ノースバウンド API を介したサービス グラフの作成については、『Cisco APIC Layer 4 to Layer 7 Services Deployment Guide』を参照してください。
次の図に、デバイスを表すオブジェクト モデルを示します。
次の表では、オブジェクト モデルでのオブジェクトについて説明します。
コンポーネント |
説明 |
---|---|
vnsMDev |
サービス デバイス タイプのメタデータの定義が含まれます。 メタデータは、ベンダー名、デバイス モデル、およびデバイスのバージョンを含むベンダー固有データを含みます。 サービス デバイスは、GoTo および GoThrough デバイスとして分類されます。 デバイスは、パケットがデバイスの MAC アドレスまたは IP アドレスにアドレス指定されている場合、GoTo デバイスです。 パケットがパス内挿入によってデバイスで送信され、パケットがデバイスの MAC アドレスまたは IP アドレスにアドレス指定されていない場合、デバイスは GoThrough デバイスと見なされます。 トランスペアレント モードのファイアウォールは GoThrough デバイスの例です。 デバイス パッケージおよびデバイス固有モデルは、GoTo モードと GoThrough モード両方のデバイスをサポートできます。 デフォルトでは、デバイス仕様は GoTo モードのデバイスを表すと見なされます。 デバイス固有ファイルは、両方のモードをサポートするようにも、GoThrough モードだけをサポートするようにも、次の属性を使って変更できます。
funcMask: "GoTo,GoThrough" |
vnsMCred |
デバイスにユーザを認証するために必要なクレデンシャルを表します。 たとえば、keyはキー ベースの認証スキームに使用されます。 このモデルは、このようなキー ベースのクレデンシャル認証のメタ情報を詳しく説明します。 |
vnsDevScript |
デバイスのスクリプト ハンドラを表します。 この管理対象オブジェクトには、名前、パッケージ名とバージョンを含むスクリプト ハンドラの関連属性のメタ情報が含まれます。 |
vnsClusterCfg |
クラスタ設定フォルダおよびパラメータが含まれます。 クラスタ設定は、デバイスのクラスタで実行されるグラフとは別に、デバイスのクラスタの機能性に影響を及ぼします。 |
vnsDevCfg |
デバイス固有の設定フォルダおよびパラメータが含まれます。 デバイス設定は、デバイスのクラスタで実行されるグラフとは別に、クラスタ内の特定のデバイスの機能性に影響を及ぼします。 |
vnsMCredSecret |
サービス デバイスにログインするためのパスワードが含まれます。 |
vnsMDevCfg |
基本レベルのデバイス設定を表します。 このオブジェクトはアンカーとして、さまざまなデバイス設定と共有設定(MGrpCfg)を区別します。 MDevCfg での設定は、複数グラフ上の機能の複数インスタンスで共有することができます。 |
vnMGrpCfg |
メタグループ設定を表します。 これにはグラフの複数の機能で共有できる設定の一部が含まれます。 グループ設定下での設定はグラフ インスタンス内にあり、他のグラフでは参照することができません。 |
vnsMFolder |
メタ フォルダ情報を表します。 モデルは MFolders および MParams で構成される汎用設定を使用します。 このオブジェクトでは設定を階層として指定できます。 |
vnsMParam |
設定を階層として指定することを可能にします。 このモデルでは、メタデータはキー、タイプ(整数、文字列)、およびパラメータに関連する他の属性で構成されます。 |
vnsMRel |
別のオブジェクトとのメタ関係を表します。 また、別のフォルダまたはパラメータの参照が可能です。 |
vnsMFunc |
デバイスの単一機能のメタデータが含まれます。 機能には、一連のコネクタと機能固有の設定ツリーが含まれます。 この管理対象オブジェクトには、このようなすべてのオペレーション用のメタデータが含まれます。 |
vnsMConn |
ロジカル機能間のコネクタを表します。 メタデータには、任意の接続の濃度、方向、およびカプセル化タイプ(VXLAN または VLAN)などがあります。 |
vnsMIfLbl |
インターフェイスのラベルを表します。 インターフェイスは、抽象的な方法によってデバイスでラベル付けできます。 たとえば、ファイアウォール デバイスは、信頼できるインターフェイス、信頼できないインターフェイス、管理インターフェイスを実装できます。 コンクリート モデルは、デバイスでサポートされるラベルの数を指定します。 |
vnsMImage |
機能のイメージ ファイルを表します。 この管理対象オブジェクトには、イメージ ファイルとその場所の詳細が含まれます。 グラフィカル ユーザ インターフェイス(GUI)のイメージを実行するのに使われます。 |
vnsMChainable |
すぐに親機能に従えるデバイスの機能名を指定します。 この管理対象オブジェクトには連鎖できる機能名が含まれます。 |
vnsAbsFuncProfContr |
機能プロファイル グループのコンテナです。 特定のアプリケーションの機能のプロファイル グループ(グラフ)の集合を定義します。 各機能のプロファイル グループは、特定のアプリケーションに対して特定のデフォルト パラメータが初期設定されている 1 つ以上の機能を含むことができます。 機能プロファイルのコンテナは、デバイス パッケージの開発者によるデバイス モデル内で定義することも、テナントで定義し、一連のアプリケーションにグラフのカタログを与えることも可能です。 |
vnsAbsFuncProfGrp |
機能プロファイル グループを表します。 特定のアプリケーションに対してデフォルト パラメータが初期設定されている機能の集合です。 機能プロファイル グループは、デバイス パッケージの開発者によるデバイス パッケージ内で定義することも、特定のアプリケーションのグラフのカタログとして APIC テナントによって定義することも可能です。 |
vnsAbsFuncProf |
機能プロファイルを表します。 これには vnsAbsDevCfg(vnsMDevCfg のインスタンス)、vnsAbsGrpCfg(vnsMGrpCfg のインスタンス)、および vnsAbsFuncCfg(vnsMFunc のインスタンス)が含まれます。 機能プロファイルはデバイス モデルで定義された特定の機能にリンクされます。 機能プロファイルはデバイス パッケージ内で定義することも、vnsAbsFuncProfGrp 内の機能のカタログとして APIC テナントで 定義することも可能です。 |
<polUni> <infraInfra> <vnsMDev vendor="Insieme" model="SampleDevice" version="1.0"> <vnsMIfLbl name="external"/> <vnsMIfLbl name="internal" /> <vnsMIfLbl name="management" /> <vnsMCred name="username" key="username"/> <vnsMCredSecret name="password" key="password"/> <vnsDevScript name="Insieme" packageName="DeviceScript.py" versionExpr="1.0" ctrlrVersion="1.0"/> <vnsComparison name="isAlpha" cmp="match" value="[a-zA-Z]+" /> <vnsComposite name="isL4Port" comp="or"> <vnsRange name="between1And64K" value1="0" value2="65535" /> </vnsComposite> <vnsComposite name="isProtocol" comp="or"> <vnsComparison name="ip" cmp="eq" value="IP" /> <vnsComparison name="tcp" cmp="eq" value="TCP" /> <vnsComparison name="udp" cmp="eq" value="UDP" /> <vnsComparison name="http" cmp="eq" value="HTTP" /> </vnsComposite> <vnsComposite name="yesNo" comp="or"> <vnsComparison name="yes" cmp="eq" value="YES" /> <vnsComparison name="No" cmp="eq" value="NO" /> </vnsComposite> <vnsComposite name="enableDisable" comp="or"> <vnsComparison name="enabled" cmp="match" value="ENABLED" /> <vnsComparison name="disabled" cmp="match" value="DISABLED" /> </vnsComposite> <vnsComposite name="onOff" comp="or"> <vnsComparison name="on" cmp="match" value="ON" /> <vnsComparison name="off" cmp="match" value="OFF" /> </vnsComposite> <vnsComparison name="isIPAddress" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/> <vnsComparison name="isIPMask" cmp="match" value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/> <vnsMDfcts> <vnsMDfct code="100" recAct="Configure a Netmask for the vipaddress" descr="VIP requires vipaddress and NetMask"/> <vnsMDfct code="200" recAct="Configure a relation to VIP Folder" descr="Description of defect 100"/> </vnsMDfcts> <vnsMDevCfg name="DeviceConfig"> <vnsMFolder key="Network" scopedBy="epg"> <vnsMFolder key="vip"> <vnsMParam key="vipaddress" description="VIP IPAddress" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" dType="str" description="NetMask for the IP Address" validation="isIPMask"/> </vnsMFolder> <vnsMFolder key="subnetip"> <vnsMParam key="subnetipaddress" description="Subnet IPAddress of the Device" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" description="NetMask for the IP Address" dType="str" validation="isIPMask"/> </vnsMFolder> <vnsMFolder key="mgmtip"> <vnsMParam key="mgmtipaddress" description="Mgmtm IPAddress of the Device" dType="str" validation="isIPAddress"/> <vnsMParam key="NetMask" dType="str" description="NetMask for the IP Address" validation="isIPMask"/> </vnsMFolder> </vnsMFolder> <vnsMFolder key="Monitor" scopedBy="epg"> <vnsMParam key="dup_state" description="dup_state"/> <vnsMParam key="dup_weight" description="dup_state"/> <vnsMParam key="state" description="state"/> <vnsMParam key="weight" description="state"/> </vnsMFolder> <vnsMFolder key="Server" scopedBy="epg"> <vnsMParam key="name" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="domain" description="Domain name of the server"/> <vnsMParam key="ipaddress" description="Server IP address" dType="str" validation="isIPAddress"/> </vnsMFolder> <vnsMFolder key="Service" scopedBy="epg" cardinality="n"> <vnsMParam key="servicename" description="Service Name" dType="str" validation="isAlpha"/> <vnsMParam key="servicetype" description="Service Type" dType="str" validation="isProtocol"/> <vnsMParam key="servername" description="Server Name" dType="str" validation="isAlpha"/> <vnsMParam key="serveripaddress" description="Server IP Address" dType="str" validation="isIPAddress"/> <vnsMParam key="serviceport" description="IP port number for service" validation="isL4Port"/> <vnsMRel key="MonitorConfig" cardinality="n"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Monitor"/> </vnsMRel> </vnsMFolder> <vnsMGrpCfg name="SharedConfig"> </vnsMGrpCfg> <vnsMFolder key="Monitor" scopedBy="epg"> <vnsMParam key="dup_state" description="dup_state"/> <vnsMParam key="dup_weight" description="dup_state"/> <vnsMParam key="state" description="state"/> <vnsMParam key="weight" description="state"/> </vnsMFolder> </vnsMDevCfg> <vnsMGrpCfg name="SharedConfig"> </vnsMGrpCfg> <vnsMFunc name="SLB"> <vnsMImage name="slb.png"/> <vnsMConn name="external" dir="input" encType="vlan" notifications="Endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="internal" dir="output" encType="vlan" notifications="Endpoint"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="VServer" scopedBy="epg"> <vnsMParam key="vservername" description="Name of VServer" mandatory="true" dType="str" validation="isAlpha"/> <vnsMParam key="port" description="Port for Virtual server" validation="isL4Port"/> <vnsMParam key="persistencetype" description="persistencetype"/> <vnsMParam key="servicename" description="Service bound to this vServer"/> <vnsMParam key="servicetype" description="Service bound to this vServer" dType="str" validation="isProtocol"/> <vnsMParam key="clttimeout" description="Client timeout"/> <vnsMFolder key="VServerGlobalConfig" description="This references VServer global Configuration"> <vnsMRel key="ServiceConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Service"/> </vnsMRel> <vnsMRel key="ServerConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Server"/> </vnsMRel> <vnsMRel key="VipConfig"> <vnsRsTarget tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mDevCfg/mFolder-Network/mFolder-vip"/> <vnsRsConnector tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mFunc-SLB/mConn-external"/> </vnsMRel> </vnsMFolder> </vnsMFolder> </vnsMFunc> <vnsMFunc name="SSL"> <vnsMChainable name="SLB"/> <vnsMImage name="ssl.png"/> <vnsMConn name="internal" dir="input" encType="vlan"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-external" /> </vnsMConn> <vnsMConn name="external" dir="output" encType="vlan"> <vnsRsInterface tDn="uni/infra/mDev-Insieme-SampleDevice-1.0/mIfLbl-internal" /> </vnsMConn> <vnsMFolder key="Certificate" scopedBy="epg"> <vnsMParam key="passplain" description="passplain"/> <vnsMParam key="servicename" description="servicename"/> <vnsMParam key="clientcertnotbefore" description="clientcertnotbefore"/> <vnsMParam key="serial" description="serial"/> <vnsMParam key="publickeysize" description="publickeysize"/> <vnsMParam key="subject" description="subject"/> <vnsMParam key="fipskey" description="fipskey"/> <vnsMParam key="data" description="data"/> <vnsMParam key="nodomaincheck" description="nodomaincheck"/> <vnsMParam key="priority" description="priority"/> <vnsMParam key="publickey" description="publickey"/> <vnsMParam key="version" description="version"/> <vnsMParam key="notificationperiod" description="notificationperiod"/> <vnsMParam key="issuer" description="issuer"/> <vnsMParam key="status" description="status"/> <vnsMParam key="clientcertnotafter" description="clientcertnotafter"/> <vnsMParam key="certkey" description="certkey"/> <vnsMParam key="passcrypt" description="passcrypt"/> <vnsMParam key="key" description="key"/> <vnsMParam key="password" description="password"/> <vnsMParam key="signaturealg" description="signaturealg"/> <vnsMParam key="expirymonitor" description="expirymonitor"/> <vnsMParam key="linkcertkeyname" description="linkcertkeyname"/> <vnsMParam key="inform" description="inform"/> <vnsMParam key="cert" description="cert"/> <vnsMParam key="daystoexpiration" description="daystoexpiration"/> </vnsMFolder> </vnsMFunc> </vnsMDev> </infraInfra> </polUni>