I’ve found GNS3 to be an extremely useful tool that allows you to simulate just about any scenario assuming you have enough compute resources available. In this article we’ll go over what GNS3 is, where it can be useful, and my preferred deployment methods.
What is GNS3
GNS3 is an application that acts as a wrapper and graphical user interface for many underlying technologies. It started as a simple way to run IOS Router images under Dynamip’s, but it has come along way since then. The application has two major components which are the GNS server that manages all of emulation technologies and the GNS3 GUI that allows for a simple interface to the server. Since version 2.0 it has been a powerful front end for multiple emulation technologies and has a wide range of pre-configured appliance templates for many different appliance types. The major underlying technologies and what they enable are listed below :
If you want to learn more about GNS3, you may be interested in The Book of GNS3 available on Amazon as paperback or Kindle. Check it out using our Amazon affiliate link, https://amzn.to/322eKCO.
- Dynamips – Cisco hardware emulation to allow running IOS images such as the c7200 platform.
- QEMU – Hardware virtualization used to run x86 images such as Cisco ASA, NXos, JunOS, Vyos, etc.
- KVM – Linux Kernel Module that allows QEMU to support hardware assisted virtualization.
- IOU/IOL – Cisco internal Unix/Linux process that emulates IOS without any virtualization
- Docker – Containerization platform for running lightweight emulated devices/services under LXC containers.
- uBridge – User-land bridging tool that helps connect emulated devices together.
- iouyap – Utility to bridge IOU interfaces into the topology.
- VPCS – A vert lightweight PC simulator that only provides a DHCP client and ping.
- VMware Workstation/Fusion – Provides accelerated x86 Emulation on Linux/Windows/macOS, typically solely to run the pre-packaged GNS3 Server VM that contains IOU, KVM, Dynamips, etc. Can also be used to run VM’s in GNS3 topologies.
- VirtualBox – Open source alternative to VMware, however, much less performant for running the GNS3 VM. Can also be used to run VM’s in GNS3 topologies.
Where is GNS3 useful
With the simulation power GNS3 affords you, it can be a quite useful tool. Below are some examples great examples of when GNS3 is very helpful.
- LAB Environments – When you need quick access to test configurations, learn new devices or concepts, GNS3 really shows it’s worth. This is where the rapid, flexible nature of what you can do with GNS3 really shines and makes learning easy.
- Initial Environment Testing – GNS3 is great for doing your initial proof of concept on an environment’s logical design as well as working out configuration details. However, it is not an ideal tool to gauge performance so you should still rely on physical hardware (or target virtualization platform) in order to judge real world performance estimates.
- Demonstrations – GNS3 on a suitable notebook can be a powerful tool for demonstrating model environments in real time for presentations or in a class room environment.
- Developing Baseline Configurations – GNS3 can be a very useful tool for determining what baseline configurations are to be used in your environments. Leveraging the tools, you can quickly compare various configurations against your desired results before moving onto real world testing saving valuable time.
How is GNS3 deployed
GNS3 has 3 deployment types that can be used each with their own pros and cons.
- Native linux install – This installation method runs everything natively on a linux workstation for the best performance and most efficient utilization of resources. This is my preferred solution for personal use with larger or more complex solutions. However, it does require sticking with particular configurations for compatibility.
- Windows/macOS w/GNS3 VM – This installation method uses a pre-packaged linux virtual machine in order to run all of the emulation technologies on non linux hosts and interfaces via a native GNS3 GUI client. This has the benefit of allowing you to use GNS3 in more situations. However, you are going to suffer from the overhead of the virtual machine. Additionally this requires a VMware license if you want acceptable performance when running more complex topologies.
- Client/Server – This installation method uses a dedicated linux server for all of the heavy lifting while the client only runs the GNS3 GUI. This does require good connectivity with a server that can run the compute workload, but it does open up access to the largest and most complex topologies with just about any client. This is my preferred method for a shared environments where a team may need a lab for testing or training purposes.
GNS3 Resource Requirements
GNS3 does provide some basic guidance in their documentation. However, it is going to be highly dependent on what you are emulating. I have the following guidance for a good experience based on what you are going to be doing with GNS3. You can substitute laptop/desktop configurations IF cpu power is going to be similar as will RAM. These requirements will also vary based on the type of workloads being simulated. I would always advise to get more hardware than you might need and to always use the fastest storage available.
- Baseline –
- Hardware Virtualization in the form of AMD or Intel virtualization extensions. Support of these vary based on product. However, most modern CPU’s will contain them.
- Minimum 4GB of System RAM
- Minimum Dual Core CPU
- Minimum 1GB of free space
- Suitable Linux install or Virtual Box if non Linux
- VMware for optimal non Linux performance.
- Ultra Portable (12″ Macbook class) – Native Linux install using only lightweight IOU/KVM/Docker images. Not enough resources for a smooth experience when using non Linux w/GNS3 VM.
- Dual Core w/SMT Intel ULV or AMD Ryzen Mobile CPU
- 8GB of System RAM
- 20GB of free space (Preferably SSD)
- Portable (13″ Class Laptops) – macOS/Windows w/GNS3 VM running smaller simulations (10-20 lightweight or 1-2 heavy VMs like the F5). Native Linux will allow somewhat heavier simulations.
- Quad Core w/SMT Intel or AMD Ryzen mobile CPU
- 16GB of System RAM
- 40GB of free space (Preferably SSD)
- Mobile (15″ Class Laptops) – macOS/Windows w/GNS3 VM running moderate simulations (20-40 lightweight and 4-5 heavy VMs like the F5). Native Linux again will allow heavier simulations.
- Hexa Core Mobile CPU (Intel i7/i9)
- 32GB of System RAM
- 80GB of free space (Preferably NVMe SSD)
- Desktop (Moderate) – Windows w/GS3 VM or native Linux for maximum performance. Moderate-Heavy simulations with 50-100 lightweight vms or 6-10 heavier vm’s.
- Hexa Core Intel 8700(K) or Hexa Core AMD R5 2600(X)
- 32GB of System RAM
- 80GB of free space on an SSD (Preferably NVMe or RAID 0 SATA SSD’s)
- Desktop (High End) – Windows w/GNS VM or native Linux for maximum performance. Heavy simulations with 100+ lightweight vms or 10-20 or more heavy VM’s.
- Octa Core Intel 9900(K) or AMD R7 2700(X)
- 64GB of System RAM
- 100+GB of free space on an SSD (Preferably NVMe or RAID 0 SATA SSD’s)
- Workstation (Mid Tier) – Native Linux install is ideal here as the Windows scheduler and VM overhead will limit this class of hardware. Very heavy simulations with hundreds of lightweight VM’s or 25+ of the heaviest appliance VM’s. Vmware is acceptable on iMac Pro’s or situations where Windows is a hard requirement, however, you will notice a reduction in capability.
- AMD Threadripper 2950X 16 Core CPU or Intel HCC Desktop CPU (Core i9 or Xeon W)
- 64-128GB of System RAM
- 100+GB of free space on a fast NVMe SSD (or Raid NVMe SSD’s like the iMac Pro)
- Workstation (All Out) – Native Linux install is required here due to the nature of the 32 core CPU architecture and Windows’ poor scheduler design. This configuration will let you just about emulate an entire datacenter and the largest of toplogies with ease.
- AMD Threadripper 2990WX 32 Core CPU
- 128GB of System RAM
- 120GB+ of free space on fast SSD storage (NVMe or NVMe Raid)
- Swap file on separate low-latency SSD storage (Intel Optane)
GNS3 is very useful to simulate networking devices and environments. It’s matured over the years and allows for flexible deployment options. Learning how to use GNS3 will benefit IT professionals greatly. I will be adding additional articles on how to deploy GNS3.