1. Configuration

There are two physical Cassini devices in the office of ONF at Menlo Park, CA, whose IPs are 10.128.200.2 and 10.128.200.3 respectively. 

1.1 Node configuration

{
  "devices" : {
    "netconf:10.128.200.3:830" : {
      "basic" : {
        "name":"cassini2",
	    "driver":"cassini-ocnos"
      },
      "netconf" : {
        "ip" : "10.128.200.3",
        "port" : "830",
        "username" : "root",
        "password" : "cobbler",
        "idle-timeout" : "0"
      }
    },
    "netconf:10.128.200.2:830" : {
      "basic" : {
        "name":"cassini1",
	    "driver":"cassini-ocnos"
      },
      "netconf" : {
        "ip" : "10.128.200.2",
        "port" : "830",
        "username" : "root",
        "password" : "cobbler",
        "idle-timeout" : "0"
      }
    }
  }
}


1.2 Link configuration

There are only two line-side connections between these two optical devices.

{
    "links": {
        "netconf:10.128.200.2:830/201-netconf:10.128.200.3:830/201": {
            "basic" : {
                "type": "OPTICAL",
                "metric": 1,
		        "bidirectional": true
            }
        },
	    "netconf:10.128.200.2:830/209-netconf:10.128.200.3:830/210": {
            "basic" : {
                "type": "OPTICAL",
                "metric": 1,
		        "bidirectional": true
            }
        }
    }
}


2. ONOS setup and connectivity operations with STC

More details about related STC commands, please see ODTN with STC.

In the directory "${HOME}/odtn-demo/cassini-demo/config", there are three mandatory files listed below:

  • "net-summary.json" - The one-line file that contains the statistical json about the topology as follows:

    {"device_num":"2","port_num":"48","link_num":"4"}
  • "openconfig-device-cassini-test.json" - This file contains the node information as 1.1 Node configuration shows.
  • "openconfig-device-cassini-test-link.json" - This file contains the link information as 1.2 Link configuration shows.

Before the STC commands are executed, we need to modify file net-setup-odtn.xml to add some related topology configurations, which is shown as follows:

--- a/tools/test/scenarios/net-setup-odtn.xml
+++ b/tools/test/scenarios/net-setup-odtn.xml
@@ -41,7 +41,7 @@
     <!-- include 2 or more docker emulators to setup the network for phase 1.0-->
     <group name="ODTN-Net-Setup.Init-network" requires="ODTN-Net-Setup.Verify-Logs-1">
       <step name="ODTN-Net-Setup.Start-emulators" exec="docker-compose -f /home/sdn/emulator/docker-compose.yaml up -d"/>
-      <step name="ODTN-Net-Setup.Generate-cfg-files" requires="ODTN-Net-Setup.Start-emulators" exec="${ONOS_SCENARIOS}/odtn/createNetCfg.sh"/>
+      <step name="ODTN-Net-Setup.Generate-cfg-files" requires="ODTN-Net-Setup.Start-emulators" exec="${ONOS_SCENARIOS}/odtn/createNetCfg.sh ${HOME}/odtn-demo/cassini-demo/config/openconfig-device-cassini-test.json ${HOME}/odtn-demo/cassini-demo/config/openconfig-device-cassini-test-link.json ${HOME}/odtn-demo/cassini-demo/config/net-summary.json"/>
       <step name="ODTN-Net-Setup.Put-nodes" requires="ODTN-Net-Setup.Generate-cfg-files" exec="onos-netcfg ${OC1} /tmp/odtn/openconfig-devices.json"/>
       <group name="ODTN-Net-Setup.Wait-nodes" requires="ODTN-Net-Setup.Put-nodes">
         <parallel var="${OC#}">

Optional

Optionally, you can also remove Step "ODTN-Net-Setup.Start-emulators" in file net-setup-odtn.xml. This step starts the Cassini emulators, and is no longer necessary in the scenario with physical equipment. 


2.1 ONOS setup

The command listed below set up a ONOS cluster with 3 instances, and complete topology discovery.

stc net-odtn-presmoke && stc -ENV_DEFAULT=/tmp/odtn/OCvar.sh net-setup-odtn

Then we can see the topology configuration as follows:

sdn@root > nodes                                                                       21:43:13
id=172.17.0.5, address=172.17.0.5:9876, state=READY, version=2.1.0.aee634ef54, updated=41m25s ago *
id=172.17.0.6, address=172.17.0.6:9876, state=READY, version=2.1.0.aee634ef54, updated=41m24s ago
id=172.17.0.7, address=172.17.0.7:9876, state=READY, version=2.1.0.aee634ef54, updated=41m26s ago

sdn@root > devices                                                                     21:06:06
id=netconf:10.128.200.2:830, available=true, local-status=connected 1m31s ago, role=MASTER, type=TERMINAL_DEVICE, mfr=EDGECORE, hw=Cassini, sw=OcNOS, serial=, chassis=1, driver=cassini-ocnos, ipaddress=10.128.200.2, locType=none, name=cassini1, port=830, protocol=NETCONF
id=netconf:10.128.200.3:830, available=true, local-status=connected 1m31s ago, role=MASTER, type=TERMINAL_DEVICE, mfr=EDGECORE, hw=Cassini, sw=OcNOS, serial=, chassis=1, driver=cassini-ocnos, ipaddress=10.128.200.3, locType=none, name=cassini2, port=830, protocol=NETCONF

sdn@root > links                                                                       21:06:09
src=netconf:10.128.200.2:830/201, dst=netconf:10.128.200.3:830/201, type=OPTICAL, state=ACTIVE, metric=1.0, expected=false
src=netconf:10.128.200.2:830/209, dst=netconf:10.128.200.3:830/210, type=OPTICAL, state=ACTIVE, metric=1.0, expected=false
src=netconf:10.128.200.3:830/201, dst=netconf:10.128.200.2:830/201, type=OPTICAL, state=ACTIVE, metric=1.0, expected=false
src=netconf:10.128.200.3:830/210, dst=netconf:10.128.200.2:830/209, type=OPTICAL, state=ACTIVE, metric=1.0, expected=false

sdn@root > ports                                                                       21:06:10
id=netconf:10.128.200.2:830, available=true, local-status=connected 1m41s ago, role=MASTER, type=TERMINAL_DEVICE, mfr=EDGECORE, hw=Cassini, sw=OcNOS, serial=, chassis=1, driver=cassini-ocnos, ipaddress=10.128.200.2, locType=none, name=cassini1, port=830, protocol=NETCONF
  port=101, state=enabled, type=packet, speed=100000 , oc-logical-channel=10101, oc-name=xe1/1, odtn-connection-id=connection:1, odtn-port-type=client, onos-index=101
  port=102, state=enabled, type=packet, speed=100000 , oc-logical-channel=10201, oc-name=xe2/1, odtn-connection-id=connection:2, odtn-port-type=client, onos-index=102
  port=103, state=enabled, type=packet, speed=100000 , oc-logical-channel=10301, oc-name=xe3/1, odtn-connection-id=connection:3, odtn-port-type=client, onos-index=103
  port=104, state=enabled, type=packet, speed=100000 , oc-logical-channel=10401, oc-name=xe4/1, odtn-connection-id=connection:4, odtn-port-type=client, onos-index=104
  port=105, state=enabled, type=packet, speed=100000 , oc-logical-channel=10501, oc-name=xe5/1, odtn-connection-id=connection:5, odtn-port-type=client, onos-index=105
  port=106, state=enabled, type=packet, speed=100000 , oc-logical-channel=10601, oc-name=xe6/1, odtn-connection-id=connection:6, odtn-port-type=client, onos-index=106
  port=107, state=enabled, type=packet, speed=100000 , oc-logical-channel=10701, oc-name=xe7/1, odtn-connection-id=connection:7, odtn-port-type=client, onos-index=107
  port=108, state=enabled, type=packet, speed=100000 , oc-logical-channel=10801, oc-name=xe8/1, odtn-connection-id=connection:8, odtn-port-type=client, onos-index=108
  port=109, state=enabled, type=packet, speed=100000 , oc-logical-channel=10901, oc-name=xe9/1, odtn-connection-id=connection:9, odtn-port-type=client, onos-index=109
  port=110, state=enabled, type=packet, speed=100000 , oc-logical-channel=11001, oc-name=xe10/1, odtn-connection-id=connection:10, odtn-port-type=client, onos-index=110
  port=111, state=enabled, type=packet, speed=100000 , oc-logical-channel=11101, oc-name=xe11/1, odtn-connection-id=connection:11, odtn-port-type=client, onos-index=111
  port=112, state=enabled, type=packet, speed=100000 , oc-logical-channel=11201, oc-name=xe12/1, odtn-connection-id=connection:12, odtn-port-type=client, onos-index=112
  port=201, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20101, oc-name=oe1/1, odtn-connection-id=connection:1, odtn-port-type=line, onos-index=201, signalType=ODU4, tunable=true
  port=202, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20102, oc-name=oe1/2, odtn-connection-id=connection:2, odtn-port-type=line, onos-index=202, signalType=ODU4, tunable=true
  port=203, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20201, oc-name=oe2/1, odtn-connection-id=connection:3, odtn-port-type=line, onos-index=203, signalType=ODU4, tunable=true
  port=204, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20202, oc-name=oe2/2, odtn-connection-id=connection:4, odtn-port-type=line, onos-index=204, signalType=ODU4, tunable=true
  port=205, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20301, oc-name=oe3/1, odtn-connection-id=connection:5, odtn-port-type=line, onos-index=205, signalType=ODU4, tunable=true
  port=206, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20302, oc-name=oe3/2, odtn-connection-id=connection:6, odtn-port-type=line, onos-index=206, signalType=ODU4, tunable=true
  port=207, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20401, oc-name=oe4/1, odtn-connection-id=connection:7, odtn-port-type=line, onos-index=207, signalType=ODU4, tunable=true
  port=208, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20402, oc-name=oe4/2, odtn-connection-id=connection:8, odtn-port-type=line, onos-index=208, signalType=ODU4, tunable=true
  port=209, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20501, oc-name=oe5/1, odtn-connection-id=connection:9, odtn-port-type=line, onos-index=209, signalType=ODU4, tunable=true
  port=210, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20502, oc-name=oe5/2, odtn-connection-id=connection:10, odtn-port-type=line, onos-index=210, signalType=ODU4, tunable=true
  port=211, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20601, oc-name=oe6/1, odtn-connection-id=connection:11, odtn-port-type=line, onos-index=211, signalType=ODU4, tunable=true
  port=212, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20602, oc-name=oe6/2, odtn-connection-id=connection:12, odtn-port-type=line, onos-index=212, signalType=ODU4, tunable=true
id=netconf:10.128.200.3:830, available=true, local-status=connected 1m41s ago, role=MASTER, type=TERMINAL_DEVICE, mfr=EDGECORE, hw=Cassini, sw=OcNOS, serial=, chassis=1, driver=cassini-ocnos, ipaddress=10.128.200.3, locType=none, name=cassini2, port=830, protocol=NETCONF
  port=101, state=enabled, type=packet, speed=100000 , oc-logical-channel=10101, oc-name=xe1/1, odtn-connection-id=connection:1, odtn-port-type=client, onos-index=101
  port=102, state=enabled, type=packet, speed=100000 , oc-logical-channel=10201, oc-name=xe2/1, odtn-connection-id=connection:2, odtn-port-type=client, onos-index=102
  port=103, state=enabled, type=packet, speed=100000 , oc-logical-channel=10301, oc-name=xe3/1, odtn-connection-id=connection:3, odtn-port-type=client, onos-index=103
  port=104, state=enabled, type=packet, speed=100000 , oc-logical-channel=10401, oc-name=xe4/1, odtn-connection-id=connection:4, odtn-port-type=client, onos-index=104
  port=105, state=enabled, type=packet, speed=100000 , oc-logical-channel=10501, oc-name=xe5/1, odtn-connection-id=connection:5, odtn-port-type=client, onos-index=105
  port=106, state=enabled, type=packet, speed=100000 , oc-logical-channel=10601, oc-name=xe6/1, odtn-connection-id=connection:6, odtn-port-type=client, onos-index=106
  port=107, state=enabled, type=packet, speed=100000 , oc-logical-channel=10701, oc-name=xe7/1, odtn-connection-id=connection:7, odtn-port-type=client, onos-index=107
  port=108, state=enabled, type=packet, speed=100000 , oc-logical-channel=10801, oc-name=xe8/1, odtn-connection-id=connection:8, odtn-port-type=client, onos-index=108
  port=109, state=enabled, type=packet, speed=100000 , oc-logical-channel=10901, oc-name=xe9/1, odtn-connection-id=connection:9, odtn-port-type=client, onos-index=109
  port=110, state=enabled, type=packet, speed=100000 , oc-logical-channel=11001, oc-name=xe10/1, odtn-connection-id=connection:10, odtn-port-type=client, onos-index=110
  port=111, state=enabled, type=packet, speed=100000 , oc-logical-channel=11101, oc-name=xe11/1, odtn-connection-id=connection:11, odtn-port-type=client, onos-index=111
  port=112, state=enabled, type=packet, speed=100000 , oc-logical-channel=11201, oc-name=xe12/1, odtn-connection-id=connection:12, odtn-port-type=client, onos-index=112
  port=201, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20101, oc-name=oe1/1, odtn-connection-id=connection:1, odtn-port-type=line, onos-index=201, signalType=ODU4, tunable=true
  port=202, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20102, oc-name=oe1/2, odtn-connection-id=connection:2, odtn-port-type=line, onos-index=202, signalType=ODU4, tunable=true
  port=203, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20201, oc-name=oe2/1, odtn-connection-id=connection:3, odtn-port-type=line, onos-index=203, signalType=ODU4, tunable=true
  port=204, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20202, oc-name=oe2/2, odtn-connection-id=connection:4, odtn-port-type=line, onos-index=204, signalType=ODU4, tunable=true
  port=205, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20301, oc-name=oe3/1, odtn-connection-id=connection:5, odtn-port-type=line, onos-index=205, signalType=ODU4, tunable=true
  port=206, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20302, oc-name=oe3/2, odtn-connection-id=connection:6, odtn-port-type=line, onos-index=206, signalType=ODU4, tunable=true
  port=207, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20401, oc-name=oe4/1, odtn-connection-id=connection:7, odtn-port-type=line, onos-index=207, signalType=ODU4, tunable=true
  port=208, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20402, oc-name=oe4/2, odtn-connection-id=connection:8, odtn-port-type=line, onos-index=208, signalType=ODU4, tunable=true
  port=209, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20501, oc-name=oe5/1, odtn-connection-id=connection:9, odtn-port-type=line, onos-index=209, signalType=ODU4, tunable=true
  port=210, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20502, oc-name=oe5/2, odtn-connection-id=connection:10, odtn-port-type=line, onos-index=210, signalType=ODU4, tunable=true
  port=211, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20601, oc-name=oe6/1, odtn-connection-id=connection:11, odtn-port-type=line, onos-index=211, signalType=ODU4, tunable=true
  port=212, state=enabled, type=och, speed=100000 , lambda={"channelSpacing":"CHL_50GHZ","gridType":"DWDM","slotGranularity":4,"spacingMultiplier":1}, oc-logical-channel=20602, oc-name=oe6/2, odtn-connection-id=connection:12, odtn-port-type=line, onos-index=212, signalType=ODU4, tunable=true


2.2 Connectivity operations and testing

Different from the scenario with emulators, we need to testing whether the created client-side connection works on this page. So, we don't use command "stc -ENV_DEFAULT=/tmp/odtn/OCvar.sh net-odtn-restconf" directly.


2.2.1 Add hosts to the network

Firstly, we use the commands shown below to add two hosts to the network:

cd ${HOME}/odtn-demo/cassini-demo
source /tmp/odtn/OCvar.sh
sudo ./name-space.sh h1 ens6f0 2 10.0.0.1
sudo ./name-space.sh h2 ens6f1 2 10.0.0.2
curl -X POST --user onos:rocks --header 'Content-Type: application/json' --header 'Accept: application/json' -d@h1.json http://${OC1}:8181/onos/v1/hosts
curl -X POST --user onos:rocks --header 'Content-Type: application/json' --header 'Accept: application/json' -d@h2.json http://${OC1}:8181/onos/v1/hosts

Then the two hosts could be found in ONOS:

sdn@root > hosts                                                                       22:02:17
id=3C:FD:FE:9E:6F:C8/2, mac=3C:FD:FE:9E:6F:C8, locations=[netconf:10.128.200.2:830/101], vlan=2, ip(s)=[10.0.0.1], innerVlan=None, outerTPID=unknown, provider=host:org.onosproject.rest, configured=true
id=3C:FD:FE:9E:6F:C9/2, mac=3C:FD:FE:9E:6F:C9, locations=[netconf:10.128.200.3:830/101], vlan=2, ip(s)=[10.0.0.2], innerVlan=None, outerTPID=unknown, provider=host:org.onosproject.rest, configured=true

We test ping between H1 and H2, and fails:

sdn@odtn:~/odtn-demo/cassini-demo$ sudo ip netns exec h1 ping -I ens6f0.2 10.0.0.2
PING 10.0.0.2 (10.0.0.2) from 10.0.0.1 ens6f0.2: 56(84) bytes of data.
^C
--- 10.0.0.2 ping statistics ---
29 packets transmitted, 0 received, 100% packet loss, time 28661ms


sdn@odtn:~/odtn-demo/cassini-demo$ sudo ip netns exec h2 ping -I ens6f1.2 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.2 ens6f1.2: 56(84) bytes of data.
^C
--- 10.0.0.1 ping statistics ---
54 packets transmitted, 0 received, 100% packet loss, time 54254ms


2.2.2 Creation


  • No labels