The LISP Cache emulator is software that is able to emulate the tasks of LISP xTRs and that is essentially designed to be fed with packet-level Internet traffic. Therefore, like a real LISP router, the emulator needs two data stores, namely the LISP Database and the LISP Cache.
The LISP Database is a manually configured list of internal network prefixes (EIDs), while the LISP Cache stores EID-to-RLOC mapping when there is a request for it and removes it according to the preconfigured expiration rule.
The emulator uses a local BGP prefixes database fed with the list of BGP prefixes published by the iPlane Project. This BGP prefixes database is used to group EID-to-RLOCs mappings with the granularity of existing BGP prefixes.
- Docker image: sudo docker pull darcy95/lispcache-emulator
- Source code: https://github.com/darcy95/lispcache-emulator
- Pull the docker image from the repository: sudo docker pull darcy95/lispcache-emulator
- For testing the code, you can record your own traces by using tcpdump or download publicly available pcap files from the Internet
- In this example, we will use pcap files downloaded from the project of github user markofu (thanks to markofu): git clone https://github.com/markofu/hackeire.git
- We will use hackeire/2011/pcap/c1.pcap file
- By examining the trace with tcpdump, we can find out that most of the origin IP addresses of non-multicast traffic can be aggregated as 10.20.0.0/24 and 18.104.22.168/24
- We assume that these two network prefixes are internal network prefixes of the two LISP xTR routers. Let's ignore the fact that 10.20.0.0/24 belongs to the private IP address block. We only want to test how this emulator works. In fact, for the real LOCator & ID separation routing, the source/destination IP addresses must be globally routable
- These two prefixes will be stored in the list-database file. The first column is the index of the xTR router and the second column is the network prefix
- So, it will look like following after we add the internal prefix information to the list-database file: 1 10.20.0.0/24
- Now, run an instance of the image as a background container: sudo docker run -d -it --rm --name lispemul darcy95/lispcache-emulator /bin/bash
- Then, feed the pcap file into the emulator: cat hackeire/2011/pcap/c1.pcap | sudo docker exec -i lispemul /bin/bash xTR.sh
- After feeding is done, you can find several log files in /logs inside of the container. Enter the container by invoking the following command: sudo docker exec -it lispemul /bin/bash
- You can also find the log files in the mounted directory on the host. The directory is typically the directory with a long long name under /var/lib/docker/volumes directory
- Read the DESCRIPTION file to find out what each column of the log files is.
- If you want to modify the experiment for your project (or research), check out the parameters of the script by invoking ./lispcache-emulator.pl --help and by examining xTR.sh batch script
Elsevier Computer Networks Journal
In Proceedings of the 11th IFIP International Conference on Networking. Springer
In Proceedings of the 10th IFIP International Conference on Networking. Springer, 267-278