Versions Compared

Key

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

...

  • NetconfController.java, implemented by NetconfControllerImpl.java: tracks all the NETCONF devices, serves as a one stop for connecting and obtaining a device and (un)register listeners on device events.

  • NetconfDevice.java implemented by NetconfDeviceImpl.java: represents a NETCONF capable device connected to the ONOS core with his own NetconfSession and his informations saved in an instance of NetconfDeviceInfo
  • NetconfSession.java: interface that every type of transport connection to a NETCONF device must implement, represents the single access point for any operation on the device. An example is NetconfSessionImpl: uses an SSH2 Connection and Session to exchange information and perform operations like get/set-config with the physical NETCONF device.
  • NetconfDeviceProvider.java: manages any NETCONF device role and all the interactions with the ONOS core.
  • NetconfDeviceListener.java implemented by InnerNetconfDeviceListener.java in NetconfDeviceProvider: informs the provider in the ONOS core that a NETCONF device is connected/disconnected.
  • NetconfDeviceInfo.java: contains ip,port,protocol,username,password and DeviceId of a NETCONF device; it's used to exchange information about a device without having to pass the device instance itself.
  • XMLConfigParser.java: parser for reading and producing XML files to and from the NETCONF device. For now has only configuration reader and edit controllers configuration producer.

Connect your own device to ONOS

Once you have your device Running on some IP address and some port, in order to make ONOS see it you should follow these steps.

  • start ONOS
  • activate the netconf app :

    Code Block
    onos> app activate org.onosproject.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.

Example: Get and Set Controllers.

...

Code Block
onos> device-setcontrollers

Example: Testing infrastructure

To test locally (not on real switches) the NETCONF implementation you need the Mininet machine with of-config installed (link to mininet machine).

...

  • Start the Mininet machine with of-config installed under Virtual-Box
  • [Optional] 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 
  • 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
  • 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. Th 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:mininet@10.1.9.24:830

...