Description
As a legacy of pre-callhome and protocol-framework world, we have no separation between network-level roles (i.e. session initiation client/server) and NETCONF-level roles (i.e. NETCONF client/server).
This leads to quite a bit of duplication between netconf-netty-util, callhome-protocol and netconf-{tcp,ssh}, where we have separate netty dispatchers and client/server handling - even though the only difference is who is initiating the network channel – this is detailed in https://tools.ietf.org/html/rfc8071#section-2 . In the context of Figure 1 there, our technology stack has further complication, because we rely on Apache SSH to handle SSH protocol details and we only attach to the NETCONF channel – which is subject of NETCONF-571.
Refactor the four components to cleanly separate the connection initiation from other session establishment concerns (authentication and NETCONF negotiation).
Attachments
Issue Links
- blocks
-
NETCONF-364 use ietf client/server models for configuring call home feature
- Confirmed
-
NETCONF-1190 Eliminate shaded-sshd artifact
-
- Confirmed
-
-
NETCONF-571 Rework SSHD integration
-
- Confirmed
-
-
NETCONF-1191 Refactor netconf-netty-util
-
- Confirmed
-
- is blocked by
-
MDSAL-829 Runtime types fail with leafref typedef and disabled features
-
- Resolved
-
-
YANGTOOLS-1514 Failed to process YANGs containing refine of a if-feature'd target
-
- Resolved
-
-
MDSAL-768 Package RFC7317's iana-crypt-hash module
-
- Resolved
-
-
MDSAL-824 Runtime types fail to be generated for ietf-keystore
-
- Resolved
-
- relates to
-
NETCONF-554 Remove protocol framework
-
- Resolved
-
-
NETCONF-1030 transport-tcp transport does not work with plain NioSocketChannel
-
- Resolved
-
1.
|
Convert NETCONF server-side to transport-api |
|
Resolved | Ruslan Kashapov |
2.
|
Convert NETCONF client-side to transport-api |
|
Resolved | Ruslan Kashapov |
3.
|
Convert Callhome-{protocol, provider} to transport-api |
|
Resolved | Ruslan Kashapov |
4.
|
Refactor SslHandlerFactory |
|
In Review | Robert Varga |
5.
|
Refactor ClientFactoryManagerConfigurator |
|
Confirmed | Unassigned |
Gerrit Reviews
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 108469,2 | WIP: convert ChannelInitializer to SettableFuture | master | netconf | Status: NEW | 0 | -1 |
| 108643,6 | WIP: Do not use NetconfClientFactory | master | netconf | Status: NEW | 0 | -1 |
| 110064,5 | WIP: Refactor ClientFactoryManagerConfigurator | master | netconf | Status: NEW | 0 | -1 |
| 110108,2 | WIP: Switch to using binary types in netconf-keystore | master | netconf | Status: NEW | 0 | -1 |
| 101443,3 | AbstractNetconfSessionNegotiator uses only NetconfHelloMessage | master | netconf | Status: MERGED | +2 | +1 |
| 101444,3 | NetconfSessionPreferences should be abstract | master | netconf | Status: ABANDONED | 0 | 0 |
| 101446,4 | Remove NetconfServerSessionPreferences | master | netconf | Status: MERGED | +2 | +1 |
| 101447,3 | Remove Netconf(Client)SessionPreferences | master | netconf | Status: MERGED | +2 | +1 |
| 102124,59 | Add transport-{api,tcp} | master | netconf | Status: MERGED | +2 | +1 |
| 102202,3 | WIP: Switch netconf-northound to a component | master | netconf | Status: ABANDONED | 0 | -1 |
| 102205,41 | Add {keystore,truststore}-api and none implementations | master | netconf | Status: MERGED | +2 | +1 |
| 102299,51 | Add transport-ssh | master | netconf | Status: MERGED | +2 | +1 |
| 102300,63 | Add transport-tls | master | netconf | Status: MERGED | +2 | +1 |
| 102301,10 | Add draft-ietf-netconf-crypto-types model | master | netconf | Status: MERGED | +2 | +1 |
| 102821,1 | Fix TCPClientServerTest stability | master | netconf | Status: MERGED | +2 | +1 |
| 105720,2 | Increase timeout for ssh transport integration test | master | netconf | Status: MERGED | +2 | +1 |
| 105761,9 | Package keystore/truststore/transport-api | master | netconf | Status: MERGED | +2 | +1 |
| 105762,2 | Workaround Karaf not exposing jdk.net | master | netconf | Status: MERGED | +2 | +1 |
| 105772,8 | Add odl-netconf-transport | master | netconf | Status: MERGED | +2 | +1 |
| 106022,18 | Migrate netconf server to new transport | master | netconf | Status: ABANDONED | -1 | +1 |
| 106436,7 | Add ietf-netconf-client/sever yang models | master | netconf | Status: MERGED | +2 | +1 |
| 106534,3 | Increase timeout for ssh transport UT | master | netconf | Status: MERGED | +2 | +1 |
| 106785,6 | External service integration support for ssh transport. | master | netconf | Status: MERGED | +2 | +1 |
| 106788,14 | Switch netconf-server to transport-api | master | netconf | Status: MERGED | +2 | +1 |
| 106789,33 | Northbound Netconf servers moved to new transport implementation | master | netconf | Status: MERGED | +2 | +1 |
| 107150,28 | Custom subsystem support for SSH client | master | netconf | Status: ABANDONED | -2 | +1 |
| 107431,34 | Switch netconf-client to transport-api | master | netconf | Status: MERGED | +2 | +1 |
| 107920,2 | Remove FactoryManagerConfigurator | master | netconf | Status: MERGED | +2 | +1 |
| 107921,3 | Fix ServerFactoryManagerConfigurator-less createSshServer() | master | netconf | Status: MERGED | +2 | +1 |
| 107922,3 | Remove ChannelInitializerListener | master | netconf | Status: MERGED | +2 | +1 |
| 107924,5 | Obsolete -- WIP: Migrate NetconfDeviceSimulator | master | netconf | Status: ABANDONED | 0 | -1 |
| 107925,1 | Clean up onUnderlayChannelEstablished | master | netconf | Status: MERGED | +2 | +1 |
| 107926,1 | Hide SshIoService | master | netconf | Status: MERGED | +2 | +1 |
| 107927,1 | Hide SshIoSession | master | netconf | Status: MERGED | +2 | +1 |
| 107933,6 | Introduce TransportSsh{Client,Server} | master | netconf | Status: MERGED | +2 | +1 |
| 107934,6 | Add SSHTransportStackFactory | master | netconf | Status: MERGED | +2 | +1 |
| 107935,3 | Bind SshClient/SshServer to NettyIoServiceFactoryFactory | master | netconf | Status: MERGED | +2 | +1 |
| 107936,4 | Refactor SshIoSession | master | netconf | Status: ABANDONED | 0 | +1 |
| 107938,1 | Require SubsystemFactory for SSHServer | master | netconf | Status: MERGED | +2 | +1 |
| 107939,2 | SSH client requires a username | master | netconf | Status: MERGED | +2 | +1 |
| 107940,2 | Initialize TransportSshServer.sessionFactory | master | netconf | Status: MERGED | +2 | +1 |
| 107941,2 | Acquire NettyIoServiceFactory from factoryManager | master | netconf | Status: MERGED | +2 | +1 |
| 107942,2 | Initialize TransportSshClient.sessionFactory | master | netconf | Status: MERGED | +2 | +1 |
| 107943,5 | Clean up SSHTransportStack | master | netconf | Status: MERGED | +2 | +1 |
| 108001,3 | Fix frame encoder for netconf server | master | netconf | Status: MERGED | +2 | +1 |
| 108113,1 | SSH keep-alive mechanism to use IGNORE messages | master | netconf | Status: MERGED | +2 | +1 |
| 108114,6 | Fix channel initialization for netconf server | master | netconf | Status: MERGED | +2 | +1 |
| 108115,7 | Fix 'End of input' exception on netconf session.close() | master | netconf | Status: MERGED | +2 | +1 |
| 108116,7 | Fix NetconfMessage not sent on EmbeddedChannel | master | netconf | Status: MERGED | +2 | +1 |
| 108117,23 | Update netconf device simulator to use new transport | master | netconf | Status: MERGED | +2 | +1 |
| 108192,8 | Delete NetconfServerDispatcher | master | netconf | Status: ABANDONED | 0 | 0 |
| 108198,11 | Delete unused SshProxy artifacts for netconf server | master | netconf | Status: MERGED | +2 | +1 |
| 108202,24 | Refactor ConcurrentClientsTest using new transport | master | netconf | Status: MERGED | +2 | +1 |
| 108245,22 | External service integration support for TLS transport | master | netconf | Status: MERGED | +2 | +1 |
| 108253,18 | Migrate netconf-topology to new transport | master | netconf | Status: MERGED | +2 | +1 |
| 108372,3 | Factor out NetconfSubsystem | master | netconf | Status: MERGED | +2 | +1 |
| 108373,3 | NetconfSubsystem should be a ChannelDataReceiver | master | netconf | Status: MERGED | +2 | +1 |
| 108374,2 | Split out NetconfSubsystemOutboundChannelHandler | master | netconf | Status: MERGED | +2 | +1 |
| 108375,3 | Improve write error handling | master | netconf | Status: MERGED | +2 | +1 |
| 108376,2 | Do not reference DefaultPromise | master | netconf | Status: MERGED | +2 | +1 |
| 108379,2 | Do not propagate empty writes | master | netconf | Status: MERGED | +2 | +1 |
| 108380,2 | Expose NetconfSubsystemOutboundChannelHandler | master | netconf | Status: MERGED | +2 | +1 |
| 108382,1 | Clean up SSHTransportStack a bit | master | netconf | Status: MERGED | +2 | +1 |
| 108391,3 | Clean up NetconfClientSessionImpl | master | netconf | Status: MERGED | +2 | +1 |
| 108392,3 | Hide Netty(Pipeline)AwareChannelSubsystem | master | netconf | Status: MERGED | +2 | +1 |
| 108395,3 | Clean up SSHTransportStack.sessionEvent() | master | netconf | Status: MERGED | +2 | +1 |
| 108396,8 | Require a subsystem for client connections | master | netconf | Status: MERGED | +2 | +1 |
| 108404,9 | Clean up SSH server subsystem handling | master | netconf | Status: MERGED | +2 | +1 |
| 108426,3 | Deprecate legacy SSH integration | master | netconf | Status: MERGED | +2 | +1 |
| 108451,4 | Issue channelActive event in transport-ssh | master | netconf | Status: MERGED | +2 | +1 |
| 108451,4 | Issue channelActive event in transport-ssh | master | netconf | Status: MERGED | +2 | +1 |
| 108455,4 | Fix ssh server subsystem initialization sequence. | master | netconf | Status: MERGED | +2 | +1 |
| 108468,3 | Use SettableFuture instead of Promise | master | netconf | Status: MERGED | +2 | +1 |
| 108498,11 | Ext service integration support for SSH client | master | netconf | Status: MERGED | +2 | +1 |
| 108499,10 | Ext service integration support for Netconf SSH client | master | netconf | Status: MERGED | +2 | +1 |
| 108510,2 | Deprecate CallHomeMountDispatcher.createClient() | master | netconf | Status: MERGED | +2 | +1 |
| 108588,3 | Add Call-Home client builder to NetconfClientFactory | master | netconf | Status: ABANDONED | 0 | +1 |
| 108591,5 | Call-home with ext service integration for TLS transport | master | netconf | Status: MERGED | +2 | +1 |
| 108596,2 | Inline getListener() | master | netconf | Status: MERGED | +2 | +1 |
| 108597,3 | Clean up validateBaseCapabilities() a bit | master | netconf | Status: MERGED | +2 | +1 |
| 108598,9 | Do not use NetconfServerFactory in NetconfDeviceSimulator | master | netconf | Status: MERGED | +2 | +1 |
| 108599,9 | Ditch unused netconf-nb dependency | master | netconf | Status: MERGED | +2 | +1 |
| 108600,4 | Centralize NETCONF over SSH subsystem name | master | netconf | Status: MERGED | +2 | +1 |
| 108600,4 | Centralize NETCONF over SSH subsystem name | master | netconf | Status: MERGED | +2 | +1 |
| 108602,8 | Eliminate ServerChannelInitializer | master | netconf | Status: MERGED | +2 | +1 |
| 108603,7 | Remove NetconfSessionNegotiatorFactory | master | netconf | Status: MERGED | +2 | +1 |
| 108606,4 | Move AbstractNetconfDispatcher | master | netconf | Status: MERGED | +2 | +1 |
| 108608,7 | Merge (Abstract)NetconfSessionNegotiator | master | netconf | Status: MERGED | +2 | +1 |
| 108609,6 | Remove PublicKeyAuth | master | netconf | Status: MERGED | +2 | +1 |
| 108626,4 | Add BootstrapFactory | master | netconf | Status: MERGED | +2 | +1 |
| 108642,2 | Do not use NetconfServerFactory | master | netconf | Status: MERGED | +2 | +1 |
| 108646,3 | Return ImmutableSet from transformCapabilities() | master | netconf | Status: MERGED | +2 | +1 |
| 108647,4 | Inline NetconfServerSessionNegotiatorFactoryBuilder | master | netconf | Status: MERGED | +2 | +1 |
| 108648,4 | Hide SendErrorExceptionUtil | master | netconf | Status: MERGED | +2 | +1 |
| 108649,9 | Remove NetconfServerFactory | master | netconf | Status: MERGED | +2 | +1 |
| 108662,5 | Migrate test-tool StressClient to transport-api | master | netconf | Status: MERGED | +2 | +1 |
| 108797,11 | Call-Home server implementation using transport-api | master | netconf | Status: ABANDONED | 0 | +1 |
| 108881,13 | Call-Home provider migration to transport-api | master | netconf | Status: MERGED | +2 | +1 |
| 108885,2 | Remove obsolete callhome-protocol | master | netconf | Status: ABANDONED | -1 | +1 |
| 108894,11 | Remove obsolete NetconfClientDispatcher | master | netconf | Status: MERGED | +2 | +1 |
| 108895,17 | Netconf client configuration cleanup | master | netconf | Status: MERGED | +2 | +1 |
| 108904,5 | Ditch threadpool-config-api from netconf-server | master | netconf | Status: MERGED | +2 | +1 |
| 108905,8 | Disconnect netconf-topology from threadpool-config-api | master | netconf | Status: MERGED | +2 | +1 |
| 108983,1 | Disconnect netconf-topology-singleton from EventExecutor | master | netconf | Status: MERGED | +2 | +1 |
| 108985,4 | Use Timer in NetconfNodeHandler | master | netconf | Status: MERGED | +2 | +1 |
| 109193,3 | Fix Call-Home services start failure | master | netconf | Status: MERGED | +2 | +1 |
| 109220,1 | Fix NoSuchElementException for callhome topology node | master | netconf | Status: MERGED | +2 | +1 |
| 109985,4 | Refresh IETF client/server models | master | netconf | Status: MERGED | +2 | +1 |
| 110037,8 | Introduce NetconfTimer | master | netconf | Status: MERGED | +2 | +1 |
| 110038,4 | Activate NetconfClientFactoryImpl lazily | master | netconf | Status: MERGED | +2 | +1 |
| 110040,2 | Eliminate netconf.nettyutil.handler.ssh.client | master | netconf | Status: MERGED | +2 | +1 |
| 110041,1 | Remove AuthenticationHandler | master | netconf | Status: MERGED | +2 | +1 |
| 110062,16 | Rework SslHandlerFactory | master | netconf | Status: MERGED | +2 | +1 |
| 110063,4 | WIP: Use SslContext instead of handler | master | netconf | Status: ABANDONED | 0 | -1 |
| 110085,5 | Split out keystore-legacy | master | netconf | Status: MERGED | +2 | +1 |
| 110086,3 | Move data processing to update thread | master | netconf | Status: MERGED | +2 | +1 |
| 110088,1 | Require key specification | master | netconf | Status: MERGED | +2 | +1 |
| 110090,5 | Refactor NetconfSalKeystoreRpcs | master | netconf | Status: MERGED | +2 | +1 |
| 110110,3 | Expose NetconfKeystoreService | master | netconf | Status: MERGED | +2 | +1 |
| 110128,4 | Decrypt key credentials in keystore-legacy | master | netconf | Status: MERGED | +2 | +1 |
| 110132,2 | Flatten callhome-provider | master | netconf | Status: MERGED | +2 | +1 |