Versions Compared

Key

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

...

When 4 gets satisfied -meaning that ONOS discovers at least two hosts of the same VPLS- unicast communication is established.

General workflow

The VPLS workflow can be grouped in two main functions:

  • Getting information about configured interfaces, the VPLS configuration and the hosts attached

  • Installation of the related intents (so of the flows) to let the hosts communicate

Image Removed

Information collection

Information collection is grouped in two main functions called in sequence, that represent the main steps that the application performs at each operational cycle:

  •  vplsConfigService.getVplsNetworks(): retrieves all VPLS information. Each VPLS information contains name of VPLS and interfaces from this VPLS.

Intent installation

...


 

Components:

 

New VPLS contains several components:


New Vpls Architecture.jpegImage Added


VPLS (VPLS Manager):  

  • Provides public API for managing virtual private LANs.
  • The API provides create/update/read/delete (CURD) functionality, helps other application to interact with VPLS Store and VPLS operation service.
  • Handles host events to attach/detach hosts to a virtual private LAN

VPLS Store Delegate (in VPLS Manager):

  • Handles VPLS store events, it will generate new VPLS Operation according to store event type and VPLS status.

  • Also, after it generate an operation, it will send to VPLS Operation Service directly.

VPLS Operation Service(VPLS Operation Manager):

  • Manage any operation(modification) of any VPLS.

  • Convert VPLS operations to sets of Intent operations.

  • Provide correct order of Intent operations.

  • Update VPLS status to store when finished/failed VPLS operation.

VPLS Store (Distributed VPLS Store):

  • Stores all VPLS information

  • Push all VPLS information to network config system

 

VPLS Config Manager:

 

  • Handles network config update event

  • Optimize changes from VPLS network config event and invoke VPLS API

 

VPLS Neighbour Handler:

 

  • Handles neighbour messages of any VPLS from any interface

 

VPLS REST API (Work in progress):

 

  • Provides REST API to control VPLS 

General workflow

VPLS can be changed by these ways:

  • Host event (host added or removed)

  • Network config modification

  • VPLS command

  • VPLS REST API

Image Added

VPLS Operation Service 

  • When a new VPLS operation generated and submit to VPLS operation service the operation will be queued. 
  • An operation scheduler will take batches of operation for multiple VPLS, if there exists multiple operations to process, it will optimize operations to a single operation. 
  • For every operation to be process, the scheduler will put the operation into operation executor and add success and error consumer to it. 
  • For success consumer, it will update VPLS state according to previous state (e.g. ADDING -> ADDED) 
  • For error consumer, will change the state to FAILED.

 

VPLS op manager.jpegImage Added

VPLS Operation Executor (Intent installation)

The VPLS Operation Executor will generate different Intent operations for different operation type (add, remove or update VPLS).

For ADD operation, executor will generate two types of Intents:

  • Single-Point to Multi-Point intents Intents for broadcast traffic, from any ingress point to every egress point, configured in the same VPLS.

  • Multi-Point to Single-Point intents Intents for unicast traffic, from every egress point to any ingress point in the same VPLS.

Functions above are grouped in a unique method called setupConnectivity(...). The method is called

...

At the application startup;

...

Every time the interface configuration or VPLS configuration get updated;

...

As soon as new hosts join the network and get discovered;

  • See Traffic provisioning and intent requests chapter below for more information.

For REMOVE operation, the executor will find every intents related to the VPLS (by Intent key) and remove them.

For UPDATE operation, two situation will be considered:

  • Interfaces updated: will reinstall all Intents related to this VPLS.

  • Hosts updated: will remove or add new unicast Intent only.

Provide correct ordering of Intent installation

To resolve race condition issue (install after withdraw Intents), the executor uses IntentCompleter to wait Intent installation process.

An IntentCompleter is a kind of IntentListener, initialize by Intent keys we need to wait, then register as listener to the IntentService and do Intent operations (submit, withdraw)

After that, invoke “complete” method from the IntentCompleter, it will wait until all Intents finished or timeout exceed.

Intent completer.jpegImage Added

...

Network configuration, interface configuration and hosts listeners

...

The reason for the second condition is that intents for unicast (see above) match on the MAC address of the hosts connected, which is doesn’t get configured by the operator, but instead provided by the host service after the host gets discovered.

...

VPLS leader election

VPLS runs on top of ONOS as a distributed application: each ONOS instance has a VPLS application running on top of it. VPLS applications share their status and use common data structures. ONOS makes sure they remain in synch.

The intentInstaller component prepares the intent requests, to be submitted to the external IntentSynchronizer component. IntentSynchronizer makes sure that only one ONOS instance at the time is elected as the leader for VPLS and takes care of installing in the system the intents needed by VPLS to provision the connectivity.

At the beginning, the VPLS operation manager from each ONOS instance will send a request to LeadershipService to make sure which instance is the leader of VPLS application.

Only the leader node can execute VPLS operation and install Intents now.

 If an ONOS instance fails because of issues, another ONOS instance is re-elected leader for VPLS and takes over for the intent installation process.

Known limitations

At the current stage:

...