Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

GENI is a nationwide testbed for developing and conducting network or distributed experiments. There are many GENI racks with compute and networking resources scattered around the country, where we can reserve virtual machines (VMs), entire servers, programmable network switches, and layer 2/layer 3 links to interconnect our resources. Due to the distributed nature of GENI, resources can be reserved in strategic locations given a desired bandwidth or latency.

Image RemovedImage Added

Clemson is a member of the GENI testbed with two GENI racks and a wireless testbed for conducting WiMAX, LTE, and WiFi experiments. GENI is programmable from the application layer where your programs run all the way down into the link layer where switches forward packets. As such, it is a very powerful and flexible testbed, especially for network experimenters and those interested in software defined networking research (as our research group is).

...

To access GENI, navigate in your favorite browser to http://portal.geni.net. From here, select Clemson University from the list of or click the Clemson logo if you see it present already. Then, enter your Clemson username (omitting @clemson.edu) and password. You should be granted access to the GENI portal.

...

  1. Open up a terminal for each GENI VM where you want to login (i.e. three terminal windows for this intro tutorial).
  2. SSH into each of your resources using your GENI username, the host and domain name of your resource given by the steps above, the port provided, and the path to your downloaded private key. To specify the port number the SSH server has open for you, use the -p SSH flag. To tell your SSH client to use the private key you downloaded from GENI, use the -i flag. For example:
  3. Repeat step 2 for each GENI resource that you want to login to.
  4. Pro tip: Optionally, add your private key to your SSH agent so that it will automatically be tried when you SSH. Use the passphrase you set for the key when you created it on the GENI portal. If you do this, you will not need the -i flag to access any GENI resources in the future.

...

Handy Networking Commands

In this course, the projects will require you be familiar with some basic networking tools. This is by no means a comprehensive guide, but it will give you some skills to become dangerous.

ifconfig

ifconfig stands for network "interface configuration". It allows you to not only view information about your system's current network settings, but it also allows you to modify the running configuration.

 

 .

View Interfaces

Only Interfaces that are Up

Image Added

All Interfaces, Both Up and Down

Image Added

View a Specific Interface

Image Added

Modify an Interface

There are many things we can do to a network interface using ifconfig. One simple example is to bring an interface up that is down.

Image Added

Image Added

route

The route command allows you to see the current routes configured on the system, as well as add and remove existing routes.

View Routes

The -n flag tells the kernel to not resolve host names, which IMHO is easier to reason with when working with IP networks.

Image Added

Add a Route

The gw <IP-of-gateway> parameter can be omitted if the route does not have a next hop gateway.

Image Added

Remove a Route

When removing a route, simply use the exact same syntax used when adding the route, but change the "add" to a "del".

Image Added

tcpdump

tcpdump is a stripped down version of Wireshark that allows us to view packets that are actively entering or exiting the network interfaces of a machine. There are countless tcpdump filters to get the output to show only what we're interested in. Here's a basic example that will show all ARP and ICMP packets on interface eth1. The trailing -e flag is to show Ethernet headers (MAC addresses), and the -vv is to increase the verbosity. 

Image Added

We can also use the -n flag to tell tcpdump to not resolve the host domain names and just give us the raw IP addresses instead. I find this mode of operation easier to follow.

Image Added

ovs-vsctl

We can create a switch using the open source Open vSwitch (OVS) project. It comes with many command line utilities, one of which is ovs-vctl (OVS virtual switch control). These will only be installed if you use the "Ubuntu 14 with OVS by Niky" image.

To add a virtual switch:

Image Added

Any interface shown in ifconfig can be added as a port to a previously created OVS virtual switch. To add a port to a virtual switch:

Image Added

To undo any of the above OVS operations, replace "add" in the command with "del", e.g. "add-br" becomes "del-br" and "add-port" becomes "del-port". There are many other OVS commands we won't discuss here (or yet, rather) that follow the same convention.

To view all running switch configurations:

Image Added

Here is a presentation that covers other useful OVS commands, many of which are beyond the scope of this tutorial but might still be useful. Topics covered include bridge configuration, OpenFlow, and spanning tree to name a few.