What is OER? In short, OER adds intelligence to the network by looking at the current state of the network and injecting routing information to choose the most optimal path. It’s pretty cool if you think about it. All our routing protocols basically select a path based on static information, and they don’t care about the current state of the network. For example, OSPF will prefer a gigabit link over a FastEthernet link, even if the Gigabit link is 100% congested and the FastEthernet link is doing absolutely nothing.
OER can look at the current state of the interfaces and select the best exit path. It can do this by looking at the delay, response time (IP SLA), utilization of the link, but also the MOS (Mean Opinion Score) so that it can select the best path for VoIP traffic. Optimized edge routing and Performance routing got me hooked because I believe this is what the future of networking will look like. To demonstrate why OER could be useful in your networks, I want to show you a couple of scenarios:
Above, you see a customer router that is connected to two ISPs. ISP A offers a 10 Mbit link and is the primary link. ISP B offers a 5 Mbit link, which is the backup link. Our ISPS don’t want to run BGP with us, so we can use a routing protocol or static routes for connectivity. The customer is using two static routes for connectivity:
- 0.0.0.0 /0 with the default administrative distance of 1 for ISP A.
- 0.0.0.0 /0 with an administrative distance of 5 for ISP B.
The default route for ISP B is called a “floating static route” because it will only show up in the routing table if the default route to ISP A is removed from the routing table. This configuration will work, but the downside is that we only use the link to ISP A. In fact, we have 15 Mbit (10 Mbit + 5 Mbit from both ISPs), but we can only use 10 Mbit now. What if you wanted to use both links? Maybe you are thinking about changing the default route so the administrative distance is equal, and we can do 50/50 load balancing.
This might sound like a good idea, but technically it’s not possible. On Cisco routers nowadays, we use CEF (Cisco Express Forwarding), and despite what most people believe, it doesn’t do load balancing but load sharing. The difference is that load balancing means that the “load” is shared equally on both links…load sharing means we use both links, but it’s not balanced. When we have two equal entries, CEF will load share based on the flow’s source and destination IP address. For example, let’s say we have two default routes with the same administrative distance in the topology above, and we have the following sessions:
- A computer with source IP address 220.127.116.11 connecting to a web server with destination IP address 18.104.22.168, we’ll call this “flow 1,” and It’s consuming about 500kb/sec.
- A server with source IP address 22.214.171.124 connecting to a remote backup server with destination IP address 126.96.36.199, we’ll call this “flow 2,” and it’s consuming about 4Mbit / sec.
CEF will put flow 1 on the link to ISP A and flow 2 on the link to ISP B. We did “load sharing,” but it’s not balanced at all. The link to ISP A now has about 5% utilization (500 kb/sec out of 10Mbit), while the link to ISP B has about 80% utilization (4 Mbit out of 5Mbit).
CEF really doesn’t look at load balancing…it would be difficult to configure true load balancing in the scenario above, right? Using OER, this is no problem at all!
Let me show you another scenario:
Above, we have the same network, but we are using VoIP. The link to ISP A is 50 Mbit, and the link to ISP B is 2 Mbit. Since the link to ISP A has a higher bandwidth, we are using this as the primary link. Unfortunately, the link has a very high delay at the moment (500 ms), so it would be better to use the backup link to ISP B at this moment since it only has a delay of 20 ms. If you wanted to, you could configure something like this using policy-based routing in combination with IP SLA, but it’s not a very good solution. OER can check the delay of our interfaces and automatically reroute VoIP traffic over another interface when it meets certain criteria.
Let’s make it even more complex…
What about the topology above? We have two routers, and there are three links to different ISPs. We have a 50, 20, and 10 Mbit link for a total WAN bandwidth of 80 Mbit. Is there any way to load balance traffic on these links? It’s impossible because R1 and R2 have no idea about each other’s interfaces. They don’t know each other’s utilization, delay, or anything else. Now let’s talk a bit about OER and how it adds more intelligence to the network.