Page tree
Skip to end of metadata
Go to start of metadata


 


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