목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

배경 정보

구성

네트워크 다이어그램

PE1의 컨피그레이션

ABR1의 컨피그레이션

다음을 확인합니다.

문제 해결

관련 정보

소개

이 문서에서는 Unified MPLS(Multiprotocol Label Switching)의 목적에 대해 설명하고 Cisco IOS® XR의 컨피그레이션 예를 제공합니다.

사전 요구 사항

요구 사항

이 문서에 대한 특정 요건이 없습니다.

사용되는 구성 요소

이 문서는 Cisco IOS XR에만 해당되지만 특정 소프트웨어 릴리스 또는 하드웨어에 제한되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.

배경 정보

Unified MPLS의 목적은 확장에 있습니다. 네트워크 일부에 서로 다른 유형의 플랫폼과 서비스가 있는 MPLS 네트워크를 확장하려면 네트워크를 서로 다른 영역으로 분할하는 것이 좋습니다. 일반적인 설계에서는 중앙에 코어가 있고 측면에 집계가 있는 계층 구조를 도입합니다. 확장을 위해 코어에 다양한 IGP(Interior Gateway Protocol)가 있을 수 있습니다. 확장을 위해 한 IGP에서 다른 IGP로 IGP 접두사를 배포할 수 없습니다. 한 IGP의 IGP 접두사를 다른 IGP로 배포하지 않으면 엔드 투 엔드 LSP(Label-Switched Path)가 불가능합니다.

MPLS 서비스를 엔드 투 엔드로 제공하려면 LSP가 엔드 투 엔드로 구성되어야 합니다. 목표는 MPLS 서비스(MPLS VPN, MPLS L2VPN)를 그대로 유지하되 더 우수한 확장성을 도입하는 것입니다. 이를 위해 일부 IGP 접두사를 BGP(Border Gateway Protocol)로 이동한 다음(PE(Provider Edge) 라우터의 루프백 접두사) 접두사를 엔드 투 엔드로 배포합니다.

구성

참고: 명령 검색 모범 사례(등록된 고객만 해당)를 참조하여 명령 검색 방법에 대한 자세한 내용을 확인하십시오.

네트워크 다이어그램

그림 1은 세 가지 영역, 즉 코어 1개와 측면 어그리게이션 영역 2개로 구성된 네트워크를 보여 줍니다. 각 영역은 ABR(Area Border Router)에서 IGP를 재배포하지 않고 자체 IGP를 실행합니다. 엔드 투 엔드 MPLS LSP를 제공하려면 BGP를 사용해야 합니다. BGP는 전체 도메인에 걸쳐 레이블이 있는 PE 라우터의 루프백을 광고하고 엔드 투 엔드 LSP를 제공합니다. BGP는 RFC 3107(BGP Labelled Unicast)을 사용하여 PE와 ABR 사이에 구축됩니다. 즉, BGP는 IPv4 접두사 + 레이블(AFI(Address Family Identifier) 1 및 SAFI(Successfully Address Family Identifier) 4)을 전송합니다.

그림 1

네트워크의 코어 및 어그리게이션 부분이 통합되고 엔드 투 엔드 LSP가 제공되므로 Unified MPLS 솔루션을 "Seamless MPLS"라고도 합니다.

여기서는 새로운 기술이나 프로토콜이 사용되지 않으며 MPLS, LDP(Label Distribution Protocol), IGP 및 BGP만 사용됩니다. 네트워크의 한 부분에서 다른 부분으로 PE 라우터의 루프백 접두사를 배포하지 않으려는 경우 BGP에서 접두사를 전달해야 합니다. iBGP(Internal Border Gateway Protocol)는 한 네트워크에서 사용되므로 접두사의 다음 홉 주소는 PE 라우터의 루프백 접두사이며, 네트워크의 다른 부분에 있는 IGP에서는 이를 알 수 없습니다. 이는 다음 홉 주소를 사용하여 IGP 접두사를 재귀할 수 없음을 의미합니다. 비결은 ABR 라우터 RR(Route Reflectors)을 만들고, 반영된 iBGP 접두사에 대해서도 다음 홉을 self로 설정하는 것입니다.

RR만 이 아키텍처를 지원하는 소프트웨어가 필요합니다. RR은 다음 홉이 설정된 BGP 접두사를 자신에게 광고하므로 로컬 MPLS 레이블을 BGP 접두사에 할당합니다. 이는 데이터 평면에서 엔드 투 엔드 LSP에 전달된 패킷에 레이블 스택에 추가 MPLS 레이블이 있음을 의미합니다. RR이 전달 경로에 있습니다.

참고: 이 아키텍처에서는 모든 MPLS 서비스가 제공됩니다. 예를 들어 서비스 MPLS VPN 또는 MPLS L2VPN은 PE 라우터 간에 제공됩니다. 이러한 패킷의 데이터 평면의 차이점은 레이블 스택에 세 개의 레이블이 있는 반면 Unified MPLS를 사용하지 않을 때는 레이블 스택에 두 개의 레이블이 있다는 것입니다.

가능한 시나리오는 두 가지입니다.

- ABR은 ABR이 네트워크의 어그리게이션 부분에 광고한(BGP에 의해 반영된) 접두사에 대해 next hop을 self로 설정하지 않습니다. 따라서 ABR은 코어 IGP에서 어그리게이션 IGP로 ABR의 루프백 접두사를 재배포해야 합니다. 이렇게 하면 확장성이 유지됩니다. 원격 어그리게이션 파트에서 PE 라우터의 루프백 접두사가 아니라 (코어에서) ABR 루프백 접두사만 어그리게이션 파트로 광고해야 합니다.

- ABR은 ABR이 어그리게이션 부분으로 알림(BGP에서 반영)하는 접두사에 대해 next hop을 self로 설정합니다. 따라서 ABR은 코어 IGP에서 어그리게이션 IGP로 ABR의 루프백 접두사를 재배포할 필요가 없습니다.

두 시나리오 모두에서 ABR은 네트워크의 어그리게이션 부분에서 코어 부분으로 ABR에 의해 광고된(BGP에 의해 반영된) 접두사에 대해 다음 홉을 self로 설정합니다. 이 작업을 수행하지 않으면 ABR은 어그리게이션 IGP에서 코어 IGP로 PE의 루프백 접두사를 재배포해야 합니다. 이렇게 하면 확장성이 없습니다.

ABR에서 반영된 iBGP 레이블 유니캐스트 경로에 대해 다음 홉을 self로 설정하기 위해 다른 컨피그레이션을 적용할 수 있습니다.

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

!

- next-hop이 설정된 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

- 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

- route-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 정책이 시행-수정을 배제하도록 합니다!

예를 들면 다음과 같습니다.

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)로 재배포하거나 그 반대로 재배포하는 작업은 수행되지 않습니다. 그러나 PE 라우터의 BGP가 ABR/RR의 루프백과 피어링할 수 있도록 RR의 루프백 접두사를 어그리게이션 IGP에서도 알아야 합니다. 이를 위해 연결된 경로를 어그리게이션 IGP로 재배포하는 작업은 RPL을 통해 수행됩니다. 재배포된 연결 경로는 RPL이 있는 ABR의 루프백 접두사로 제한됩니다.

다음을 확인합니다.

컨트롤 플레인 작동을 확인하려면 그림 2를 참조하십시오.

그림 2

MPLS 레이블 광고를 확인하려면 그림 3을 참조하십시오.

그림 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

Label 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에는 PHP(Penultimate-Hop Popping)가 있습니다.

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