On 11-Jul-21 05:06, Alan DeKok wrote: > On Jul 10, 2021, at 12:44 PM, Michael Richardson <[email protected]> > wrote: >> Alan DeKok <[email protected]> wrote: >>> Networks are generally organized by configuration, not by state. >>> i.e. the "state" of the network, such as it is, is buried inside a >>> random grab-bag collection of configuration files and running data >>> structures, on multiple systems, in multiple formats. There is no way >>> to say "move to state X", or even to query what state the network is >>> currently in. >> >> That's an interesting and rather profound observation, I think. > > Thanks. As background, most of the networking code I've written in the > last 25 years is wrong. Not that it doesn't work, it does. > > But as time progresses, I find myself moving to a much more state oriented > approach. The code is easier to understand, and easier to debug > >> 90% of debugging (of both programs and networks) is about getting the right >> set of observations. A difficulty is that it's so hard to capture the >> state. > > Especially when the state is embodied in a collection of variables, and > if/then/else procedural code which checks those variables. > > As compared to "the current state handler is function X. So I know it's in > state X". How did it get there? That's easy, instrument the state > transitions, and print those out.
However, that doesn't work at network scale. There's a peculiar form of special relativity in a network; because messages take finite time to propagate state changes between nodes, there can be no meaningful "state" for the network as a whole, only N partial states known to each of N nodes. Your view of your neighbour's state is always potentially out of date. That applies to each ASA in an ANIMA-style network, too. A GRASP negotiation is explicitly negotiating state with a peer ASA. Brian _______________________________________________ Anima mailing list [email protected] https://www.ietf.org/mailman/listinfo/anima
