Cisco IP unnumbered inside

Cisco IP unnumbered inside

What is IP unnumbered?

In Cisco routers, the ip unnumbered <other_interface> command allows you to borrow the IP address of another interface.

Although the Cisco help page explains in detail how to do it, and to some extent the reasons to do so, let’s go deeper and explain the real howto.

Why IP unnumbered?

It goes back to the time when the routing protocols were in classfull mode. One consequence was that, in an internetwork connecting many networks with routers, all these networks had to have the same size, most often Class C type (I will explain why in another post).

 

 

 

 

 

 

 

For example, here are networks 11.0.0.0/8 and 10.0.0.0/8 connected by routers R1 and R2, themselves connected by a Serial link (or any point-to-point link). We want to have a routing protocol announcing network 11/8 to router R2 and 10/8 to router R1.

What is necessary?

Two main conditions must be met in order for each network to be advertised to the other router:

  • if we want the routers to forward packets to the other network, IP must be activated on the Serial link.
  • if we want routing protocols to advertise routes to the other router, there must be an IP address on the Serial interfaces of the routers, otherwise routing advertisements can’t have a source IP address.

Solution 1 : the worst

Since we are in Classfull mode, the IP addresses on the Serial link must belong to a network with the same size (same mask) as the other networks. If they were Class C networks, ie 254 IP addresses, it would be a TOTAL WASTE of address space, since this link will never use more than 2 IP addresses!

In our example it’s even worse: the serial link would have to have Class A IP addresses…

Solution 2 : waiting for Classless protocols

The best solution is to apply a classless protocol, like OSPF, RIPv2 or EIGRP that transport the network masks along with the network id in the updates. But at the time IP unnumbered was created, these routing protocols were not existing yet…

Solution 3 : find a compromise

What could we do then ? It’s just not possible to disable IP forwarding. The middle network needs to be activated in order for IP packets (including Network Protocols packets) to transit between the routers.

The solution is to borrow IP addresses from other interfaces and apply them on the Serial interfaces.

 

 

 

 

 

 

 

In our example, S1/0 on R1 would have 11.0.0.1/8 borrowed from E0/0 and S1/0 on R2 would have 10.0.0.1/8 borrowed from E0/0.

The 2 conditions explained earlier are met :

  • IP forwarding is activated on both interfaces on the Serial link (it won’t be if there’s no IP address)
  • Each interface has an IP address
It seems super strange because in some situation, there can be totally different IP adresses on the Serial link.
In the case studied, S1/0 on R1 and S1/0 on R2 would be in a totally different IP network, although connected to the same physical link.
But don’t forget that :
  • it works : I will show a proof of concept in a later post
  • it’s a compromise : it means it doesn’t look totally clean
  • it can IP unnumbered only on point-to-point links and it has to be activated on both ends of the link.

Why does it work?

Because we don’t give a monkey having different IP addresses on the Serial link, since they won’t be used!

Indeed, in the simplest situation, on R2 you would just need that kind of static IP route pointing to 11.0.0.0/8:

ip route 11.0.0.0 255.0.0.0 Serial1/0

As you can see here, that’s no next-hop IP address. If R2 wants to send packets to network 11.0.0.0/8, it knows he just has to throw them out of Serial 1/0. Since we are on a point-to-point link, the packets will just get to the next-hop, whatever its IP address, since there’s only ONE other router on the link. That means IP unnumbered cannot work on multiaccess links, like Ethernet.