Here is a cool tool for learning and testing in a simulated environment. Use this open source and free tool to design and test your own network with various network hardware devices and hosts, all on your Raspberry Pi. Read this article to know what it does
GNS3 is a graphical network simulator which provides you a real lab environment for learning and testing complex networks. With this tool you do not need to have dedicated network hardware devices. You can design and configure virtual networks on a traditional PC or a Raspberry Pi, and simulate in the closest possible way to how the real networks perform.
If you want to design and test your automation system network, GNS3 can just work fine for you. It allows you to run many virtual hosts with operating systems such as Linux, Windows, MacOS X or FreeBSD.
Integrated solution for network emulation
It uses the Dynamips, Pemu/Qemu and Dynagen emulators to run the very same operating systems as in real networks, ensuring complete and accurate simulations. Dynamips is the core program that allows IOS emulation.
Other emulation programs, namely Qemu, Pemu and VirtualBox, are used to emulate Cisco ASA and PIX firewalls, Cisco IPS, Juniper routers as well as hosts (Linux, Windows, MacOS X and FreeBSD). GNS3 integrates all the emulation and allows you to work in a real lab environment to have your host talking to your routers.
Better graphical front-end for ease of use
The GNS3 software provides an intuitive graphical user interface (GUI) to design and configure virtual networks running on traditional PC hardware for multiple operating systems, including Windows, Linux and MacOS.
GNS3 serves as a graphical front-end for the network emulators. For instance, using network emulators such as Dynagen or Dynamips independently will require you to build your labs using configuration files, but using a graphical tool like GNS3 makes things a bit easier for you.
GNS3 runs on top of these emulators to create a more user-friendly and graphical environment. You can click and drag different routers to your screen, hit a start button and start learning and testing.
While GNS3 is developed in Python, its GUI is made with the powerful Qt library. SVG technology (scalable vector graphics) in its GUI provides high-quality symbols for designing your network topologies.
The user-friendly GUI window is divided into four panes and provides you with all the options to create network topologies at the very first sight. Different types of network nodes are available at the leftmost pane. Clicking onto any node symbol will provide you with the list of various types of that node. For example, different routers, Ethernet switch, ATM bridge, ATM switch, frame relay switch, cloud, Qemu and VirtualBox guests will appear after clicking on the specific node symbol.
The rightmost pane provides a topology summary where your connections can be viewed and nodes can be renamed. The top pane in the middle is your work area where you can build your topology graphically while the bottom pane is the GNS3 management console. A shortcut menu is at the top which provides all the relevant shortcuts for your working with the created topologies.
Memory and CPU usage
GNS3 has in-built functionality to address these issues and ensure smooth functioning of the tool. An idle-pc value, dependent on the IOS version and not the PC, can be included to address the CPU usage. ghostios and sparsemem options are added to address the memory issues.
The idlepc value command performs analysis on a running image to determine the most likely points in the code that represent an idle loop in the IOS process and makes the virtual router to ‘sleep’ occasionally when this idle loop is executed, reducing the CPU consumption.
You can choose Idle PC by right clicking onto the router and an Idle PC value will be calculated, and then click the drop down arrow to see a list of possible idlepc values. You can select any one of the values with an asterisk (recommended values).
The ghostios option significantly reduces the amount of real host RAM needed for labs with multiple routers running the same IOS image, and the sparsemem feature, on the other hand, does not conserve real memory, but reduces the amount of virtual memory used by your router instances.