{{announcement.body}}
{{announcement.title}}

JMeter Netconf Plug-in and Network Service Automation

DZone 's Guide to

JMeter Netconf Plug-in and Network Service Automation

In this article, learn more about the JMeter Netconf plug-in and network service automation and see how the network service automation process is running in an example.

· Performance Zone ·
Free Resource

JMeter Netconf Plug-in and Network Service Automation

Network service automation-related requirements are usually realized by means of commercial or open-source network orchestrator or controller software system. However, for some temporary or urgent needs, software patch or version development, upgrade, and change are often involved, which sometimes makes network engineer feel like "to break a fly upon a wheel". In fact, it can be realized through a light-weight way, JMeter Netconf plug-in implementation and network service automation process customization without compiled code based on JMeter framework.

JMeter Netconf plug-in implementation includes two modules.

1. Netconf Client Module

Because the Netconf client just need the CRUD operations on the network device configuration data, so the plug-in only need support the following functions in the Netconf protocol stack: the configuration data in the content layer, all of the operation layer such as get-config, edit-config, etc., rpc, rpc-reply in the message layer, ssh in the secure transport layer.


2. JMeter Netconf Plug-In Module

JMeter online document has provided the guide about the plug-in development, the self-defined class, the related JMeter framework class and the relations between them have been described as follows.

Background framework class and self-defined class.


GUI related framework class and self-defined class.


With Netconf plug-in implemented above, we can use JMeter to customize the network service automation process without any compiled code. The network connection for the process is shown as follows, that is, through the JMeter with Netconf plug-in deployed on NMS(Network Management System) host, the network service configuration data can be deployed to the switches, routers or firewalls which support Netconf.


Here, we take the network device IP configuration scenario as an example to show how the network service automation process is running. Due to different Netconf/YANG model for different type of device provided by different network device vendor, there are usually some differences between the Netconf request messages from them. In the following example, we use IETF standard Netconf/YANG models to show the automation process and saved the process as a JMX file.

1. Input parameters

The JMeter framework provides parameter configuration GUI and the parameters can be invoked in the process. In the example, the network device login and the specified port information have been provided.


2. Device information collection and resource validation



With the information provided in step 1, the automation process will connect to the network device, query all ports resource information in it with get-config message through Netconf plug-in and verify the port specified exists or not in the response message.

3. Network service delivery


If step 2 is passed, the process will assemble the edit-config message according to the device information input in step 1 and the validated device port information in step 2, and send to the network device through the Netconf plug-in.

4. Result confirming

On JMeter side.


On device side.


JMeter has provided many kinds of protocol plug-ins such as HTTP, FTP, SNMP and several kinds of data processing plug-ins such as JSON, XML, etc., which can be used with Netconf plug-ins to realize most network service operations such as cross-system request, file transfer, and different data processing, and finally realize the E2E network service automation in a lightweight way.

Topics:
jmeter plugins, network automation, performance

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}