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