Skip navigation.
Home
A virtual network infrastructure
PlanetLab logo
Powered by PlanetLab

Trellis v0.1 Power User Guide

This page describes the low-level mechanisms for configuring virtual topologies on nodes running the VINI Trellis v0.1 kernel (2.6.22.14-vs2.3.0.32.1.planetlab #1 SMP Wed Apr 30 16:56:00 EDT 2008).

Trellis nodes

Trellis v0.1 (tech report) is running on the following nodes:

  • vini1.princeton.vini-veritas.net
  • vini2.alta.internet2.vini-veritas.net
  • vini2.chic.internet2.vini-veritas.net
  • vini2.hous.internet2.vini-veritas.net
  • vini2.losa.internet2.vini-veritas.net
  • vini2.kans.internet2.vini-veritas.net
  • vini2.newy.internet2.vini-veritas.net
  • vini2.salt.internet2.vini-veritas.net
  • vini2.wash.internet2.vini-veritas.net

Slice attributes

In order to be able to configure interfaces and add routes, your slice needs to be set up with the proper slice attributes. Contact Andy Bavier to enable topology creation for a particular slice.

Entering a network container

You should automatically end up inside a network container when you ssh into your slice. By default you will see only the loopback device and an empty routing table:

[acb@cadenza iias]$ ssh pl_trellis@vini2.chic.internet2.vini-veritas.net
[pl_trellis@vini2 ~]$ /sbin/ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4402 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:336560 (328.6 KiB)  TX bytes:336560 (328.6 KiB)

[pl_trellis@vini2 ~]$ /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
[pl_trellis@vini2 ~]$ 

Configuring a topology

The current method for setting up a topology uses modified versions of the PL-VINI Ruby scripts. You may want to familiarize yourself with the PL-VINI User Guide.

To use the PL-VINI scripts with Trellis, first check out the Trellis development branch of the scripts:

# export CVS_RSH=ssh
# cvs -d <you>-visp@cvs.cs.princeton.edu:/cvs co -P -r trellis_0_1_branch visp/iias

Next, you must add a couple of lines to your Ruby topology specification, specifying the environment as Trellis and the GRE key to use in your topology. This will look something like:

$iias = Slice.new('pl_trellis')
$iias.set_environment('Trellis')
$iias.set_key(101);

See config/trellis.rb for an example. Then perform the following steps in order (similar to PL-VINI):

  • make configs sets up the per-node configuration files in the vini/ subdirectory
  • make sync copies the configuration files to the nodes
  • make topo sets up the virtual topology in your slice – at this point you can login to any of the nodes in your slice and interact with the virtual links
  • make test pings each adjacent node in the topology to test connectivity
  • make start runs the routing software (e.g., Quagga) on the virtual topology
  • make stop kills the routing software
  • make teardown tears down the topology

For example, after setting up the topology on vini2.chic.internet2.vini-veritas.net using conf/trellis.rb as the configuration file:

[pl_trellis@vini2 ~]$ /sbin/ifconfig
a101if0   Link encap:Ethernet  HWaddr 46:C9:C0:08:BB:81  
          inet addr:192.168.100.3  Bcast:192.168.100.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1458  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:384 (384.0 b)  TX bytes:308 (308.0 b)

a101if1   Link encap:Ethernet  HWaddr 7A:E9:5A:E4:41:DE  
          inet addr:192.168.103.2  Bcast:192.168.103.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1458  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:944 (944.0 b)  TX bytes:1070 (1.0 KiB)

a101if2   Link encap:Ethernet  HWaddr E6:5D:52:82:52:AF  
          inet addr:192.168.104.2  Bcast:192.168.104.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1458  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:384 (384.0 b)  TX bytes:398 (398.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8688 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8688 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:673182 (657.4 KiB)  TX bytes:673182 (657.4 KiB)

nat101    Link encap:Ethernet  HWaddr 06:FD:AE:77:5E:14  
          inet addr:10.0.101.2  Bcast:10.0.101.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:384 (384.0 b)  TX bytes:0 (0.0 b)

[pl_trellis@vini2 ~]$ /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   *               255.255.255.0   U     0      0        0 a101if0
10.0.101.0      *               255.255.255.0   U     0      0        0 nat101
192.168.103.0   *               255.255.255.0   U     0      0        0 a101if1
192.168.104.0   *               255.255.255.0   U     0      0        0 a101if2
default         10.0.101.1      0.0.0.0         UG    0      0        0 nat101

Interfaces starting with the letter "a" correspond to the virtual links in the topology. The interface starting with "nat" is used to connect outside of the virtual topology via NAT.

Known issues

  • IP multicast doesn't work over the virtual topology.
  • XORP doesn't run inside a network container. The problem seems to be that /proc/sys/net/ipv4/ip_forward is not present for some reason.
  • Raw forwarding performance is lower than that described in the Trellis tech report because the virtual links currently use the Linux bridge and etun modules instead of shortbridge/ztun.