Version Author(s) E-mail Web Description



Similar documents
NETWORK EMULATION AND NETKIT

netkit lab single-host Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group

Emulating Computer Networks with Netkit. Massimo Rimondini

netkit lab static-routing Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group

netkit lab two-hosts Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group

netkit lab bgp: multi-homed Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group

IP networks Introduction to laboratory

netkit lab Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group Version 1.

walkthrough Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group Version 1.

netkit lab bgp: prefix-filtering Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group

netkit lab Traffic Engineering with MPLS for Linux Version Author(s) F. Di Ciccio, F. Antonini (Kasko Networks S.r.l.)

Corso di Configurazione e Gestione di Reti Locali

netkit lab web server and browser 1.2 Giuseppe Di Battista, Maurizio Patrignani, Massimo Rimondini Version Author(s)

netkit lab load balancer web switch 1.1 Giuseppe Di Battista, Massimo Rimondini Version Author(s)

Introduction to NetGUI

netkit lab MPLS VPNs with overlapping address spaces 1.0 S.Filippi, L.Ricci, F.Antonini Version Author(s)

netkit lab dns Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group Version Author(s)

Linux TCP/IP Network Management

VM-Series Firewall Deployment Tech Note PAN-OS 5.0

How To Install Openstack On Ubuntu (Amd64)

Network Administration and Monitoring

Cloud.com CloudStack Community Edition 2.1 Beta Installation Guide

Building a Penetration Testing Virtual Computer Laboratory

BASIC TCP/IP NETWORKING

Network Management and Debugging. Jing Zhou

netkit lab load balancer dns 1.2 Massimo Rimondini Version Author(s)

A virtual network laboratory for learning IP networking

TCP/IP Network Essentials. Linux System Administration and IP Services

Workshop on Scientific Applications for the Internet of Things (IoT) March

EXPLORING LINUX KERNEL: THE EASY WAY!

Getting started with ARM-Linux

Tutorial. Reference for more thorough Mininet walkthrough if desired

Host Configuration (Linux)

Lab 3 Routing Information Protocol (RIPv1) on a Cisco Router Network

bigbluebutton Open Source Web Conferencing

iproute2 and Advanced Linux Routing

VLAN for DekTec Network Adapters

Virtual Systems with qemu

Advanced routing scenarios POLICY BASED ROUTING: CONCEPTS AND LINUX IMPLEMENTATION

HP Operations Orchestration Software

Tcpdump Lab: Wired Network Traffic Sniffing

Lab Diagramming External Traffic Flows

Get quick control over your Linux server with server commands

Performance of VMware vcenter (VC) Operations in a ROBO Environment TECHNICAL WHITE PAPER

Introduction to Operating Systems

APPLICATION NOTE. How to build pylon applications for ARM

Moxa Device Manager 2.0 User s Guide

Configuration of Cisco Routers. Mario Baldi

THE HONG KONG POLYTECHNIC UNIVERSITY Department of Electronic and Information Engineering

Lab Diagramming Intranet Traffic Flows

Quick Start Guide for Parallels Virtuozzo

System administration basics

IP Address: the per-network unique identifier used to find you on a network

Personal Virtual Server (PVS) Quick Start Guide

LAB THREE STATIC ROUTING

TCP Labs. WACREN Network Monitoring and Measurement Workshop Antoine Delvaux perfsonar developer

Note: Guide not yet tested in the SFU Surrey Linux Lab (SUR4080). Some changes may be needed.

NetIQ Sentinel Quick Start Guide

File Transfers. Contents

VX 9000E WiNG Express Manager INSTALLATION GUIDE

VMware vsphere 5 Quick Start Guide

How to Backup XenServer VM with VirtualIQ

Setting Up A High-Availability Load Balancer (With Failover and Session Support) With Perlbal/Heartbeat On Debian Etch

Rally Installation Guide

Lab 5 Explicit Proxy Performance, Load Balancing & Redundancy

How To Set Up A Network Map In Linux On A Ubuntu 2.5 (Amd64) On A Raspberry Mobi) On An Ubuntu (Amd66) On Ubuntu 4.5 On A Windows Box

FioranoMQ 9. High Availability Guide

Veeam Task Manager for Hyper-V

Configuring Virtual Blades

Performance Evaluation of Linux Bridge

HONEYD (OPEN SOURCE HONEYPOT SOFTWARE)

Cloud Server. Parallels. Key Features and Benefits. White Paper.

Operating Systems Networking for Home and Small Businesses Chapter 2

Quick Start Guide for VMware and Windows 7

AdminToys Suite. Installation & Setup Guide

How to Create, Setup, and Configure an Ubuntu Router with a Transparent Proxy.

Installation Guide for Basler pylon 2.3.x for Linux

HP IMC Firewall Manager

Procedure: You can find the problem sheet on Drive D: of the lab PCs. Part 1: Router & Switch

PetaLinux SDK User Guide. Application Development Guide

Port stealing and ARP poisoning attack simulation with NETKIT

Load Balancing for esafe Gateway 3.0 when using Alteon s AD2 or AD3

Remote PC Guide Series - Volume 1

PT Activity: Configure Cisco Routers for Syslog, NTP, and SSH Operations

Setup Cisco Call Manager on VMware

Audit Trail Administration

Cable Internet Connection & Sharing using Red Hat 7.2 (Version 1.0, )

Installation Guide for Citrix XenServer 5.5

SysPatrol - Server Security Monitor

Install Guide for JunosV Wireless LAN Controller

IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Hyper-V Server Agent Version Fix Pack 2.

Remote Unix Lab Environment (RULE)

How to Test Out Backup & Replication 6.5 for Hyper-V

TimeIPS Server. IPS256T Virtual Machine. Installation Guide

ISERink Installation Guide

Virtual Appliance for VMware Server. Getting Started Guide. Revision Warning and Disclaimer

Lab 1: Introduction to the network lab

Red Hat Linux Networking

Transcription:

Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group Netkit The poor man s system for experimenting computer networking Version Author(s) E-mail Web Description 2.2 G. Di Battista, M. Patrignani, M. Pizzonia, M. Rimondini contact@netkit.org http://www.netkit.org/ an introduction to the architecture, setup, and usage of Netkit

copyright notice All the pages/slides in this presentation, including but not limited to, images, photos, animations, videos, sounds, music, and text (hereby referred to as material ) are protected by copyright. This material, with the exception of some multimedia elements licensed by other organizations, is property of the authors and/or organizations appearing in the first slide. This material, or its parts, can be reproduced and used for didactical purposes within universities and schools, provided that this happens for non-profit purposes. Information contained in this material cannot be used within network design projects or other products of any kind. Any other use is prohibited, unless explicitly authorized by the authors on the basis of an explicit agreement. The authors assume no responsibility about this material and provide this material as is, with no implicit or explicit warranty about the correctness and completeness of its contents, which may be subject to changes. This copyright notice must always be redistributed together with the material, or its portions.

about computer networks computer networks are (tipically) quite complex several devices (computers, routers, etc.) several interfaces several protocols running physical interconnections originate complex topologies

how to perform experiments? performing experiments may be unfeasible the currently used network cannot be exploited for experiments it hosts services that are critical for the company it would be necessary to coordinate different departments of the company network equipments are expensive sometimes, even for performing simple experiments, several equipments should be available in the same test bed

simulation vs. emulation emulation and simulation systems put at user s disposal a virtual environment that can be exploited for tests, experiments, measures simulation systems aim at reproducing the performance of a real-life system (latency time, packet loss, etc.) e.g.: ns, real, emulation systems aim at accurately reproducing the functionalities of a real-life system (configurations, architectures, protocols), with limited attention to performance

netkit: a system for emulating computer networks based on uml (user-mode linux) http://user-mode-linux.sourceforge.net/ each emulated network device is a virtual linux box a virtual linux box is one that is based on the uml kernel note: the linux os is shipped with software supporting most of the network protocols hence, any linux machine can be configured to act as a bridge/switch or as a router

user-mode linux user-mode linux is a linux kernel (inner part of the linux os) that can be executed as a user process on a standard linux box a user-mode linux process is also called virtual machine (vm), while the linux box that hosts a virtual machine is called host machine (host) several virtual machines can be executed at the same time on the same host

uml virtual machines each virtual machine has: a console (a terminal window) a memory ( cut into the memory of the host) a filesystem (stored in a single file of the host filesystem) (one or more) network interfaces each network interface can be connected to a (virtual) collision domain each virtual collision domain can be connected to several interfaces

host machine memory vm nic vm ram vm OS vm console virtual collision domain vm filesystem host machine console host machine nic host OS real collision domain file host machine filesystem

basic idea: emulating a computer network using uml several virtual machines are created inside a single host machine virtual machines are connected to virtual collision domains and thus can communicate with each other each virtual machine can be configured to play the role of a regular host, of a router, or even of a switch

ram host machine user@host$ pc3 pc1 ram collision domain 0 user@pc3$ pc3 pc1 user@pc1$ pc2 user@pc2$ ram pc2 collision domain 1 host machine console

what is netkit? a set of tools and commands that can be used to easily set up a virtual computer network (most) commands are implemented as scripts a ready-to-use filesystem that is exploited as a pattern for creating the file system of each vm most commonly used networking tools are already installed in this filesystem a uml kernel that is used as kernel for the virtual machines

Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group setting up netkit

setting up netkit download at http://www.netkit.org/ hw requirements: i386 32 bit architecture 600 MHz cpu ~10 MB of memory for each vm (depending on the vm configuration) ~600 MB of disk space + ~1-20 MB for each vm (depending on the usage of the vm) sw requirements a linux box works fine on many distributions, see http://www.netkit.org/status.html standard, commonly available system tools (awk, lsof, etc.)

setting up netkit download the three files that make up the distribution netkit-x.y.tar.bz2 netkit-filesystem-fx.y.tar.bz2 (warning: >100MB) netkit-kernel-kx.y.tar.bz2 unpack them in the same location tar xjf netkit-x.y.tar.bz2 tar xjf netkit-filesystem-fx.y.tar.bz2 (this may take a while; warning: decompressed size exceeds 600MB) tar xjf netkit-kernel-kx.y.tar.bz2

setting up netkit configure your shell to set the following environment variables NETKIT_HOME must be set to the directory containing the decompressed version of netkit $NETKIT_HOME/bin must be appended to the PATH :$NETKIT_HOME/man must be appended to the MANPATH for example (assuming bash is being used) export NETKIT_HOME=~/netkit2 export PATH=$PATH:$NETKIT_HOME/bin export MANPATH=:$NETKIT_HOME/man

setting up netkit you can check your configuration by entering the netkit directory cd $NETKIT_HOME and running the check_configuration.sh script./check_configuration.sh if all the checks succeed, then you are ready to use netkit

Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group using netkit

netkit commands netkit provides users with two sets of commands v-prefixed commands (vcommands) l-prefixed commands (lcommands) vcommands act as low level tools for configuring and starting up single virtual machines lcommands provide an easier-to-use environment to set up complex labs consisting of several virtual machines

netkit vcommands allow to startup virtual machines with arbitrary configurations (memory, network interfaces, etc.) vstart: starts a new virtual machine vlist: lists currently running virtual machines vconfig: attaches network interfaces to running vms vhalt: gracefully halts a virtual machine vcrash: causes a virtual machine to crash vclean: panic command to clean up all netkit processes (including vms) and configuration settings on the host machine

netkit lcommands ease setting up complex labs consisting of several virtual machines lstart: starts a netkit lab lhalt: gracefully halts all vms of a lab lcrash: causes all the vms of a lab to crash lclean: removes temporary files from a lab directory linfo: provides information about a lab without starting it ltest: allows to run tests to check that the lab is working properly

accessing the external world from a virtual machine two ways of doing this the directory /hosthome inside a virtual machine directly points to the home directory of the current user on the real host read/write access is allowed vstart can automatically configure tunnels ( tap interfaces ) by which a virtual machine can access an external network see man vstart for more information

Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group preparing a netkit lab

preparing a lab a netkit lab is a set of preconfigured virtual machines that can be started and halted together it may be implemented in (at least) two ways by writing a single script lab-script that invokes vstart for each virtual machine to be started by setting up a standard netkit lab that can be launched by using the lcommands (recommended)

a netkit lab as a single script a script (e.g., lab-script) invokes vstart with some options to start up each virtual machine by using the --exec option of vstart, the same script can be invoked inside vms (e.g., in order to automatically configure network interfaces) a check inside lab-script can be used to test if we are in the real host or inside a vm

a netkit lab as a single script example vstart pc1 pc1 --eth0=0 --eth1=1 --exec=this_script vstart pc2 pc2 --eth0=0 --exec=this_script vstart pc3 pc3 --eth0=1 --exec=this_script if if [ `id `id u` u` == == 0 0 ]; ]; then then case case $HOSTNAME in in pc1) pc1) ifconfig eth0 eth0 10.0.0.1 up up ifconfig eth1 eth1 10.0.0.2 up;; up;; pc2) pc2) ifconfig eth0 eth0 10.0.0.3 up;; up;; pc3) pc3) ifconfig eth0 eth0 10.0.0.4 up;; up;; esac esac fi fi

netkit labs using lcommands a standard netkit lab is a directory tree containing: a lab.conf file describing the network topology a set of subdirectories that contain the configuration settings for each virtual machine.startup and.shutdown files that describe actions performed by virtual machines when they are started or halted [optionally] a lab.dep file describing dependency relationships on the startup order of virtual machines [optionally] a _test directory containing scripts for testing that the lab is working correctly

lab.conf this file describes the settings of the vms that make up a lab the topology of the network that interconnects the vms of the lab list of machine[arg]=value assignments machine is the name of the vm (e.g., pc1) if arg is an integral number (say i), then value is the name of the collision domain to which interface ethi should be attached if arg is a string, then it must be the name of a vstart option and value is the argument (if any) to that option

lab.conf example pc1 eth0 pc1[0]=a pc2[0]=a pc2[1]=b pc2[mem]=256 pc3[0]=b pc2 pc3 eth0 eth0 eth1 collision domain A collision domain B pc2 is equipped with 256MB of (virtual) memory

lab.conf other optional assignments machines= pc1 pc2 pc3 : explicitly declare the virtual machines that make up the lab by default, the existence of a subdirectory vm_name in the lab directory implies that a virtual machine vm_name is started LAB_DESCRIPTION LAB_VERSION LAB_AUTHOR LAB_EMAIL LAB_WEB descriptive information displayed when the lab is started

lab subdirectories netkit starts a virtual machine for each subdirectory, with the same name of the subdirectory itself unless lab.conf contains a machines= statement the contents of subdirectory vm are mapped (=copied) into the root (/) of vm s filesystem for example, vm/foo/file.txt is copied to /foo/file.txt inside virtual machine vm this only happens the 1st time the vm is started; in order to force the mapping you have to remove the vm filesystem (.disk file)

startup and shutdown files shell scripts that tell virtual machines what to do when starting up or shutting down they are executed inside virtual machines shared.startup and shared.shutdown affect all the virtual machines upon startup, a vm named vm_name runs shared.startup vm_name.startup upon shutdown, a vm named vm_name runs vm_name.shutdown shared.shutdown

startup and shutdown files a typical usage of a.startup file is to configure network interfaces and/or start network services sample of vm_name.startup ifconfig eth0 10.0.0.1 up up /etc/init.d/zebra start

lab.dep multiple virtual machines can boot at once (parallel startup) -p option of lstart the startup order of virtual machines can be influenced by establishing dependencies e.g., pc3 can only boot after pc2 and pc1 are up and running a lab.dep file inside the lab directory describes dependencies and automatically enables parallel startup file format is similar to that of a Makefile example pc3: pc1 pc1 pc2 pc2

launching/stopping a lab lcommand -d <lab_directory> [machine...] or enter the lab directory (cd lab_directory) lcommand where lcommand can be one of the following: lstart, to start the lab lhalt, to gracefully shut down the virtual machines of a lab lcrash, to suddenly crash the virtual machines of a lab optionally, a list of machine names can be given on the command line, in which case only those machines will be affected by the command

removing temporary files a running lab creates some temporary files inside both the current directory and the lab directory to get rid of them all, use lclean after the lab has been halted/crashed notice: lclean also removes virtual machine filesystems (.disk files); do not use it if you are going to launch your lab again using the same filesystems

ltest makes it easier to check that distributed labs work properly ltest starts a lab and dumps information about each virtual machine vm the output goes into _test/results/vm.default [optionally] a script _test/vm.test may contain additional commands to be run inside vm in order to dump other information the output goes into _test/results/vm.user

ltest sample of vm.default file [INTERFACES] [INTERFACES] lo lo Link Link encap:local encap:local Loopback Loopback inet inet addr:127.0.0.1 addr:127.0.0.1 Mask:255.0.0.0 Mask:255.0.0.0 inet6 inet6 addr: addr: ::1/128 ::1/128 Scope:Host Scope:Host UP UP LOOPBACK LOOPBACK RUNNING RUNNING MTU:16436 MTU:16436 Metric:1 Metric:1 [ROUTE] [ROUTE] Kernel Kernel IP IP routing routing table table Destination Destination Gateway Gateway Genmask Genmask Flags Flags MSS MSS Window Window irtt irtt Iface Iface [LISTENING [LISTENING PORTS] PORTS] Active Active Internet Internet connections connections (servers (servers and and established) established) Proto Proto Recv-Q Recv-Q Send-Q Send-Q Local Local Address Address Foreign Foreign Address Address State State [PROCESSES] [PROCESSES] UID UID COMMAND COMMAND 0 init init [2] [2] 0 [ksoftirqd/0] [ksoftirqd/0] 0 [events/0] [events/0]......

ltest when preparing a lab launch ltest to dump lab information move files _test/results/* to a subdirectory _test/results/good when testing a lab launch ltest to dump lab information compare (e.g., using diff) files _test/results/* with _test/results/good/* check if they all match

getting information about a lab linfo prints summary information about a lab without running it option -m allows to create a sketch of the link-level topology of the lab requires the GraphViz library to be installed http://www.graphviz.org/

more information further information can be found inside netkit man pages (you can start from man netkit) on the web site http://www.netkit.org/