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

Trellis Automatic Topology Creation

Overview

On VINI, the network inside a slice is virtualized. By default there are no network interfaces visible inside a slice. To communicate with other slivers inside your slice, you need to set up a virtual topology connecting the slivers with virtual links. The endpoints of these virtual links will appear as interfaces inside your slice once they are created.

VINI can automatically provide each slice with a default virtual topology, consisting of a "slice" of the underlying physical network. Concretely, if you add your slice to nodes that are adjacent in the physical topology (meaning there are no intervening VINI nodes), a virtual link will automatically be created between your slivers on these nodes. The maps on the front page show the physical topologies of NLR and Internet2, along with the PoP locations where VINI nodes are installed within these networks. So for example, if you add slivers to nodes vini1.chic.internet2.vini-veritas.net and vini2.kans.internet2.vini-veritas.net, a virtual link connecting these slivers will appear inside them since Chicago and Kansas City are considered adjacent sites.

What You'll See

When you login to a slice, you can see the virtual topology using standard Linux tools like ifconfig. For example, here is the view on one of the slivers within a slice that was created on vini1.*.internet2.vini-veritas.net:

bash-3.2# hostname
vini1.losa.internet2.vini-veritas.net

bash-3.2# /sbin/ifconfig
a101x30   Link encap:Ethernet  HWaddr D6:93:3C:D3:3C:5C  
          inet addr:192.168.21.36  Bcast:192.168.21.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1458  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:768 (768.0 b)  TX bytes:168 (168.0 b)

a101x32   Link encap:Ethernet  HWaddr 16:DB:82:AF:F3:49  
          inet addr:192.168.23.36  Bcast:192.168.23.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:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:384 (384.0 b)  TX bytes:258 (258.0 b)

a101x34   Link encap:Ethernet  HWaddr BE:B4:BB:F6:47:77  
          inet addr:192.168.22.36  Bcast:192.168.22.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1458  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:252 (252.0 b)  TX bytes:168 (168.0 b)

nat101    Link encap:Ethernet  HWaddr E6:4D:7B:59:FB:89  
          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)

bash-3.2# /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.23.0    *               255.255.255.0   U     0      0        0 a101x32
192.168.22.0    *               255.255.255.0   U     0      0        0 a101x34
192.168.21.0    *               255.255.255.0   U     0      0        0 a101x30
default         10.0.101.1      0.0.0.0         UG    0      0        0 nat101

The interfaces starting with "a" are the endpoints of the virtual links. This sliver has virtual links to nodes in Seattle, Salt Lake City, and Houston. The virtual link name consists of the letter "a" + the slice's GRE key + "x" + the ID of the remote node (all nodes have unique IDs in the VINI Central database). So you can figure out the remote endpoint of the virtual link by mapping this node ID to the nodename. Currently, all virtual links are point-to-point between two slivers.

The interface starting with "nat" leads via NAT to the underlying physical network. You can contact remote servers using this interface, for example to pull content into your virtual network.

Automatic Address Assignment

Each virtual interface in the default topology is automatically assigned an IP address. Each virtual link is assigned a /24 network of the form 192.168.linkID.0, where linkID uniquely identifies the physical link between VINI sites in the underlying topology. Each sliver is then assigned an address of 192.168.linkID.nodeID, where nodeID uniquely identifies the VINI node in the VINI Central database. This algorithm ensures that every interface in the virtual topology has a unique address, and both endpoints of a virtual link belong to the same network segment.

The NAT interface is assigned an IP address of 10.0.egreKey.2, where egreKey is the unique EGRE key assigned to the slice. Traffic sent on this interface with a next-hop of 10.0.egreKey.1 will exit through the NAT.

A generated /etc/hosts inside each sliver maps IP addresses to hostnames for all hosts in the virtual topology.

Enabling Routing Across the Topology

As part of the automatic topology setup, some basic configuration files for Quagga will be written inside your slice. You can enable OSPF routing across your virtual topology in a few simple steps:

  • Install the Quagga software inside your slice.
  • Point Quagga to the generated config files in /etc/quagga:
    [pl_trellis@vini1 ~]$ su
    bash-3.2# cd /etc/quagga
    bash-3.2# ln -s zebra.conf.generated zebra.conf
    bash-3.2# ln -s ospfd.conf.generated ospfd.conf
    
  • Start up Quagga:

    bash-3.2# /sbin/service zebra start; /sbin/service ospfd start
    Starting zebra:                                            [  OK  ]
    Starting ospfd:                                            [  OK  ]
    

Once the routes have propagated, you should be able to contact non-adjacent nodes in the virtual topology:

[pl_trellis@vini1 ~]$ hostname
vini1.kans.internet2.vini-veritas.net
[pl_trellis@vini1 ~]$ traceroute vini1.princeton   
traceroute to vini1.princeton (192.168.1.1), 30 hops max, 40 byte packets
 1  vini1.chic.internet2 (192.168.15.18)  10.755 ms  10.734 ms  10.744 ms
 2  vini1.wash.internet2 (192.168.12.22)  27.572 ms  27.570 ms  27.581 ms
 3  vini1.newy.internet2 (192.168.16.20)  32.956 ms  33.001 ms  32.977 ms
 4  vini1.princeton (192.168.1.1)  36.546 ms  36.521 ms  36.540 ms

Bandwidth Limits on Virtual Links

By default, each virtual link in the topology is limited to 1Mb/s throughput. This modest bandwidth should be sufficient for testing an experimental prototype. When you are prepared to "go public" with your experiment and start carrying real traffic on it, you can contact VINI Central to get this limit raised.

Slice Attribute Setup

A VINI administrator must configure a slice attributes to enable creation of the default topology:

  • The vini_topo attribute must be set to iias.

If your slice has this attribute configured, then you should see a virtual topology when you log into a node.