(Presentations are always uploaded in pdf or pptx format at the end of each corresponding class)
Lab 1 - Setting up the GNS3 network emulation tool environment
Lab 2 - IP addressing & Scapy & IP forwarding
Lab 3 - Internet monitors, autonomous systems, IP address spaces, routing information databases
Lab 4 - Configuration of inter-domain routing: the basics
Lab 5 - Configuration of inter-domain routing: valley-free routing
Lab 6 - Configuration of inter-domain routing: advanced policy routing
Lab 7 - Visiting the BIX (Budapest Internet Exchange), the "center" of the Hungarian Internet
During the practice sessions we will use the knowledge that has been said on the theory classes previously. To prepare for practices everybody needs to set up a virtualized environment on his or her notebook
Setting up instructions:
Install the GNS3 software to your notebook from http://www.gns3.com/. The GNS3 is a virtual network construction tool that can be used to handle and connect virtual images of installed operating systems (or even real computers through the network interface of the host notebook) into a big virtual network. It is really easy to use: Just drag and drop the computers to the desktop and connect them with wires. Actually this program is more than a simulator, as the computers are real images and the packets sent from one computer to another are real also, that is why it is called an emulation. The virtual images needs to be executed by other applications before they are used in GNS3, like VMware, Virtualbox, or Qemu. GNS3 itself is only the network building tool. The GNS3 is an excellent tool to examine the operation of given network topologies before you create it in reality, or if you only want to study it. Note that you have to register prior to downloading GNS3! When installing GNS3 a number of auxiliary applications are also installed automatically, like Wireshark, let it do it! The most important among this is the Qemu environment, which handles the virtual images. (Qemu can be installed individually as well, however, it is not recommended as GNS3 only works together with specific versions of Qemu. So it is recommended to install the version of Qemu offered during GNS3 installation process even if Qemu is previously installed.)
Download the virtual images that will be used by GNS3. Those actually are the images of routers (originally made for home WiFi router devices).
At this point you have two choices:
- You can download a Linux-based Qemu image made by us specially for this course from the following location: https://drive.google.com/file/d/1schVD30cQoDkySHXqc5YOA6_zI9QN9tZ/view?usp=sharing (Do not forget to decompress the file, and you will need only the file with the ".img" extension!). The image is a special Linux distribution called OpenWrt designed specifically for Wifi home routers demanding only very few resources (low memory, CPU and hard drive requirements). This distribution is simplified a bit and customized for our purpose making it suitable to run on weaker computers (e.g. it is enough to allocate 64Mbyte memory for running one instance of an OpenWrt image although at least 128MB is recommended).
- For all those who have stronger notebooks and are familiar with the logic of Cisco routers, it is possible to use a more complex image. According to experiences from previous years when many students attended the class at a time it was difficult to pay attention to the Cisco users (the commands vary a bit in their case) for that reason please chose this option only if you are able to do it with relatively little help. Typically we have time for the more difficult problems only at the end of the class. The distribution is made by Cisco to help students to study to the special Cisco exams (there circulates a more authentic image of Cisco routers that can be used in the Dynagen virtualization environment, however, its use is not permitted by Cisco as the image is intended to run on proper Cisco device only). The corresponding router simulation environment can be downloaded from:https://drive.google.com/file/d/1xxBbOgW6YucFJB0YmDCsAUI2UGttBbkt/view?usp=sharing. If you intend to use this image a few steps will differ from the ones of OpenWrt. More details on that at the practice classes... Further, there will be some tasks later on (like generating packets with Scapy) that can only be solved using the OpenWrt image, so that distribution will be necessary anyway.
Run GNS3, cancel the question about servers like Local GNS3 VM (also you can check the box beside Don't show this again), and create a project under any name, than find Preferences dialog box under Edit and create a new Qemu virtual machine template (under the menu point "Qemu VMs") by entering the disc location of the image file you have downloaded previously (if you installed Qemu separately from GNS3 than the location of the Qemu executable (i.e. the ".exe" on windows machines) file should also be entered). This page is the setting of the teplate machine for the routers that we will use in the simulations. Give it a name like "Router", which will be the name you will find the template under. Set at least 128Mbyte memory for the image if possible, and you should also set the number of network adapters emulated for the image on the "Network" tab. Set it to, lets say, 6, that should be enough. The type of the adapter should be virtio-net-pci (others may suffice as well), but if some trouble occurs later on with it you can change it to 1000Gbps network adapter. It is recommended to change the icon of the freshly created image right away by a mouse-right-click to a router-like icon, which helps you remember that those computers are actually routers. When creating the image do not forget to add the "-nographic" option at Options under Advanced settings tab., that will help us using the consoles to observe the displays of the routers (see also step 6). Before exiting from Preferences check the Server menu and be sure that under the appearing 3 tabs only Local server is checked and GNS3 local server and Remote servers are unchecked!
After confirming the changes we are now ready to drag and drop new objects (routers) to the project editor window of GNS3 using the icons on the left side (the name will be the one you gave earlier e.g. Router). After putting some routers on the editor wire their network adapters together with the wiring tool residing on the left (lowest icon). Be aware that the wiring tool is a toggle like button! This means that once it is toggled on it remains on until you switch it off! As long as it is on-state, some funny things keep happening, like the right button of the mouse does not work etc. Never forget to switch it off when wiring is done!
When the whole network is created you can turn all the virtual machines on at once using the Play icon (or individually with a right mouse click on each of them) and in the context menu called forth by a right mouse click you can chose the console to see the display of the computer as it is booting. If booting is finished you are ready to issue commands as it would be a normal Linux machine.
During practice sessions the Quagga routing software package (its starts by typing "vtysh" to the shell prompt) and the Scapy packet manipulating tool are often going to be used (those packages are already compiled into the Linux distribution image).
Important information for the images:
- Before quitting the virtual Openwrt images !always! issue the "halt" command, as some modifications might be in the cache only not yet written to the disk, in which case those modifications in the image get lost.
- We recommend you to make informative captions/labels in the GNS3 editor window when constructing your network, e.g. indicating IP addresses besides the icons of the virtual machines. A useful tip is to find the icon on the upper left corner of the editor that makes the names of the network adapters visible besides the virtual machined in the editor, and so you can modify the appearing text of the address of the adapters right away. In this case the adapter title like eth1 and the respective IP address sticks together always, and never separate during later modifications.
- The anomaly often occurs when using GSN3 that you cannot open a console (which is simply an SSH terminal) to a running machine, the console does not connect: The reason of this most of the time is that another instance of SSH terminal box is already running in the background assigned to that specific port. It is recommended to close all the SSH consoles running in the background and reopen each. Another reason of the error can be of using a wrong Qemu version (which happens if you installed it separately from GNS3). It is recommended to remove Qemu and reinstall GNS3 (the right version od Qemu will be installed automatically).
- We had experiences of virtual images seeming to be turned off on the main display while the summary window on the right side of the screen indicates that it is green (i.e. it is running). In this case the console cannot be turned off. Turn it off on the summary pane as well using a right click (later versions of GNS3 hopefully eliminate those bugs). As a final choice the-turn-it-off-and-on-again :) naturally works: Save your project in GNS3 and quit all background SSH terminal (also saving current state of the images using the halt command) and rerun GNS3.
- Further problems might stem from installing Qemu independently of GNS3, in which case images would not be executed (console does not connect to the image). The solution, as mentioned above, to uninstall Qemu and GNS3 and reinstall only GNS3 that will install the right version of Qemu automatically.
The first link contains a table for the assignment of students (by Neptun codes) to the paremeter sets that should be used for the homeworks and the following 5 links point to the tasks themselves:
Sample test (TBA)
Bonus points and midterm test results (TBA)
Final test (i.e. exam) results (TBA)