非ブロッキング マルチキャスト サービス リフレクション

NAT 注意事項と制限事項

NBM サービス リフレクション機能には、次の注意事項と制限事項があります。

  • Cisco NX-OS リリース 10.2(3)F 以降では、ユニキャストからマルチキャスト NAT、マルチキャストからユニキャスト NAT、マルチキャストからマルチキャスト NAT、および出力 NAT がデフォルト以外の VRF でサポートされています。

  • NAT 構成が存在する場合、構成のロールバックはサポートされません(失敗します)。

  • 場合によっては、サービス インターフェイスの再構成が拒否され、それを変更するには、特定のシーケンスが必要になる場合があります。また、再構成後、NAT ルールが自動的に回復しない場合があり、追加のアクションが必要です。

  • Cisco NX-OS リリース 10.3(2)F 以降、「feature nbm」が有効になっている場合にのみ、サブインターフェイスで NAT がサポートされるようになりました。

  • Cisco NX-OS リリース 10.3(2)F 以降、出力サービス リフレクション(出力マルチキャスト NAT、およびマルチキャストからユニキャスト NAT)は、出力インターフェイスの IP アドレスとして NAT 後の送信元 IP をサポートします。この機能拡張は、通常のマルチキャストおよび NBM でサポートされます。

マルチキャストからマルチキャスト入力 NAT

入力 NAT では、着信(S、G)を別の送信元、グループ、またはその両方に変換できます。ドメイン内のすべての受信者は、変換後のフローに参加できます。この機能は、マルチキャスト トラフィックが次の場合に役立ちます。

  • アドレスが重複している可能性がある別のドメインからネットワークに入る

  • ネットワーク内のアプリケーションによって認識されないアドレスが付属しています

事前変換されたルートでの動的 IGMP 参加または PIM 参加は、入力 NAT ではサポートされていません。

マルチキャストからマルチキャストへの入力 NAT は、PIM アクティブ モードでのみ機能します。PIM パッシブ モードはサポートされていません。

マルチキャストからマルチキャスト出力 NAT

出力 NAT では、既存のフロー(S、G)を、発信インターフェイスごとに異なる送信元またはグループ アドレスに変換できます。この機能は、特定のソースまたはグループ アドレスのみを受け入れる可能性のある外部エンティティへのマルチキャスト配信に役立ちます。また、フローが外部エンティティに公開されるときに、内部アドレス空間を非表示にするパスとして機能することもできます。

変換後のルートでの動的 IGMP 参加または PIM 参加は、出力 NAT ではサポートされていません。

変換前と変換後のフローの帯域幅に不一致がある場合、障害 MO が生成されます。

PIM パッシブ モードでは、フローの帯域幅管理は外部コントローラによって実行され、変換前と変換後の両方のフローがプロビジョニングされます。フローの作成は、API を介して利用できます。

ENAT PIM パッシブの例

サービス インターフェイス loopback1 の設定


URL:
{{ip}}/api/mo/sys/mrib/inst/dom-default/sr.json
Payload:
{ "mribServiceReflect": {
"attributes": {"status": "" },
"children": [
{
"mribSrcIntf": {
"attributes": {
"srcIntf": "lo1",
"status": ""
}
}
}
]
}
}

NAT モードを出力に設定する

URL:
{{ip}}/api/mo/sys/mrib/inst/dom-default/sr.json
Payload:
{"mribEgressMode": {"attributes": {"grpList": "225.0.0.0/8"}}}

マッピング インターフェイスの設定

URL:
{{ip}}/api/mo/sys/mca/config/natsr/mappings.json
Payload:
{"mcaNatMapDefaultSif": {"attributes": {"domName": "default", "maxEnatReplications": "40", "siIfName": "eth1/2", "status": "" }}}

SR ルールの設定:

URL:
{{ip}}/api/mo/sys/mrib/inst/dom-default/sr/rule.json
Payload:
{"mribSrRule": {"attributes": {"status": ""},
"children": [{"mribRule": {"attributes": {"postTransGrp": "226.1.1.1", "postTransSrc": "57.1.1.2", "preTransGrp": "225.1.1.1", "preTransSrc": "47.1.1.2", "grpMasklen": 32, "srcMasklen": 32, "udpsrcPort": "10003", "udpDestPort": "20003", "staticOif": "eth1/29/1"}}} ]
} }

NAT 前のフロー

URL:
{{ip}}/api/mo/sys/nbm/conf/flows.json
Payload:
{"nbmFlows": {"children": [{"nbmConfFlowsDom": {"attributes": {"name": "default", "status": ""},
"children": [ {"nbmConfFlow": { "attributes": {"group": "225.1.1.1", "source": "47.1.1.2", "ingressIf": "eth1/3" "policer": "ENABLED","bwKbps": "1000" "status": ""} } },
] }} ] } }

NAT 後のフロー

URL:
{{ip}}/api/mo/sys/nbm/conf/flows.json
Payload:
{"nbmFlows": {"children": [{"nbmConfFlowsDom": {"attributes": {"name": "default"},
"children": [ {"nbmConfFlow": {"attributes": {"group": "226.1.1.1", "source": "57.1.1.1", "ingressIf": "loopback1", "bwKbps": 10000, "policer": "ENABLED", "status": "" },
"children": [{"nbmConfFlowIf": {"attributes": {"id": "eth1/29/1", "isLhr": "YES", "status": "" }}}]}}] }} ] } }

マルチキャストからユニキャスト NAT

マルチキャストからユニキャストへの NAT は、コンテンツをパブリック クラウドにホストするために使用されます。クラウドがマルチキャストをサポートしていない可能性があるため、変換が必要です。変換後、ユニキャスト パケットはユニキャスト転送ロジックに従ってルーティングされます。

異なるサイトに接続する場合も同様の使用例が見られます。コアがエンド ツー エンドのマルチキャストをサポートしていない場合、コンテンツはさまざまなサイトにユニキャストとして配信されます。境界ボックスは、マルチキャストをユニキャストに変換し、消費のためにさまざまなサイトに配信します。

MU NAT の場合、PMN は、事前に変換されたマルチキャスト フローの帯域幅管理を引き続き実行します。変換されたユニキャスト フローの場合、変換されたユニキャスト トラフィックが中断することなく送信されるように、発信インターフェイスはユニキャスト帯域幅を予約する必要があります。PMN は、NAT 関係を示すためにフロー操作 MO も発行します。ユニキャスト変換ごとに内部で 3 つの再循環が発生するため、再循環ポート帯域幅の 3 分の 1 だけが想定されていることを確認する必要があります。再循環に使用されるサービス リフレクト マップ インターフェイスで輻輳が発生した場合、PMN は障害 MO を公開しません。

PIM パッシブ モードでは、コントローラは帯域幅管理を実行し、Rest API を呼び出して事前変換されたフローをプロビジョニングします。PMN は、NAT 関係を示すために、フロー操作 MO を公開します。

MU NAT PIM パッシブの例

以下は、MUNAT Rest API 呼び出しとペイロード情報です。

Re-circ インターフェイスの設定

url: 172.28.249.173/api/mo/sys/mca/config/natsr/mappings.json?rsp-subtree=full
Payload:
{
"mcaNatMapDestPrefixSif": {
"attributes": {
"destPrefix": "112.10.3.0/24",
"domName": "default",
"maxEnatReplications": "40",
"siIfName": "eth1/15",
"status": ""
}
}
}

サービス リフレクト ルール

url: <ip_switch>/api/mo/sys/mrib/inst/dom-default/sr/rule.json?rsp-subtree=full
Payload:
{
"mribRule": {
"attributes": {
"grpMasklen": "32",
"postTransGrp": "112.3.3.51",
"postTransSrc": "11.1.1.3",
"preTransGrp": "225.10.1.50",
"preTransSrc": "112.3.1.2",
"srcMasklen": "32",
"staticOif": "unspecified",
"status": "",
"udpDestPort": "0",
"udpsrcPort": "0"
}
}
}

NBM フロー

url: <ip_switch>/api/mo/sys/nbm/show/flows/dom-default.json?rsp-subtree=full
Payload:
{
"nbmConfFlow": {
"attributes": {
"bwKbps": "50000",
"group": "225.1.1.1",
"ingressIf": "eth1/2",
"policer": "ENABLED",
"source": "112.3.1.2",
"status": ""
}
}
}

ユニキャストからマルチキャスト NAT へ

ユニキャストからマルチキャストへの NAT は、入力変換モードで機能します。マルチキャスト変換されたパケットは、出力変換してマルチキャストに戻すことができます。ユニキャスト パケットの接続先アドレスは、NAT 送信元ループバック インターフェイス セカンダリ IP アドレスと一致する必要があります。

ユニキャストからマルチキャストへの NAT は、1:1 の変換のみをサポートします。1 対多の変換が必要な場合は、1:1 のユニキャストからマルチキャストへの NAT を設定してから、1 対多のマルチキャストからマルチキャストへの NAT 変換を設定する必要があります。

ユニキャストからマルチキャストへの NAT では、事前変換されたユニキャスト トラフィックが到着するポートでユニキャスト帯域幅予約を設定する必要があります。これにより、そのポートのマルチキャスト トラフィックがすべてのポート帯域幅を消費しないようにすることができます。PMN は、変換後のマルチキャスト グループのフロー ポリシーから派生した帯域幅を使用して、すべてのスライスにポリサーをインストールして、ユニキャスト フローをポリシングします。マルチキャスト変換ごとに 1 つの再循環があるため、再循環ポートの帯域幅は着信ポートの帯域幅と同じである必要があります。

PMN は、NAT 関係を示すためにフロー操作 MO を公開します。再循環に使用されるサービス リフレクト マップ インターフェイスに輻輳がある場合、PMN は障害 MO を公開しません。


(注)  


後続のマルチキャストからマルチキャストへの変換フローにフローの優先度を割り当てることはできません。このフローの優先順位は、ユニキャストからマルチキャストへの変換フロー(親フロー)に設定する必要があります。


ユニキャストからマルチキャストへの NAT PIM アクティブの例

次に、PIM アクティブ モードでのユニキャストからマルチキャストへの NAT の例を示します。

UMNAT フロー

ip service-reflect destination 10.34.202.11 to 234.34.203.11 mask-len 32 source 10.30.17.11 to 10.34.201.1 mask-len 32

other supporting config needed for above flow stitching are:
multicast service-reflect dest-prefix 234.34.203.0/24 map interface Ethernet1/6

NBM flow-policy config:
nbm flow-policy
policy umnat
    bandwidth 15000 kbps
    ip group-range 234.34.202.1 to 234.34.202.255
    ip group-range 234.34.203.1 to 234.34.203.255

連鎖 MMNAT フロー

ip service-reflect destination 234.34.203.11 to 234.34.253.11 mask-len 32 source 10.34.201.1 to 10.34.202.111 mask-len 32 to-udp-src-port 25010 to-udp-dest-port 25310 static-oif Ethernet1/56
ip service-reflect destination 234.34.203.11 to 234.34.253.11 mask-len 32 source 10.34.201.1 to 10.34.202.111 mask-len 32 to-udp-src-port 25010 to-udp-dest-port 25510 static-oif Ethernet1/55

other supporting config needed for above flow stitching are:

multicast service-reflect interface Ethernet1/56 map interface Ethernet1/3
multicast service-reflect interface all map interface Ethernet1/4

NBM flow-policy config:
nbm flow-policy
  policy ummnat1
    bandwidth 16000 kbps
    ip group-range 234.34.253.10 to 234.34.253.100
      priority critical
    ip group-range 234.34.253.101 to 234.34.253.255
switch# show ip mr sr umnat 10.30.17.11 10.34.202.11
IP Multicast Routing Table for VRF "default"

(10.30.17.11/32, 10.34.202.11/32)
  Translation:
    SR: (10.34.201.1/32, 234.34.203.11/32) udp src: 0, udp dst : 0 
      Outgoing interface list: (count: 3)
        Ethernet1/56, uptime: 02:13:44, igmp
        Ethernet1/55, uptime: 02:13:44, igmp
        Ethernet1/60, uptime: 02:13:51, static
      Chained translations:
        SR: (10.34.202.111, 234.34.253.11) udp src: 25010 udp dst: 25310 OIF: Ethernet1/56
        SR: (10.34.202.111, 234.34.253.11) udp src: 25010 udp dst: 25510 OIF: Ethernet1/55

switch#

switch# show forwarding distribution multicast route group 234.34.203.11 source 10.34.201.1 

  (10.34.201.1/32, 234.34.203.11/32), RPF Interface: Ethernet1/6.100, flags: EPrePstUM
    Upstream Nbr: 10.34.201.1, Stats State: NA
    Received Packets: 16964898 Bytes: 23784786996 
    Number of Outgoing Interfaces: 6
    Outgoing Interface List Index: 1609
      Ethernet1/55
      Ethernet1/56
      Ethernet1/60
      Null0 
        Type: NAT_EGR_RW
        Source IF: Ethernet1/6.100 
        RW Group IP: 234.34.203.11 
        RW Source IP: 10.34.201.1 
        RW source L4 port: 0
        RW dest L4 port: 0
        Original Group IP: 10.34.202.11
        Original Source IP: 10.30.17.11

      Ethernet1/56 
        Type: NAT_EGR_RW
        Source IF: Ethernet1/3.1 
        RW Group IP: 234.34.253.11 
        RW Source IP: 10.34.202.111 
        RW source L4 port: 25010
        RW dest L4 port: 25310
        Original Group IP: 234.34.203.11
        Original Source IP: 10.34.201.1

      Ethernet1/55 
        Type: NAT_EGR_RW
        Source IF: Ethernet1/4.1 
        RW Group IP: 234.34.253.11 
        RW Source IP: 10.34.202.111 
        RW source L4 port: 25010
        RW dest L4 port: 25510
        Original Group IP: 234.34.203.11
        Original Source IP: 10.34.201.1

switch#

switch# show forwarding multicast route group 234.34.203.11 source 10.34.201.1 

slot  1
=======


  (10.34.201.1/32, 234.34.203.11/32), RPF Interface: Ethernet1/6.100, flags:  
    Received Packets: 17115724 Bytes: 23996245048 
    Outgoing Interface List Index: 1609
    Number of next hops: 4
    oiflist flags: 16809984

  Outgoing Interface List Index: 0x649
    Ethernet1/55 
    Ethernet1/56 
    Ethernet1/60 
    Null0 
     Encap 216  (10.30.17.11, 10.34.202.11 -> 10.34.201.1, 234.34.203.11) L4(0,0) SrcIf(Ethernet1/6.100) Flags(0x0)
    Ethernet1/56 
     Encap 1002 (10.34.201.1, 234.34.203.11 -> 10.34.202.111, 234.34.253.11) L4(25010,25310) SrcIf(Ethernet1/3.1) Flags(0x0)
    Ethernet1/55 
     Encap 1003 (10.34.201.1, 234.34.203.11 -> 10.34.202.111, 234.34.253.11) L4(25010,25510) SrcIf(Ethernet1/4.1) Flags(0x0)s#


switch# show forwarding multicast-sr internal-db  
     Encap 216  (10.30.17.11, 10.34.202.11 -> 10.34.201.1, 234.34.203.11) L4(0,0) SrcIf(Ethernet1/6.100) Flags(0x0)
     Encap 1002 (10.34.201.1, 234.34.203.11 -> 10.34.202.111, 234.34.253.11) L4(25010,25310) SrcIf(Ethernet1/3.1) Flags(0x0)
     Encap 1003 (10.34.201.1, 234.34.203.11 -> 10.34.202.111, 234.34.253.11) L4(25010,25510) SrcIf(Ethernet1/4.1) Flags(0x0)



NBM Show commands:
switch# show nbm flows group 234.34.203.11 source 10.34.201.1 detail 

---------------------------------------------------------- 
 NBM Flows for VRF 'default'
---------------------------------------------------------- 

Active Source-Group-Based Flow(s) for Source 10.34.201.1 Group 234.34.203.11  :

Mcast-Group      Src-IP           Uptime   Src-Intf     Nbr-Device         LID Profile Status  Num Rx  Bw Mbps   CFG Bw Slot Unit Slice DSCP QOS Policed FHR Priority   Policy-name
   Rcvr-Num Rcvr-slot Unit    Num-Rcvrs    Rcvr-ifidx  IOD Rcvr-Intf  Nbr-Device

234.34.203.11   10.34.201.1     02:21:05   Lo34      not-available           0     N/A ACTIVE       3   15.000   15.000   17    0     0    0   7 Yes     Yes LOW        umnat               
          1         1    0            3    0x1a006e00   64 Eth1/56    not-available       
          2         1    0            3    0x1a006c00   63 Eth1/55    not-available       
          3         1    0            3    0x1a007600   68 Eth1/60    LEAF34-PMN-SOLN-SOUTHLAKE
switch#


switch# show nbm flows statis group 234.34.203.11 source 10.34.201.1 

---------------------------------------------------------- 
 NBM Flow Statistics for VRF 'default'
---------------------------------------------------------- 

Source-Group-Based Flow Statistics for Source 10.34.201.1 Group 234.34.203.11  :

Mcast-Group      Src-IP           Uptime     Src-Intf  Packets        Bytes             Allow-Bytes       Drop-Bytes
234.34.203.11    10.34.201.1      02:21:27   Lo34      8413701        11779181400       11778445000       0                
switch#


NBM Oper MO:

{
  "nbmNbmUmFlow": {
    "attributes": {
      "bucket": "3",
      "destination": "10.34.202.11",
      "dn": "sys/nbm/show/flows/dom-default/ums-[10.30.17.11]-umd-[10.34.202.11]",
      "modTs": "2021-11-30T11:34:55.213+00:00",
      "source": "10.30.17.11",
      "tStamp": "1638300895054"
    }
  }
}

{
  "nbmNbmFlow": {
    "attributes": {
      "bucket": "1",
      "bwKbps": "15000",
      "dn": "sys/nbm/show/flows/dom-default/s-[10.34.201.1]-g-[234.34.203.11]",
      "dscp": "0",
      "egressIfCount": "3",
      "flowPol": "umnat",
      "group": "234.34.203.11",
      "ingressIf": "335544354",
      "ingressIfName": "loopback34",
      "isFhr": "YES",
      "modTs": "2021-11-30T11:35:23.384+00:00",
      "policed": "YES",
      "priority": "LOW",
      "qid": "7",
      "source": "10.34.201.1",
      "tStamp": "1638300923224"
    },
    "children": [
      {
        "nbmOifList": {
          "attributes": {
            "dn": "sys/nbm/show/flows/dom-default/s-[10.34.201.1]-g-[234.34.203.11]/oif-436237824",
            "modTs": "2021-11-30T11:35:35.387+00:00",
            "oif": "436237824",
            "oifName": "Ethernet1/60",
            "oifTstamp": "1638300935386",
            "origin": "PROTOCOL",
            "reporterIP": "10.34.60.1"
          }
        }
      },
      {
        "nbmOifList": {
          "attributes": {
            "dn": "sys/nbm/show/flows/dom-default/s-[10.34.201.1]-g-[234.34.203.11]/oif-436235264",
            "modTs": "2021-11-30T11:35:42.436+00:00",
            "oif": "436235264",
            "oifName": "Ethernet1/55",
            "oifTstamp": "1638300942436",
            "origin": "PROTOCOL",
            "reporterIP": "10.34.55.11"
          }
        }
      },
      {
        "nbmOifList": {
          "attributes": {
            "dn": "sys/nbm/show/flows/dom-default/s-[10.34.201.1]-g-[234.34.203.11]/oif-436235776",
            "modTs": "2021-11-30T11:35:42.437+00:00",
            "oif": "436235776",
            "oifName": "Ethernet1/56",
            "oifTstamp": "1638300942437",
            "origin": "PROTOCOL",
            "reporterIP": "10.34.56.11"
          }
        }
      },
      {
        "nbmUmIngNat": {
          "attributes": {
            "dn": "sys/nbm/show/flows/dom-default/s-[10.34.201.1]-g-[234.34.203.11]/uming-pres-[10.30.17.11]-pred-[10.34.202.11]-postsp-[0]-postdp-[0]",
            "modTs": "2021-11-30T11:34:55.213+00:00",
            "postDPort": "0",
            "postSPort": "0",
            "preDestination": "10.34.202.11",
            "preSource": "10.30.17.11"
          }
        }
      }
    ]
  }
}