...
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) | h6 | 0000000000000006 | 1 |
VPLS2 | 300 | h3 | 0000000000000003 | 1 |
VPLS2 | 400 | h4 | 0000000000000004 | 1 |
...
Code Block | ||
---|---|---|
| ||
# Creates a new networkVPLS onos> vpls create {$VPLS_NAME} # Deletes an existing networkVPLS onos> vpls del {$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 | ||
---|---|---|
| ||
# 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 Have the hosts been discovered correctly by ONOS? If a host start to send 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 | ||
---|---|---|
| ||
onos> hosts id=00:00:00:00:00:01/10100, mac=00:00:00:00:00:01, location=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, location=of:00000000000000040000000000000002/1, vlan=10200, ip(s)=[10.0.0.2], name=h2, latitude=42.756945, longitude=-79.831317, configured=false id=00:00:00:00:00:03/20300, mac=00:00:00:00:00:03, location=of:0000000000000003/1, vlan=20300, ip(s)=[10.0.0.3], configured=false id=00:00: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, location=of:0000000000000004/21, vlan=30400, ip(s)=[10.0.0.4], 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, location=of:00000000000000020000000000000005/1, vlan=40None, ip(s)=[10.0.0.5], name=h5, configured=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.
latitude=33.224634, longitude=-121.532943, configured=false
id=00:00:00:00:00:06/None, mac=00:00:00:00:00:06, location=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 | ||
---|---|---|
| ||
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 | ||
| ||
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