Versions Compared

Key

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

...

In this example, five hosts are sending in tagged packets with different VLAN Ids. Two networks VPLSs will be created, one called VPLS1 -in green, the second -; one called VPLS2 -in red-. Four hosts will be grouped and connected in part of VPLS1, 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

100

h1

0000000000000001

1

VPLS1

200

h2

0000000000000002

1

VPLS1

-1 (no VLAN)

h5

0000000000000005

1

VPLS1-1 (no VLAN)h600000000000000061

VPLS2

300

h3

0000000000000003

1

VPLS2

400

h4

0000000000000004

1

 

...

Code Block
titleCLI configuration example
onos> interface-add -v 100 of:0000000000000001/1 h1
onos> interface-add -v 200 of:0000000000000002/1 h2
onos> interface-add -v 300 of:0000000000000004/1 h3
onos> interface-add -v 400 of:0000000000000002/1 h4
onos> interface-add of:0000000000000005/1 h5
onos> interface-add of:0000000000000006/1 h6

onos> vpls create VPLS1
onos> vpls add-ifaceif VPLS1 h1
onos> vpls add-ifaceif VPLS1 h2
onos> vpls add-ifaceif VPLS1 h5
onos> vpls add-ifaceif VPLS1 h6
onos> vpls set-encap VLPS1 VLAN

onos> vpls create VPLS2
onos> vpls add-ifaceif VPLS2 h3
onos> vpls add-ifaceif VPLS2 h4

As soon as two or more interfaces are added to the same VPLS, intents to manage broadcast will be installed.

...

Code Block
titleOperations on networks
# Creates a new networkVPLS
onos> vpls create {$VPLS_NAME}

# Deletes an existing networkVPLS
onos> vpls deldelete {$VPLS_NAME}

# Lists the configured VPLSs
onos> vpls list
Configured VPLSs
----------------
VPLS1
VPLS2

# Shows the list configured VPLSs, including their interfaces and the encapsulation type in use. If a VPLS name is specified, only the details for that VPLS are returned.
onos> vpls show [$VPLS_NAME]
Configured VPLSs
----------------
VPLS name: VPLS1
Associated interfaces: [h1, h2, h5, h6]
Encapsulation: NONE
----------------
VPLS name: VPLS2
Associated interfaces: [h3, h4]
Encapsulation: VLAN
----------------

# Sets the encapsulation type for a VPLS
onos> vpls set-encap {$VPLS_NAME} {VLAN|MPLS|NONE}
Code Block
titleOperations on interfaces
# Adds an existing interface (in netcfg) to an existing VPLS
onos> vpls add-ifaceif {$VPLS_NAME} {$INTERFACE_NAME}
# Removes an existing interface from an existing VPLS
onos> vpls rem-ifaceif {$VPLS_NAME} {$INTERFACE_NAME}
Code Block
titleGeneral operations
# Cleans the status of the VPLS application (i.e., removesdeletes networksVPLSs, detachesremoves interfaces from existing VPLSs and withdraws intents)
onos> vpls clean

...

Things not working as expected? Time to troubleshoot!

  • Is VPLS running? Check with apps -a -s. Is VPLS there?
  • Hosts are not communicating? Do you have at least two interfaces configured and two hosts attached? Are the VLANs correct ?
  • Is your configuration correct? Has it been correctly parsed? The first step is to checked check 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 systemloaded. Helpful commands are netcfg, interfaces, and the VPLS CLI commands (!!!! the VPLS configuration is not visible if the application is not started).

  • Any exception? Type log:exception-display in the ONOS CLI  to discover it.

  • Are the hosts connected to your OpenFlow data plane? I a host start to send ? Have the hosts been discovered correctly by ONOS? If a host sends 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)::

Code Block
titleExample of output for the hosts command in ONOS
onos> hosts
id=00:00:00:00:00:01/10100, mac=00:00:00:00:00:01, locationlocations=[of:0000000000000001/1], vlan=10100, ip(s)=[10.0.0.1], name=h1, latitude=40.888148, longitude=-103.459878, configured=false
id=00:00:00:00:00:02/10200, mac=00:00:00:00:00:02, locationlocations=[of:00000000000000040000000000000002/1], vlan=10200, ip(s)=[10.0.0.2], configured=false
id=00:00name=h2, latitude=42.756945, longitude=-79.831317, configured=false
id=00:00:00:00:00:03/20300, mac=00:00:00:00:00:03, locationlocations=[of:0000000000000003/1], vlan=20300, ip(s)=[10.0.0.3], name=h3, latitude=35.427493, longitude=-83.885831, configured=false
id=00:00:00:00:00:04/30400, mac=00:00:00:00:00:04, locationlocations=[of:0000000000000004/21], vlan=30400, ip(s)=[10.0.0.4], configured=false
id=00:name=h4, latitude=34.66229, longitude=-110.946662, configured=false
id=00:00:00:00:00:05/40None, mac=00:00:00:00:00:05, locationlocations=[of:00000000000000020000000000000005/1], vlan=40None, ip(s)=[10.0.0.5], configuredname=false

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. Type "intents" to see the detailed list of intents, or "intent -s" for the intents summary.

Below is an approximation of what you should see for the network "VPLS2", after pinging between interfaces "vpls2h1" and "vpls2h2". Notice that two broadcast intents are installed at the beginning, and two unicast intents once the interfaces start pinging each other.

h5, latitude=33.224634, longitude=-121.532943, configured=false
id=00:00:00:00:00:06/None, mac=00:00:00:00:00:06, locations=[of:0000000000000006/1], vlan=None, ip(s)=[10.0.0.6], name=h6, latitude=42.395459, longitude=-75.293563, configured=false

Please, note that you should see results only for hosts that already sent traffic into the data plane. This sometimes 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 on with intents and flows. Type "intents" to see the detailed list of intents, or "intent -s" for the intents summary.

Below is an approximation of what you should see for the topology used in the example, assuming all hosts have already all been discovered and communicate together. Note that in this case, six intents for broadcast, and six intents for unicast are installed.

Code Block
titleExample of output for the intents command in ONOS, related to network VPLS2
onos> intents
id=0xa6, state=INSTALLED, key=VPLS1-uni-of:0000000000000006-1-00:00:00:00:00:06, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:06]
    treatment=[NOACTION]
    ingress=[of:0000000000000005/1, of:0000000000000001/1, of:0000000000000002/1], egress=of:0000000000000006/1
id=0x1a, state=INSTALLED, key=VPLS2-uni-of:0000000000000003-1-00:00:00:00:00:03, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:03]
    treatment=[NOACTION]
    constraints=[EncapsulationConstraint{encapType=VLAN}]
    ingress=[of:0000000000000004/1], egress=of:0000000000000003/1
id=0xa7, state=INSTALLED, key=VPLS1-uni-of:0000000000000002-1-00:00:00:00:00:02, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:02]
    treatment=[NOACTION]
    ingress=[of:0000000000000005/1, of:0000000000000006/1, of:0000000000000001/1], egress=of:0000000000000002/1
id=0xa1, state=INSTALLED, key=VPLS1-brc-of:0000000000000005-1-FF:FF:FF:FF:FF:FF, type=SinglePointToMultiPointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:FF:FF:FF:FF:FF:FF]
    treatment=[NOACTION]
    ingress=of:0000000000000005/1, egress=[of:0000000000000006/1, of:0000000000000001/1, of:0000000000000002/1]
id=0xa5, state=INSTALLED, key=VPLS1-uni-of:0000000000000001-1-00:00:00:00:00:01, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:01]
    treatment=[NOACTION]
    ingress=[of:0000000000000005/1, of:0000000000000006/1, of:0000000000000002/1], egress=of:0000000000000001/1
id=0x1b, state=INSTALLED, key=VPLS2-uni-of:0000000000000004-1-00:00:00:00:00:04, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:04]
    treatment=[NOACTION]
    constraints=[EncapsulationConstraint{encapType=VLAN}]
    ingress=[of:0000000000000003/1], egress=of:0000000000000004/1
id=0xa3, state=INSTALLED, key=VPLS1-brc-of:0000000000000006-1-FF:FF:FF:FF:FF:FF, type=SinglePointToMultiPointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:FF:FF:FF:FF:FF:FF]
    treatment=[NOACTION]
    ingress=of:0000000000000006/1, egress=[of:0000000000000005/1, of:0000000000000001/1, of:0000000000000002/1]
id=0x0, state=INSTALLED, key=VPLS2-brc-of:0000000000000003-1-FF:FF:FF:FF:FF:FF, type=SinglePointToMultiPointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:FF:FF:FF:FF:FF:FF]
    treatment=[NOACTION]
    constraints=[EncapsulationConstraint{encapType=VLAN}]
    ingress=of:0000000000000003/1, egress=[of:0000000000000004/1]
id=0x1
Code Block
titleExample of output for the intents command in ONOS, related to network VPLS2
onos> intents
id=0x0, state=INSTALLED, key=VPLS2-brc-of:00000000000000020000000000000004-1-FF:FF:FF:FF:FF:FF, type=SinglePointToMultiPointIntent, appId=org.onosproject.vpls

    selector=[ETH_DST:FF:FF:FF:FF:FF:FF]
    treatment=[NOACTION]
    constraints=[EncapsulationConstraint{encapType=VLAN}]
    ingress=of:00000000000000020000000000000004/1, egress=[of:00000000000000040000000000000003/21]
id=0x10xa0, state=INSTALLED, key=VPLS2VPLS1-brc-of:00000000000000040000000000000001-21-FF:FF:FF:FF:FF:FF, type=SinglePointToMultiPointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:FF:FF:FF:FF:FF:FF]
    treatment=[NOACTION]
ingress=of:0000000000000004/2, egress=[    ingress=of:0000000000000001/1, egress=[of:0000000000000005/1, of:0000000000000006/1, of:0000000000000002/1]
id=0x100xa2, state=INSTALLED, key=VPLS2VPLS1-unibrc-of:0000000000000002-1-00FF:00FF:00FF:00FF:00FF:05FF, type=MultiPointToSinglePointIntentSinglePointToMultiPointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00FF:00FF:00FF:00FF:00FF:05FF]
    treatment=[NOACTION]
ingress=[of:0000000000000004/2], egress=of:0000000000000002/1
id=0x11    ingress=of:0000000000000002/1, egress=[of:0000000000000005/1, of:0000000000000006/1, of:0000000000000001/1]
id=0xa4, state=INSTALLED, key=VPLS2VPLS1-uni-of:00000000000000040000000000000005-21-00:00:00:00:00:0405, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls
    selector=[ETH_DST:00:00:00:00:00:0405]
    treatment=[NOACTION]
    ingress=[of:0000000000000006/1, of:0000000000000001/1, of:0000000000000002/1], egress=of:00000000000000040000000000000005/21
  • Are intents installed?

    • 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

...

  • , flows -s for a summary


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