-
Notifications
You must be signed in to change notification settings - Fork 3
HOME
VeRTIGO is a Network Virtualization architecture that extends FlowVisor by introducing additional intelligence. The main purpose of VeRTIGO is to enable the instantiation of generalized Virtual Topologies (VT) including virtual links and virtual ports. In particular, VeRTIGO is able to expose different virtual views of the network to different controllers. This is achieved by remapping some fields of messages coming from the network and directed to the controllers (and vice-versa) and by directly replying to those switches that are intermediate points of virtual links and that must be hidden to the controller of the VT.
The two processes both depend on the VT configuration and in particular on the configuration of Virtual Links instantiated within the VT. Beside Virtual Links, we have also introduced the concept of Virtual Ports with purpose of supporting the instantiation of multiple Virtual Links on each physical link. Virtual Ports are simply Physical Ports with virtual port numbers and are needed when a single physical port is the termination of multiple virtual links. In this situation, each OpenFlow message related to this physical port must be modified with virtual port numbers consistent with the instantiated virtual links before being forwarded to the controller.
VeRTIGO can be installed:
- as Network Virtualization Layer of an Ofelia island i.e., as a replacement of FlowVisor.
- as controller of a FlowVisor slice to recursively partition the flowspace assigned to the slice (useful to test VeRTIGO without interfering with the island operations).
-
Requirements:
ant
java 1.6
(currently works with both Oracle's JDK; and OpenJDK) -
Download VeRTIGO sources from the git repository
git clone git://github.com/fp7-ofelia/VeRTIGO.git
-
Build:
make
(orant
: Makefile is just a wrapper) -
Install:
make install
As for FlowVisor, the VeRTIGO configuration process starts with the generation of the base configuration file through the command:
veconfig generate config.xml
The initial config file contains some sample VTs and flow definitions. These must be removed before VeRTIGO can be used. In order to make the required changes, VeRTIGO must be running. Example invocation is:
vertigo config.xml
Then, give the following commands (deleting VTs implicitly deletes the rules associated with them):
vectl deleteSlice alice
vectl deleteSlice bob
where vectl
is the VeRTIGO's configuration tool, a modified version of the original FlowVisor's fvctl script with some additional options that can be used to define and instantiate Virtual Links.
You can now define a new VT called charlie that will catch all flows from all switches with commands:
vectl createSlice charlie tcp:yourhost.com:10001 [email protected]
vectl addFlowSpace any 10 any "Slice:charlie=4"
Virtual links can be instantiated by using the addLink command as follows:
vectl addLink charlie <link_description>
Where charlie is the name of the VT and link_description
is a sequence of
pairs 00:00:00:00:00:00:00:0X/Y
representing the datapath_id of a switch plus a
physical port number. For instance:
vectl addLink charlie 00:00:00:00:00:00:00:01/1-00:00:00:00:00:00:00:02/1, 00:00:00:00:00:00:00:02/2-00:00:00:00:00:00:00:03/1
The command above creates a direct connection (Virtual Link) between switches
with datapath_id 00:00:00:00:00:00:00:01
and 00:00:00:00:00:00:00:03
passing
through 00:00:00:00:00:00:00:02
.
vectl changeLink charlie <link_id> <link_description>
Similar to addLink, but is used to change the description of a virtual link while maintaining the same identifier.
vectl getVirtualLinks charlie
Prints all the links instantiated for VT “charlie”. The output is something like:
Virtual Link 1: Hop 1: 00:00:00:00:00:00:00:06/1-00:00:00:00:00:00:00:01/2 Hop 2: 00:00:00:00:00:00:00:01/3-00:00:00:00:00:00:00:02/1 Hop 3: 00:00:00:00:00:00:00:02/2-00:00:00:00:00:00:00:08/1 Virtual Link 2: Hop 1: 00:00:00:00:00:00:00:06/1-00:00:00:00:00:00:00:01/2 Hop 2: 00:00:00:00:00:00:00:01/4-00:00:00:00:00:00:00:03/1 Hop 3: 00:00:00:00:00:00:00:03/2-00:00:00:00:00:00:00:04/1
vectl deleteLink charlie <link_id>
Deletes a link with identifier link_id
on VT charlie. The identifier can be
obtained through command getVirtualLinks
.
From version 0.2.0, VeRTIGO includes an internal module which collects statistics of traffic crossing the network. Statistics samples are collected for each enabled physical port and are not divided per slice. Statistics are stored to an internal database and can be retrieved through the vectl
command.
Follows the list of available operations:
vectl enableVTPlannerStats <enable>
Enable/disable the stats collection process. "0" means disabled, "1" or above means enabled.
vectl setVTPlannerTimers <timer> <exp_time>
Sets timers for the stats collection process. timer
is the time between two stats requests, exp_time
is the history size in time units. The default time unit is "seconds", but also minutes, hours, days and weeks can be used (s=seconds, m=minutes, h=hours, d=days, w=weeks).
example: vectl setVTPlannerTimers 5s 1w
vectl getVTPlannerTimers
Retrieves and prints timer
and exp_timer
(see command above).
vectl getVTPlannerSwitchInfo <switchid>
Retrieves the switch info. is the switch datapath_id with format 02:08:02:08:00:00:00:01. Value "all" is also allowed (without quotes) and returns the info of all the switches in the network. Refer to the OpenFlow Specification manual v1.0.0 in order to interpret some of the returned values.
vectl getVTPlannerPortInfo <switchid> <port>
Retrieves the info of one or all ports of a switch. Available ports and switches can be obtained from the output of command getVTPlannerSwitchInfo described above. can be a single port number or the string "all". The meaning of returned values CONFIG,FEATURES e STATE can be found at pages 17,18 and 19 of OpenFlow Specification v1.0.0.
vectl getVTPlannerPortStats <switchid> <port> <datetime1> <datetime2>
Retrieves the collected stats of one port collected between datetime1
and datetime2
. Value of datetime1
and datetime2
must be inserted in the format YYYY.MM.DD.hh.mm.ss, for instance:
vectl getVTPlannerPortStats 02:08:02:08:00:00:00:01 4 2012.10.15.00.00.00 2012.10.15.23.59.59
VeRTIGO is under development within activities of WP8 of OFELIA FP7 project and is based on source code gracefully provided by Stanford University.
Contact { roberto.doriguzzi | matteo.gerola } @ create-net.org for further information.
2013-11-13 Wed Roberto Doriguzzi [email protected]
VeRTIGO version 0.3.8
- Fixed bug that prevented the correct handling of FLOW_STATS replies
- Password for vectl can now be passed from the standard input (credits to Johannes Grassler)
- Improved installation instructions for Debian Wheezy/amd64 boxes (credits to Johannes Grassler)
2013-08-05 Mon Roberto Doriguzzi [email protected]
VeRTIGO version 0.3.7
- Improved XMPRPC interface
- Added man pages for vertigo, vectl and veconfig
2013-06-10 Mon Roberto Doriguzzi [email protected]
VeRTIGO version 0.3.6
- Added support for the MODIFY flowMod command
- Fixed bug that prevented the correct handling of LLDP packets.
2013-05-09 Thu Roberto Doriguzzi [email protected]
VeRTIGO version 0.3.5
- Fixed bug that prevented the correct installation of the entries on middlepoint switches for virtual links composed of 3 or more hops
- Added the VTLog class which enables the developer to selectively print on the stdout the debug messages from the vtopology classes (selection can be made from the command line with option -v)
- Added a class that clones the OFPhysycalPort (only used to remap the FeaturesReply msgs)
- Fixed the remapping of ports for FEATURES_REPLY messages
- Other minor bug fixes
- Improved documentation
2013-02-28 Thu Roberto Doriguzzi [email protected]
VeRTIGO version 0.3.0-beta
- Improved mechanism that handles Virtual Links by using tagged MAC addresses
- Improved management of LLDP messages
2013-01-08 Tue Roberto Doriguzzi [email protected]
VeRTIGO version 0.2.2
- Minor bug fixes
2012-11-15 Thu Roberto Doriguzzi [email protected]
VeRTIGO version 0.2.1
- Added support for Floodlight controller
- Added the "Traffic Statistic Collection" module which is used by the VT-Planner to compute its best-path algorithm
- Minor bug fixes
2012-05-30 Wed Roberto Doriguzzi [email protected]
VeRTIGO version 0.1
- Initial release