...
Code Block | ||
---|---|---|
| ||
{ "ports": { "of:0000000000000001/1": { "interfaces": [ { "name": "vpls1h1", "vlan": "10" } ] }, "of:0000000000000004/1": { "interfaces": [ { "name": "vpls1h2", "vlan": "10" } ] }, "of:0000000000000004/2": { "interfaces": [ { "name": "vpls2h1", "vlan": "30" } ] }, "of:0000000000000003/1": { "interfaces": [ { "name": "vpls1h3", "vlan": "20" } ] }, "of:0000000000000002/1": { "interfaces": [ { "name": "vpls2h2", "vlan": "40" } ] } }, "apps" : { "org.onosproject.vpls" : { "vpls" : { "vplsNetworks" : [ { "name" : "VPLS1", "interfaces" : ["vpls1h1", "vpls1h2", "vpls1h3"], "encapsulation" : "VLAN" ###### Encapsulation can be set optionally to VLAN,MPLS or left to NONE }, { "name" : "VPLS2", "interfaces" : ["vpls2h1", "vpls2h2"] } ] } } } } |
The same result can be achieved at run-time, using the interface configuration and VPLS CLI commands as follows (see section "CLI syntax" for more details):
Code Block | ||
---|---|---|
| ||
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-set-encap VLPS1 VLAN
onos> vpls-add VPLS2
onos> vpls-add-iface VPLS2 vpls2h1
onos> vpls-add-iface VPLS2 vpls2h2 |
...
Code Block | ||
---|---|---|
| ||
# Adds a new network
onos> vpls-add $VPLS_NETWORK
# Removes an existing network
onos> vpls-del $VPLS_NETWORK
# Shows the list of networks
onos> vpls-list
VPLS2
VPLS1
# Shows the list of attached interfaces (for a given network) or all the list of networks and interfaces in each of them (if no network is provided)
onos> vpls-show [$VPLS_NETWORK]
VPLS2: interface=[vpls2h1, vpls2h2]
VPLS1: interface=[vpls1h1, vpls1h2, vpls1h3]
# Encapsulation (optional)
onos> vpls-set-encap $VPLS_NETWORK {VLAN|MPLS|NONE} |
Code Block | ||
---|---|---|
| ||
# Adds an existing interface (in netcfg) to an existing network onos> vpls-add-iface $VPLS_NETWORK $INTERFACE_NAME # Removes an existing interface from an existing network onos> vpls-del-iface $VPLS_NETWORK $INTERFACE_NAME |
Code Block | ||
---|---|---|
| ||
# Cleans the status of the VPLS application (i.e., removes networks, detaches interfaces and withdraws intents) onos> vpls-clean |
...
Issues and Troubleshooting
...
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 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:exception-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):
...
Code Block | ||
---|---|---|
| ||
onos> hosts id=00:00:00:00:00:01/10, mac=00:00:00:00:00:01, location=of:0000000000000001/1, vlan=10, ip(s)=[10.0.0.1], configured=false id=00:00:00:00:00:02/10, mac=00:00:00:00:00:02, location=of:0000000000000004/1, vlan=10, ip(s)=[10.0.0.2], configured=false id=00:00:00:00:00:03/20, mac=00:00:00:00:00:03, location=of:0000000000000003/1, vlan=20, ip(s)=[10.0.0.3], configured=false id=00:00:00:00:00:04/30, mac=00:00:00:00:00:04, location=of:0000000000000004/2, vlan=30, ip(s)=[10.0.0.4], configured=false id=00:00:00:00:00:05/40, mac=00:00:00:00:00:05, location=of:0000000000000002/1, vlan=40, ip(s)=[10.0.0.5], configured=false |
...
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.
Code Block | ||
---|---|---|
| ||
onos> intents id=0x0, state=INSTALLED, key=VPLS2-brc-of:0000000000000002-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:0000000000000002/1, egress=[of:0000000000000004/2] id=0x1, state=INSTALLED, key=VPLS2-brc-of:0000000000000004-2-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=[of:0000000000000002/1] id=0x10, state=INSTALLED, key=VPLS2-uni-of:0000000000000002-1-00:00:00:00:00:05, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls selector=[ETH_DST:00:00:00:00:00:05] treatment=[NOACTION] ingress=[of:0000000000000004/2], egress=of:0000000000000002/1 id=0x11, state=INSTALLED, key=VPLS2-uni-of:0000000000000004-2-00:00:00:00:00:04, type=MultiPointToSinglePointIntent, appId=org.onosproject.vpls selector=[ETH_DST:00:00:00:00:00:04] treatment=[NOACTION] ingress=[of:0000000000000002/1], egress=of:0000000000000004/2 |
...