LISP – Locator Identifier Separation Protocol (Say what?)

Recently I have been working on a crazy busy project at work as well as preparing for the CCIE SP lab (did not pass). Well now that is all behind me so I figured I would take some personal time and play with some technology that I have read about, talked about, and even sat through presentations at Cisco Live (aka Networkers) in the past. What is this technology that has me so interested you might ask. Well, its LISP – Locator Identifier Separation Protocol (ietf draft can be found here – http://tools.ietf.org/pdf/draft-ietf-lisp-11.pdf). The next question you may have is why does this interest me? To be honest, I have no idea – just thought it was a nifty idea.
So, what is LISP? The easiest way to explain it is to give you a common analogy that we all understand, DNS. When a user wants to access a website – in this case – blog.fryguy.net, they send a DNS query to the configured DNS server. The DNS servers then resolves that DNS name to an IP address – 76.74.254.123 – and sends that back to the client. The client web application then makes a connection to the web server and retrieves the website.
Well, in LISP a very similar thing happens. If a router needs to send a packet to 76.74.254.123, and that route is not in the local routing table – it sends a query to the LISP Map Resolver. The LISP Map Resolver then looks at its database and tells the router that the network can be reached via 4.71.170.2. The router then sends a LISP encapsulated packet to 4.71.170.2 to be then forwarded onto its ultimate destination.
That is a very simple explanation on how it works, and one that I hope most networking folks should be able to understand. Now lets take it a step further – and think about moving a device around, yet keeping the same IP address (think vmotion). If you are registering a device location with a server, you can then move that device around and the mapping server will be able to redirect you to the correct site. There are other things that LISP can do, but I will save the IPv6 one for a future post.
We have host 100.100.100.100/32, called an EID – Endpoint Identifier – that is sitting behind Router A. Router A will register that network, or host in this case, with the LISP Map Server. It will say to get to the EID prefix of 100.100.100.100/32, send the packet to Router A. We also have another EID at 200.200.200.200/32 that is sitting behind Router B. Router B will also register with the LISP Map Server that host 200.200.200.200/32 is reachable via Router B. So if 200.200.200.200/32 wants to talk to 100.100.100.100/32, it will send the packet to Router B – Router B will then ask the LISP Mapping Server how to get to 100.100.100.100/32. The LISP Map server will respond – to get to 100.100.100.100/32, send the packet to Router A. Router B would then in turn send the packet to Router A, who will then process the packet and forward it onto 100.100.100.100/32.
Now what happens if we move 100.100.100.100/32 to Site C? In a normal network, we would have to change the IP address of the host to a network that is reachable via Router C. You typically cannot advertise the same network from two sites and expect things to work correctly. But with LISP, you can move the host around and not change the IP address. Why? Well, the Mapping server is what tells the routers who want to talk to 100.100.100.100/32 how to get to the host.
So lets move 100.100.100.100/32 to a location in Site-C behind Router C. Router C would then register with the LISP Map server that 100.100.100.100/32 is now reachable via Router C. The next time that 200.200.200.200/32 goes to talk to 100.100.100.100/32, Router B will query the LISP Map Server who will then tell it, to get to 100.100.100.100/32, send the packet to Router C for processing.
Another use case could be with a multi-homed site, like the picture below. Typically with BGP you can only “recommend” an ingress point into your network, you have no way of guaranteeing the traffic will only flow into Router B from your upstream ISP. Sure, you can prepend AS numbers; tweak the mutli-exit discriminator (MED), etc – but it is only a suggestion to your upstream ISP. So what can LISP do for us here? Easy, you can set a priority to the mapping on the LISP server. You can say that Router A has a higher priority for ingress traffic then Router B. The LISP server will then return the path with the lowest Priority listed is the preferred route. This will help to make sure that the traffic is flowing inbound the way that you want it to.
So lets list out some of the components of a LISP environment:
Fryguy's Blog