Merge "Migrate OpenFlow plugin dev docs to rst"
[docs.git] / manuals / developer-guide / src / main / asciidoc / openflowplugin / odl-ofp-forwardingrules-sync.adoc
diff --git a/manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-forwardingrules-sync.adoc b/manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-forwardingrules-sync.adoc
deleted file mode 100644 (file)
index faf5376..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-=== Application: Forwarding Rules Synchronizer
-
-==== Basics
-
-===== Description
-
-Forwarding Rules Synchronizer (FRS) is a newer version of Forwarding Rules Manager (FRM). It was created to solve most shortcomings of FRM. FRS solving errors with retry mechanism. Sending barrier if needed. Using one service for flows, groups and meters. And it has less changes requests send to device since calculating difference and using compression queue.
-
-It is located in the Java package:
-
-[source, java]
-----
-package org.opendaylight.openflowplugin.applications.frsync; 
-----
-
-===== Listeners
-
-* 1x config - FlowCapableNode
-* 1x operational - Node
-
-===== System of work
-
-* one listener in config datastore waiting for changes
-
-** update cache
-** skip event if operational not present for node
-** send syncup entry to reactor for synchronization
-*** node added: after part of modification and whole operational snapshot
-*** node updated: after and before part of modification
-*** node deleted: null and before part of modification
-
-
-* one listener in operational datastore waiting for changes
-
-** update cache
-** on device connected
-*** register for cluster services
-** on device disconnected remove from cache
-*** remove from cache
-*** unregister for cluster services
-** if registered for reconciliation
-*** do reconciliation through syncup (only when config present)
-
-
-* reactor
-_(provides syncup w/decorators assembled in this order)_
-
-** Cluster decorator - skip action if not master for device
-** FutureZip decorator (FutureZip extends Future decorator)
-*** Future - run delegate syncup in future - submit task to executor service
-*** FutureZip - provides state compression - compress optimized config delta if waiting for execution with new one
-** Guard decorator - per device level locking
-** Retry decorator - register for reconciliation if syncup failed
-** Reactor impl - calculate diff from after/before parts of syncup entry and execute
-
-===== Strategy
-
-In the _old_ FRM uses an incremental strategy with all changes made one by one, where FRS uses a flat batch system with changes made in bulk. It uses one service SalFlatBatchService instead of three (flow, group, meter).
-
-===== Boron release
-
-FRS is used in Boron as separate feature and it is not loaded by any other feature. It has to be run separately. 
-
-    odl-openflowplugin-app-forwardingrules-sync
-    
-==== FRS additions
-
-===== Retry mechanism
-
-* is started when change request to device return as failed (register for reconcile) 
-* wait for next consistent operational and do reconciliation with actual config (not only diff)
-
-===== ZipQueue
-
-* only the diff (before/after) between last config changes is sent to device
-* when there are more config changes for device in a row waiting to be processed they are compressed into one entry (after is still replaced with the latest)
-
-===== Cluster-aware
-
-* FRS is cluster aware using ClusteringSingletonServiceProvider from the MD-SAL 
-* on mastership change reconciliation is done (register for reconcile)
-
-===== SalFlatBatchService
-
-FRS uses service with implemented barrier waiting logic between dependent objects
-
-==== SalFlatBatchService for FRS
-
-SalFlatBatchService was created along forwardingrules-sync application as the service that should application used by default. This service uses only one input with bag of flow/group/meter objects and their common add/update/remove action. So you practically send only one input (of specific bags) to this service.
-
-===== Workflow
-
-* prepare plan of actions
-** mark actions where the barrier is needed before continue
-* run appropriate service calls
-** start all actions that can be run simultaneously
-** if there is barrier-needed mark, wait for all fired jobs and only then continue with the next action
-
-error handling:
-
-* there is flag to stop process on the first error (default set to false)