Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Informações de Apoio

Configurar

Diagrama de Rede

Configuração em PE1

Configuração em ABR1

Verificar

Troubleshoot

Informações Relacionadas

Introduction

Este documento descreve a finalidade do Unified Multiprotocol Label Switching (MPLS) e fornece um exemplo de configuração no Cisco IOS® XR.

Prerequisites

Requirements

Não existem requisitos específicos para este documento.

Componentes Utilizados

Este documento é específico do Cisco IOS XR, mas não está restrito a uma versão de software ou hardware específico.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Informações de Apoio

O objetivo do MPLS unificado é o dimensionamento. Para escalar uma rede MPLS, onde há diferentes tipos de plataformas e serviços em partes da rede, faz sentido dividir a rede em diferentes áreas. Um design típico introduz uma hierarquia que tem um núcleo no centro com agregação ao lado. Para escalar, pode haver diferentes IGPs (Interior Gateway Protocols) no núcleo versus a agregação. Para escalar, você não pode distribuir os prefixos IGP de um IGP para o outro. Se você não distribuir os prefixos de IGP de um IGP para outro IGP, os Label-Switched Paths (LSPs) de ponta a ponta não serão possíveis.

Para fornecer os serviços MPLS de ponta a ponta, você precisa que o LSP seja de ponta a ponta. O objetivo é manter os serviços MPLS (MPLS VPN, MPLS L2VPN) como estão, mas introduzir maior escalabilidade. Para fazer isso, mova alguns dos prefixos IGP para o BGP (Border Gateway Protocol) (os prefixos de loopback dos roteadores PE (Provider Edge)), que distribui os prefixos fim-a-fim.

Configurar

Observação: consulte Melhores práticas para pesquisar comandos (somente clientes registrados) para obter mais informações sobre como pesquisar comandos.

Diagrama de Rede

A Figura 1 mostra uma rede com três áreas diferentes: um núcleo e duas áreas de agregação ao lado. Cada área executa seu próprio IGP, sem redistribuição entre eles no roteador de borda de área (ABR). O uso do BGP é necessário para fornecer um LSP MPLS de ponta a ponta. O BGP anuncia os loopbacks dos roteadores PE com um rótulo em todo o domínio e fornece um LSP fim-a-fim. O BGP é implantado entre os PEs e ABRs com RFC 3107 (BGP rotulado como Unicast), o que significa que o BGP envia o prefixo + rótulo IPv4 (Identificador de família de endereços (AFI) 1 e Identificador de família de endereços subsequente (SAFI) 4).

Figure 1

Como as partes central e de agregação da rede são integradas e LSPs de ponta a ponta são fornecidos, a solução Unified MPLS também é conhecida como "MPLS contínuo".

Novas tecnologias ou protocolos não são usados aqui, apenas MPLS, LDP, IGP e BGP. Como você não deseja distribuir os prefixos de loopback dos roteadores PE de uma parte da rede para outra parte, você precisa transportar os prefixos no BGP. O Internal Border Gateway Protocol (iBGP) é usado em uma rede, portanto, o endereço do próximo salto dos prefixos são os prefixos de loopback dos roteadores PE, que não são conhecidos pelo IGP nas outras partes da rede. Isso significa que o endereço do próximo salto não pode ser usado para se recursar a um prefixo IGP. O truque é fazer os refletores de rota (RR) dos roteadores ABR e definir o próximo salto para si mesmo, mesmo para os prefixos iBGP refletidos.

Somente os RRs precisam de software para suportar essa arquitetura. Como os RRs anunciam os prefixos BGP com o próximo salto definido para eles mesmos, eles atribuem um rótulo MPLS local aos prefixos BGP. Isso significa que, no plano de dados, os pacotes encaminhados nesses LSPs fim-a-fim têm um rótulo MPLS extra na pilha de rótulos. Os RR estão no caminho de encaminhamento.

Observação: nesta arquitetura, qualquer serviço MPLS é fornecido. Por exemplo, o serviço MPLS VPN ou MPLS L2VPN é fornecido entre os roteadores PE. A diferença no plano de dados para esses pacotes é que eles agora têm três rótulos na pilha de rótulos, enquanto eles tinham dois rótulos na pilha de rótulos quando o Unified MPLS não foi usado.

Há dois cenários possíveis:

- O ABR não define o próximo salto para si mesmo para os prefixos anunciados (refletidos pelo BGP) pelo ABR na parte de agregação da rede. Por causa disso, o ABR precisa redistribuir os prefixos de loopback dos ABRs do IGP central no IGP de agregação. Se isso for feito, ainda haverá escalabilidade. Somente os prefixos de loopback ABR (do núcleo) precisam ser anunciados na parte de agregação, não os prefixos de loopback dos roteadores PE das partes de agregação remota.

- O ABR define o próximo salto para si mesmo para os prefixos anunciados (refletidos pelo BGP) pelo ABR na parte de agregação. Por causa disso, o ABR não precisa redistribuir os prefixos de loopback dos ABRs do IGP central no IGP de agregação.

Em ambos os cenários, o ABR define o próximo salto para si mesmo para os prefixos anunciados (refletidos pelo BGP) pelo ABR a partir da parte de agregação da rede para a parte do núcleo. Se isso não for feito, o ABR precisará redistribuir os prefixos de loopback dos PEs do IGP de agregação no IGP central. Se isso for feito, não haverá escalabilidade.

Diferentes configurações podem ser aplicadas para definir o próximo salto para si mesmo para rotas unicast rotuladas iBGP refletidas nos ABRs.

Essas soluções não funcionam para permitir o RFC 3107 no Cisco IOS XR:

- next-hop-self não funciona.

Por exemplo:

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

!

- O RPL com set next-hop self não funciona.

Por exemplo:

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 não é um operador válido para o anexo point.

Por exemplo:

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

- defina o próximo salto para um endereço específico em uma política de rota e a política ibgp out enforce-modification não funciona

Por exemplo:

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

Essas soluções realmente funcionam.

Certifique-se de ter a política ibgp fora de impor-modificações!

Por exemplo:

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

!

!

Por exemplo:

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

Por exemplo:

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

Por exemplo:

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

Configuração em 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

!

!

!

Configuração em 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

!

!

Observação: allocate-label all ou allocate-label route-policy é necessário. Caso contrário, as rotas unicast rotuladas não têm um rótulo local necessário, já que o ABR é o próximo salto para as rotas refletidas do iBGP.

Observação: a redistribuição do IGP central (OSPF 2) no IGP de agregação (OSPF 1 ou OSPF 3) ou vice-versa não é executada. No entanto, o prefixo de loopback do RR também deve ser conhecido no IGP de agregação, para que o BGP no roteador PE possa fazer peer com o loopback do ABR/RR. Para isso, a redistribuição de rotas conectadas no IGP de agregação é realizada com RPL. As rotas conectadas redistribuídas são limitadas ao prefixo de loopback do ABR com RPL.

Verificar

Consulte a Figura 2 para verificar a operação do plano de controle:

Figure 2

Consulte a Figura 3 para verificar os anúncios de rótulo de MPLS:

Figure 3

Consulte a Figura 4 para verificar o encaminhamento de pacotes:

Figure 4

É assim que os pacotes são encaminhados de PE1 para PE2. O prefixo de loopback de PE2 é 10.100.1.7/32, portanto esse prefixo é de interesse.

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

O rótulo 24000 é o rótulo LDP aprendido de P2 para o prefixo 10.100.1.3/32. O rótulo 24005 é o rótulo BGP RFC 3107 aprendido para o prefixo 10.100.1.7/32.

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

Existe o penultimate-hop popping (PHP) em direção ao ABR1.

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

O rótulo 24005 é trocado pelo rótulo 24003 em ABR1.

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

Há PHP de P1 para ABR2.

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

O rótulo de BGP para a rota RFC 3107 10.100.1.7/32 recebido por ABR2 de PE2 é 3. Este é o rótulo nulo implícito que indica o PHP.

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

O rótulo 24003 é trocado pelo rótulo 24001 em ABR2.

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

Há PHP de P3 para PE2.

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

Troubleshoot

Atualmente, não existem informações disponíveis específicas sobre Troubleshooting para esta configuração.

Informações Relacionadas

- Arquitetura MPLS perfeita

- Suporte Técnico e Documentação - Cisco Systems