Network simulation: Packet Tracer or GNS3?
The simulation of a network can be useful in many ways: studying, troubleshooting, offline network modeling/testing and so on. With the rising power of today’s computers, it can be easy to create a virtual network even on a PC, and experiment on it instead of the real gear. Cisco Academy users have a very nice tool: Packet Tracer, which is capable of creating a complex network and simulating its behavior. The other best known tool for this purpose is GNS3, which is based on Dynamips, and is capable of building even more realistic networks. In this article, I would try to give an overview of each, describe strengths and weaknesses, and in the end discuss some installation issues of GNS3.
Every student in the Cisco Networking Academy have encountered a very good software tool to develop hands-on skills: this is Packet Tracer (or PT for short).
This program is a simulator, which means that it tries to mimic the working of real switches, routers and other devices as closely as possible. But it does its job entirely in software: a router object in the simulated network is just a program code, with as many functions as the developers have put into it. If we compare the list of possible commands on a real router and on a PT instance, we’ll see the difference. Although the developers are doing a very good work, they cannot implement each and every function of a real router or switch into the software. In the time of writing this article, PT can simulate almost everything that needs for the CCNA level (even for the new CCNA Routing and Switching course), many functions for the CCNA Security and even some things for CCNP. The current stable version is 6.0.1, but the next version (6.1) is under heavy development. This upcoming version will contain many new functions (for example it’s possible to use ASA firewall as well!), especially for the new CCNA R&S courses. But again, some commands are still missing; some are not working and so on: this is just a simulator.
Why is this software so important and popular when studying CCNA courses? There are a lot of reasons. First of all, it’s a free tool for the academy students and instructors, and has no limitations in its functions. Second, it can handle very complex networks. Imagine a network with 3 routers, 5 switches, 10 PCs and a server. As a teacher, I want my students to configure this alone and say I have 10 students in my group. How many devices do I need? The answer is 30 routers, 50 switches, 100 PCs and 10 servers, which is a lot! If my school is rich and big enough, that’s not a problem but usually, I think, that’s not the case. If I want to model, configure, troubleshoot or experiment on a bigger network, PT can be a solution. Each student can have his/her own topology with (nearly) as many devices as they want, and can work entirely on their own. Nothing can be compared to the experience you get in this way. Of course, we need to let them configure real equipment, but before this they can get enough experience in the simulator.
Moreover, PT has a function which can help in developing skills that could work in a team. Its multi-user functionality allows the students to work in pairs or in teams to configure a really big network. Some portions exists on one of the student’s PC, another portion on another PC and so on, all of this is connected by a real network. With a plug-in, PT can also communicate with the real network outside of the software, although this functionality is still limited.
As an instructor, I need to mention another functionality that can help in grading students and it is called activities. An activity is a special way to test the knowledge of a student. The instructor makes a completely configured network (this is the answer network), then prepare another with an initial configuration (the initial network). Then the student needs to configure the initial network to be similar to the answer network. PT can grade the configuration, allows/disallows some activity during configuration and can present a slightly different initial data and topology for every student to prevent cheating. Finally, it has a very good built-in didactic tool called Simulation Mode, with which students can understand more easily what’s happening behind the scenes: what packets are travelling across the network and what they contain.
There exists another tool for the ones who want to build their own, complex network without any physical devices: GNS3 (Graphical Network Simulator).
This program is a frontend for some emulators and virtual machine managers, forming a complete framework. The most important pieces are:
- Dynamips: an emulator for Cisco IOS devices.
- QEMU: a virtual machine manager (VMM) that allows the use of PCs with a lot of different operating systems currently running, or even Cisco ASAs and Juniper JunOS routers.
- VirtualBox: another multiplatform VMM.
- Integrated Ethernet, ATM and Frame Relay switches.
- A Cloud object that allows the interconnection of the simulated network with the outside world.
In its early days, the main purpose of GNS3 was to make the use of Dynamips easier which runs on Linux, Mac OS X or Windows and can emulate the hardware of the Cisco series routing platforms by directly booting an actual Cisco IOS software image into the emulator (Wikipedia). Simply to say, we can run Cisco IOS on a PC, and if we have enough resources (CPU, RAM etc.), we can run more routers and virtual machines as well. With the help of the VMMs, we can create a very complex and heterogeneous network that is very close to reality, as we run real operating systems in an emulated environment. So, an IOS “thinks” that it is running on a Cisco hardware, Windows “thinks” that it is running on a PC and so on.
Here, we can see the most important difference between PT and GNS3. PT is a simulator, GNS3 is an emulator. The latter has the full functionality of the emulated device, as a real IOS runs on our computer. No lacking commands, no different behavior as real devices. This has a great benefit. Of course, we need to have enough horsepower in our machine if we want to run, not just one router, but a rather complicated topology. Dynamips has some tricks to reduce the amount of RAM necessary and the load of the CPU (more about this later). On an average equipment today (dual or quad core processors with a minimum of 4 GB RAM) we can easily run a topology for the CCNP (or even CCIE) level. For studying or troubleshooting purposes, we can even use Wireshark to capture the traffic between any devices. So at first sight, this is a perfect tool for anyone, with an additional benefit: it’s free. But unfortunately there are some disadvantages.
First thing is that Cisco IOS itself is not free software. If we have a router and use the IOS shipped with it, that’s OK, but legally we can’t use any other version. Second, Dynamips cannot emulate the newer routers, namely the ISR generation 1 and 2 routers. Initially, it has been written for the 7200 series routers, and then the support increased for the 1700/2600/3600/3725 series. These models have largely been reached their End Of Life (EOL) period, therefore, there’s no support for them (for example, new IOS versions). Moreover, they don’t support IOS version 15 (except the 7200 model), which is not good news either.
Another thing is that Dynamips cannot emulate the physical layer of the network. This means that some functions that is heavily related to the physical media (for example, the clock rate of the serial interfaces) are configurable, but useless. Last but not the least; Dynamips has been built for emulating routers, not switches. The modern hardware is based heavily on ASICs (Application Specific Integrated Circuits), which are specialized hardware chips for a specific function to accelerate it. Of course, these hardware pieces cannot be emulated in software. For this reason, we cannot emulate neither the newer ISR routers (for example the 1800/2800 and the 1900/2900 series), nor the Catalyst switches. The latter has a big lack of features for anyone who wants to study switching. Fortunately, there are some workarounds.
The modular routers are expandable by switch modules. For example, the 2621XM router has a slot for a network module, and this can be a 16 port Cisco EthernetSwitch module. With this, our device will be capable of doing switching functions: we can use VLANs, STP and numerous other things. But this is far lesser than a Catalyst switch can do. Fortunately, we can connect our virtual network to real devices, as I mentioned before. And the third solution is to use some software switches, which can easily be integrated into GNS3 with the help of VMMs. For example, we can download a so called appliance containing LiSA (Linux multilayer switch) or OpenSwitch. They need some Linux experience to use, of course.
As we can see, both programs have strengths and weaknesses. PT is very good in building a network mostly from (even numerous) Cisco devices. It has very good tools that can help in teaching, although a lot of functions are still missing. GNS3 on the other hand can be very realistic, but needs a powerful machine and cannot emulate each and every device (especially switches and newer routers). One thing that each of them lacks: the full emulation of the physical media. In real life, we can have issues with the cables which simply cannot be simulated with software (for example a bad cable).
Because the setup and usage of GNS3 can be much more difficult than PT, I will give some advice for this. For more information consult the links at the end of the article.
The easiest method to install under Windows is to download the all-in-one package from the official website. At the time of writing this article, the newest version is 0.8.6. The installer has many components that needs to be installed: GNS3 itself, WinPCAP library and Wireshark for packet capturing, Dynamips, QEMU, PEMU (to emulate PIX firewalls), VPCS (simulation program for adding simple PC objects to the topology) and SuperPUTTY (terminal emulation and remote access software). If we have older versions from some of the above, then we have a chance to upgrade. At the end, we can subscribe to a newsletter, but this is optional. The first run looks like this:
The three-step wizard is rather self explanatory; although the third can be a bit more difficult. First, we need to select an IOS image. These are in compressed format, and GNS3 asks if we want to decompress them before using. It’s a good practice because the router boot time will be shorter in this way. We can then adjust the platform and model, the amount of RAM and can set up a text file (baseconfig.txt by default) containing a basic configuration (hostname and some settings we usually set up). The most important setting here is Idle PC:
What is it? It’s a hexadecimal value that Dynamips can calculate based on the IOS image. While running an IOS image on PC, the emulated router doesn’t work all the time, but the CPU needs to listen to it, even if there’s nothing to do (when the router is in idle state). Therefore, the program analyzes the running IOS code and calculates when the CPU will or will not treat it. The proper calculation of Idle PC value can dramatically improve the performance of our PC.
If we want to include other devices other than Cisco’s, we need to configure some “guests” either with the help of QEMU or VirtualBox. The setup options are under the Edit/Preferences/Qemu and Edit/Preferences/VirtualBox menu. It is recommended to test if the configuration of the so called “wrappers” is correct before this step by clicking on Test Settings button. If all is well, we can now begin building our first topology. But I don’t want to talk too much about this: there are plenty of tutorials that can be found on the GNS3 site itself, and in other places also.
One thing to mention in the end is that the upcoming version of both programs will include a lot of interesting things. Maybe GNS3 will be the bigger sensation: the developers are promising some really neat features, for example the ability to use a cloud service for the computing. This means that we can build a very complex topology even on a tablet, and the hard part (the real computing) will be conducted in the cloud. So, let’s wait for the new releases and use them to learn networking!
Update, November 20: The upcoming release of GNS3 1.0 has been eagerly awaited by the community, as the developers got approximately 15,000 replies about the early release for beta testing. The most promising and most wanted features are the switching support (I am personally very curious about how this will be done) and the cloud processing (to reduce the power necessary for the host PC). These two features can solve what are arguably the two biggest weaknesses of the program. But I think that the release should be earlier than the promised, which is late 2014, because a new competitor will appears soon on the stage: Cisco VIRL. For the moment, though, we are just waiting for the chance to get into the beta-tester team and get our hands dirty trying out the new features!
A website with lots of information about PT:
Practice labs for PT:
Free Cisco labs using GNS3: