...
- Start the Mininet machine with of-config installed under Virtual-Box
[Optional] If you are running one ONOS instance outside of localhost (127.0.0.1), set a controller with the set controller command. For example, you will have a different IP for your ONOS instance.
Code Block mininet-vm:~$ sudo ovs-vsctl set-controller ofc-bridge tcp:10.128.12.1:6653
[Optional] If you are running multiple external ONOS instances,
Code Block mininet-vm:~$ sudo ovs-vsctl set-controller ofc-bridge tcp:10.128.12.1:6653 tcp:10.128.12.2:6653 tcp: 10.128.12.3:6653
Start the ofc-server in the Mininet machine
Code Block mininet-vm:~$ sudo ofc-server -v 3 -f
- start ONOS
activate the netconf app :
Code Block onos> app activate org.onosproject.netconf
activate the netconf drivers :
Code Block onos> app activate org.onosproject.drivers.netconf
give ONOS the information to connect to the device and which driver to use for it in the $ONOS_ROOT/tools/test/configs/netconf-cfg.json file. Change the IP both in the DeviceId at the top and in the devices array. The port number by default on NETCONF is 830, so unless you made any changes to that leave it as is.
upload the configuration you just modified to the instance of ONOS you are running, in our case localhost:
Code Block <your_machine>~$ curl -X POST -H "content-type:application/json" http://localhost:8181/onos/v1/network/configuration -d @$ONOS_ROOT/tools/test/configs/netconf-cfg.json --user onos:rocks
or
Code Block <your_machine>~$ onos-netcfg localhost $ONOS_ROOT/tools/test/configs/netconf-cfg.json
open the onos logs
for localhost logs
Code Block <your_machine>~$ tl
or for remote logs
Code Block <your_machine>~$ ol
verify that the logs don't contain NETCONF related exceptions and this warning does not appear:
Code Block | WARN | event-dispatch-0 | NetconfDeviceProvider | 186 - org.onosproject.onos-netconf-provider-device - 1.4.0.SNAPSHOT | Can't connect to NETCONF device on <ip>:<port>
In case the log is preset it means that the device was not able to reply on the given IP and Port. Verify Ip and Port in the Json file you posted and retry. If any other exception is present, such as no device name, please read the log and react to it accordingly.
Call the command or run the app you have written. For example:
Code Block onos> device-controllers netconf:@10.1.9.24:830
...
Fault Management
If you start a subscription to a device with createSubscription, ONOS will receive <notification> XML messages from the NETCONF device. NetconfAlarmProvider and NetconfAlarmTranslator translate these notification messages into alarms, as they are defined in Alarm.java, and notifies the core about the new alarms. For more information about fault management, refer to NETCONF Fault Management.
Future Work
There is much room for improvement and testing, this is only a basic skeleton of the infrastructure. The improvement should be focused on extracting the XML that is now encoded in the NetconfSessionImpl's methods and testing each operation. In the future the XML can be generated through YANG models so it can be specific for every type of device we want to connect.
...