First, let’s talk about what supports OTV — not much:
- Nexus 7K
- ASR 1K
- CSR 1000V (For those of you not familiar with the Cloud Services router, I’d recommend reading this
What is OTV?
OTV is an encapsulation protocol that wraps L2 frames in IP packets in order to transport them between L2 domains. Typically this would be between remote datacenters, but it could also be within a datacenter if you needed an easy (expensive) way to extend a VLAN.
You will also see OTV referred to as ‘MAC Routing’, since the OTV devices are essentially performing routing decisions based on the destination MAC address in the L2 frame.
You might be thinking “Hey, I’ve already got this with EoMPLS and/or VPLS.” And you’d be right — you have the essence of what OTV accomplishes. What OTV adds, however, is simplicity and fault isolation.
When you configure OTV, you are defining 3 elements:
- Join interface
This is the interface that faces the IP core that will transport OTV encapsulated packets between sites. - Overlay InterfaceThis is the virtual interface that will handle the encapsulation and decapsulation of OTV packets sent between OTV edge devices.
- Inside interface This is the interface that receives the traffic that will be sent across OTV.
What do I need before I can configure OTV?
Before you can setup OTV in your environment there are a few important details to know:
- OTV adds 42 bytes of overhead into the packet header. This has implications if your MTU size is 1500 bytes (the default in most cases). You’ll need to either enable Jumbo frames across your core, or reduce the MTU size on your servers inside the OTV domain. UPDATE: You can enable OTV fragmentation by using the global command otv fragmentation join-interface. I don’t know if this has any performance implications, but at least it’s an option for you if changing the MTU throughout your network is difficult.
- With the latest code releases, I believe all platforms support either Unicast or Multicast for the OTV control-plane. If you have a multicast enabled core, use multicast — it’s really not too bad.
Topology and Configuration
For my topology I’m going to use two ASR 1K’s, a 4900M with two VRFs, and two 3550 switches. I know I could’ve left out the VRFs, but I wanted to make my topology as close as possible to real-life. So we end up with this:
So let’s move on to the OTV configuration.
OTV Site information
Part of any OTV config will be defining the site identifiers and the Site Bridge-Domain. The site identifier is how an OTV device determines whether or not it is at the same location as another OTV device.
OTV-RTR1:
otv site-identifier 0001.0001.0001
OTV-RTR2:
otv site-identifier 0002.0002.0002
The site bridge-domain is the Vlan that the OTV edge devices at the same site will use for AED election. Since this VLAN will not be part of the overlay, we can use the same command on both routers.
otv site bridge-domain 100
The Join interface
The join interface will be the source for all OTV packets sent to remote OTV routers, and it will be the destination for OTV packets that need to come to the site. For multicast control-plane implementations you’ll need to enable Passive PIM and IGMPv3.
OTV-RTR1:
interface Gig0/0/1
mtu 8192
ip address 10.80.0.2 255.255.255.0
ip pim passive
ip igmp version 3
Also note that the MTU has been adjusted to accommodate the increased size of the OTV packet. This will be the same on the second OTV-RTR except for the IP address.
Overlay Interface
In the overlay interface configuration we have to specify the multicast group used for control messaging, as well as the range of multicast groups that will be used for passing multicast data within the VLAN. We will also specify which interface will be used as the join interface. This will be the same on both routers:
interface Overlay1
otv control-group 239.1.1.1
otv data-group 232.1.1.0/28
otv join-interface GigabitEthernet0/0/1
no shutdown
Once you turn up the Overlay interface on both sides, you should see your OTV adjacency form:
OTV-RTR1#show otv adjacency
Overlay 1 Adjacency Database
Hostname System-ID Dest Addr Up Time State
OTV-RTR2 c08c.6008.0f00 10.70.0.2 00:00:36 UP
At this point since there isn’t a Vlan bridged to the Overlay, there will be now OTV routing information:
OTV-RTR1#show otv route
Codes: BD - Bridge-Domain, AD - Admin-Distance,
SI - Service Instance, * - Backup Route
OTV Unicast MAC Routing Table for Overlay1
Inst VLAN BD MAC Address AD Owner Next Hops(s)
----------------------------------------------------------
0 unicast routes displayed in Overlay1
----------------------------------------------------------
0 Total Unicast Routes Displayed
Adding Vlans to the Overlay
The last step will be to add the appropriate VLAN’s to the overlay. This config assumes that the router will receive the traffic from the switch with an 802.1Q tag:
interface GigabitEthernet0/0/0
service instance 250 ethernet
encapsulation dot1q 250
bridge-domain 250
!
interface Overlay1
service instance 250 ethernet
encapsulation dot1q 250
bridge-domain 250
Verifying
I created a Vlan interface on each switch to use as my ‘hosts’ for the ping tests.
Sw-1 VL250 = 0009.b709.4b80
Sw-2 VL250 = 0009.b717.7880
Pinging between devices is successful. Let’s look at the switches to see how it looks:
SW-1:
Vlan Mac Address Type Ports
---- ----------- -------- -----
250 0009.b709.4b80 DYNAMIC Gi0/1
OTV-RTR1:
OTV-RTR1#sh otv route
OTV Unicast MAC Routing Table for Overlay1
Inst VLAN BD MAC Address AD Owner Next Hops(s)
----------------------------------------------------------
0 250 250 0009.b709.4b80 50 ISIS OTV-RTR2
0 250 250 0009.b716.7880 40 BD Eng Gi0/0/0:SI250
So we can see that SW-1 knows to reach Sw-2 out interface Gi0/1, which connects to OTV-RTR1. OTV-RTR1 shows that it’s learned the MAC for SW-2 via OTV(ISIS) from OTV-RTR2. So anytime it receives frames for this MAC, it knows to forward them across the overlay.
OTV-RTR2:
OTV-RTR2#sh otv route
OTV Unicast MAC Routing Table for Overlay1
Inst VLAN BD MAC Address AD Owner Next Hops(s)
----------------------------------------------------------
0 250 250 0009.b709.4b80 40 BD Eng Gi0/0/0:SI250
0 250 250 0009.b716.7880 50 ISIS OTV-RTR1
OTV-RTR2 shows that SW-2 is out the local service-instance. Any packets that come across the overlay will be decapsulated and forwarded out the local interface.
Wrap Up
Getting a basic OTV config up and running is not that difficult. Next time I’ll talk about using unicast instead of multicast, and also about AED.