Configuring NETCONF
NETCONF is a network configuration and management protocol based on XML.
NETCONF protocol uses XML for configuration data and protocol message encoding, using RPC and Client/Server mechanism to update, install or delete the relevant part of the device configuration or all the management information.
Currently, we support <get>, <get-config>, <get-schema> and <edit-config>.
Enable NETCONF on switch:
admin@XorPlus# set protocols netconf admin@XorPlus# commit Commit OK. Save done. admin@XorPlus#
Delete NETCONF configuration on switch:
admin@XorPlus# delete protocols netconf Deleting: netconf { } OK admin@XorPlus# commit Commit OK. Save done.
YANG is a data modeling language used to model configuration and state data manipulated by NETCONF.
You can find the YANG module file of different modules on your switch under the directory "/pica/bin/netconf/data-models".
admin@XorPlus$pwd /pica/bin/netconf/data-models admin@XorPlus$ admin@XorPlus$ls -lt *.yang -rw-r--r-- 1 root xorp 2075 Jul 13 2016 arp.yang -rw-r--r-- 1 root xorp 1143 Jul 13 2016 bfd.yang -rw-r--r-- 1 root xorp 7767 Jul 13 2016 bgp.yang -rw-r--r-- 1 root xorp 5612 Jul 13 2016 cos.yang -rw-r--r-- 1 root xorp 2160 Jul 13 2016 dhcp.yang -rw-r--r-- 1 root xorp 3030 Jul 13 2016 dot1x.yang -rw-r--r-- 1 root xorp 13460 Jul 13 2016 firewall.yang -rw-r--r-- 1 root xorp 16760 Jul 13 2016 ietf-inet-types.yang -rw-r--r-- 1 root xorp 18034 Jul 13 2016 ietf-yang-types.yang -rw-r--r-- 1 root xorp 1529 Jul 13 2016 igmp.yang -rw-r--r-- 1 root xorp 2657 Jul 13 2016 igmpsnooping.yang -rw-r--r-- 1 root xorp 41585 Jul 13 2016 interface.yang -rw-r--r-- 1 root xorp 4991 Jul 13 2016 ipfix.yang -rw-r--r-- 1 root xorp 1147 Jul 13 2016 lacp.yang -rw-r--r-- 1 root xorp 3432 Jul 13 2016 lldp.yang -rw-r--r-- 1 root xorp 781 Jul 13 2016 mfea.yang -rw-r--r-- 1 root xorp 18188 Jul 13 2016 mstp.yang -rw-r--r-- 1 root xorp 4673 Jul 13 2016 neighbour.yang -rw-r--r-- 1 root xorp 7835 Jul 13 2016 ospfv2.yang -rw-r--r-- 1 root xorp 5512 Jul 13 2016 ospfv3.yang -rw-r--r-- 1 root xorp 3408 Jul 13 2016 ovsdb.yang -rw-r--r-- 1 root xorp 4202 Jul 13 2016 pim.yang -rw-r--r-- 1 root xorp 8203 Jul 13 2016 policy.yang -rw-r--r-- 1 root xorp 3954 Jul 13 2016 rip.yang -rw-r--r-- 1 root xorp 3031 Jul 13 2016 ripng.yang -rw-r--r-- 1 root xorp 4624 Jul 13 2016 sflow.yang -rw-r--r-- 1 root xorp 1207 Jul 13 2016 snmp.yang -rw-r--r-- 1 root xorp 2666 Jul 13 2016 static-routes.yang -rw-r--r-- 1 root xorp 1670 Jul 13 2016 stm.yang -rw-r--r-- 1 root xorp 1666 Jul 13 2016 udld.yang -rw-r--r-- 1 root xorp 2747 Jul 13 2016 vlan-interface.yang -rw-r--r-- 1 root xorp 6063 Jul 13 2016 vlans.yang -rw-r--r-- 1 root xorp 1747 Jul 13 2016 vrrp.yang -rw-r--r-- 1 root xorp 6423 Jul 13 2016 vxlans.yang -rw-r--r-- 1 root xorp 4186 Jul 13 2016 xovs.yang
Example of VLAN configuration via NETCONF use <edit-config>:
Step 1: Create an XML file according the vlan.yang for RPC request to create VLAN136:
<vlans xmlns="http://pica8.com/xorplus/vlans"> <vlan-id> <id>136</id> <description/> <vlan-name>default</vlan-name> <l3-interface>vlan136</l3-interface> </vlan-id> </vlans>
Step 2: Display the configuration on switch after the client sending an RPC request.
The configuration has been changed by user root DELTAS: vlans { vlan-id 136 { description: "" vlan-name: "default" l3-interface: "vlan136" } } admin@XorPlus# show | display set set protocols netconf set vlans vlan-id 136 l3-interface "vlan136"
Now, we only support get the system's version information and vxlan information via NETCONF <get> function.
Example of get the system's version information via NETCONF use <get>:
Display the RPC reply after the client sending an RPC request.
<version xmlns="http://pica8.com/xorpplus/version"> <mac_address>48:0f:cf:af:70:3b</mac_address> <hardware_mode>HP5712</hardware_mode> <system_version>2.8.0/aeec598</system_version> <system_released_date>10/13/2016</system_released_date> <L2_L3_version>2.8.0/aeec598</L2_L3_version> <L2_L3_released_date>10/13/2016</L2_L3_released_date> </version>
NETCONF client
About NETCONF client, you can use ncclient which is python lib now.
If you use ncclient, you must modify the rpc.py : add two lines codes to work with pica8 switch.
Edit the rpc.py
file to contain the followings before the statement ‘self._session.send(req)’:
req = req.replace('nc:','')
req = req.replace(':nc','')
Get .yang or .yin File
The administrator can use get-schema operation to retrieve the .yang or .yin data file information on the PICA8 switch. For details about get-schema operation, see RFC6022 YANG Module for NETCONF Monitoring.
In the following example, the user builds the testgetschema.py script on ncclient. The script uses the get-schema operation to get the information from the vlans.yang file on the PICA8 switch.
[ncclient] $ vi testgetschema.py from ncclient import manager import sys host=sys.argv[1] mgr = manager.connect(host=host, port=830, username='admin', password='pica8', hostkey_verify=False) elem = mgr.get_schema(identifier='vlans') with open("%s.xml" % host, 'w') as f: f.write(str(elem)) mgr.close_session()
Run the testgetschema.py script on ncclient. By issuing the get-schema command and receiving the reply from the PICA8 switch, we can get the vlans.yang module file information displayed as follows:
module vlans { namespace "http://pica8.com/xorplus/vlans"; prefix vlans; // import some basic types import ietf-yang-types { prefix yang; } organization "PICA8, Inc"; description "This module is data model for vlans configuration"; revision 2015-12-25 { description "Initial revision."; } container vlans { description "Vlan configuration."; list vlan-id { description "VLAN tag identifier, range 1-4094, e.g. 2,3,5-100."; key "id"; leaf id { type string; } leaf description { description "Vlan description."; type string; default ""; } leaf vlan-name { description "VLAN name, up to 32 alphanumeric characters in length."; type string; default "default"; } leaf l3-interface { description "Associate a Layer 3 interface with an existing VLAN."; type string; default ""; } leaf open-flow-enable { description "Vlan will be used by open flow, maximum of 200 vlans enabled."; type boolean; default 'false'; } } ........ } }
Copyright © 2025 Pica8 Inc. All Rights Reserved.