In Figure 1, the access, aggregation, and core layers belong to one AS. To enable the base station NodeB to communicate with the MME/SGW and provide the VPN service to the MME/SGW, the customer wants to use MPLS at the access layer, so that a complete LSP can be set up over the three layers. To provide an end-to-end service and simplify service configuration and network management, intra-AS seamless MPLS can be configured on the network.
The configuration roadmap is as follows:
Configure IGP protocols at the access, aggregation, and core layers to implement network connectivity at each layer.
Configure MPLS and MPLS LDP on each device and establish an MPLS LSP.
Establish IBGP peer relationships at each layer and enable devices to exchange labeled routes.
Configure each AGG and Core_ABR as RRs to help the CSG and MASG obtain the route destined for each other's loopback interface.
Configure a routing policy to control label distribution for a BGP LSP to be established on each device. The ingress node on the BGP LSP needs to distribute an MPLS label to the route advertised to a downstream node. If a transit node on the BGP LSP receives a labeled IPv4 route from its upstream node, the transit node must re-distribute an MPLS label to the labeled IPv4 route before advertising the route to a downstream node.
Establish an MP-IBGP peer relationship between a CSG and MASG for VPNv4 route information exchange.
Configure a VPN instance on each CSG and MASG.
# Configure the CSG. The configurations of the AGG, Core_ABR, and MASG are similar to that of the CSG, and are not mentioned here.
<HUAWEI> system-view [HUAWEI] sysname CSG [CSG] interface loopback 1 [CSG-LoopBack1] ip address 1.1.1.9 32 [CSG-LoopBack1] quit [CSG] vlan batch 100 400 [CSG] interface vlanif 100 [CSG-Vlanif100] ip address 172.1.1.1 24 [CSG-Vlanif100] quit [CSG] interface vlanif 400 [CSG-Vlanif400] ip address 10.1.1.1 24 [CSG-Vlanif400] quit [CSG] interface gigabitethernet0/0/1 [CSG-GigabitEthernet0/0/1] port link-type trunk [CSG-GigabitEthernet0/0/1] port trunk allow-pass vlan 100 [CSG-GigabitEthernet0/0/1] quit [CSG] interface gigabitethernet0/0/2 [CSG-GigabitEthernet0/0/2] port link-type trunk [CSG-GigabitEthernet0/0/2] port trunk allow-pass vlan 400 [CSG-GigabitEthernet0/0/2] quit
# Configure the CSG.
[CSG] ospf 1 [CSG-ospf-1] area 0 [CSG-ospf-1-area-0.0.0.0] network 1.1.1.9 0.0.0.0 [CSG-ospf-1-area-0.0.0.0] network 172.1.1.0 0.0.0.255 [CSG-ospf-1-area-0.0.0.0] quit [CSG-ospf-1] quit
# Configure the AGG.
[AGG] ospf 1 [AGG-ospf-1] area 0 [AGG-ospf-1-area-0.0.0.0] network 2.2.2.9 0.0.0.0 [AGG-ospf-1-area-0.0.0.0] network 172.1.1.0 0.0.0.255 [AGG-ospf-1-area-0.0.0.0] quit [AGG-ospf-1] quit [AGG] isis 1 [AGG-isis-1] network-entity 10.0000.0000.0000.0010.00 [AGG-isis-1] quit [AGG] interface vlanif 200 [AGG-Vlanif200] isis enable 1 [AGG-Vlanif200] quit [AGG] interface loopback 1 [AGG-LoopBack1] isis enable 1 [AGG-LoopBack1] quit
# Configure the Core_ABR.
[Core_ABR] ospf 2 [Core_ABR-ospf-2] area 0 [Core_ABR-ospf-2-area-0.0.0.0] network 3.3.3.9 0.0.0.0 [Core_ABR-ospf-2-area-0.0.0.0] network 172.3.1.0 0.0.0.255 [Core_ABR-ospf-2-area-0.0.0.0] quit [Core_ABR-ospf-2] quit [Core_ABR] isis 1 [Core_ABR-isis-1] network-entity 10.0000.0000.0000.0020.00 [Core_ABR-isis-1] quit [Core_ABR] interface vlanif 200 [Core_ABR-Vlanif200] isis enable 1 [Core_ABR-Vlanif200] quit [Core_ABR] interface loopback 1 [Core_ABR-LoopBack1] isis enable 1 [Core_ABR-LoopBack1] quit
# Configure the MASG.
[MASG] ospf 2 [MASG-ospf-2] area 0 [MASG-ospf-2-area-0.0.0.0] network 4.4.4.9 0.0.0.0 [MASG-ospf-2-area-0.0.0.0] network 172.3.1.0 0.0.0.255 [MASG-ospf-2-area-0.0.0.0] quit [MASG-ospf-2] quit
# Configure the CSG. The configurations of the AGG, Core_ABR, and MASG are similar to that of the CSG, and are not mentioned here.
[CSG] mpls lsr-id 1.1.1.9 [CSG] mpls [CSG-mpls] quit [CSG] mpls ldp [CSG-mpls-ldp] quit [CSG] interface vlanif 100 [CSG-Vlanif100] mpls [CSG-Vlanif100] mpls ldp [CSG-Vlanif100] quit
# Configure the CSG.
[CSG] bgp 100 [CSG-bgp] peer 2.2.2.9 as-number 100 [CSG-bgp] peer 2.2.2.9 connect-interface LoopBack 1 [CSG-bgp] peer 2.2.2.9 label-route-capability [CSG-bgp] network 1.1.1.9 32 [CSG-bgp] quit
# Configure the AGG.
[AGG] bgp 100 [AGG-bgp] peer 1.1.1.9 as-number 100 [AGG-bgp] peer 1.1.1.9 connect-interface LoopBack 1 [AGG-bgp] peer 1.1.1.9 label-route-capability [AGG-bgp] peer 3.3.3.9 as-number 100 [AGG-bgp] peer 3.3.3.9 connect-interface LoopBack 1 [AGG-bgp] peer 3.3.3.9 label-route-capability [AGG-bgp] quit
# Configure the Core_ABR.
[Core_ABR] bgp 100 [Core_ABR-bgp] peer 2.2.2.9 as-number 100 [Core_ABR-bgp] peer 2.2.2.9 connect-interface LoopBack 1 [Core_ABR-bgp] peer 2.2.2.9 label-route-capability [Core_ABR-bgp] peer 4.4.4.9 as-number 100 [Core_ABR-bgp] peer 4.4.4.9 connect-interface LoopBack 1 [Core_ABR-bgp] peer 4.4.4.9 label-route-capability [Core_ABR-bgp] quit
# Configure the MASG.
[MASG] bgp 100 [MASG-bgp] peer 3.3.3.9 as-number 100 [MASG-bgp] peer 3.3.3.9 connect-interface LoopBack 1 [MASG-bgp] peer 3.3.3.9 label-route-capability [MASG-bgp] network 4.4.4.9 32 [MASG-bgp] quit
# Configure the AGG.
[AGG] bgp 100 [AGG-bgp] peer 1.1.1.9 reflect-client [AGG-bgp] peer 1.1.1.9 next-hop-local [AGG-bgp] peer 3.3.3.9 reflect-client [AGG-bgp] peer 3.3.3.9 next-hop-local [AGG-bgp] quit
# Configure the Core_ABR.
[Core_ABR] bgp 100 [Core_ABR-bgp] peer 2.2.2.9 reflect-client [Core_ABR-bgp] peer 2.2.2.9 next-hop-local [Core_ABR-bgp] peer 4.4.4.9 reflect-client [Core_ABR-bgp] peer 4.4.4.9 next-hop-local [Core_ABR-bgp] quit
# Create a routing policy on the CSG and apply the routing policy to its peer.
[CSG] route-policy policy1 permit node 1 [CSG-route-policy] apply mpls-label [CSG-route-policy] quit [CSG] bgp 100 [CSG-bgp] peer 2.2.2.9 route-policy policy1 export [CSG-bgp] quit
# Create a routing policy on the MASG and apply the routing policy to its peer.
[MASG] route-policy policy1 permit node 1 [MASG-route-policy] apply mpls-label [MASG-route-policy] quit [MASG] bgp 100 [MASG-bgp] peer 3.3.3.9 route-policy policy1 export [MASG-bgp] quit
# Create a routing policy on the AGG and apply the routing policy to its peer.
[AGG] route-policy policy1 permit node 1 [AGG-route-policy] if-match mpls-label [AGG-route-policy] apply mpls-label [AGG-route-policy] quit [AGG] bgp 100 [AGG-bgp] peer 1.1.1.9 route-policy policy1 export [AGG-bgp] peer 3.3.3.9 route-policy policy1 export [AGG-bgp] quit
# Create a routing policy on the Core_ABR and apply the routing policy to its peer.
[Core_ABR] route-policy policy1 permit node 1 [Core_ABR-route-policy] if-match mpls-label [Core_ABR-route-policy] apply mpls-label [Core_ABR-route-policy] quit [Core_ABR] bgp 100 [Core_ABR-bgp] peer 2.2.2.9 route-policy policy1 export [Core_ABR-bgp] peer 4.4.4.9 route-policy policy1 export [Core_ABR-bgp] quit
# Configure the CSG.
[CSG] bgp 100 [CSG-bgp] peer 4.4.4.9 as-number 100 [CSG-bgp] peer 4.4.4.9 connect-interface LoopBack 1 [CSG-bgp] ipv4-family vpnv4 [CSG-bgp-af-vpnv4] peer 4.4.4.9 enable [CSG-bgp-af-vpnv4] quit [CSG-bgp] quit
# Configure the MASG.
[MASG] bgp 100 [MASG-bgp] peer 1.1.1.9 as-number 100 [MASG-bgp] peer 1.1.1.9 connect-interface LoopBack 1 [MASG-bgp] ipv4-family vpnv4 [MASG-bgp-af-vpnv4] peer 1.1.1.9 enable [MASG-bgp-af-vpnv4] quit [MASG-bgp] quit
# Configure the CSG. The configurations of the MASG are similar to that of the CSG, and are not mentioned here.
[CSG] ip vpn-instance vpn1 [CSG-vpn-instance-vpn1] ipv4-family [CSG-vpn-instance-vpn1-af-ipv4] route-distinguisher 100:1 [CSG-vpn-instance-vpn1-af-ipv4] vpn-target 1:1 [CSG-vpn-instance-vpn1-af-ipv4] quit [CSG-vpn-instance-vpn1] quit [CSG] interface vlanif 400 [CSG-Vlanif400] ip binding vpn-instance vpn1 [CSG-Vlanif400] quit [CSG] bgp 100 [CSG-bgp] ipv4-family vpn-instance vpn1 [CSG-bgp-vpn1] import-route direct [CSG-bgp-vpn1] quit [CSG-bgp] quit
After the configuration is complete, run the display ip routing-table command on the CSG or MASG. You can view routes to the loopback address of each other.
The display on the CSG is used as an example.
[CSG] display ip routing-table
Route Flags: R - relay, D - download to fib, T - to vpn-instance
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.9/32 Direct 0 0 D 127.0.0.1 LoopBack1
2.2.2.9/32 OSPF 10 1 D 172.1.1.2 Vlanif100
4.4.4.9/32 IBGP 255 0 RD 2.2.2.9 Vlanif100
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.1.1.0/24 Direct 0 0 D 172.1.1.1 Vlanif100
172.1.1.1/32 Direct 0 0 D 127.0.0.1 Vlanif100
Run the display mpls lsp command on the CSG or MASG to check the LSP configuration.
The display on the CSG is used as an example.
[CSG] display mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.9/32 1025/NULL -/-
4.4.4.9/32 NULL/1027 -/-
-/32 1026/NULL -/- vpn1
Flag after Out IF: (I) - LSP Is Only Iterated by RLFA
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.9/32 3/NULL -/-
2.2.2.9/32 NULL/3 -/Vlanif100
2.2.2.9/32 1024/3 -/Vlanif100
CSG configuration file
# sysname CSG # vlan batch 100 400 # ip vpn-instance vpn1 ipv4-family route-distinguisher 100:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # mpls lsr-id 1.1.1.9 mpls # mpls ldp # interface Vlanif100 ip address 172.1.1.1 255.255.255.0 mpls mpls ldp # interface Vlanif400 ip binding vpn-instance vpn1 ip address 10.1.1.1 255.255.255.0 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 100 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 400 # interface LoopBack1 ip address 1.1.1.9 255.255.255.255 # bgp 100 peer 2.2.2.9 as-number 100 peer 2.2.2.9 connect-interface LoopBack1 peer 4.4.4.9 as-number 100 peer 4.4.4.9 connect-interface LoopBack1 # ipv4-family unicast undo synchronization network 1.1.1.9 255.255.255.255 peer 2.2.2.9 enable peer 2.2.2.9 route-policy policy1 export peer 2.2.2.9 label-route-capability peer 4.4.4.9 enable # ipv4-family vpnv4 policy vpn-target peer 4.4.4.9 enable # ipv4-family vpn-instance vpn1 import-route direct # ospf 1 area 0.0.0.0 network 1.1.1.9 0.0.0.0 network 172.1.1.0 0.0.0.255 # route-policy policy1 permit node 1 apply mpls-label # return
AGG configuration file
# sysname AGG # vlan batch 100 200 # mpls lsr-id 2.2.2.9 mpls # mpls ldp # isis 1 network-entity 10.0000.0000.0000.0010.00 # interface Vlanif100 ip address 172.1.1.2 255.255.255.0 mpls mpls ldp # interface Vlanif200 ip address 172.2.1.1 255.255.255.0 isis enable 1 mpls mpls ldp # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 100 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 200 # interface LoopBack1 ip address 2.2.2.9 255.255.255.255 isis enable 1 # bgp 100 peer 1.1.1.9 as-number 100 peer 1.1.1.9 connect-interface LoopBack1 peer 3.3.3.9 as-number 100 peer 3.3.3.9 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 1.1.1.9 enable peer 1.1.1.9 route-policy policy1 export peer 1.1.1.9 reflect-client peer 1.1.1.9 next-hop-local peer 1.1.1.9 label-route-capability peer 3.3.3.9 enable peer 3.3.3.9 route-policy policy1 export peer 3.3.3.9 reflect-client peer 3.3.3.9 next-hop-local peer 3.3.3.9 label-route-capability # ospf 1 area 0.0.0.0 network 2.2.2.9 0.0.0.0 network 172.1.1.0 0.0.0.255 # route-policy policy1 permit node 1 if-match mpls-label apply mpls-label # return
Core_ABR configuration file
# sysname Core_ABR # vlan batch 200 300 # mpls lsr-id 3.3.3.9 mpls # mpls ldp # isis 1 network-entity 10.0000.0000.0000.0020.00 # interface Vlanif200 ip address 172.2.1.2 255.255.255.0 isis enable 1 mpls mpls ldp # interface Vlanif300 ip address 172.3.1.1 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 200 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 300 # interface LoopBack1 ip address 3.3.3.9 255.255.255.255 isis enable 1 # bgp 100 peer 2.2.2.9 as-number 100 peer 2.2.2.9 connect-interface LoopBack1 peer 4.4.4.9 as-number 100 peer 4.4.4.9 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 2.2.2.9 enable peer 2.2.2.9 route-policy policy1 export peer 2.2.2.9 reflect-client peer 2.2.2.9 next-hop-local peer 2.2.2.9 label-route-capability peer 4.4.4.9 enable peer 4.4.4.9 route-policy policy1 export peer 4.4.4.9 reflect-client peer 4.4.4.9 next-hop-local peer 4.4.4.9 label-route-capability # ospf 2 area 0.0.0.0 network 3.3.3.9 0.0.0.0 network 172.3.1.0 0.0.0.255 # route-policy policy1 permit node 1 if-match mpls-label apply mpls-label # return
MASG configurations file
# sysname MASG # vlan batch 300 500 # ip vpn-instance vpn1 ipv4-family route-distinguisher 1:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # mpls lsr-id 4.4.4.9 mpls # mpls ldp # interface Vlanif300 ip address 172.3.1.2 255.255.255.0 mpls mpls ldp # interface Vlanif500 ip binding vpn-instance vpn1 ip address 10.2.1.1 255.255.255.0 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 300 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 500 # interface LoopBack1 ip address 4.4.4.9 255.255.255.255 # bgp 100 peer 1.1.1.9 as-number 100 peer 1.1.1.9 connect-interface LoopBack1 peer 3.3.3.9 as-number 100 peer 3.3.3.9 connect-interface LoopBack1 # ipv4-family unicast undo synchronization network 4.4.4.9 255.255.255.255 peer 1.1.1.9 enable peer 3.3.3.9 enable peer 3.3.3.9 route-policy policy1 export peer 3.3.3.9 label-route-capability # ipv4-family vpnv4 policy vpn-target peer 1.1.1.9 enable # ipv4-family vpn-instance vpn1 import-route direct # ospf 2 area 0.0.0.0 network 4.4.4.9 0.0.0.0 network 172.3.1.0 0.0.0.255 # route-policy policy1 permit node 1 apply mpls-label # return