Ways of guaranteeing that knowledge of a state change propagates from the node where the state changed to

 

Monolithic Push guarantees that state change propagates.

If every node carries the entire route-state knowledge, changes can be sequenced in lockstep with neighbor-to-neighbor verification so that absent an intentional filter state changes will propagate within A*N where A is the time it takes for a neighbor to receive and process a change and N is the longest node chain from one side of the system to the other. If something does fall out of sequence, it's obvious and a node can refresh the full data set from its neighbors.

Major benefits: Nodes can make decisions immediately because they already have the system state knowledge.
Major liabilities: Scales poorly. High cost is a barrier to entry.

Example: BGP

 

Monolithic Push with the edge node exception guarantees that state change propagates.

Same as above except that edge nodes where all neighbors are upstream for all non-local destinations can sacrifice state information at the expense of a mild loss of efficiency.

Major benefits: Nodes can make decisions immediately because they already have the system state knowledge.
Major liabilities: Still scales poorly.

Example: BGP with a default route sent to the customer.

 

Pulled Cache with Time to Live (timeout) guarantees that state change propagates.

If every entry in a node's working set of destinations with which it is communicating will time out within some fixed period of time X after which it must be re-requested from an authoritative source then any state change will propagate to interested nodes in no more than X.

Major benefits: Unbounded scalability with respect to the total system state.
Major liabilities: Delay for initial lookup. Overhead cost to refresh the working set.

Example: DNS

 

Pulled Cache with Change Notification DOES NOT guarantee that state change propagates.

With change notification, someone has to remember which caches are currently subscribed to knowledge about which states. Should that memory agent fail or require a clean restart, the cache can retain state knowledge when no one else knows that it needs to receive updates. When the state then changes, the cache may retain incorrect knowledge indefinately.

Major benefits: Unbounded scalability without the TTL-related overhead..
Major liabilities: Brittle. Too easy to get into a faulty state that can only be recovered by an external reset.

Example: DNS notifies known secondaries when a zone changes so that they can request a zone transfer early before the TTL expires.