概要

    このドキュメントでは、ユニファイド マルチプロトコル ラベル スイッチング(MPLS)の目的について説明し、Cisco IOS® XR での設定例を示します。

    前提条件

    要件

    このドキュメントに特有の要件はありません。

    使用するコンポーネント

    このドキュメントの内容は、Cisco IOS XR に特化していますが、特定のソフトウェア リリースやハードウェアに限定されるものではありません。

    このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。

    背景説明

    ユニファイド MPLS の目的は拡張性です。異なるタイプのプラットフォームやサービスが含まれている MPLS ネットワークを拡張するには、ネットワークを複数のエリアに分割するのが適切な方法です。一般的な設計では、中央にコアがあり、両側にアグリゲーションが配置される階層が導入されます。拡張のために、コアとアグリゲーションで異なる内部ゲートウェイ プロトコル(IGP)を使用することがあります。拡張のために、IGP プレフィックスを IGP 間で配布することはできません。IGP プレフィックスを IGP 間で配布しない場合は、エンドツーエンドのラベルスイッチド パス(LSP)は実現できません。

    エンドツーエンドで MPLS サービスを提供するには、LSP がエンドツーエンドである必要があります。これは、MPLS サービス(MPLS VPN、MPLS L2VPN)をそのままの状態で維持し、かつ拡張性を向上することを目的としています。このためには、一部の IGP プレフィックスを Border Gateway Protocol(BGP)に移動します(プロバイダー エッジ(PE)ルータのループバック プレフィックス)。次にこれらのプレフィックスがエンドツーエンドで配布されます。

    設定

    注:コマンドの調査方法の詳細については、『コマンド検索のベストプラクティス』(登録ユーザ専用)を参照してください。

    ネットワーク図

    図1は、3つの異なるエリアを持つネットワークを示しています。1つのコアと2つのアグリゲーションエリアが側面にあります。各エリアは専用の IGP を実行し、エリア境界ルータ(ABR)ではこれらのエリア間で再配布が行われません。エンドツーエンド MPLS LSP を提供するには、BGP を使用する必要があります。BGP は、ラベルが付いた PE ルータのループバックをドメイン全体にアドバタイズし、エンドツーエンド LSP を実現します。BGP は RFC 3107(BGP ラベル付きユニキャスト)により PE と ABR の間に導入されました。つまり、BGP は IPv4 プレフィックス + ラベル(アドレス ファミリ識別子(AFI)1 と後続アドレス ファミリ識別子(SAFI)4)を送信します。

    119191-config-unified-mpls-00-00.jpeg

    図 1:

    ネットワークのコア部分とアグリゲーション部分が統合されておりエンドツーエンド LSP が提供されているため、ユニファイド MPLS ソリューションは「シームレス MPLS」とも呼ばれます。

    ここでは新しいテクノロジーまたはプロトコルは使用せず、MPLS、ラベル配布プロトコル(LDP)、IGP、BGP だけを使用します。ネットワーク内の部分間で PE ルータのループバック プレフィックスを配布しないため、プレフィックスを BGP で伝送する必要があります。内部ボーダー ゲートウェイ プロトコル(IBGP)が 1 つのネットワークで使用されているため、プレフィックスのネクスト ホップ アドレスは PE ルータのループバック プレフィクスですが、これはネットワークの他の部分の IGP には認識されません。つまり、IGP プレフィクスへの再帰にネクスト ホップ アドレスを使用できません。この場合の対策は、ABR ルータをルート リフレクタ(RR)にし、反映済みの iBGP プレフィックスでも、ネクスト ホップをそのホップ自体に設定することです。

    RR のみが、このアーキテクチャをサポートするためにソフトウェアを必要とします。RR は、ネクスト ホップがそのホップ自体に設定された状態で BGP プレフィックスをアドバタイズするため、ローカル MPLS ラベルを BGP プレフィックスに割り当てます。つまり、データ プレーンでは、これらのエンドツーエンド LSP で転送されるパケットの場合、ラベル スタックに追加の MPLS ラベルがあります。RR は転送パス上にあります。

    :このアーキテクチャでは、すべてのMPLSサービスが提供されます。たとえば、サービス MPLS VPN または MPLS L2VPN が PE ルータ間で提供されます。これらのパケットのデータ プレーンの相違点は、ラベル スタックに 3 つのラベルがあることです。一方、ユニファイド MPLS を使用しない場合、ラベル スタックにあるラベルは 2 つです。

    次の 2 つのシナリオが考えられます。

    • ABR は、ABR によりネットワークのアグリゲーション部分にアドバタイズ(BGP により反映)されたプレフィックスの場合、ネクスト ホップをそのホップ自体に設定しません。このため、ABR は ABR のループバック プレフィックスをコア IGP からアグリゲーション IGP に再配布する必要があります。この作業を行っても、まだ拡張性があります。アグリゲーション部分にアドバタイズする必要があるのは(コアからの)ABR ループバック プレフィックスだけであり、リモート アグリゲーション部分の PE ルータからのループバック プレフィックスはアドバタイズする必要はありません。
    • ABR は、ABR によりアグリゲーション部分にアドバタイズ(BGP により反映)されたプレフィックスの場合、ネクスト ホップをそれ自体に設定します。このため、ABR は ABR のループバック プレフィックスをコア IGP からアグリゲーション IGP に再配布する必要はありません。

    両方のシナリオで、ABR は、ABR によりネットワークのアグリゲーション部分からコア部分にアドバタイズ(BGP により反映)されたプレフィックスの場合、ネクスト ホップをそれ自体に設定します。このように設定していない場合、ABR は PE のループバック プレフィックスを、アグリゲーション IGP からコア IGP に再配布する必要があります。この作業を行うと、拡張性はなくなります。

    ABRで反映されたiBGPラベル付きユニキャストルートのネクストホップを自身に設定するために、さまざまな設定を適用できます。 

    Cisco IOS XR で RFC 3107 を有効にする目的では、以下のソリューションは機能しません。

    • next-hop-self が機能しない。

    以下に、いくつかの例を示します。

    router bgp 1
     neighbor 10.100.1.1
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-reflector-client
        next-hop-self
      !
    • set next-hop self を使用した RPL が機能しない。

    以下に、いくつかの例を示します。

    router bgp 1
     neighbor 10.100.1.1
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-reflector-client
       route-policy nhs-ibgp-3107 out
       !

    route-policy nhs-ibgp-3107
      set next-hop self
    end-policy
    • set next-hop to peer-address はアタッチ ポイントに対して有効な演算子ではない。

    以下に、いくつかの例を示します。

    router bgp 1
    neighbor 10.100.1.1
    address-family ipv4 labeled-unicast
    route-policy nhs-ibgp-3107-peer out

    !!% Could not find entry in list: Policy [nhs-ibgp-3107-peer]
    uses 'set-to-peer-address next-hop'. 'set' is not a valid
    operator for the 'next-hop' attribute at the bgp neighbor-out-dflt attach point.
    !
    !
    !
    route-policy nhs-ibgp-3107-peer
    set next-hop peer-address
    end-policy
    • ルートポリシー内の特定のアドレスにnext-hopを設定すると、ibgp policy out enforce-modificationsが機能しない

    以下に、いくつかの例を示します。

    router bgp 1
    ibgp policy out enforce-modifications
    !
    neighbor 10.100.1.1
    remote-as 1
    update-source Loopback0
    address-family ipv4 labeled-unicast
    route-reflector-client
    route-policy nhs-ibgp-3107 out
    !
    !
    route-policy nhs-ibgp-3107-peer
    set next-hop 10.100.1.3
    end-policy

    これらのソリューションは機能します。

    必ずibgp policy out enforce-modificationsを実行してください。

    以下に、いくつかの例を示します。

    router bgp 1
    ibgp policy out enforce-modifications
    !
    neighbor 10.100.1.1
    remote-as 1
    update-source Loopback0
    address-family ipv4 labeled-unicast
    route-reflector-client
    next-hop-self
    !
    !

    以下に、いくつかの例を示します。

    router bgp 1
    ibgp policy out enforce-modifications
    !
    neighbor 1.100.1.1
    remote-as 1
    update-source Loopback0
    address-family ipv4 labeled-unicast
    route-reflector-client
    route-policy nhs-ibgp-3107 out
    !
    !
    route-policy nhs-ibgp-3107
    set next-hop self
    end-policy

    以下に、いくつかの例を示します。

    router bgp 1
    ibgp policy out enforce-modifications
    !
    neighbor 10.100.1.1
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-reflector-client
       route-policy nhs-ibgp-3107 out
    next-hop-self
      !
     !
    !
    route-policy nhs-ibgp-3107
      set next-hop self
    end-policy

    以下に、いくつかの例を示します。

    router bgp 1
    ibgp policy out enforce-modifications
    !
    neighbor 10.100.1.1
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-reflector-client
       route-policy nhs-ibgp-3107 out
       next-hop-self
      !
     !
    !
    route-policy nhs-ibgp-3107
      set next-hop 10.100.1.3
    end-policy

    PE1 の設定

    hostname PE1
    !
    vrf one     <<< MPLS service is MPLS VPN
     address-family ipv4 unicast
      import route-target
       1:1
      !
      export route-target
       1:1
      !
     !
     address-family ipv6 unicast
      import route-target
       1:1
      !
      export route-target
       1:1
      !
     !
    interface Loopback0
     ipv4 address 10.100.1.1 255.255.255.255
    !
    !
    interface GigabitEthernet0/0/0/0
     ipv4 address 10.1.1.1 255.255.255.0
    !
    !
    interface GigabitEthernet0/0/0/1   <<< VRF interface to CE1
     vrf one
     ipv4 address 10.9.1.3 255.255.255.0
    !
    !
    router ospf 1
     router-id 10.100.1.1
     area 0
      interface Loopback0
      !
      interface GigabitEthernet0/0/0/0
       network point-to-point
      !
     !
    !
    router bgp 1
     address-family ipv4 unicast
      network 10.100.1.1/32    <<< advertise PE loopback in BGP
      allocate-label all
     !
     address-family vpnv4 unicast
     !
     neighbor 10.100.1.3
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
      !
     !
     neighbor 10.100.1.7     <<< vpnv4 iBGP session to PE2
      remote-as 1
      update-source Loopback0
      address-family vpnv4 unicast
      !
     !
     vrf one
      rd 1:1
      address-family ipv4 unicast
      !
      neighbor 10.9.1.2    <<< eBGP session to CE1
       remote-as 65001
       address-family ipv4 unicast
        route-policy pass in
        route-policy pass out
       !
      !
     !
    !
    mpls ldp
     mldp
      logging notifications
      address-family ipv4
      !
     !
     router-id 10.100.1.1
     address-family ipv4
     !
     interface GigabitEthernet0/0/0/0
      address-family ipv4
      !
     !
    !

    ABR1 の設定

    hostname ABR1
    !
    interface Loopback0
     ipv4 address 10.100.1.3 255.255.255.255
    !
    !
    interface GigabitEthernet0/0/0/0
     ipv4 address 10.1.3.3 255.255.255.0
    !
    interface GigabitEthernet0/0/0/1
     ipv4 address 10.1.2.3 255.255.255.0
    !
    route-policy nhs-ibgp-3107
      set next-hop 10.100.1.3    <<< set next hop to loopback
    end-policy
    !
    route-policy connected-into-ospf2
      if destination in (10.100.1.3/32) then
        pass
      endif
    end-policy
    !
    router ospf 1
     router-id 10.100.1.3
     area 0
      interface Loopback0
      !
      interface GigabitEthernet0/0/0/1
       network point-to-point
      !
     !
    !
    router ospf 2
     redistribute connected route-policy connected-into-ospf2
     area 0
      interface GigabitEthernet0/0/0/0
       network point-to-point
      !
     !
    !
    router bgp 1
    ibgp policy out enforce-modifications
     address-family ipv4 unicast
      allocate-label all
     !
     neighbor 10.100.1.1     <<< iBGP neighbor PE1
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-reflector-client
       route-policy nhs-ibgp-3107 out
       next-hop-self
      !
     !
     neighbor 10.100.1.5      <<< iBGP neighbor ABR2
      remote-as 1
      update-source Loopback0
      address-family ipv4 labeled-unicast
       route-policy nhs-ibgp-3107 out
       next-hop-self
      !
     !
    !
    mpls ldp
     mldp
      address-family ipv4
      !
     !
     router-id 10.100.1.3
     interface GigabitEthernet0/0/0/0
      address-family ipv4
       discovery transport-address interface
      !
     !
     interface GigabitEthernet0/0/0/1
      address-family ipv4
      !
     !

    :allocate-label allまたはallocate-label route-policyが必要です。それ以外の場合は、ABR が iBGP 反映ルートのネクスト ホップであるため、ラベル付きユニキャスト ルートには必要なローカル ラベルは含まれていません。

    :コアIGP(OSPF 2)のアグリゲーションIGP(OSPF 1またはOSPF 3)への再配布、またはその逆の再配布は実行されません。ただし、ABR/RR のループバック プレフィックスがアグリゲーション IGP で既知であることも必要です。これにより、PE ルータの BGP が RR のループバックとピアリングできます。そのため、接続ルートのアグリゲーション IGP への再配布は RPL を使用して実行されます。再配布された接続ルートは、RPL を使用する ABR のループバック プレフィックスに限定されます。

    確認

    図 2 を参照してコントロール プレーンの動作を検証してください。

    119191-config-unified-mpls-00-01.jpeg

    図 2

    図 3 を参照して MPLS ラベル アドバタイズを検証してください。

    119191-config-unified-mpls-00-02.jpeg

    図 3

    図 4 を参照してパケット転送を検証してください。

    119191-config-unified-mpls-00-03.jpeg

    図 4

    これは、パケットが PE1 から PE2 へ転送される様子を示しています。PE2 のループバック プレフィックスは 10.100.1.7/32 であるため、このプレフィクスは対象となります。

    RP/0/0/CPU0:PE1#traceroute                                  
    Protocol [ipv4]:
    Target IP address: 10.100.1.7
    Source address: 10.100.1.1
    Numeric display? [no]:
    Timeout in seconds [3]:
    Probe count [3]:
    Minimum Time to Live [1]:
    Maximum Time to Live [30]:
    Port Number [33434]:
    Loose, Strict, Record, Timestamp, Verbose[none]:

    Type escape sequence to abort.
    Tracing the route to 10.100.1.7

     1  10.1.1.2 [MPLS: Labels 24000/24005 Exp 0] 439 msec  119 msec  109 msec
     2  10.1.2.3 [MPLS: Label 24005 Exp 0] 109 msec  109 msec  109 msec
     3  10.1.3.4 [MPLS: Labels 24001/24003 Exp 0] 99 msec  99 msec  149 msec
     4  10.1.4.5 [MPLS: Label 24003 Exp 0] 119 msec  119 msec  99 msec
     5  10.1.5.6 [MPLS: Label 24001 Exp 0] 109 msec  139 msec  99 msec
     6  10.1.6.7 109 msec  *  109 msec

    ラベル 24000 は、プレフィクス 10.100.1.3/32 について P2 から取得する LDP ラベルです。ラベル 24005 は、プレフィクス 10.100.1.7/32 について取得する BGP RFC 3107 ラベルです。

    RP/0/0/CPU0:PE1#show route 10.100.1.7/32

    Routing entry for 10.100.1.7/32
      Known via "bgp 1", distance 200, metric 0, [ei]-bgp, type internal
      BIER rid=0x0, flags=0x0, count=0
      Installed May 27 02:52:07.184 for 00:08:52
      Routing Descriptor Blocks
        10.100.1.3, from 10.100.1.3 <<< next-hop is ABR1
          Route metric is 0
      No advertising protos.
    RP/0/0/CPU0:PE1#show cef 10.100.1.7/32  
    10.100.1.7/32, version 89, internal 0x1000001 0x0 (ptr 0xa1470f74)
    [1], 0x0 (0xa1456614), 0xa08 (0xa16181e0)
     Updated May 27 02:52:07.203
     Prefix Len 32, traffic index 0, precedence n/a, priority 4
       via 10.100.1.3, 3 dependencies, recursive [flags 0x6000]
        path-idx 0 NHID 0x0 [0xa16806f4 0x0]
        recursion-via-/32
        next hop 10.100.1.3 via 24001/0/21
         local label 24003
         next hop 10.1.1.2/32 Gi0/0/0/0    labels imposed {24000 24005}
    RP/0/0/CPU0:PE1#show bgp ipv4 unicast labels 
    BGP router identifier 10.100.1.1, local AS number 1
    BGP generic scan interval 60 secs
    Non-stop routing is enabled
    BGP table state: Active
    Table ID: 0xe0000000   RD version: 44
    BGP main routing table version 44
    BGP NSR Initial initsync version 2 (Reached)
    BGP NSR/ISSU Sync-Group versions 0/0
    BGP scan interval 60 secs

    Status codes: s suppressed, d damped, h history, * valid, > best
                  i - internal, r RIB-failure, S stale, N Nexthop-discard
    Origin codes: i - IGP, e - EGP, ? - incomplete
       Network            Next Hop        Rcvd Label      Local Label
    *> 10.100.1.1/32      0.0.0.0         nolabel         3               
    *>i10.100.1.7/32      10.100.1.3      24005           24003           

    Processed 2 prefixes, 2 paths

    ABR1 への Penultimate Hop Popping(PHP)が存在します。

    RP/0/0/CPU0:P2#show mpls forwarding labels 24000
    Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes       
    Label  Label       or ID              Interface                    Switched    
    ------ ----------- ------------------ ------------ --------------- ------------
    24000  Pop         10.100.1.3/32      Gi0/0/0/1    10.1.2.3        694765      

    ラベル 24005 は ABR1 上でラベル 24003 と交換されます。

    RP/0/0/CPU0:ABR1#show bgp ipv4 unicast labels 
    BGP router identifier 10.100.1.3, local AS number 1
    BGP generic scan interval 60 secs
    Non-stop routing is enabled
    BGP table state: Active
    Table ID: 0xe0000000   RD version: 60
    BGP main routing table version 60
    BGP NSR Initial initsync version 2 (Reached)
    BGP NSR/ISSU Sync-Group versions 0/0
    BGP scan interval 60 secs

    Status codes: s suppressed, d damped, h history, * valid, > best
                  i - internal, r RIB-failure, S stale, N Nexthop-discard
    Origin codes: i - IGP, e - EGP, ? - incomplete
       Network            Next Hop        Rcvd Label      Local Label
    *>i10.100.1.1/32      10.100.1.1      3               24003           
    *>i10.100.1.7/32      10.100.1.5      24003           24005           

    Processed 2 prefixes, 2 paths
    RP/0/0/CPU0:ABR1#show mpls forwarding labels 24005
    Wed May 27 04:08:24.255 UTC
    Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes       
    Label  Label       or ID              Interface                    Switched    
    ------ ----------- ------------------ ------------ --------------- ------------
    24005  24003       10.100.1.7/32                   10.100.1.5      6347        

    P1 から ABR2 への PHP が存在します。

    RP/0/0/CPU0:P1#show mpls forwarding labels 24001
    Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes       
    Label  Label       or ID              Interface                    Switched    
    ------ ----------- ------------------ ------------ --------------- ------------
    24001  Pop         10.100.1.5/32      Gi0/0/0/1    10.1.4.5        348835      

    ABR2 が PE2 から受け取る RFC 3107 ルート 10.100.1.7/32 の BGP ラベルは 3 です。これは、PHP を示す暗黙的な NULL ラベルです。

    RP/0/0/CPU0:ABR2#show bgp ipv4 unicast labels 
    BGP router identifier 10.100.1.5, local AS number 1
    BGP generic scan interval 60 secs
    Non-stop routing is enabled
    BGP table state: Active
    Table ID: 0xe0000000   RD version: 47
    BGP main routing table version 47
    BGP NSR Initial initsync version 2 (Reached)
    BGP NSR/ISSU Sync-Group versions 0/0
    BGP scan interval 60 secs

    Status codes: s suppressed, d damped, h history, * valid, > best
                  i - internal, r RIB-failure, S stale, N Nexthop-discard
    Origin codes: i - IGP, e - EGP, ? - incomplete
       Network            Next Hop        Rcvd Label      Local Label
    *>i10.100.1.1/32      10.100.1.3      24003           24005           
    *>i10.100.1.7/32      10.100.1.7      3               24003           

    Processed 2 prefixes, 2 paths

    ラベル 24003 は ABR2 上でラベル 24001 と交換されます。

    RP/0/0/CPU0:ABR2#show mpls forwarding labels 24003
    Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes       
    Label  Label       or ID              Interface                    Switched    
    ------ ----------- ------------------ ------------ --------------- ------------
    24003  24001       10.100.1.7/32      Gi0/0/0/0    10.1.5.6        403676      

    P3 から PE2 への PHP があります。

    RP/0/0/CPU0:P3#show mpls forwarding labels 24001
    Local  Outgoing    Prefix             Outgoing     Next Hop        Bytes       
    Label  Label       or ID              Interface                    Switched    
    ------ ----------- ------------------ ------------ --------------- ------------
    24001  Pop         10.100.1.7/32      Gi0/0/0/1    10.1.6.7        685191      
    RP/0/0/CPU0:PE2#show bgp ipv4 unicast labels 
    BGP router identifier 10.100.1.7, local AS number 1
    BGP generic scan interval 60 secs
    Non-stop routing is enabled
    BGP table state: Active
    Table ID: 0xe0000000   RD version: 42
    BGP main routing table version 42
    BGP NSR Initial initsync version 2 (Reached)
    BGP NSR/ISSU Sync-Group versions 0/0
    BGP scan interval 60 secs

    Status codes: s suppressed, d damped, h history, * valid, > best
                  i - internal, r RIB-failure, S stale, N Nexthop-discard
    Origin codes: i - IGP, e - EGP, ? - incomplete
       Network            Next Hop        Rcvd Label      Local Label
    *>i10.100.1.1/32      10.100.1.5      24005           24004           
    *> 10.100.1.7/32      0.0.0.0         nolabel                       

    Processed 2 prefixes, 2 paths

    トラブルシュート

    現在、この設定に関する特定のトラブルシューティング情報はありません。

    関連情報