VPLS 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:

VPLS can set to be installed and configured:

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:

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:

    So,

ONOS network interfaces configurations can applied either:

Configuration file format and syntax

Let’s assume the following scenario:

Configuration example.png

 

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:

 

VLAN Id

Interface Name

OF Switch DPID

OF Port Number

100

vlan100H1

0000000000000001

1

100

vlan100H2

0000000000000004

1

100

vlan100H3

0000000000000003

1

200

vlan200H1

0000000000000004

2

200

vlan200H2

0000000000000002

1

 

Please, consider the example below:

{
  "ports": {
    "of:0000000000000001/1": {
      "interfaces": [
        {
          "name": "vlan100H1",
          "vlan": "100"
        }
      ]
    },
    "of:0000000000000004/1": {
      "interfaces": [
        {
          "name": "vlan100H2",
          "vlan": "100"
        }
      ]
    },
    "of:0000000000000004/2": {
      "interfaces": [
        {
          "name": "vlan200H1",
          "vlan": "200"
        }
      ]
    },
    "of:0000000000000003/1": {
      "interfaces": [
        {
          "name": "vlan100H3",
          "vlan": "100"
        }
      ]
    },
    "of:0000000000000002/1": {
      "interfaces": [
        {
          "name": "vlan200H2",
          "vlan": "200"
        }
      ]
    }
  }
}

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.

Issues and Troubleshooting

Things not working as expected? Time to troubleshoot!

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.

 

Still having issues? Write to us. We can help! Mailing Lists