Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

VPLS installation and configuration

VPLS is an ONOS application, included by default in the ONOS distribution platform (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 , creating isolated L2 broadcast networkoverlay networks.

While legacy technologies require the manual configuration of multiple devices in the network, VPLS tries to makes make the process easier for network administrators, exploiting the global network view maintained by ONOS, the SDN, logically centralized control plane.operators.

The current Current model expects that hosts to be connected together (any L3 device), sends out in into the OpenFlow network tagged 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(VLAN Ids).

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 Idsome (same or different) VLAN Ids.

Starting VPLS

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 toin the list of apps to be started automatically, in the . Specific startup details can be defined , iin itsthe 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

VPLS relies on the ONOS network configuration subsystem, which is by default distributed on all ONOS nodes and shared by all ONOS applications.

In order to configure VPLS two things need to be done:

  • Configure two or more interfaces

  • Configure one or more VPLS that associate the interfaces configured together

The goal of the configuration process is to express:

...

define what attachment points the hosts are

...

    So,

...

What VLAN based slices should be created;

...

connected to (so which DPID, twhich ports), and to associate them under the same overlay network, a VPLS. This will essentially determine what hosts should talk one each other (and which don’t).

ONOS network interfaces configurations can Both the interfaces and the VPLS configuration itself can be 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 APIsAPI;

  • From the ONOS CLI, using the interface commands.

...

Let’s assume the following scenario:

Configuration example.pngImage Removed

 vpls_overview-port.pngImage Added

In this example, threee hosts tagging five hosts are sending in tagged 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:

different VLAN Ids. Two networks will be created, one called VPLS-EXAMPLE-1 (VPLS1) - in green, the second one called VPLS-EXAMPLE-2 (VPLS2) - in red. Three hosts will be grouped and connected in VPLS1, while other two will be associated to VPLS2.

Hosts are grouped by VPLS in the following table:


 

VPLS name

 

VLAN Id

Interface Name

OF Switch DPID

OF Port Number

VPLS1

10100

vlan100H1vpls1h1

0000000000000001

1

VPLS1

10010

vlan100H2vpls1h2

0000000000000004

1

VPLS1

20100

vlan100H3vpls1h3

0000000000000003

1

VPLS2

20030

vlan200H1vpls2h1

0000000000000004

2

VPLS2

40200

vlan200H2vpls2h2

0000000000000002

1

 

Please, consider the example below:


In order to configure what has been described above, the following configuration should be pushed to ONOS (either before or after VPLS has been started).

Code Block
Code Block
linenumbers
themeConfluence
languagejava
titlenetwork-cfg .json example
firstline1
true
{  
  "ports": {
    "of:0000000000000001/1": {
      "interfaces": [
        {
          "name": "vlan100H1vpls1h1",
          "vlan": "10010"
        }
      ]
    },
    "of:0000000000000004/1": {
      "interfaces": [
        {
          "name": "vlan100H2vpls1h2",
          "vlan": "10010"
        }
      ]
    },
    "of:0000000000000004/2": {
      "interfaces": [
        {
          "name": "vlan200H1vpls2h1",
          "vlan": "20030"
        }
      ]
    },
    "of:0000000000000003/1": {
      "interfaces": [
        {
          "name": "vlan100H3vpls1h3",
          "vlan": "10020"
        }
      ]
    },
    "of:0000000000000002/1": {
      "interfaces": [
        {
          "name": "vlan200H2vpls2h2",
          "vlan": "40"
        }
      ]
    }
  },
  {
  "apps" : "200"{
    "org.onosproject.vpls" : {
      "networks": [
        {
          "name": "VPLS1",
          "interfaces": ["vpls1h1", "vpls1h2", “vpls1h3”]
        },
        {
          "name": "VPLS2",
          "interfaces": ["vpls2h1", "vpls2h2"]
        }
      ]
    }
  }
}

 

The same can be result can be achieved at run-time, using the interface configuration and VPLS CLI commands. SomeAn examples beloware follows (see CLI syntax for mor details):

Code Block
titleCLI configuration example
onos> interface-add -v 10 of:0000000000000001/1 vpls1h1
onos> interface-add -v 10 of:0000000000000004/1 vpls1h2
onos> interface-add -v 20 of:0000000000000003/1 vpls1h3
onos> interface-add -v 30 of:0000000000000004/2 vpls2h1
onos> interface-add -v 40 of:0000000000000002/1 vpls2h2
onos> vpls-add VPLS1
onos> vpls-add-iface VPLS1 vpls1h1
onos> vpls-add-iface VPLS1 vpls1h2
onos> vpls-add-iface VPLS1 vpls1h3
onos> vpls-add VPLS2
onos> vpls-add-iface VPLS2 vpls2h1
onos> vpls-add-iface VPLS2 vpls2h2


As soon as two or more interfaces will be configured to receive packets tagged using the same VLAN Id, intents for are added to the same VPLS network, intents to manage broadcast will be installed by VPLS.

As soon as two or more hosts start connected to send out packets using the VLAN Id configured, through the ports with the related interfaces configured, intents for unicast will be installed by VPLSthe same VPLS get discovered by ONOS (and VPLS), intents to manage unicast traffic will be installed.

For more details on the VPLS architecture, internal workflow and intents used, please visit the the VPLS Architecture GudeGuide.

Mininet network file (topo-vpls.py)

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.

Detailed CLI syntax (WIP)

VPLS allows to define networks and attach or unattach interfaces to them, also by command-line. There is also the option of cleaning all the state of the application for a clean start. Details on the CLI operations are detailed below:

Operations on networks

onos> vpls-add $VPLS_NETWORK          # Adds a new network

onos> vpls-remove $VPLS_NETWORK          # Adds a new network

onos> vpls-add-iface net2 vlanX

Issues and Troubleshooting

...

  • 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:exeptionexception-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):

...

Example of output for the hosts command in ONOS

id=02:2D:BD:5B:9E:43/100,

...

mac=02:2D:BD:5B:9E:43,

...

location=of:0000000000000003/3,

...

vlan=3500,

...

ip(s)=10.2.7.1,

...

10.1.7.1

...

id=1E:7B:8C:0E:67:6E/2000,

...

mac=1E:7B:8C:0E:67:6E,

...

location=of:0000000000000004/3,

...

vlan=3500,

...

ip(s)=10.1.4.2,

...

10.1.5.2,

...

10.1.7.2

...

id=86:C0:D9:41:D5:46/100,

...

mac=86:C0:D9:41:D5:46,

...

location=of:0000000000000001/4,

...

vlan=3500,

...

ip(s)=10.2.5.1,

...

10.1.5.1

...

id=92:1D:B3:D3:BE:2A/300,

...

mac=92:1D:B3:D3:BE:2A,

...

location=of:0000000000000002/3,

...

vlan=3500,

...

ip(s)=10.2.4.1,

...

10.1.4.1

 

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