内容

概要

前提条件

要件

使用するコンポーネント

背景説明

設定

ネットワーク図

PE1 の設定

ABR1 の設定

確認

トラブルシュート

関連情報

概要

このドキュメントでは、ユニファイド マルチプロトコル ラベル スイッチング（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）を送信します。

図 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 を参照してコントロール プレーンの動作を検証してください。

図 2

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

図 3

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

図 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         3

Processed 2 prefixes, 2 paths

トラブルシュート

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

関連情報

- シームレス MPLS アーキテクチャ

- テクニカル サポートとドキュメント – Cisco Systems