Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Configurazione

Esempio di rete

Configurazione in PE1

Configurazione su ABR1

Verifica

Risoluzione dei problemi

Informazioni correlate

Introduzione

Questo documento descrive lo scopo di MPLS (Unified Multiprotocol Label Switching) e fornisce un esempio di configurazione in Cisco IOS® XR.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Questo documento è specifico di Cisco IOS XR, ma non è limitato a una versione software o a un hardware specifico.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

Lo scopo di Unified MPLS è proprio quello di scalare. Per scalare una rete MPLS, in cui vi sono diversi tipi di piattaforme e servizi in alcune parti della rete, ha senso dividere la rete in diverse aree. Un progetto tipico introduce una gerarchia che ha un nucleo al centro con aggregazione laterale. Per garantire la scalabilità, nel core possono esistere diversi IGP (Interior Gateway Protocol) rispetto all'aggregazione. Per scalare, non potete distribuire i prefissi IGP da un IGP all'altro. Se non si distribuiscono i prefissi IGP da un IGP all'altro, non è possibile creare percorsi Label-Switched (LSP) end-to-end.

Per fornire i servizi MPLS end-to-end, è necessario che l'LSP sia completo. L'obiettivo è mantenere i servizi MPLS (MPLS VPN, MPLS L2VPN) così come sono, ma introdurre una maggiore scalabilità. A tal fine, spostare alcuni dei prefissi IGP nel Border Gateway Protocol (BGP) (i prefissi di loopback dei router Provider Edge (PE)), che quindi distribuisce i prefissi end-to-end.

Configurazione

Nota: per ulteriori informazioni su come ricercare i comandi, vedere Best Practices for search Commands (solo utenti registrati).

Esempio di rete

La Figura 1 mostra una rete con tre aree diverse: un core e due aree di aggregazione laterali. Ogni area esegue il proprio IGP, senza alcuna ridistribuzione tra di loro sul router di confine area (ABR). Per fornire un LSP MPLS end-to-end, è necessario l'uso di BGP. BGP annuncia i loopback dei router PE con un'etichetta nell'intero dominio e fornisce un LSP end-to-end. Il protocollo BGP viene implementato tra PE e ABR con la RFC 3107 (BGP Labeled Unicast), ovvero BGP invia il prefisso IPv4 + l'etichetta (Address Family Identifier (AFI) 1 e il successivo identificatore della famiglia di indirizzi (SAFI) 4).

Figura 1

Poiché le parti principali e di aggregazione della rete sono integrate e vengono forniti LSP end-to-end, la soluzione MPLS unificata viene anche definita "MPLS senza interruzioni".

Non vengono utilizzate nuove tecnologie o protocolli, ma solo MPLS, Label Distribution Protocol (LDP), IGP e BGP. Poiché non si desidera distribuire i prefissi di loopback dei router PE da una parte della rete a un'altra, è necessario trasportare i prefissi in BGP. Il protocollo iBGP (Internal Border Gateway Protocol) viene utilizzato in una rete, quindi l'indirizzo hop successivo dei prefissi sono i prefissi di loopback dei router PE, che non sono noti all'IGP nelle altre parti della rete. Ciò significa che l'indirizzo dell'hop successivo non può essere utilizzato per la ricorsione a un prefisso IGP. Il trucco è rendere i router ABR Route Reflectors (RR) e impostare l'hop successivo su se stessi, anche per i prefissi iBGP riflessi.

Solo gli RR hanno bisogno di software per supportare questa architettura. Poiché i router annunciano i prefissi BGP con l'hop successivo impostato su se stessi, assegnano un'etichetta MPLS locale ai prefissi BGP. Ciò significa che nel data plane, i pacchetti inoltrati su questi LSP end-to-end hanno un'etichetta MPLS extra nello stack di etichette. I record di risorse sono nel percorso di inoltro.

Nota: in questa architettura viene fornito qualsiasi servizio MPLS. Ad esempio, il servizio VPN MPLS o L2VPN MPLS viene fornito tra i router PE. La differenza nel piano dati per questi pacchetti è che ora hanno tre etichette nello stack di etichette, mentre avevano due etichette nello stack di etichette quando non era usato Unified MPLS.

Esistono due possibili scenari:

- ABR non imposta l'hop successivo su se stesso per i prefissi annunciati (riflessi da BGP) da ABR nella parte di aggregazione della rete. Per questo motivo, l'ABR deve ridistribuire i prefissi di loopback degli ABR dall'IGP di base all'IGP di aggregazione. In questo caso, la scalabilità è ancora presente. Solo i prefissi di loopback ABR (dal core) devono essere annunciati nella parte di aggregazione, non i prefissi di loopback dai router PE dalle parti di aggregazione remote.

- L'ABR imposta l'hop successivo su se stesso per i prefissi annunciati (riflessi da BGP) dall'ABR nella parte di aggregazione. Per questo motivo, ABR non ha bisogno di ridistribuire i prefissi di loopback degli ABR dall'IGP di base all'IGP di aggregazione.

In entrambi gli scenari, l'ABR imposta l'hop successivo su se stesso per i prefissi annunciati (riflessi da BGP) dall'ABR dalla parte di aggregazione della rete nella parte centrale. In caso contrario, l'ABR deve ridistribuire i prefissi di loopback dei PE dall'IGP di aggregazione nell'IGP di base. In questo caso, non vi è scalabilità.

È possibile applicare diverse configurazioni per impostare l'hop successivo su se stesso per le route unicast con etichetta iBGP riflesse sugli ABR.

Queste soluzioni non funzionano per abilitare la RFC 3107 in Cisco IOS XR:

- next-hop-self non funziona.

Ad esempio:

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

!

- RPL con set next-hop self non funziona.

Ad esempio:

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 non è un operatore valido per il punto di collegamento.

Ad esempio:

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

- impostare next-hop su un indirizzo specifico in route-policy e ibgp policy out enforce-changes non funziona

Ad esempio:

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

Queste soluzioni non funzionano.

Assicurarsi di avere regole ibgp fuori imposizione-modifiche!

Ad esempio:

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

!

!

Ad esempio:

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

Ad esempio:

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

Ad esempio:

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

Configurazione in 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

!

!

!

Configurazione su 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

!

!

Nota: è necessaria la regola di route allocazione-etichetta per tutti o allocazione-etichetta. In caso contrario, le route unicast etichettate non dispongono di un'etichetta locale necessaria, in quanto ABR è l'hop successivo per le route iBGP riflesse.

Nota: la ridistribuzione dell'IGP (OSPF 2) di base nell'IGP di aggregazione (OSPF 1 o OSPF 3) o viceversa non viene eseguita. Tuttavia, il prefisso di loopback dell'RR deve essere noto anche nell'aggregazione IGP, in modo che BGP sul router PE possa eseguire il peer con il loopback dell'ABR/RR. Per questo, la ridistribuzione delle route connesse nell'aggregazione IGP viene eseguita con RPL. Le route connesse ridistribuite sono limitate al prefisso di loopback di ABR con RPL.

Verifica

Per verificare il funzionamento del piano di controllo, vedere la Figura 2:

Figura 2

Per verificare gli annunci delle etichette MPLS, vedere la Figura 3:

Figura 3

Per verificare che il pacchetto sia stato inoltrato, vedere la Figura 4:

Figura 4

In questo modo i pacchetti vengono inoltrati da PE1 a PE2. Il prefisso di loopback di PE2 è 10.100.1.7/32, quindi il prefisso è interessante.

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 2400 è l'etichetta LDP appresa da P2 per il prefisso 10.100.1.3/32. L'etichetta 24005 è l'etichetta BGP RFC 3107 appresa per il prefisso 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

C'è un penultimo hop pop (PHP) verso 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

L'etichetta 24005 viene sostituita con l'etichetta 24003 su 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

C'è il PHP da P1 ad 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

L'etichetta BGP per la RFC 3107 route 10.100.1.7/32 ricevuta da ABR2 da PE2 è 3. Questa è l'etichetta Null implicita che indica 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

L'etichetta 24003 viene sostituita con l'etichetta 24001 su 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

C'è PHP da P3 a 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

Risoluzione dei problemi

Al momento non sono disponibili informazioni specifiche per la risoluzione dei problemi di questa configurazione.

Informazioni correlate

- Architettura MPLS perfetta

- Documentazione e supporto tecnico – Cisco Systems