@@ -133,8 +133,9 @@ for the Dell PowerConnect device::
133133 ngs_switchport_mode = access
134134
135135Dell PowerConnect devices have been seen to have issues with multiple
136- concurrent configuration sessions. See :ref: `synchronization ` for details on
137- how to limit the number of concurrent active connections to each device.
136+ concurrent configuration sessions. See :ref: `synchronization ` and
137+ :ref: `batching ` for details on how to limit the number of concurrent active
138+ connections to each device.
138139
139140for the Brocade FastIron (ICX) device::
140141
@@ -258,8 +259,16 @@ connection URL for the backend should be configured as follows::
258259 [ngs_coordination]
259260 backend_url = <backend URL>
260261
261- The default is to limit the number of concurrent active connections to each
262- device to one, but the number may be configured per-device as follows::
262+ The backend URL format includes the Tooz driver as the scheme, with driver
263+ options passed using query string parameters. For example, to use the
264+ ``etcd3gw `` driver with an API version of ``v3 `` and a path to a CA
265+ certificate::
266+
267+ [ngs_coordination]
268+ backend_url = etcd3+https://etcd.example.com?api_version=v3,ca_cert=/path/to/ca/cert.crt
269+
270+ The default behaviour is to limit the number of concurrent active connections
271+ to each device to one, but the number may be configured per-device as follows::
263272
264273 [genericswitch:device-hostname]
265274 ngs_max_connections = <max connections>
@@ -273,6 +282,35 @@ timeout of 60 seconds before failing. This timeout can be configured as follows
273282 ...
274283 acquire_timeout = <timeout in seconds>
275284
285+ .. _batching :
286+
287+ Batching
288+ ========
289+
290+ For many network devices there is a significant SSH connection overhead which
291+ is incurred for each network or port configuration change. In a large scale
292+ system with many concurrent changes, this overhead adds up quickly. Since the
293+ Antelope release, the Generic Switch driver includes support to batch up switch
294+ configuration changes and apply them together using a single SSH connection.
295+
296+ This is implemented using etcd as a queueing system. Commands are added
297+ to an input key, then a worker thread processes the available commands
298+ for a particular switch device. We pull off the queue using the version
299+ at which the keys were added, giving a FIFO style queue. The result of
300+ each command set are added to an output key, which the original request
301+ thread is watching. Distributed locks are used to serialise the
302+ processing of commands for each switch device.
303+
304+ The etcd endpoint is configured using the same ``[ngs_coordination]
305+ backend_url `` option used in :ref: `synchronization `, with the limitation that
306+ only ``etcd3gw `` is supported.
307+
308+ Additionally, each device that will use batched configuration should include
309+ the following option::
310+
311+ [genericswitch:device-hostname]
312+ ngs_batch_requests = True
313+
276314Disabling Inactive Ports
277315========================
278316
0 commit comments