Versions Compared

Key

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

...

Code Block
titlenetwork-cfg example
{ 
  "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
titleCLI configuration example
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
titleOperations on networks
# 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
titleOperations on interfaces
# 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
titleGeneral operations
# 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
titleExample of output for the hosts command in ONOS
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
titleExample of output for the intents command in ONOS, related to network VPLS2
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

...