BSR or Bootstrap Router is the open standard, RFC 5059, for distributing RP info through out the multicast PIM enabled network. BSR messages are sent inside of PIM ver2 messages where ever PIM is enabled and flowing. PIM builds the connections per router to allow routed multicast to flow. We've already taken a look at static RP which needs to be configured on every router that will participate in multicast forwarding. This requirement makes Static RP challenging to configure. The nice thing about SP mVPN providing transport for Customer multicast is that the RP distribution method chosen by the provider is independent of the customer. The provider may choose Auto-RP and the customer could choose BSR or vice-versa. In this post we will use BSR for both the customer and provider multicast networks. For ease of migration from Static RP to BSR I have configured BSR to use the same loopback interfaces that Static RP previously used. R1's loopback 0 and R5's loopback 0 interfaces.
BSR and Auto-RP operate differently that Static RP, both support the RP information distributor and the RP assigner. These are terms I made up, the "ip pim bsr-candidate loopback 0" is the information distributor and the "ip pim rp-candidate loopback 0" is used to define the RP itself. This would mean that many different routers could be the RP. Typically an RP filter is used, where one RP would service the first half of the 224/4 range and the other the back half. We won't be testing that out in this post. The BSR candidate and RP candidate can both be the same router, which in our case is what I configured.
R5 - Customer RP
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0
R1 - Service Provider RP
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0
Not configured in our topology or scenario but worth mentioning:
IOS XR BSR Configuration
router pim
address-family ipv4
bsr candidate-bsr 172.16.100.19 hash-mask-len 30 priority 1
bsr candidate-rp 172.16.100.19 priority 192 interval 60
R4 - PE Router servicing R7 and R8
R4#sh ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 172.16.100.1 (?), v2
Info source: 172.16.100.1 (?), via bootstrap, priority 0, holdtime 150
Uptime: 00:30:52, expires: 00:01:39
XR9 - PE Router servicing R14
RP/0/0/CPU0:XR9#sh pim rp mapping
Mon Mar 5 09:31:40.742 UTC
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 172.16.100.1 (?), v2
Info source: 10.11.19.11 (?), elected via bsr, priority 0, holdtime 150
Uptime: 00:31:39, expires: 00:01:56
Customer multicast receiver
R12#sh ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 172.16.100.5 (?), v2
Info source: 172.16.100.5 (?), via bootstrap, priority 0, holdtime 150
Uptime: 00:31:41, expires: 00:02:01
Now that we have configured BSR and verified that the RP information has been distributed, we will now test multicast.
R5#ping 224.1.1.1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Reply to request 0 from 10.10.11.11, 59 ms
Reply to request 0 from 10.18.13.13, 321 ms
Reply to request 0 from 10.14.19.14, 257 ms
Reply to request 0 from 10.4.7.7, 193 ms
Reply to request 0 from 172.16.100.120, 130 ms
Reply to request 0 from 10.12.9.12, 118 ms
Reply to request 0 from 10.4.8.8, 79 ms
We can see that it does work using the BSR configuration.
Showing posts with label IOS. Show all posts
Showing posts with label IOS. Show all posts
Monday, March 5, 2018
Sunday, March 4, 2018
IOS and IOS XR Multicast VPN with the Rosen Model Default MDT with Static RP
In this post we will follow on from the previous post where we looked at Multicast VPN on just IOS. We'll expand on that post with this one. Just a couple of things before we get into the fun stuff. The topology has grown significantly since the last post, this was done as the original 2 IOS XR PE routers running IOS XR 6.0 code don't appear to support multicast in the data plane. I have attempted mVPN on both IOS XR 6.0 OVA and .VMDK variations. These are the same .VMDK used for VIRL, that's where I downloaded it from. I ended up using IOS XR 5.3 OVA, the OVA is the only version tested that supports the dataplane. I have not tested any other versions, so you may get lucky if you find a version that works. However, for those with an interest of the CCIE SPv4 lab exam, IOS XR 6.0 is the version listed to be used in the lab exam.
So like the previous post, the is the MDT default, which means that like PIM Dense mode, every PE gets the traffic even if the traffic isn't destined for it.
XR9 is the bottom left router connected to R14 and XR1. IOS XR uses two different constructs to enable mVPN. IOS XR supports both enterprise and service provider multicast. We'll configure multicast on IOS XR and show the configuration of R3 just to show IOS and IOS XR in the same post. R5 is the multicast source, ping 224.1.1.1 from here should get responses from 6 receivers
PIM or Protocol Independent Mutlicast is used to build PIM trees between all the routers. Without PIM enabled, routed multicast can't flow between the routers and is restricted to a TTL of 1 or link local multicast. The PIM construct is used to define the RP address, where to source PIM traffic from and define VRF specific info. The RP address of 172.16.100.1 is the RP of the SP and the VRF RP address is the RP of the customer.
The multicast construct enables multicast to be forwarded. The MDT or multicast distribution tree is used to build the PIM tunnels. To avoid an RPF issue, it is a best practice to enable multicast on all interfaces enabled for IGP. Specify the MDT source, since this is a PE router, the MDT source should be the loopback that is the LDP and BGP source. Under the VRF, specifying the MDT default multicast group address.
XR9
multicast-routing
address-family ipv4
mdt source Loopback0
interface all enable
!
vrf MCAST
address-family ipv4
mdt source Loopback0
interface all enable
mdt default ipv4 232.0.0.1
!
router pim
address-family ipv4
rp-address 172.16.100.1
interface Loopback0
!
vrf MCAST
address-family ipv4
rp-address 172.16.100.5
interface GigabitEthernet0/0/0/0.1419
!
router bgp 1
address-family ipv4 unicast
!
address-family vpnv4 unicast
!
address-family ipv6 unicast
!
address-family vpnv6 unicast
!
address-family ipv4 mdt
!
neighbor 172.16.100.1
remote-as 1
update-source Loopback0
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
address-family ipv4 mdt
!
!
vrf MCAST
rd 1:1
address-family ipv4 unicast
!
address-family ipv6 unicast
RP/0/0/CPU0:XR9#sh pim neighbor
Sun Mar 4 23:56:32.026 UTC
Neighbor Address Interface Uptime Expires DR pri Flags
10.11.19.11 GigabitEthernet0/0/0/0.1119 01:38:18 00:01:31 1 B
10.11.19.19* GigabitEthernet0/0/0/0.1119 01:38:23 00:01:29 1 (DR) B P E
172.16.100.19* Loopback0 01:38:23 00:01:21 1 (DR) B P
This validates that there are PIM neighbors, in this case it is XR1.
RP/0/0/CPU0:XR9#sh pim vrf MCAST neighbor
Sun Mar 4 23:56:41.246 UTC
Neighbor Address Interface Uptime Expires DR pri Flags
10.14.19.14 GigabitEthernet0/0/0/0.1419 01:36:38 00:01:36 1 P
10.14.19.19* GigabitEthernet0/0/0/0.1419 01:38:32 00:01:20 1 (DR) B P E
172.16.100.3 mdtMCAST 01:29:31 00:01:18 1 P
172.16.100.9 mdtMCAST 01:29:58 00:01:19 1 P
172.16.100.18 mdtMCAST 01:29:42 00:01:31 1
172.16.100.19* mdtMCAST 01:38:28 00:01:34 1 P
172.16.100.110 mdtMCAST 01:29:57 00:01:21 1 (DR) P
There are also VRF MCAST PIM neighbors, one to R14 which is the G0/0/0/0.1419, there others are MDT peers from the PIM tunnels, which are mGRE tunnels.
RP/0/0/CPU0:XR9#sh bgp ipv4 mdt | b Network
Sun Mar 4 23:57:28.713 UTC
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1
*>i172.16.100.3/96 172.16.100.3 0 100 0 ?
*>i172.16.100.4/96 172.16.100.4 0 100 0 ?
*>i172.16.100.9/96 172.16.100.9 0 100 0 ?
*>i172.16.100.14/96 172.16.100.14 100 0 i
*>i172.16.100.18/96 172.16.100.18 100 0 i
*> 172.16.100.19/96 0.0.0.0 0 i
*>i172.16.100.110/96 172.16.100.110 0 100 0 ?
Processed 7 prefixes, 7 paths
R14#sh ip pim neighbor | b Address
Address Prio/Mode
10.14.19.19 GigabitEthernet1.1419 01:43:29/00:01:28 v2 1 / DR P G
R3
ip multicast-routing distributed
!
ip multicast-routing vrf MCAST distributed
!
interface GigabitEthernet1.13
ip pim sparse-mode
!
interface Loopback0
ip pim sparse-mode
!
interface GigabitEthernet1.35
vrf forwarding MCAST
ip pim sparse-mode
!
ip pim rp-address 172.16.100.1
!
ip pim vrf MCAST rp-address 172.16.100.5
!
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 172.16.100.1 remote-as 1
neighbor 172.16.100.1 update-source Loopback0
!
address-family ipv4 mdt
neighbor 172.16.100.1 activate
neighbor 172.16.100.1 send-community both
R3#sh bgp ipv4 mdt all
BGP table version is 25, local router ID is 172.16.100.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf MCAST)
*> 172.16.100.3/32 0.0.0.0 0 ?
*>i 172.16.100.4/32 172.16.100.4 0 100 0 ?
* i 172.16.100.4 0 100 0 ?
* i 172.16.100.9/32 172.16.100.9 0 100 0 ?
*>i 172.16.100.9 0 100 0 ?
*>i 172.16.100.13/32 172.16.100.13 100 0 i
*>i 172.16.100.14/32 172.16.100.14 100 0 i
*>i 172.16.100.18/32 172.16.100.18 100 0 i
* i 172.16.100.18 100 0 i
*>i 172.16.100.19/32 172.16.100.19 100 0 i
*>i 172.16.100.110/32
172.16.100.110 0 100 0 ?
R1
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor MCAST peer-group
neighbor MCAST remote-as 1
neighbor MCAST update-source Loopback0
neighbor 172.16.100.19 peer-group MCAST
!
address-family ipv4 mdt
neighbor MCAST route-reflector-client
neighbor 172.16.100.19 activate
R1#sh bgp ipv4 mdt all | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1
*>i 172.16.100.3/32 172.16.100.3 0 100 0 ?
*>i 172.16.100.4/32 172.16.100.4 0 100 0 ?
*>i 172.16.100.9/32 172.16.100.9 0 100 0 ?
*>i 172.16.100.14/32 172.16.100.14 100 0 i
*>i 172.16.100.18/32 172.16.100.18 100 0 i
*>i 172.16.100.19/32 172.16.100.19 100 0 i
*>i 172.16.100.110/32
172.16.100.110 0 100 0 ?
We can see that R1, the BGP Route Reflector, has formed MDT peerings with all the PE routers.
R5
ip multicast-routing distributed
!
ip pim rp-address 172.16.100.5
!
interface GigabitEthernet1.35
ip pim dr-priority 0
ip pim sparse-mode
!
interface Loopback0
ip pim sparse-mode
R5#ping 224.1.1.1 repeat 2
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Reply to request 0 from 10.10.11.11, 64 ms
Reply to request 0 from 10.18.13.13, 318 ms
Reply to request 0 from 10.4.7.7, 263 ms
Reply to request 0 from 10.4.8.8, 246 ms
Reply to request 0 from 10.14.19.14, 229 ms
Reply to request 0 from 172.16.100.120, 188 ms
Reply to request 0 from 10.12.9.12, 64 ms
So like the previous post, the is the MDT default, which means that like PIM Dense mode, every PE gets the traffic even if the traffic isn't destined for it.
XR9 is the bottom left router connected to R14 and XR1. IOS XR uses two different constructs to enable mVPN. IOS XR supports both enterprise and service provider multicast. We'll configure multicast on IOS XR and show the configuration of R3 just to show IOS and IOS XR in the same post. R5 is the multicast source, ping 224.1.1.1 from here should get responses from 6 receivers
PIM or Protocol Independent Mutlicast is used to build PIM trees between all the routers. Without PIM enabled, routed multicast can't flow between the routers and is restricted to a TTL of 1 or link local multicast. The PIM construct is used to define the RP address, where to source PIM traffic from and define VRF specific info. The RP address of 172.16.100.1 is the RP of the SP and the VRF RP address is the RP of the customer.
The multicast construct enables multicast to be forwarded. The MDT or multicast distribution tree is used to build the PIM tunnels. To avoid an RPF issue, it is a best practice to enable multicast on all interfaces enabled for IGP. Specify the MDT source, since this is a PE router, the MDT source should be the loopback that is the LDP and BGP source. Under the VRF, specifying the MDT default multicast group address.
XR9
multicast-routing
address-family ipv4
mdt source Loopback0
interface all enable
!
vrf MCAST
address-family ipv4
mdt source Loopback0
interface all enable
mdt default ipv4 232.0.0.1
!
router pim
address-family ipv4
rp-address 172.16.100.1
interface Loopback0
!
vrf MCAST
address-family ipv4
rp-address 172.16.100.5
interface GigabitEthernet0/0/0/0.1419
!
router bgp 1
address-family ipv4 unicast
!
address-family vpnv4 unicast
!
address-family ipv6 unicast
!
address-family vpnv6 unicast
!
address-family ipv4 mdt
!
neighbor 172.16.100.1
remote-as 1
update-source Loopback0
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
address-family ipv4 mdt
!
!
vrf MCAST
rd 1:1
address-family ipv4 unicast
!
address-family ipv6 unicast
RP/0/0/CPU0:XR9#sh pim neighbor
Sun Mar 4 23:56:32.026 UTC
Neighbor Address Interface Uptime Expires DR pri Flags
10.11.19.11 GigabitEthernet0/0/0/0.1119 01:38:18 00:01:31 1 B
10.11.19.19* GigabitEthernet0/0/0/0.1119 01:38:23 00:01:29 1 (DR) B P E
172.16.100.19* Loopback0 01:38:23 00:01:21 1 (DR) B P
This validates that there are PIM neighbors, in this case it is XR1.
RP/0/0/CPU0:XR9#sh pim vrf MCAST neighbor
Sun Mar 4 23:56:41.246 UTC
Neighbor Address Interface Uptime Expires DR pri Flags
10.14.19.14 GigabitEthernet0/0/0/0.1419 01:36:38 00:01:36 1 P
10.14.19.19* GigabitEthernet0/0/0/0.1419 01:38:32 00:01:20 1 (DR) B P E
172.16.100.3 mdtMCAST 01:29:31 00:01:18 1 P
172.16.100.9 mdtMCAST 01:29:58 00:01:19 1 P
172.16.100.18 mdtMCAST 01:29:42 00:01:31 1
172.16.100.19* mdtMCAST 01:38:28 00:01:34 1 P
172.16.100.110 mdtMCAST 01:29:57 00:01:21 1 (DR) P
There are also VRF MCAST PIM neighbors, one to R14 which is the G0/0/0/0.1419, there others are MDT peers from the PIM tunnels, which are mGRE tunnels.
RP/0/0/CPU0:XR9#sh bgp ipv4 mdt | b Network
Sun Mar 4 23:57:28.713 UTC
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1
*>i172.16.100.3/96 172.16.100.3 0 100 0 ?
*>i172.16.100.4/96 172.16.100.4 0 100 0 ?
*>i172.16.100.9/96 172.16.100.9 0 100 0 ?
*>i172.16.100.14/96 172.16.100.14 100 0 i
*>i172.16.100.18/96 172.16.100.18 100 0 i
*> 172.16.100.19/96 0.0.0.0 0 i
*>i172.16.100.110/96 172.16.100.110 0 100 0 ?
Processed 7 prefixes, 7 paths
R14#sh ip pim neighbor | b Address
Address Prio/Mode
10.14.19.19 GigabitEthernet1.1419 01:43:29/00:01:28 v2 1 / DR P G
R3
ip multicast-routing distributed
!
ip multicast-routing vrf MCAST distributed
!
interface GigabitEthernet1.13
ip pim sparse-mode
!
interface Loopback0
ip pim sparse-mode
!
interface GigabitEthernet1.35
vrf forwarding MCAST
ip pim sparse-mode
!
ip pim rp-address 172.16.100.1
!
ip pim vrf MCAST rp-address 172.16.100.5
!
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 172.16.100.1 remote-as 1
neighbor 172.16.100.1 update-source Loopback0
!
address-family ipv4 mdt
neighbor 172.16.100.1 activate
neighbor 172.16.100.1 send-community both
R3#sh bgp ipv4 mdt all
BGP table version is 25, local router ID is 172.16.100.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf MCAST)
*> 172.16.100.3/32 0.0.0.0 0 ?
*>i 172.16.100.4/32 172.16.100.4 0 100 0 ?
* i 172.16.100.4 0 100 0 ?
* i 172.16.100.9/32 172.16.100.9 0 100 0 ?
*>i 172.16.100.9 0 100 0 ?
*>i 172.16.100.13/32 172.16.100.13 100 0 i
*>i 172.16.100.14/32 172.16.100.14 100 0 i
*>i 172.16.100.18/32 172.16.100.18 100 0 i
* i 172.16.100.18 100 0 i
*>i 172.16.100.19/32 172.16.100.19 100 0 i
*>i 172.16.100.110/32
172.16.100.110 0 100 0 ?
R1
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor MCAST peer-group
neighbor MCAST remote-as 1
neighbor MCAST update-source Loopback0
neighbor 172.16.100.19 peer-group MCAST
!
address-family ipv4 mdt
neighbor MCAST route-reflector-client
neighbor 172.16.100.19 activate
R1#sh bgp ipv4 mdt all | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1
*>i 172.16.100.3/32 172.16.100.3 0 100 0 ?
*>i 172.16.100.4/32 172.16.100.4 0 100 0 ?
*>i 172.16.100.9/32 172.16.100.9 0 100 0 ?
*>i 172.16.100.14/32 172.16.100.14 100 0 i
*>i 172.16.100.18/32 172.16.100.18 100 0 i
*>i 172.16.100.19/32 172.16.100.19 100 0 i
*>i 172.16.100.110/32
172.16.100.110 0 100 0 ?
We can see that R1, the BGP Route Reflector, has formed MDT peerings with all the PE routers.
R5
ip multicast-routing distributed
!
ip pim rp-address 172.16.100.5
!
interface GigabitEthernet1.35
ip pim dr-priority 0
ip pim sparse-mode
!
interface Loopback0
ip pim sparse-mode
R5#ping 224.1.1.1 repeat 2
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Reply to request 0 from 10.10.11.11, 64 ms
Reply to request 0 from 10.18.13.13, 318 ms
Reply to request 0 from 10.4.7.7, 263 ms
Reply to request 0 from 10.4.8.8, 246 ms
Reply to request 0 from 10.14.19.14, 229 ms
Reply to request 0 from 172.16.100.120, 188 ms
Reply to request 0 from 10.12.9.12, 64 ms
Labels:
IOS,
IOS XR,
MDT,
MDT default,
multicast,
mVPN,
Service Provider,
static RP
Monday, July 24, 2017
Security - IOS to IOS Site to Site VPN with Crypto Maps and Pre Shared Keys
I'm back in the saddle again and this time it is with security. My job role has changed where I now do more security, pre sales and implementation. As a Solutions Integration Architect, I design and deploy solutions for customers. Because of the role and focus shift, Security is where I spend my time now. I currently have a CCNA in Security that I earned back in 2013, it's dated and I'm beginning the process of upgrading it to the current standard 210-260 IINS. I won't take the exam, but I will re-learn what I have forgotten and add to what I didn't already know.
IOS to IOS site to site VPNs with crypto maps secured with pre-shared-keys are a very common solution used today by companies all over the world. Very simple in the grand scheme to configure and verify. Our demonstration will consist of 2 CSR1000v's and 2 Windows 7 Pro VMs running in ESXi 6.0. The goal is to setup a VPN on the CSRs to allow the 2 Windows 7 VMs to communicate with each other. Sec-PC1 and Sec-PC4 will be our test devices. I already have this solution working, I will be copying and pasting the working configurations here. R1 and R4 do have reachability with each other, but I will prove this works with a couple of ping/traceroute outputs.
This is from Sec-PC1 RDPd into Sec-PC4 where Sec-PC4 is pinging Sec-PC1 repeatedly.
IOS to IOS site to site VPNs with crypto maps secured with pre-shared-keys are a very common solution used today by companies all over the world. Very simple in the grand scheme to configure and verify. Our demonstration will consist of 2 CSR1000v's and 2 Windows 7 Pro VMs running in ESXi 6.0. The goal is to setup a VPN on the CSRs to allow the 2 Windows 7 VMs to communicate with each other. Sec-PC1 and Sec-PC4 will be our test devices. I already have this solution working, I will be copying and pasting the working configurations here. R1 and R4 do have reachability with each other, but I will prove this works with a couple of ping/traceroute outputs.
R1#ping 10.2.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/6/20 ms
R4#ping 10.1.1.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/5/20 ms
Since we will be using IKEv1/ISAKMP with pre-shared-keys, the configuration will be relatively basic.
R1's configuration
!
crypto isakmp policy 10
encr aes
hash sha256
authentication pre-share
group 2
crypto isakmp key cisco address 10.2.4.4
crypto ipsec transform-set TSET esp-aes esp-sha-hmac
mode tunnel
crypto map CMAP 1 ipsec-isakmp
set peer 10.2.4.4
set transform-set TSET
match address ACL
crypto map CMAP
!
ip access-list extended ACL
permit ip 192.168.1.0 0.0.0.255 192.168.4.0 0.0.0.255
!
interface GigabitEthernet1.11
crypto map CMAP
R4's configuration
!
crypto isakmp policy 10
encr aes
hash sha256
authentication pre-share
group 2
crypto isakmp key cisco address 10.1.1.10
crypto ipsec transform-set TSET esp-aes esp-sha-hmac
mode tunnel
crypto map CMAP 1 ipsec-isakmp
set peer 10.1.1.10
set transform-set TSET
match address ACL
crypto map CMAP
!
ip access-list extended ACL
permit ip 192.168.4.0 0.0.0.255 192.168.1.0 0.0.0.255
!
interface GigabitEthernet1.24
encapsulation dot1Q 24
ip address 10.2.4.4 255.255.255.0
crypto map CMAP
Let's breakdown the crypto, access-list and crypto map configuration and understand what is happening. The "isakmp" policy is considered the "phase 1" portion of the VPN, this is configured so that the VPN endpoints each have identical configurations and those configurations are used to prove the endpoints are who they say they are. This is essentially the "control-plane" for VPNs. The ISAKMP policy identifies the "policies" that each endpoint must agree on, if no agreement is found, Phase 1 fails. The "isakmp key" is the private key exchanged between VPN peers used to authenticate each other. The "key cisco" is the actual private key, the address is the remote end of the VPN endpoint.
crypto isakmp policy 10
encr aes
hash sha256
authentication pre-share
group 2
crypto isakmp key cisco address 10.1.1.10
This portion is the "phase 2" portion of the crypto configuration or the data plane. this identifies the encryption protocol used to protect the data.
crypto ipsec transform-set TSET esp-aes esp-sha-hmac
mode tunnel
The access-list called ACL is also referred to as the "proxy acl" which basically means, any traffic that is matched in this ACL will be encrypted and sent over the VPN. It is required to match on interesting traffic, it is a data plane filter. The remote end swaps the source and destination, so 192.168.4.0/24 and 192.168.1.0/24 are reversed so that return traffic is appropriately matched.
ip access-list extended ACL
permit ip 192.168.4.0 0.0.0.255 192.168.1.0 0.0.0.255
The crypto map is what "glues" all of this together, it is identified by the ipsec-isakmp, it sets the remote VPN peer, identifies the encryption protocol and uses the ACL to identify what traffic is to be encrypted.
crypto map CMAP 1 ipsec-isakmp
set peer 10.1.1.10
set transform-set TSET
match address ACL
Now we have to apply the crypto map the outgoing interface. The crypto map can be applied to many outside interfaces, in this case, only one is needed. Once this is applied, there is a syslog generated identifying that ISAKMP is now enabled
interface GigabitEthernet1.24
crypto map CMAP
R4(config-subif)#crypto map CMAP
R4(config-subif)#exit
R4(config)#i
.Jul 24 01:05:17.161: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
Now, the reason you have read this far, is it actually working? Here is how you verify Phase 1 and Phase 2. The phase 1 shows that R1 and R4 have an active "QM_IDLE" connection, QM being quick mode, ISAKMP SA is authenticated and can be used for subsequent Quick Mode (Phase 2) exchanges. This indicates that the bidirectional ISAKMP connection is up and the VPN endpoints are successfully authenticated
Phase 1
R4#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id status
10.1.1.10 10.2.4.4 QM_IDLE 1004 ACTIVE
Phase 2 is the actual data plane, the thing to look for, bolded, is the pkts encrypt and decrypt. This indicates that the unidirectional SA are both sending and receiving traffic.
Phase 2
R4#show crypto ipsec sa
interface: GigabitEthernet1.24
Crypto map tag: CMAP, local addr 10.2.4.4
protected vrf: (none)
local ident (addr/mask/prot/port): (192.168.4.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
current_peer 10.1.1.10 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 259105, #pkts encrypt: 259105, #pkts digest: 259105
#pkts decaps: 244184, #pkts decrypt: 244184, #pkts verify: 244184
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.2.4.4, remote crypto endpt.: 10.1.1.10
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1.24
current outbound spi: 0x14644456(342115414)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0x9935538F(2570408847)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2047, flow_id: CSR:47, sibling_flags FFFFFFFF80000048, crypto map: CMAP
sa timing: remaining key lifetime (k/sec): (4607554/1027)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x14644456(342115414)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2048, flow_id: CSR:48, sibling_flags FFFFFFFF80000048, crypto map: CMAP
sa timing: remaining key lifetime (k/sec): (4607309/1027)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
Proof from the Windows 7 VMs
This is from Sec-PC1 RDPd into Sec-PC4 where Sec-PC4 is pinging Sec-PC1 repeatedly.
This is from Sec-PC1 ping Sec-PC4 repeatedly.
Thanks for stopping by!
Rob Riker, CCIE #50693, CCNA Security
Tuesday, January 3, 2017
CCIE SPv4 - MPLS L3 VPN - VRF Lite - IS-IS for IPv4 and IPv6
Software versions:
IOS XE 15.5
IOS XR 5.3
The topology for this demo:
IOS XE 15.5
IOS XR 5.3
The topology for this demo:
In this post we will continue looking at VRF Lite but with IS-IS for IPv4 and IPv6. I covered the details of VRFs in the previous post, we'll just tweak the routing so that we will get IPv4 and IPv6 based routing in place. We'll use R4 and R3, IOS XR on 5.3 code doesn't support IS-IS based VRF configuration.
Currently, only default VRF is supported. VPNv4, VPNv6 and VPN routing and forwarding (VRF) address families, L3VPN and Multicast will be supported in a future release.
R3
router isis CCIE
vrf CCIE
net 49.0000.0000.0000.0003.00
metric-style wide
!
address-family ipv6
multi-topology
exit-address-family
!
interface GigabitEthernet1.102
ip router isis CCIE
ipv6 router isis CCIE
!
interface Loopback100
ip router isis CCIE
ipv6 router isis CCIE
R4
router isis CCIE
vrf CCIE
net 49.0000.0000.0000.0004.00
metric-style wide
!
address-family ipv6
multi-topology
exit-address-family
!
interface GigabitEthernet1.102
ip router isis CCIE
ipv6 router isis CCIE
!
interface Loopback100
ip router isis CCIE
ipv6 router isis CCIE
R4#sh isis neighbors
Tag CCIE:
System Id Type Interface IP Address State Holdtime Circuit Id
R3 L1 Gi1.102 192.168.34.3 UP 22 R4.01
R3 L2 Gi1.102 192.168.34.3 UP 25 R4.01
This output shows that we are peered with R3 both for Level1 and Level2 adjacency.
R4#sh clns interface
GigabitEthernet1.102 is up, line protocol is up
Checksums enabled, MTU 1497, Encapsulation SAP
ERPDUs enabled, min. interval 10 msec.
CLNS fast switching enabled
CLNS SSE switching disabled
DEC compatibility mode OFF for this interface
Next ESH/ISH in 12 seconds
Routing Protocol: IS-IS (CCIE)
Circuit Type: level-1-2
Interface number 0x1, local circuit ID 0x1
Level-1 Metric: 10, Priority: 64, Circuit ID: R4.01
DR ID: R4.01
Level-1 IPv6 Metric: 10
Number of active level-1 adjacencies: 1
Level-2 Metric: 10, Priority: 64, Circuit ID: R4.01
DR ID: R4.01
Level-2 IPv6 Metric: 10
Number of active level-2 adjacencies: 1
Next IS-IS LAN Level-1 Hello in 2 seconds
Next IS-IS LAN Level-2 Hello in 556 milliseconds
This output gives you an overview of all the particular options this interface is running for IS-IS.
R4#sh clns protocol
IS-IS Router: CCIE
System Id: 0000.0000.0004.00 IS-Type: level-1-2
Manual area address(es):
49.0000
Routing for area address(es):
49.0000
Interfaces supported by IS-IS:
GigabitEthernet1.102 - IP - IPv6
Loopback100 - IP - IPv6
Redistribute:
static (on by default)
eBGP-neighbors
Distance for L2 CLNS routes: 110
RRR level: none
Generate narrow metrics: none
Accept narrow metrics: none
Generate wide metrics: level-1-2
Accept wide metrics: level-1-2
This output from a protocol level, is the details around the protocol,
R4#sh ip route vrf CCIE isis
Routing Table: CCIE
Gateway of last resort is not set
100.0.0.0/32 is subnetted, 4 subnets
i L1 100.100.100.3
[115/20] via 192.168.34.3, 00:05:26, GigabitEthernet1.102
R4#sh ipv6 route vrf CCIE isis
IPv6 Routing Table - CCIE - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
I1 FC00::3/128 [115/20]
via FE80::20C:29FF:FE87:8561, GigabitEthernet1.102
Subscribe to:
Posts (Atom)



