Some lab images and topologies are very resource-intensive. You can’t just run any lab you want on any host machine. For this reason, I thought it would be worthwhile to share some experience with running Juniper-based labs on Eve-NG.
The findings presented here are based on a lab with 14 nodes. The lab topology is taken from the Juniper book Day One: Routing the Internet Protocol. This lab consists of the following nodes:
The lab topology looks like this:
I run this lab on a Windows 10 laptop that has a quad core i7 and 32 GB of RAM. Using VMware Player, I provide the Eve-NG appliance with 24 GB RAM and 4 vCPU’s. A cool thing about Eve-NG is that it uses UKSM by default. UKSM provides kernel memory deduplication and in a setup like this with mostly the same machines, it can be quite a benefit. There is some more information about Eve-NG and UKSM at this blog.
I was only able to boot two VM’s at a time. This might be because UKSM is heavy on the CPU until the deduplication tasks settle in. After starting the whole lab up two machines at a time, I ended up with surprisingly little resource usage for such a large lab. Here is the output of htop on the Eve-NG appliance with every node booted:
At the same time, the Eve-NG status window looks like this:
I gave the Eve-NG appliance 4 vCPU’s and 24 GB of RAM. Out of them both, only about a third is in use after the labs boots up and settles in. These nodes normally consume 26 GB of RAM together, now the Eve-NG appliance consumes under 8 GB of RAM in total. That includes all of the nodes and the appliance itself. It’s apparently realistic to do some serious labbing on a laptop nowadays. The CPU bottleneck when booting nodes is a bit bad though. If you have a lot of nodes and you have to boot them two at a time it gets tedious, you don’t want to do this often. Resource usage like this is a challenge with running Juniper devices in labs.
For more serious stuff the result is probably the best if you use a real server with more than 4 physical cores. If RAM is unconstrained you could consider turning off UKSM (it can be done from the status window in your lab) and saving the CPU hit.