NETCONF¶
Overview¶
The NETCONF projects hosts multiple components relating to IETF’s NETCONF Working Group:
Northbound and southbound plugins for NETCONF protocol, as described in RFC-6241
Northbound plugin for RESTCONF protocol, as described in RFC-8040
Northnound plugin for descring RESTCONF endpoint in terms of OpenAPI 3.0
Behavior/Feature Changes¶
The transport layer of the NETCONF protocol implementation has been completely refactored. This effort has all but unified the ‘normal’ and ‘call-home’ mode of operation. This results in a more maintaintanable codebase with much easier feature parity between the two modes.
RESTCONF implementation has been been refactored to a large extent, taking advantage of JAX-RS asynchronous requests, so that operations on the datastore and NETCONF devices no longer pin the HTTP thread.
The OpenAPI component has been completely modernized. It is now based on Swagger UI vesion 5.13.0 and is memory usage has been brought under control.
New Features¶
No new features.
Deprecated and Removed Features¶
The odl-yanglib
experimental feature has been removed.
Resolved Issues¶
The following table lists the issues resolved in this release.
Type |
Key |
Summary |
Resolution |
Fix Version(s) |
---|---|---|---|---|
OpenAPI: invalid explorer redirection URL |
Done |
5.0.10, 6.0.8, 7.0.4 |
||
org.opendaylight.netconf.topology-singleton fails to resolve |
Done |
6.0.8, 7.0.4 |
||
ietf-yang-library:modules-state not available |
Done |
7.0.3 |
||
OpenAPI: Missing action input and output |
Done |
7.0.4 |
||
Cannot instantiate on RpcEffectiveStatementImpl… |
Done |
7.0.1 |
||
Cannot deserialize key value |
Done |
7.0.4 |
||
Cannot create new list resource with instance identifier key |
Done |
7.0.4 |
||
OpenAPI: Wrong path reference for netopeer2 models |
Done |
7.0.2 |
||
OpenAPI: netopeer2 duplicated mapping key |
Done |
7.0.2 |
||
Device’s reconnecting does not work |
Done |
7.0.0 |
||
The number of connection attemps is ignored |
Done |
7.0.0 |
||
Missing device’s connection status |
Done |
7.0.2 |
||
Callhome Device Remains ‘DISCONNECTED’ After Adding to Allowed Devices |
Done |
7.0.2 |
||
Full list delete fails when called on remote device via restconf |
Done |
7.0.4 |
||
OpenAPI: Iterate over models in SchemasStream |
Done |
7.0.0 |
||
OpenAPI: Iterate over models in PathsStream |
Done |
7.0.0 |
||
No implementation of subscribe-device-notification available |
Done |
7.0.2 |
||
Blocking call during NetconfDeviceSchemas acquisition |
Done |
7.0.0 |
||
OpenAPI: ignoring restconf settings |
Done |
5.0.10, 6.0.7, 7.0.2 |
||
NetconfDeviceNotificationService.registerNotificationListeners() is not implemented |
Done |
5.0.10, 6.0.6, 7.0.0 |
||
Improve error path for list items |
Done |
7.0.0 |
||
Given final block not properly padded. Such issues can arise if a bad key is used during decryption |
Won’t Do |
7.0.0 |
||
Input length must be multiple of 16 when decrypting with padded cipher |
Won’t Do |
7.0.0 |
||
NPE on topology create-device without credentials |
Done |
5.0.10, 6.0.6, 7.0.0 |
||
Update user-guide for for login-password removal |
Done |
7.0.0 |
||
Netconf device stays connected even when unavailable |
Done |
7.0.0 |
||
Adapt netconf testtool for login-password removal |
Done |
7.0.0 |
||
Invalid NETCONF message triggers unnecessary parsing of partial message |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
Duplicate ‘ignore-missing-schema-sources’ in the NETCONF node |
Done |
5.0.10, 6.0.6, 7.0.0 |
||
PUT request with insert=after cannot add last item into list |
Done |
5.0.10, 6.0.7, 7.0.2 |
||
OpenApi Remove processModule method from DefinitionGenerator |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
POST request with insert parameter fails if target URI points the list |
Done |
5.0.10, 6.0.8, 7.0.4 |
||
NetconfDeviceMount “Already initialized” error |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
OpenApi ignore min-elements conditions for list |
Done |
7.0.0 |
||
OpenAPI Generates Incorrect ‘min-elements’ for XML Leaf-List |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
netconf-client-mdsal emits useless namespace in filter |
Done |
5.0.8, 6.0.5, 7.0.0 |
||
OpenApi List show only string type for path parameters |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
OpenAPI generate multiple resources/subresources in POST request |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
OpenAPI POST request generates incorrect XML example payload |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
Create tests for POST “insert” query parameter |
Done |
7.0.0 |
||
RestconfSchemaService return 500 if model was not found |
Done |
4.0.9, 5.0.9, 6.0.5, 7.0.0 |
||
Unnecessary data change events for child-nodes-only |
Done |
6.0.4, 7.0.0 |
||
RESTCONF DataTreeChange notifications use incorrect format |
Done |
7.0.0 |
||
Incorrect subscription request URL |
Done |
6.0.3, 7.0.0 |
||
OpenApi: XML payload for RPC is missing namespace |
Done |
4.0.9, 5.0.8, 6.0.5, 7.0.0 |
||
Incorrect schema reference in root post link |
Done |
4.0.9, 5.0.8, 6.0.5, 7.0.0 |
||
(devices) POST returns 500 on data already exists |
Done |
5.0.10, 6.0.6, 7.0.0 |
||
netconf-testtool not building when GID too big |
Done |
7.0.0 |
||
Incorrect response for failed PATCH request |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
||
OpenApi: Remove incorrect list POST requests |
Done |
4.0.9, 5.0.10, 6.0.5, 7.0.0 |
Known Issues¶
The following table lists the known issues that exist in this release.
Type |
Key |
Summary |
Status |
Affected Version(s) |
Fix Version(s) |
---|---|---|---|---|---|
JSON RPC is broken in Calcium SR2 |
Resolved |
7.0.0, 7.0.10 |
7.0.11 |
||
Intermittent failures of SseClientServerTest |
Resolved |
7.0.4, 8.0.0 |
7.0.11, 8.0.3 |
||
IllegalStateException: Attempted to access unknown service ClientUserAuthService |
Resolved |
7.0.4, 8.0.2 |
6.0.9, 7.0.11, 8.0.3 |
||
OpenAPI: Fails to generate example for List with min-elements and leafref type child |
Resolved |
7.0.1, 7.0.10, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.8, 7.0.9, 8.0.0, 8.0.1, 8.0.2 |
7.0.10, 8.0.2 |
||
Missing default restconf NB config file |
Resolved |
5.0.10, 6.0.6, 7.0.0 |
6.0.9, 7.0.8, 8.0.0 |
||
Random failures of transport-ssh tests |
Resolved |
4.0.3, 4.0.9, 5.0.0, 5.0.10, 6.0.0, 6.0.8, 7.0.0, 7.0.7, 8.0.0 |
6.0.9, 7.0.8, 8.0.0 |
||
OpenApi: missing parameters for ROOT data GET |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.6, 7.0.7 |
7.0.11, 8.0.3 |
||
The tapi-topology’s RPCs outputs are missing |
Resolved |
7.0.4 |
7.0.5 |
||
Openapi: Missing schema for node processed by another parent |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.6, 7.0.7 |
7.0.8, 8.0.0 |
||
OpenAPI: Generate document for module without revision |
Resolved |
7.0.1, 7.0.2, 7.0.3, 7.0.4 |
7.0.5 |
||
Test Tool Fails Intermittently to Send Required Netconf Replies |
Resolved |
7.0.0 |
7.0.5 |
||
sal-remote create-notification-stream is not working |
Resolved |
7.0.0, 7.0.4, 8.0.0, 8.0.1 |
7.0.10, 8.0.2 |
||
NPE on GET rests/operations |
Resolved |
7.0.3, 7.0.4 |
7.0.5 |
||
openapi / swagger does not work for TransportPCE with controller resources |
Resolved |
7.0.3 |
7.0.5 |
||
Error 500 on Notification Stream Access for Netconf Device Subscriptions |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4 |
7.0.5 |
||
OpenAPI: not used “duplicated” schema |
Resolved |
7.0.3 |
7.0.5 |
||
Capabilities created for yang models without revision are unavailable |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4 |
7.0.5 |
||
Initial device connection fails due to unstable network conditions on device |
Resolved |
7.0.0 |
7.0.5 |
Resolved Issues in SR1¶
The following table lists the issues resolved in Service Release 1.
Type |
Key |
Summary |
Resolution |
Fix Version(s) |
---|---|---|---|---|
Intermittent failure to emit RESTCONF body |
Done |
7.0.7, 8.0.0 |
||
The tapi-topology’s RPCs outputs are missing |
Duplicate |
7.0.5 |
||
OpenAPI: Generate document for module without revision |
Done |
7.0.5 |
||
Test Tool Fails Intermittently to Send Required Netconf Replies |
Done |
7.0.5 |
||
MessageBodyWriter not found for OperationOutputBody |
Done |
7.0.5 |
||
MessageBodyWriter not found when using JaxRsFormattableBody |
Done |
7.0.5 |
||
NPE on GET rests/operations |
Done |
7.0.5 |
||
openapi / swagger does not work for TransportPCE with controller resources |
Done |
7.0.5 |
||
Redundant “/” sign in AbstractRestconfStreamRegistry#baseStreamLocation |
Done |
7.0.5 |
||
Error 500 on Notification Stream Access for Netconf Device Subscriptions |
Done |
7.0.5 |
||
OpenAPI: not used “duplicated” schema |
Done |
7.0.5 |
||
500 server error when trying to spawn new netconf connector |
Done |
7.0.5 |
||
Capabilities created for yang models without revision are unavailable |
Done |
7.0.5 |
||
Initial device connection fails due to unstable network conditions on device |
Done |
7.0.5 |
||
Problems with GET/POST/DELETE of list elements with key of type instance-identifier |
Done |
7.0.5 |
||
Incorrect operational state of device configuration with Invalid encrypted password |
Done |
6.0.7, 7.0.5 |
||
OpenApi: Refactor inconsistent naming of modelContext |
Done |
7.0.5 |
||
Openapi: Add ability to limit string example length |
Done |
6.0.8, 7.0.7, 8.0.0 |
||
Clean up restconf.server.api path handling |
Done |
7.0.5 |
||
Allow configuring odl-pretty-print to default to true |
Done |
7.0.5 |
||
OpenAPI: Update module revision docs |
Done |
7.0.7 |
||
Document get module source |
Done |
7.0.5 |
||
Migrate netconf-topology tests to JUnit 5 |
Done |
7.0.5 |
||
Update notification subscription user guide |
Done |
7.0.5 |
Known Issues in SR1¶
The following table lists the known issues that exist in Service Release 1.
Type |
Key |
Summary |
Status |
Affected Version(s) |
Fix Version(s) |
---|---|---|---|---|---|
OpenAPI: Fails to generate example for List with min-elements and leafref type child |
Resolved |
7.0.1, 7.0.10, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.8, 7.0.9, 8.0.0, 8.0.1, 8.0.2 |
7.0.10, 8.0.2 |
||
Parser error in the TransportPCE openapi documentation (swagger) |
Resolved |
7.0.7, 7.0.9, 8.0.1 |
7.0.10, 8.0.2 |
||
MessageBodyWriter is not found for YANG Patch reply causing HTTP 500 Error |
Resolved |
7.0.7, 8.0.0 |
7.0.8, 8.0.1 |
||
Random failures of transport-ssh tests |
Resolved |
4.0.3, 4.0.9, 5.0.0, 5.0.10, 6.0.0, 6.0.8, 7.0.0, 7.0.7, 8.0.0 |
6.0.9, 7.0.8, 8.0.0 |
||
OpenApi: missing parameters for ROOT data GET |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.6, 7.0.7 |
7.0.11, 8.0.3 |
||
NetconfDeviceCommunicator does not release semaphore after disconnection |
Resolved |
4.0.9, 5.0.10, 6.0.8, 7.0.7 |
6.0.9, 7.0.8, 8.0.0 |
||
Accumulating KeepaliveTask executions |
Resolved |
5.0.9, 6.0.8, 7.0.6, 8.0.0 |
6.0.9, 7.0.8, 8.0.0 |
||
Openapi: Missing schema for node processed by another parent |
Resolved |
7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.6, 7.0.7 |
7.0.8, 8.0.0 |
||
Accumulating “Keepalive RPC failed with error” |
Resolved |
5.0.9, 6.0.8, 7.0.5, 8.0.0 |
6.0.9, 7.0.8, 8.0.0 |
||
Request timeout is too long for NETCONF keepalive |
Open |
5.0.9, 6.0.8, 7.0.5, 8.0.0 |
Carbon SR3, Nitrogen SR1, Oxygen, Oxygen SR2, Oxygen SR3 |
Resolved Issues in SR2¶
The following table lists the issues resolved in Service Release 2.
Type |
Key |
Summary |
Resolution |
Fix Version(s) |
---|---|---|---|---|
OpenAPI: Fails to generate example for List with min-elements and leafref type child |
Done |
7.0.10, 8.0.2 |
||
Parser error in the TransportPCE openapi documentation (swagger) |
Done |
7.0.10, 8.0.2 |
||
RESTCONF server does not adverize “defaults” capability |
Done |
6.0.9, 7.0.10, 8.0.2 |
||
Notifications not available with ODL-based NETCONF server |
Done |
7.0.9, 8.0.1 |
||
NETCONF server does not advertise :interleave capability |
Done |
6.0.9, 7.0.9, 8.0.1 |
||
MessageBodyWriter is not found for YANG Patch reply causing HTTP 500 Error |
Done |
7.0.8, 8.0.1 |
||
RESTCONF server does not list :yang-patch capability |
Done |
6.0.9, 7.0.10, 8.0.2 |
||
restconf-server-jaxrs endpoint returns 500 error for host-meta requests |
Done |
6.0.9, 7.0.8, 8.0.1 |
||
Missing default restconf NB config file |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
Random failures of transport-ssh tests |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
NetconfDeviceCommunicator does not release semaphore after disconnection |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
Accumulating KeepaliveTask executions |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
Openapi: Missing schema for node processed by another parent |
Done |
7.0.8, 8.0.0 |
||
Accumulating “Keepalive RPC failed with error” |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
sal-remote create-notification-stream is not working |
Done |
7.0.10, 8.0.2 |
||
RESTCONF OPTIONS on /data does not produce Accept-Patch |
Done |
7.0.10, 8.0.2 |
||
OpenApi missing POST request to device root |
Done |
7.0.8, 8.0.0 |
||
ODL assumes netconf interleave capability |
Done |
7.0.8 |
||
Do not restart YangLibraryWriterSingleton on URL provider change |
Done |
7.0.8, 8.0.0 |
||
OpenAPI: Improve anydata example |
Done |
7.0.8, 8.0.0 |
||
Remove device from operational topology on failure |
Done |
6.0.9, 7.0.8, 8.0.0 |
||
Eliminate ensureParentsByMerge logic for NETCONF devices |
Done |
7.0.8, 8.0.0 |
||
OpenAPI: Create SchemasEntity class to simplify SchemasStream |
Done |
7.0.8, 8.0.0 |
||
No documentation of Netconf over TLS |
Done |
7.0.9, 8.0.0 |
Known Issues in SR2¶
The following table lists the known issues that exist in Service Release 2.
Type |
Key |
Summary |
Status |
Affected Version(s) |
Fix Version(s) |
---|---|---|---|---|---|
Device attempts to reconnect even if client config throws exception |
Resolved |
7.0.10, 8.0.3 |
7.0.11, 8.0.4, 9.0.0 |
||
Netconf does not attempt reconnection if initial session is closed |
In Progress |
7.0.10, 8.0.3 |
7.0.12, 8.0.4, 9.0.0 |
||
JSON RPC is broken in Calcium SR2 |
Resolved |
7.0.0, 7.0.10 |
7.0.11 |
||
Reconfigured device failed to reconnect with: IllegalStateException: Transaction factory was closed. No further operations allowed. |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.4, 9.0.0 |
||
Thread starvation when SSH KEX is ongoing |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
netconf-testtool seems to misconfigure the datastore |
Confirmed |
6.0.8, 7.0.10, 8.0.2 |
8.0.4 |
||
RESTCONF 500 Error Not Properly Formatted |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
netconf-testtool logs WARN for status code 201 |
Resolved |
7.0.10, 8.0.2 |
6.0.9, 7.0.11, 8.0.3 |
||
Long-term unreachable device may decrease reconnection time to nearly zero |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
It is possible to set the backoff multiplier to 0, which instantly decreases the backoffMillis time to zero. |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
Java heap space in TransportPCE openapi documentation (swagger) after the logging step |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
Fix PlaintextLocalFileStorage which use ATOMIC_MOVE without guarantee of same file system |
Resolved |
7.0.9, 8.0.2 |
7.0.11, 8.0.3 |
||
OpenAPI: Actions displayed under rests/operations |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
OpenApi: Avoid leaf names duplication |
Resolved |
7.0.10, 8.0.3 |
7.0.11, 8.0.3 |
||
OpenApi: Add response body example for ROOT operations GET |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |
||
OpenApi: Add response body example for ROOT data GET |
Resolved |
7.0.10, 8.0.2 |
7.0.11, 8.0.3 |