topo-vpls.pyVPLS installation and configuration
VPLS is an ONOS application, included by default in the ONOS distribution (both source code and packages). It needs to be explicitly configured and activated.
The goal of VPLS is to connect multiple end-points in an OpenFlow network - through a VLAN - making an isolated L2 broadcast network.
While legacy technologies require the manual configuration of multiple devices in the network, VPLS tries to makes the process easier for network administrators, exploiting the global network view maintained by ONOS, the SDN, logically centralized control plane.
Current model expects that hosts to be connected together (any L3 device), sends out in the OpenFlow network packets already tagged with a certain VLAN Id. Indeed, VPLS will use the VLAN Id of the hosts to match against the VPLS configuration, thus allowing hosts to communicate together.
The User Guide assumes:
You already have knowledge on how ONOS generally works;
ONOS has been already installed OR there’s a management machine ready to push bits to some target machines;
Different hosts have been directly attached to the OpenFlow data plane and they send out tagged packets using a certain, common VLAN Id.
VPLS can set to be installed and configured:
At setup-time, before pushing the ONOS bits from a management machine to target machines;
At run-time, while ONOS is running.
Following, the general procedure to activate and configure VPLS will be described. It’s expected that the user adapts the steps below to her/his own ONOS deployment flavor. Activating and configuring VPLS doesn’t have to happen in a specific order, since VPLS listens for configuration changes and react accordingly.
As for other ONOS applications, VPLS can be activated either:
Automatically at ONOS start up, adding the application name "vpls" in the list of apps to be started automatically, in the own cell file, on the management machine, before pushing the ONOS bits;
Manually, through the ONOS Command LIne (CLI), typing "app activate org.onosproject.vpls".
Configuring VPLS is fairly simple. The application exploit a quite small part of the general ONOS network configuration (interfaces).
The goal of the configuration process is to express:
What hosts are attached to which attachment points in the OpenFlow network (to which devices, to which ports);
What VLAN based slices should be created;
What hosts should talk one each other (and which don’t).
ONOS network interfaces configurations can applied either:
Creating a special network-cfg.json configuration file on the management machine in $ONOS/tools/package/config, before pushing the ONOS bits to the target machines. In this case - while deploying - the network-cfg.json file will be copied over the target machines and parsed;
Pushing a JSON file at run-time, using the specific REST APIs;
From the ONOS CLI, using the interface commands.
Configuration file format and syntax
Let’s assume the following scenario:
In this example, threee hosts tagging packets with VLAN Id 100 need to communicate together. Also, two hosts tagging packets with VLAN Id 200, need to communicate as well.
Grouping by Vlan Id in a tabular view, things get translated like the following:
OF Switch DPID
OF Port Number
Please, consider the example below:
As soon as two or more interfaces will be configured to receive packets tagged using the same VLAN Id, intents for broadcast will be installed by VPLS.
As soon as two or more hosts start to send out packets using the VLAN Id configured, through the ports with the related interfaces configured, intents for unicast will be installed by VPLS
For more details on the VPLS architecture, internal workflow and intents used, please visit the VPLS Architecture Gude.
Mininet network file
Would you like to give VPLS a try, but it's too hard and long bringing up an entire network with hosts sending in packets on different VLANs? The mininet (python) file attached gives you an example of how to simulate a similar network. Just modify the file, creating the topology you like and letting Mininet point to your controller IP address.
Issues and Troubleshooting
Things not working as expected? Time to troubleshoot!
Hosts are not communicating? Do you have at least two interfaces configured and two hosts attached - using the same VLAN Id?
Is your configuration correct? Has it been correctly parsed? The first step is to checked if the configuration has been parsed and correct running at the ONOS CLI the command "interfaces". This should give you a list of interfaces configured in the system
Any exception? Type log:exeption-display in the ONOS CLI to discover it.
Are hosts connected to your OpenFlow data plane? I a host start to send out packets into the OpenFlow network you should be able to see it, even if VPLS is not installed yet or no configuration is provided. Go in the ONOS CLI and type "hosts". As result, you should see something similar to this (100, 2000, 300 in this case are the VLAN Ids used):
Please, note that you should see results only for hosts that already sent traffic into the Network. This doesn’t happen for example with Mininet, where hosts are only processes without any application running by default.
Also, as in any related Intent based ONOS applications, there are certain best-practices to follow, to see what’s going in the Intent / Flow subsystems.
Are intents installed? (type in the ONOS CLI "intent -s" - which stays for intents summary, type only "intents" to see the detailed list of intents)
Yes! (we’re happy!).
No! Ops….let’s check flows, since 1 intent is composed by one or more flows!
Type "flows pending-add" to see if there’s any flow for which ONOS still not received an installation confirmation
Type "flows" to see the detailed list of flows - installed or not by the system
Still having issues? Write to us. We can help! Mailing Lists