Lab Objective:
The focus of this lab is to understand MP-BGP implementation and configuration in Cisco IOS routers. Additional technologies include attribute manipulation and route redistribution.
Lab Topology:
The lab network topology is illustrated below:
|
IMPORTANT NOTE If you are using the www.howtonetwork.net racks, please bring up the LAN interfaces connected to the routers by issuing the no shutdown command on the connected switches. If you are using a home lab with no interface fastethernet 0/0 Alternately, you can simply connect the interfaces to a hub or switch if you have one available in your own lab. |
Task 1
Configure hostnames and IPv6 addressing on all routers as illustrated in the network topology.
Task 2
Configure OSPFv3 on R1 and R2. Enable OSPFv3 for the WAN interfaces of R1 and R2. Do NOT advertise R1 or R2s LAN subnet using OSPFv3. Ensure that R1s LAN subnet is advertised as an external Type 1 LSA. Verify the configuration using the appropriate commands.
Task 3
Configure MP-BGP on R2, R3 and R4. All routers should use Link Local addresses for peering and establishing MP-BGP sessions. Verify your configuration
Task 4
Advertise the LAN subnets of R1, R2, and R3 via MP-BGP. Verify your configuration.
Task 5
Redistribute between MP-BGP and OSPFv3 on R2. Ensure that ONLY the LAN subnets are redistributed. Verify your configuration using the appropriate commands.
Task 6
Configure your network so that all routers can ping each others’ LAN subnets from their own local LAN subnet, i.e. LAN-to-LAN pings. Verify your configuration using extended ping. When completing this task, adhere to the following restrictions:
- You are NOT allowed to enable an IGP within AS 254
- You are NOT allowed to configure static routes on R2, R3 and R4
- You are NOT allowed to create any tunnels
- You are NOT allowed to advertise the WAN prefixes via BGP
- You are NOT allowed to use MP-BGP default routing
Lab Validation
Task 1
Please refer to previous labs for basic IPv6 addressing and hostname configuration. This will not be included in this section to avoid being redundant.
Task 2
| R1(config)#ipv6 router ospf 1 R1(config-rtr)#router-id 1.1.1.1 R1(config-rtr)#redistribute connected metric-type 1 R1(config-rtr)#exit R1(config)#interface serial 0/0 R1(config-if)#ipv6 ospf 1 area 0 R1(config-if)#exit |
| R2(config)#ipv6 router ospf 2 R2(config-rtr)#router-id 2.2.2.2 R2(config-rtr)#exit R2(config)#interface serial 0/0 R2(config-if)#ipv6 ospf 2 area 0 R2(config-if)#exit |
Verify basic OSPFv3 configuration using the show ipv6 ospf neighbor command:
| R1#show ipv6 ospf neighbor
Neighbor ID Pri State Dead Time Interface ID Interface |
| R2#show ipv6 ospf neighbor
Neighbor ID Pri State Dead Time Interface ID Interface |
Next, verify OSPFv3 redistribution by looking at the external LSA entry in the LSDB:
| R1#show ipv6 ospf database external
OSPFv3 Router with ID (1.1.1.1) (Process ID 1) Type-5 AS External Link States LS age: 127 |
| R2#show ipv6 ospf database external
OSPFv3 Router with ID (2.2.2.2) (Process ID 2) Type-5 AS External Link States Routing Bit Set on this LSA |
Task 3
This task is relatively straightforward; however, it is important to remember that when using a Link Local address for peering, you must use theneighbor [address] update-source [interface] command to ensure that the session will be established because Link-Local addresses are specific to interfaces. This is required only when using Link-Local addresses for peering. This task is completed as follows:
| R2(config)#router bgp 254 R2(config-router)#bgp router-id 2.2.2.2 R2(config-router)#address-family ipv6 R2(config-router-af)#neighbor FE80::213:7FFF:FEAF:3E00 remote-as 254 R2(config-router-af)#$80::213:7FFF:FEAF:3E00 update-source serial 0/1 R2(config-router-af)#exit |
| R3(config)#router bgp 254 R3(config-router)#bgp router-id 3.3.3.3 R3(config-router)#address-family ipv6 R3(config-router-af)#neighbor FE80::20D:28FF:FE9E:F940 remote-as 254 R3(config-router-af)#$80::20D:28FF:FE9E:F940 update-source serial 1/1 R3(config-router-af)#neighbor FE80::20F:23FF:FE5E:F120 remote-as 254 R3(config-router-af)#$80::20F:23FF:FE5E:F120 update-source serial 1/2 R3(config-router-af)#exit |
| R4(config)#router bgp 254 R4(config-router)#bgp router-id 4.4.4.4 R4(config-router)#address-family ipv6 R4(config-router-af)#neighbor FE80::213:7FFF:FEAF:3E00 remote-as 254 R4(config-router-af)#$80::213:7FFF:FEAF:3E00 update-source serial 0/0 R4(config-router-af)#exit |
Verify your configuration using the show bgp ipv6 unicast summary command:
| R2#show bgp ipv6 unicast summary BGP router identifier 2.2.2.2, local AS number 254 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd |
| R3#show bgp ipv6 unicast summary BGP router identifier 3.3.3.3, local AS number 254 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd |
| R4#show bgp ipv6 unicast summary BGP router identifier 4.4.4.4, local AS number 254 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd |
Task 4
The advertisement of the LAN subnets via BGP is straightforward. To ensure that R2 and R4 do see each others’ LAN subnets in their respective BGP RIBs, R3 must be configured as a route reflector. This task is completed as follows:
| R2(config)#router bgp 254 R2(config-router)#address-family ipv6 R2(config-router-af)#network 3FFE:ABCD:1111:2::/64 R2(config-router-af)#exit R2(config-router)#exit |
| R3(config)#router bgp 254 R3(config-router)#address-family ipv6 R3(config-router-af)#network 3FFE:ABCD:1111:3::/64 R3(config-router-af)#exit R3(config-router)#exit |
| R4(config)#router bgp 254 R4(config-router)#address-family ipv6 R4(config-router-af)#network 3FFE:ABCD:1111:4::/64 R4(config-router-af)#exit R4(config-router)#exit |
Verify your configuration using the show bgp ipv6 unicast command on all routers:
| R2#show bgp ipv6 unicast 3FFE:ABCD:1111:2::2/64 BGP routing table entry for 3FFE:ABCD:1111:2::/64, version 2 Paths: (1 available, best #1, table Global-IPv6-Table) Advertised to update-groups: 1 Local :: from 0.0.0.0 (2.2.2.2) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best |
| R3#show bgp ipv6 unicast 3FFE:ABCD:1111:3::3/64 BGP routing table entry for 3FFE:ABCD:1111:3::/64, version 5 Paths: (1 available, best #1, table Global-IPv6-Table) Advertised to update-groups: 2 Local :: from 0.0.0.0 (3.3.3.3) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best |
| R4#show bgp ipv6 unicast 3FFE:ABCD:1111:4::4/64 BGP routing table entry for 3FFE:ABCD:1111:4::/64, version 3 Paths: (1 available, best #1, table Global-IPv6-Table) Advertised to update-groups: 1 Local :: from 0.0.0.0 (4.4.4.4) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best |
Task 5
By default, when redistributing between IPv6 routing protocols, connected subnets will not be included. Therefore, you must explicitly redistribute the connected R2 LAN subnet into OSPF using a route map so that only this subnet is redistributed.
When redistributing between OSPFv3 and MP-BGP, the same OSPF-to-BGP rules apply, i.e. only internal prefixes are accepted. This default behavior must be modified to complete this task. This task is completed by implementing the following configuration on R2:
| R2(config)#route-map LAN-ONLY permit 10 R2(config-route-map)#match interface fastethernet 0/0 R2(config-route-map)#exit R2(config)#route-map LAN-ONLY deny 20 R2(config-route-map)#exit R2(config)#ipv6 router ospf 2 R2(config-rtr)#redistribute connected route-map LAN-ONLY R2(config-rtr)#redistribute bgp 254 R2(config-rtr)#exit R2(config)#router bgp 254 R2(config-router)#address-family ipv6 R2(config-router-af)#redistribute ospf 2 match external 1 R2(config-router-af)#bgp redistribute-internal R2(config-router-af)#exit R2(config-router)#exit |
Verify your configuration by looking at the LSDB on either R1 or R2 for BGP-to-OSPF route redistribution. At this point in time, not all prefixes will be present. This is normal given the implemented configuration up to this point:
| R2#show ipv6 ospf database external
OSPFv3 Router with ID (2.2.2.2) (Process ID 2) Type-5 AS External Link States Routing Bit Set on this LSA LS age: 272 LS age: 56 |
Similarly, verify OSPF-to-BGP redistribution by looking at the MP-BGP RIB:
| R2#show bgp ipv6 unicast BGP table version is 4, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, r RIB-failure, S Stale Origin codes: i – IGP, e – EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path |
Task 6
This task requires some considerable thought and is two-fold. First, it is important to recall that when peering using Link Local addresses, you must use a route map to specify the global Unicast address as the next hop address for the UPDATE messages sent by the local router. To complete this first part, implement the following configuration on R1, R2 and R3:
| R2(config)#route-map NEXT-HOP permit 10 R2(config-route-map)#set ipv6 next-hop 2001:ABCD:1111:3::2 R2(config-route-map)#exit R2(config)#router bgp 254 R2(config-router)#address-family ipv6 R2(config-router-af)#neighbor FE80::213:7FFF:FEAF:3E00 route-map NEXT-HOP out R2(config-router-af)#exit R2(config-router)#exit |
| R3(config)#route-map R2-NEXT-HOP permit 10 R3(config-route-map)#set ipv6 next-hop 2001:ABCD:1111:3::3 R3(config-route-map)#exit R3(config)#route-map R4-NEXT-HOP permit 10 R3(config-route-map)#set ipv6 next-hop 2001:ABCD:1111:4::3 R3(config-route-map)#exit R3(config)#router bgp 254 R3(config-router)#address-family ipv6 R3(config-router-af)#$80::20D:28FF:FE9E:F940 route-map R2-NEXT-HOP out R3(config-router-af)#$80::20F:23FF:FE5E:F120 route-map R4-NEXT-HOP out R3(config-router-af)#exit R3(config-router)#exit |
| R4(config)#router bgp 254 R4(config-router)#address-family ipv6 R4(config-router-af)#neighbor FE80::213:7FFF:FEAF:3E00 route-map NEXT-HOP out R4(config-router-af)#exit R4(config-router)#exit |
Following NEXT_HOP modification, the second part of this task is to ensure that you remember the normal iBGP-to-iBGP advertisement rules. By default, R3 will not advertise prefixes received from R2 to R4 and vice-versa. To work around this issue, R3 must be configured as a route reflector. This second part is completed as follows:
| R3(config)#router bgp 254 R3(config-router)#address-family ipv6 R3(config-router-af)#neighbor FE80::20D:28FF:FE9E:F940 route-reflector-client R3(config-router-af)#neighbor FE80::20F:23FF:FE5E:F120 route-reflector-client R3(config-router-af)#network 3FFE:ABCD:1111:3::/64 R3(config-router-af)#exit R3(config-router)#exit |
Following this configuration, verify the appropriate prefix entries in the relevant protocol data structures, i.e. the LSDB on R1 and the MP-BGP RIBs on R2, R3, and R4 as follows::
| R1#show ipv6 ospf database
OSPFv3 Router with ID (1.1.1.1) (Process ID 1) Router Link States (Area 0) ADV Router Age Seq# Fragment ID Link count Bits Link (Type-8) Link States (Area 0) ADV Router Age Seq# Link ID Interface Intra Area Prefix Link States (Area 0) ADV Router Age Seq# Link ID Ref-lstype Ref-LSID Type-5 AS External Link States ADV Router Age Seq# Prefix |
| R2#show bgp ipv6 unicast BGP table version is 7, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, r RIB-failure, S Stale Origin codes: i – IGP, e – EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path |
| R3#show bgp ipv6 unicast BGP table version is 12, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, r RIB-failure, S Stale Origin codes: i – IGP, e – EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path |
| R4#show bgp ipv6 unicast BGP table version is 6, local router ID is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i – internal, r RIB-failure, S Stale Origin codes: i – IGP, e – EGP, ? – incomplete Network Next Hop Metric LocPrf Weight Path |
Finally, complete this task by pinging LAN-to-LAN between all routers:
| R1#ping 3FFE:ABCD:1111:2::2 source fastethernet 0/0
Type escape sequence to abort. R1#ping 3FFE:ABCD:1111:3::3 source fastethernet 0/0 Type escape sequence to abort. R1#ping 3FFE:ABCD:1111:4::4 source fastethernet 0/0 Type escape sequence to abort. |
| R2#ping 3FFE:ABCD:1111:1::1 source fastethernet 0/0
Type escape sequence to abort. R2#ping 3FFE:ABCD:1111:3::3 source fastethernet 0/0 Type escape sequence to abort. R2#ping 3FFE:ABCD:1111:4::4 source fastethernet 0/0 Type escape sequence to abort. |
| R3#ping 3FFE:ABCD:1111:1::1 source fastethernet 0/0
Type escape sequence to abort. R3#ping 3FFE:ABCD:1111:2::2 source fastethernet 0/0 Type escape sequence to abort. R3#ping 3FFE:ABCD:1111:4::4 source fastethernet 0/0 Type escape sequence to abort. |
| 4#ping 3FFE:ABCD:1111:1::1 source fastethernet 0/0
Type escape sequence to abort. R4#ping 3FFE:ABCD:1111:2::2 source fastethernet 0/0 Type escape sequence to abort. R4#ping 3FFE:ABCD:1111:3::3 source fastethernet 0/0 Type escape sequence to abort. |
Final Router ConfigurationsR1
|
R1#term len 0 Current configuration : 994 bytes R1# |
R2
|
R2#term len 0 Current configuration : 1718 bytes R2# |
R3
|
R3#term len 0 Current configuration : 2187 bytes R3# |
R4
|
R4#term len 0 Current configuration : 1362 bytes R4# |
