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.

