-
Notifications
You must be signed in to change notification settings - Fork 54
Whiteboarding Flow Hub and Spoke Discussion
Pavel Zakatov edited this page Jul 25, 2018
·
2 revisions
Fire and Forget
- actor -> NB
- NB -> FT (path, create path, send to TE, respond to NB)
- FT -> TE
- TE -> FT
- TE -> FL
- TE -> FC
- FL -> FT (transaction)
Other than the transaction bolt, there is no history of state change, there is no real validation / verifying that something made it all the way through. NO RETRIES. NO CLEANUP. NO Discrepancy checks.
HUB and SPOKE ... control always resides with HUB. HUB should be FT
NB -> FT -> Transaction ID (XID) -> DB w/ State && Flow History tabel FT -> NB w/ XID
LOOP: FT: Checks state of open XID, and "does the right thing"
- Step[N] - state diagram .. ie timeout (has it stalled) and retry logic
- Example -
- HISTORY .. is in DB (neo4j?)
- HISTORY: "sending commands to switches"
- (HISTORY..once) send 1 or N-1 commands to FL to install rules on switches ... FL sends a response (async)
- (HISTORY) FT should receive a message, and presumably verify (ie ask for rules on a switch, or specific rule)
- (HISTORY) Once all have been confirmed, send the last message to ingress switch on both sides.
- HISTORY: "verified all switches have rules"
- HISTORY: "sending flow check"
- (HISTORY) Finally, do a flow check (data path)
- (HISTORY) Final HISTORY update
- (XID TABLE) mark as complete CREATED, STARTED, FINISHED, .. This is a State Machine
- (HISTORY TABLE) .. some STEP X (or Y?) ... TIMEOUT / RETRY ... TIMEOUT / EXHAUSTED (no more retry) ... SUCCESS / FAILURE .. (created, started (in progress), restarted (? not sure if needed ... it is here to show that action is being taken ... however, it may not be a new state, maybe just a message in the HISTORY table.), finished-success, finish-failure?)
- Keep in mind UC: FT restart (LCM) ... should be able to resume the request
NB API
- Get Transaction Status...
- Get Transaction History (default limit=1)