Cisco APIC レイヤ 4 から レイヤ 7 のデバイス パッケージ開発ガイド
ファブリック接続
ファブリック接続

ファブリック接続

ファブリック接続の概要

デバイスの登録

Application Policy Infrastructure ControllerAPIC)によってサービス ノードを管理するには、管理者がサービス デバイスを明示的に登録する必要があります。 登録手順の実行時に、次の情報を入力する必要があります。
  • トポロジ情報:ファブリックのリーフ ノードへのデバイスのインターフェイスの接続方法です。

  • ラベルのインターフェイス:デバイス要件に基づきます。 APIC が使用するラベルは特定の機能のためにインターフェイスをコネクタにバインドし、それによってサービス デバイスが提供されます。

  • IP アドレスとポート情報:デバイスに接続するために必要な情報です。

  • ユーザ名とパスワード:デバイスを設定するために使用するクレデンシャルです。

次に示すファイアウォール デバイス仕様のサンプルは、インターフェイスの 3 種類のラベルを定義します。
  • Inside:より信頼されるネットワーク インターフェイスを特定します(セキュア)。

  • Outside:より信頼されないネットワーク インターフェイスを特定します。

  • Management:管理接続に使うインターフェイスを特定します。

ラベルは vnsMLabel タグを使用して、デバイス仕様で定義されています。 ファイアウォール デバイス上のすべてのインターフェイスは、デバイス仕様で定義されたタイプのうちの 1 つに分類されます。


(注)  


APIC は、インターフェイスがデバイス上に実際に存在するかどうかチェックしません。


次の例は、APIC にデバイスを登録するためのノースバウンド XML ポストを示しています。 以下のようにリクエストをポストするか、APIC GUI を使用して、デバイスを登録できます。
<polUni>
    <fvTenant
        dn="uni/tn-Tenant1"
        name="Tenant1">
        <vnsLDevVip name="Firewall-1">

            <vnsLIf name="external">
                <vnsRsMetaIf tDn="uni/infra/mDev-CISCO-ASA-1.0.1.16/mIfLbl-external"/>
                <vnsRsCIfAtt tDn="uni/tn-Tenant1/lDevVip-Firewall/cDev-ASA/cIf-Eth1_1"/>
            </vnsLIf>
            <vnsLIf name="internal">
                <vnsRsMetaIf tDn="uni/infra/mDev-CISCO-ASA-1.0.1.16/mIfLbl-internal"/>
                <vnsRsCIfAtt tDn="uni/tn-Tenant1/lDevVip-Firewall/cDev-ASA/cIf-Eth1_2"/>
            </vnsLIf>
            <vnsCDev name="FW1">
                
                <vnsCIf name="Eth1_1">
                       <vnsRsCIfPathAtt tDn="topology/pod-1/paths-101/pathep-[eth1/20]"/>
                </vnsCIf>
                <vnsCIf name="Eth1_2">
                       <vnsRsCIfPathAtt tDn="topology/pod-1/paths-102/pathep-[eth1/21]"/>
                </vnsCIf>
                <vnsCIf name="Eth1_3">
                       <vnsRsCIfPathAtt tDn="topology/pod-1/paths-103/pathep-[eth1/22]"/>
                </vnsCIf>
                
                <vnsCMgmt name="devMgmt"
                          host="192.168.78.62"
                          port="80"
                          />

               <vnsCCred name="username"
                          value="admin"
                          />
               <vnsCCredSecret name="password"
                          value="insieme"
                          />
            </vnsCDev>
        </vnsLDevVip>
    </fvTenant>
</polUni>

次の図に、デバイス登録のトポロジを示します。

図 1. デバイス登録のトポロジ



デバイスを登録する 3 つのステップは、次のとおりです。
  1. インターフェイスの登録:
    • Eth 1/1:outside としてラベル付けされます。 リーフ ノード 101、Eth 1/20 に接続されます。

    • Eth 1/2:inside としてラベル付けされます。 リーフ ノード 102、Eth 1/21に接続されます。

    • Eth 1/3:management としてラベル付けされます。 リーフ ノード 103、Eth 1/22に接続されます。

  2. デバイスに到達するための管理 IP アドレス(192.168.78.62)とポート(80)を指定します。

  3. デバイスと通信するためのユーザ名とパスワードのクレデンシャルを指定します。

コネクタ

vnsMFunc 用コネクタは、2 つ以上の機能ノード間、またはグラフ内の機能ノードとファブリック間の接続を定義します。 コネクタは次の属性を持ちます。
  • name:特定のコネクタを識別します。

  • encType:パケットが VLAN ヘッダでタグ付けされているか、または VXLAN カプセル化されているかを定義します。

  • vnsRsInterface:コネクタがファブリックへの接続を提供すると、このインターフェイスがコネクタをデバイスのインターフェイス タイプに関連付けます。

次の図では、2 台のコネクタがファイアウォール機能に関連付けられています。 最初のコネクタは外部またはアウトサイド ネットワークへの接続を表し、2 番目のコネクタは内部またはインサイド ネットワークへの接続を表します。 どちらも VLAN ヘッダでタグ付けされています。

図 2. ファイアウォール機能に関連付けられたコネクタ

サービス グラフ

サービス グラフは、一連のターミナル間の順序付けられた機能セットです。 サービス グラフはGUI または CLI を使って手動で作成でき、また Application Policy Infrastructure ControllerAPIC)のノースバウンド サービス統合 API を使ってプログラミング形式でも作成できます。 グラフ内の 1 つの機能は 1 つまたは複数のパラメータを必要とし、1 つまたは複数のコネクタを持っている場合があります。

サービス グラフは、次の要素を使ってネットワークを表します。

  • 機能ノード(緑):機能は、トランスフォーム(SSL 終了、VPN ゲートウェイ)、フィルタ(ファイアウォール)、または端末(侵入検知システム)などのトラフィックに適用されます。

  • 終端ノード(青):サービス グラフの入出力

  • コネクタ(白):ノードからの入出力

  • 接続:トラフィックがネットワークを介して送られる方法

次の図に、サービス グラフを示します。

図 3. サービス グラフ


(注)  


この一般的なサービス グラフには 2 つの出力ノードがありますが、現在、ファブリックがサポートするのは 1 つのサービス グラフで入力ノード1 つ、出力ノード1 つのみです。

serviceModify 機能は、ネットワークと機能設定のインスタンス化に使われます。


グラフ レンダリング

デバイスで機能をインスタンス化するときに、Application Policy Infrastructure ControllerAPIC)は次の操作を実行します。
  • コネクタの VLAN/VXLAN ID を割り当てます。 APIC は、以前のノードに VLAN/VXLAN ID が割り当てられているかどうかをチェックします。 以前のノード値を使用するか、またはコネクタの新しいタグを割り当てます。 encType は VLAN/VXLAN ID が割り当てられているかどうかを示します。

  • インターフェイス関係とデバイスのインターフェイスのラベル情報を使って、インターフェイスをコネクタに関連付けます。 前の図ではファイアウォール デバイスにファイアウォール機能をレンダリングしていたので、次のようなバインディングとなります。
    • external としてラベル付けられるコネクタ:デバイス インターフェイス Eth1/1

    • internal としてラベル付けられるコネクタ:デバイス インターフェイス Eth1/2

関連付けられたインターフェイスへのコネクタに割り当てられた VLAN または VXLAN タグを有効化するか、またはバインドします。

次の図では、APIC がVLAN 10 を外部コネクタに、VLAN 20 を内部コネクタに割り当てています。 デバイスのスクリプトは VLAN 10 を Eth1/1 インターフェイスに設定し、ファイアウォール機能にバインドする必要があります。 同様に、デバイスのスクリプトは VLAN 20 を Eth1/2 インターフェイスに設定し、ファイアウォール機能にバインドする必要があります。

図 4. VLAN がバインドされたファイアウォール

デバイスのスクリプト インターフェイス

VXLAN/VLAN カプセル化、インターフェイス、およびインターフェイスと VLAN/VXLAN 間の関連付けは、デバイス設定のパラメータとしてデバイスのスクリプトに渡されます。 前の図では、Application Policy Infrastructure ControllerAPIC)がデバイス設定に次の情報を提供しています。
  • カプセル化:VLAN 10、VLAN 20

  • インターフェイス:Eth1/1、Eth1/2

  • ロジカル インターフェイスへのカプセル化の関連付け:
    • 「Firewall-1_outside_1553」:(VLAN 10、Eth1/1)

    • 「Firewall-1_inside_7697」:(VLAN 20、Eth1/2)

カプセル化タグ、インターフェイス、および関連付けは、タグを使用するすべてのグラフにおけるすべての機能がデバイスから削除された場合のみ破棄されます。 デバイス設定のカプセル化情報を提供することで、APIC は、タグを参照するすべての機能が削除されるまでカプセル化タグがデバイスから削除されないことを保証します。 次に、ディクショナリの例を示します。
Configuration = 
{ 
 (0, '', <LdevInstance>): {
   ...                                                                                  
   (7, '', <encap-instance>): {'state': 1, 'tag': TagValue, 'type': TagType},
   (7, '', <encap-instance>): {'state': 1, 'tag': TagValue, 'type': 0},
   (8, '', <encap-association-Instance>): {
         'state': 1, 
         'encap': <encapInstance>, 
         'vif': <LogicalInterfaceInstanceID>}
   },
   (8, '', <encap-association-Instance>): { 
         'state': 1, 
         'encap': <encapInstance>, 
         'vif': <LogicalInterfaceInstanceID>}, 
   },  
   (10, '', <LogicalInterfaceInstance>): {
         'state': 0,
         'cifs': { 
            'cDevInstance': <Interface Value>
         }
   },
   (10, '', <LogicalInterfaceInstance>): {
         'state': 0,
         'cifs': { 
            'cDevInstance': <Interface Value>
         }
   },  
 }
}

Legend: 
The dictionary format is as follows:  

(type, key, name): {
   'state': StateValue,
   'device': CDevName, 
   'connector': connectorValue, 
   'value': Parameter Value, 
}


type: 
7 – Encap Instance [Encap Type=0 (VLAN), Encap Type=1 (VXLAN))]
                    Encap Tag = VLAN ID or VNID (VXLAN case) 
8 – VEncapAss (Device Interface and Encap (VXLAN/VLAN) association) 
10 – VIF (logical interface) – Identifies interface on the device.

CDevName: Identifies a specific device within a cluster node. This attribute is not applicable to encap, VIF, or vEncapAss. 

connectorValue: Identifies the connector to which this parameter should be bound. This attribute is not applicable to encap, VIF, or vEncapAss. 

value: Value of the parameter.

StateValue: 
0 – No change 
1 – Create
2 – Modify
3 - Destroy
機能内のコネクタは、デバイス設定で指定されたカプセル化関連付けパラメータと関係しています。 カプセル化関連付けパラメータは、特定の VLAN/VXLAN タグおよびインターフェイスにコネクタをバインドします。 上記の例では、機能用のディクショナリには次のコネクタ情報が含まれます。
Configuration = 
{ 
    (0, '', 'Firewall-1'): { 
      'state': 2, 
      'value': {
         (7, '', '1553'): {'state': 1, 'tag': 10, 'type': 0},
         (7, '', '7697'): {'state': 1, 'tag': 20, 'type': 0},
         (8, '', 'Firewall-1_outside_1553'): {'state': 1, 
                                              'encap': '1553', 
                                              'vif': 'Firewall-1_outside'},
         (8, '', 'Firewall-1_inside_7697'): {'state': 1, 
                                             'encap': '1553', 
                                             'vif': 'Firewall-1_inside'},
                                       
         (10, '', 'Firewall-1_outside'): {'state': 1,
                                          'cifs': {'FW2': 'Eth1/1' }
                                         },
         (10, '', 'Firewall-1_inside'):  {'state': 1,
                                          'cifs': {'FW': 'Eth1/2'}}
                                         }                
         (1, '', '4552'): {
            'state': 1, 
            'value': {
              (3, 'Firewall', 'F1’): {
                  'state': 1, 
                  'value': {
                      (2, 'external', 'conn1'): { 'state': 1,
                          'value': {
                             ('9', '', 'outside_1553'): {
                                  'state': 1,
                                  'value': 'Firewall-1-outside_1553'
                             },
                          }
                      }, 
                      (2, 'internal', 'conn2'): { 'state': 1
                          'value': { 
                             ('9', '', 'inside_7697'): {
                                  'state': 1,
                                  'value': 'Firewall-1-inside_7697'
                             },
                          }
                      }, 
                      (4, 'Firewall-Config', 'FW-Config 1'): {
                           'state': 1,
                           'value' : {
                               (5, 'Param-1', ''): { 'state': 1, 'value': value },
                           . . .
                           }
                      },
                  },
              },
           },
         }, 
      },
}
上のディクショナリに基づいて、次のとおりにデバイス スクリプトを設定する必要があります。
  • インターフェイス Eth1/1 上で VLAN 10を有効化。
    • encap VLAN 10 で Eth1/1.10 サブインターフェイスを作成します。

    • VLAN 10 に Eth1/1 を追加します。

  • インターフェイス Eth1/2 上で VLAN 20 を有効化します。
    • encap VLAN 20 で Eth1/2.20 サブインターフェイスを作成します。

    • VLAN 20 に Eth1/2 を追加します。


(注)  


コネクタ値は、クラスタ内の各デバイスがさまざまなインターフェイスを使えるようにするディクショナリです。