The agent is required to detect and report direct collisions.
It is not required or expected to detect indirect collisions, which are the complex source of wedgies and other interesting behaviors.

Yours,
Joel

PS: The WG discussed requiring a maintained connection between the client and agent, and agreed not to do that. Which means that no, agents do not delete state just because clients have disappeared.


On 11/24/15 11:01 AM, Andy Bierman wrote:


On Tue, Nov 24, 2015 at 7:36 AM, Joel M. Halpern <[email protected]
<mailto:[email protected]>> wrote:

    I believe that determining whether two independent and internally
    consistent sets of changes can, in combination, produce a wedgie or
    other failure is a research problem.
    As far as I know, the I2RS working group concluded that it was a
    sufficiently hard problem that we did not expect the I2RS agent to
    get involved in trying to detect, much less remediate, such
    cross-object inconsistencies.



But the I2RS agent is responsible for identifying an edit collision between
a new low-priority request and existing higher priority edits. That sounds
involved to me.  So the agent cannot possibly solve this problem
yet it is responsible for precisely that in order to implement client
priority.

The agent can see that /foo[42] exists in the request and /foo[42] exists
in the ephemeral datastore, and call that a collision.

However, if /foo[1] or /bar[19] are also part of the "edit", such that
simply replacing
/foo[42] will break things, then the agent will not know. It will simply
overwrite
/foo[42] and leave /foo[1] and /bar[19] in the datastore.

So is the low-priority client responsible for removing /foo[1] and /bar[19]?
Seems the answer is no. The client can go away and there are no cleanup
requirements mentioned in the architecture.



    Yours,
    Joel



Andy


    On 11/24/15 10:32 AM, PEDRO ANDRES ARANDA GUTIERREZ wrote:

        Hi Russ,

        I’m trying to identify the differences between interactions with
        routing protocols in I2RS and what is purely conflicts between
        clients. Currently I see too many issues overlapping and I fear
        that the trees are not letting us see the forest.

        So my take on routing protocols and wedgies might have been too
        compact :-) Let me give it a second try: Stepping outside the
        I2RS problem space, there is a lot of work that shows that the
        origin for BGP-4 instability is that our beloved route-maps
        create metrics that are not monotonically increasing or
        decreasing and that makes the routing protocols meta-stable.
        (BTW, I’m the first culprit when it comes to the use of them, I
        have created more than one wedgie :-P ) Acknowledging that this
        is a significant (and quite complex) problem for the Internet in
        general, I feel that it should be treated somewhere else (GROW?).

        The perspective I would like to take here is:
        - assume that we have two or more clients that produce perfectly
        sound routing information (no wedgies there)
        - assume they talk to the same agent
        - now my questions
                  1.- is there any way to detect whether the clients
        produce contradicting/conflicting information?
                  2.- is there any way to resolve these
        contradictions/conflicts?

        BR, /PA
        ---
        Dr. Pedro A. Aranda Gutiérrez

        Technology Exploration -
        Network Innovation & Virtualisation
        email: pedroa d0t aranda At telefonica d0t com
        Telefónica, Investigación y Desarrollo
        C/ Zurbarán,12
        28010 Madrid, Spain

        Fragen sind nicht da, um beantwortet zu werden.
        Fragen sind da, um gestellt zu werden.
        Georg Kreisler








        -----Mensaje original-----
        De: Russ White <[email protected] <mailto:[email protected]>>
        Fecha: lunes, 23 de noviembre de 2015, 14:06
        Para: paag <[email protected]
        <mailto:[email protected]>>, 'Jeffrey Haas'
        <[email protected] <mailto:[email protected]>>
        CC: "[email protected] <mailto:[email protected]>" <[email protected]
        <mailto:[email protected]>>, "'Joel M. Halpern'"
        <[email protected] <mailto:[email protected]>>, 'Andy
        Bierman' <[email protected] <mailto:[email protected]>>, Sue
        Hares <[email protected] <mailto:[email protected]>>
        Asunto: RE: [i2rs] Conversation on Priority and Panes


                Re the metric 'problem', just to be more precise in what
                would be needed,
                we are looking a metric that grows or decreases
                monotonically across the
                whole network.


            I assume you mean in the routing space, and not in the
            controller/client space, correct? In terms of a distributed
            protocol? So, you're saying the delay could use "metrics"
            between 11 and 20, while the bandwidth could use "metrics"
            between 21 and 30, etc? And then you just add them all
            together? That's what IS-IS has done for years... Even BGP
            really only has one "metric," with following "tie
            breakers..." So if you have something like weight/local
            pref/etc, such that they occupy different "spaces" in a bit
            pattern (something suggested, btw, in the original wide
            community work, and in other places, as well), you're
            actually just building a single metric.

            You've not "solved" the multiple metric problem -- just done
            something a little different than EIGRP's K values to
            combine them into a single metric, which is where you need
            to be to have the ability to build a single stable SPT/DAG.

                The theoretical grounds for this are in T. Griffin’s and
                Sobrinho’s work on BGP-4 and that lies already a couple
                of years ago and that
                makes the analysis much ‘easier’ (no worries about
                np(complete) problems,
                etc.). This could be applied in I2RS at the routing
                protocol level. So, we could
                discuss where that sits (should be the clients, right?)
                and I don’t know if
                that’s been already done, since I’m quite new to this list.


            This doesn’t apply to the problem at hand, though... You
            seem to be saying (clarify if wrong) --

            1. Give each client some set of bits out of a 128 bit number
            space (or larger, etc.)
            2. Each client can have different "metrics" within their own
            number space
            3. When a client attempts to add some ephemeral state, they
            use a metric within their "space"
            4. The agent can just use the straight number as a relative
            priority for each potential piece of state

            This doesn't do anything different than the current concept
            of priority between clients, only in the current plan each
            client only has one priority, rather than multiples. I don't
            see where this relates to the problem at hand.

                Now, having “solved” that part of the equation :-) , the
                part that interests me
                more is the conflicting clients problem, because this
                could be generalised to
                other problem spaces in the SDN area. I do agree that
                agents should be able
                to catch offending state before installing it and I’m
                looking for ways to specify
                a minimal set of features that need to be supported at
                protocol level.

                Anyone else interested?


            This is precisely where the problem lies. And this is where
            you're going to hit the CAP theorem in full force. There are
            only a few choices --

            1. Make the database eventually consistent
            2. Shut down accessibility during changes
            3. ??

            (1) is the idea of either having the agent call back to all
            the clients when state they installed is overwritten or
            allowing the agent to locally store some state where it
            already has the information in hand and install it locally
            -- the only real difference between these two solutions is
            the "balance of complexity versus speed..." The entire
            discussion here is how much additional complexity are we
            actually adding by doing "panes of glass," which are just
            locally stored state which isn't currently installed. I'm
            arguing that there's minimal complexity added that you're
            not already going to have in the system to allow the agent
            to store information locally _if_ it chooses to. Jeff is
            arguing (I think) that the "panes of glass" concept is a
            coherent way of looking at this problem that will help us
            understand and manage the complexity in a way that makes
            sense. Joel is arguing (I think) that this sort of solution
            is out of the WG charter, and it's too complex. I _think_ I
            have the th

    r
    ee general perspectives right, but I don't know if I really have
    so... :-)


            (2) is the idea of locking the database while you're
            changing it. This is explicitly outside the scope of I2RS
            entirely, given we're trying to design something that's
            atomic/restful. There are a lot of techniques you can use to
            speed up locking -- row locking, sharding, etc. -- but none
            of these are interesting from the I2RS perspective.

            :-)

            Russ


        ________________________________

        Este mensaje y sus adjuntos se dirigen exclusivamente a su
        destinatario, puede contener información privilegiada o
        confidencial y es para uso exclusivo de la persona o entidad de
        destino. Si no es usted. el destinatario indicado, queda
        notificado de que la lectura, utilización, divulgación y/o copia
        sin autorización puede estar prohibida en virtud de la
        legislación vigente. Si ha recibido este mensaje por error, le
        rogamos que nos lo comunique inmediatamente por esta misma vía y
        proceda a su destrucción.

        The information contained in this transmission is privileged and
        confidential information intended only for the use of the
        individual or entity named above. If the reader of this message
        is not the intended recipient, you are hereby notified that any
        dissemination, distribution or copying of this communication is
        strictly prohibited. If you have received this transmission in
        error, do not read it. Please immediately reply to the sender
        that you have received this communication in error and then
        delete it.

        Esta mensagem e seus anexos se dirigem exclusivamente ao seu
        destinatário, pode conter informação privilegiada ou
        confidencial e é para uso exclusivo da pessoa ou entidade de
        destino. Se não é vossa senhoria o destinatário indicado, fica
        notificado de que a leitura, utilização, divulgação e/ou cópia
        sem autorização pode estar proibida em virtude da legislação
        vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos
        o comunique imediatamente por esta mesma via e proceda a sua
        destruição



_______________________________________________
i2rs mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/i2rs

Reply via email to