Re: [i2rs] Call for Adoption by WG: draft-atlas-i2rs-architecture-01 (ends Aug 12)

Jakob Heitz <jakob.heitz@ericsson.com> Wed, 14 August 2013 18:14 UTC

Return-Path: <jakob.heitz@ericsson.com>
X-Original-To: i2rs@ietfa.amsl.com
Delivered-To: i2rs@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B480D21F9298 for <i2rs@ietfa.amsl.com>; Wed, 14 Aug 2013 11:14:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=0.001, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MSxVoy8Lr0Zm for <i2rs@ietfa.amsl.com>; Wed, 14 Aug 2013 11:14:19 -0700 (PDT)
Received: from usevmg20.ericsson.net (usevmg20.ericsson.net [198.24.6.45]) by ietfa.amsl.com (Postfix) with ESMTP id 0F70711E8159 for <i2rs@ietf.org>; Wed, 14 Aug 2013 11:14:14 -0700 (PDT)
X-AuditID: c618062d-b7fda8e0000024c6-f9-520bc8f3dbfc
Received: from EUSAAHC005.ericsson.se (Unknown_Domain [147.117.188.87]) by usevmg20.ericsson.net (Symantec Mail Security) with SMTP id 77.E6.09414.3F8CB025; Wed, 14 Aug 2013 20:14:12 +0200 (CEST)
Received: from EUSAAMB109.ericsson.se ([147.117.188.126]) by EUSAAHC005.ericsson.se ([147.117.188.87]) with mapi id 14.02.0328.009; Wed, 14 Aug 2013 14:14:02 -0400
From: Jakob Heitz <jakob.heitz@ericsson.com>
To: "Joel M. Halpern" <jmh@joelhalpern.com>, Joe Marcus Clarke <jclarke@cisco.com>
Thread-Topic: [i2rs] Call for Adoption by WG: draft-atlas-i2rs-architecture-01 (ends Aug 12)
Thread-Index: AQHOjdzg9+OhiQQtoUuo5/IEhGkdipmT5y0AgAFrKQCAAAIEgP//wInQ
Date: Wed, 14 Aug 2013 18:14:01 +0000
Message-ID: <2F3EBB88EC3A454AAB08915FBF0B8C7E02E24B44@eusaamb109.ericsson.se>
References: <CAG4d1rdDqdajvUeF4WwJ1Jwn_=xqOMkXrkWwCHtsdsZn6WKzRA@mail.gmail.com> <51F8ED88.5050208@cisco.com> <CAG4d1rdBjyx2+jR5+Pc0RNsr_NSRLtrK6RaFgEqwvguHweZ0Cw@mail.gmail.com> <520BC148.3030306@cisco.com> <520BC2F9.9080500@joelhalpern.com>
In-Reply-To: <520BC2F9.9080500@joelhalpern.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [147.117.188.135]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrELMWRmVeSWpSXmKPExsUyuXRPuO6XE9xBBj+u81t8eniJ2WLdjA8s Fvuu/mG0+HjqDZMDi8eU3xtZPXbOusvusWTJTyaPc1O+MwawRHHZpKTmZJalFunbJXBlrO3/ yFJwrqDi/JV77A2MD0K6GDk5JARMJPZ/PsIIYYtJXLi3nq2LkYtDSOAoo8SEd22sEM5yRokZ 056wglSxCehIfLvexQxiiwiESLR032EBsZkFnCX6b3SzdzFycAgLxEq8m2kNURIn0dW4Aarc TWJLz1awZSwCqhJ/Vh4Fi/MK+Eqc2/2GEWLXD0aJrS/3giU4BfQlpnxewgZiMwJd9/3UGiaI XeISt57MZ4K4WkBiyZ7zzBC2qMTLx/9YIWxlie9zHkHdpiOxYPcnNghbW2LZwtdQiwUlTs58 wjKBUWwWkrGzkLTMQtIyC0nLAkaWVYwcpcWpZbnpRgabGIHxdEyCTXcH456XlocYpTlYlMR5 V+mdCRQSSE8sSc1OTS1ILYovKs1JLT7EyMTBKdXAWBybZM94yU2wfsP6Fc4Rt2KjnUP+lgnN ad0U2sLG+SOVe71/psdf94nf+p9qp7vVcd60u5L20kFvf2ej7OVLQUf8fszWDRNPCqu2+F+c HBKU6vSxvn2thlNF7ZZfO9QfLxaukwtyk0mbsKD4+fJrnulTNV8u3eoTUK8aeTaQheOmlGTH lGYlluKMREMt5qLiRACgQdN9dQIAAA==
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, Alia Atlas <akatlas@gmail.com>
Subject: Re: [i2rs] Call for Adoption by WG: draft-atlas-i2rs-architecture-01 (ends Aug 12)
X-BeenThere: i2rs@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "Interface to The Internet Routing System \(IRS\)" <i2rs.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/i2rs>, <mailto:i2rs-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/i2rs>
List-Post: <mailto:i2rs@ietf.org>
List-Help: <mailto:i2rs-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/i2rs>, <mailto:i2rs-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Aug 2013 18:14:24 -0000

Or say: "must write atomically".

Here is one way:
In the WRITE message, put the value you want to write, as well as the value that you think that the parameter currently has.
You can get the value "you think it has" from a previous READ, then you repeat that in your WRITE message.
The target of the WRITE will refuse to write your value and return an error if the value was not what you thought it was.

Another way:
READ with reservation. When you READ, then set a reservation.
When anyone WRITEs the same parameter, it kills all reservations.
When you WRITE, the target system checks if you have a reservation and refuses to write if you don't and returns an error.

Or you can write lock the parameter.

--
Jakob Heitz.

> -----Original Message-----
> From: i2rs-bounces@ietf.org [mailto:i2rs-bounces@ietf.org] On Behalf Of
> Joel M. Halpern
> Sent: Wednesday, August 14, 2013 10:49 AM
> To: Joe Marcus Clarke
> Cc: i2rs@ietf.org; Alia Atlas
> Subject: Re: [i2rs] Call for Adoption by WG: draft-atlas-i2rs-architecture-01
> (ends Aug 12)
> 
> Depending upon how one reads RFCs, declaring that having two writers is an
> error is a MUST NOT write.
> But we are also trying to recognize that no matter how many MUST NOT
> statements we produce, things happen.  So we are trying to define the
> handling.  I can live with precedence.  I can live with "the item does not
> change".  But I do think it is helpful for us to be explicit about the behavior in
> this far-to-likely error case.
> 
> Yours,
> Joel
> 
> 
> On 8/14/13 1:41 PM, Joe Marcus Clarke wrote:
> > On 8/13/13 4:01 PM, Alia Atlas wrote:
> >>      Section 1.2:
> >>
> >>      As can also be seen in Figure 1, an I2RS Agent may communicate with
> >>         multiple clients.  Each client may send the agent a variety of write
> >>         operations.  The handling of this situation has been a source of
> >>         discussion in the working group.  In order to keep the protocol
> >>         simple, the current view is that two clients should not be attempting
> >>         to write (modify) the same piece of information.  Such collisions may
> >>         happen, but are considered error cases that should be resolved by
> the
> >>         network applications and management systems.
> >>
> >>      JMC: I think more verbiage is needed around how to detect collisions.
> >>      This is key to security considerations.  Saying "clients should not" is
> >>      not strong enough to keep our potential attackers.  If each operation is
> >>      tagged with an identifier that is unique to a client, then it will be
> >>      possible to determine if the current client is trying to overwrite data
> >>      from a previous client.  This could fold into authz as well where there
> >>      is a permission to allow global override of other application's state.
> >>
> >>
> >> [Alia] For the I2RS Agent to properly handle a collision, it does
> >> need to store the client identifier.  I think that is clear in Sec
> >> 5.2 "Simply, the I2RS agent stores who did what operation to which
> entity."
> >> and the details in Sec 6.8 are "The current recommendation is to have
> >> a simple priority associated with each I2RS clients, and the highest
> >> priority change remains in effect. In the case of priority ties, the
> >> first client whose attribution is associated with the data will keep
> >> control."  We already have a reference to Sec 6.8 right there - and
> >> that section is where the details are discussed.  What specific additional
> >> verbiage do you think would be useful?   The priority is a knob to allow
> >> overwriting of other applications' state - though needing to is
> >> considered an error. :-)
> >
> > When I first read this, I wanted something stronger to prevent clients
> > from writing to the same piece of data.  I think the forward
> > references are fine if perhaps a bit late in the text.  But my ask was
> > to strengthen the language to say "must not write."
> >
> >>
> >>
> >>      Section 2:
> >>
> >>      read scope: ...
> >>
> >>      write scope: ...
> >>
> >>      JMC: Should there be an event or notification scope in addition to read
> >>      and write?
> >>
> >>
> >> [Alia] I think it is folded into the read scope.  If we find the need
> >> for such a term later on, then we can add it.
> >
> > This section talks about "terminology" used in the draft.  However,
> > "read scope" as terminology is not used anywhere.  The concept of
> > _reading_ data is, however, quite prevalent.  In the same way, the
> > draft talks about "notification" in a number of contexts.  As such, I
> > feel there is enough distinction there to warrant calling out what is
> > meant by a notification scope.
> >
> > "notification scope: The set of events and associated information that
> > will be sent northbound by the I2RS Agent to I2RS Clients.  Clients
> > have the ability to register for specific events, but must do so given
> > the access restrictions of their associated read scope."
> >
> >>
> >>      Section 3.4:
> >>
> >>      I2RS clients may be operating on behalf of other applications.  While
> >>         those applications' identities are not need for authorization, each
> >>         application should have a unique opaque identifier that can be
> >>         provided by the I2RS client to the I2RS agent for purposes of
> >>         tracking attribution of operations.
> >>
> >>      JMC: The opaque ID might make it hard to accurately attribute changes.
> >>      I2RS should mandate a way to ensure traceability back to a client that
> >>      made the change or was granted access.
> >>
> >>
> >> [Alia] What do you have in mind?  The I2RS client will have a
> >> security role and its scope.  The I2RS client needs to vet the
> >> applications that it is a broker for.  The opaque ID can be something that is
> meaningful
> >> to that I2RS client.   Basically, I2RS is providing the identity and
> >> security for between the I2RS client and the I2RS agent.  I don't see
> >> it as practical or appropriate to try and define how the I2RS client
> >> and its applications interact; I know the broker/controller model is
> >> popular and so we do need enough to help support traceability to a
> >> secondary ID, but I'm not sure what is needed or appropriate beyond
> that.
> >
> > After listening to the working group session and based on other
> > threads, this text is now clearer to me.  To summarize my feeling, I
> > don't think I2RS should mandate a northbound Client protocol, but we
> > need a unique way to identify the specific Client that obtained
> > access.  This means that even in a load-balancing or HA case, there
> > must be a way to uniquely identify the Client that communicate with
> > the Agent.  The northbound actor driving the Client should also be
> > identifiable, but that is outside the scope of this document.
> >
> >>      Section 5.2.2:
> >>
> >>      An I2RS Agent may decide that some state should no longer be applied.
> >>         An I2RS Client may instruct an Agent to remove state it has applied.
> >>         In all such cases, the state will revert to what it would have been
> >>         without the I2RS; that state is generally whatever was specified via
> >>         the CLI, NetConf, SNMP, etc.  I2RS Agents will not store multiple
> >>         alternative states, nor try to determine which one among such a
> >>         plurality it should fall back to.  Thus, the model followed is not
> >>         like the RIB, where multiple routes are stored at different
> >>         preferences.
> >>
> >>      JMC:  Previously I had commented that one event that should be
> supported
> >>      and perhaps documented here is that if the agent decides to revert the
> >>      application can be notified that its state has been reverted.  This
> >>      might also be useful if another client overrides some portion of another
> >>      client's state (this is covered in Section 6.8, but might be useful to
> >>      mention here as well).  Perhaps add at the end of Section 5.2.2:
> >>
> >>        "A client may choose to be notified whenever its state is reverted
> >>      either by another client or by the I2RS agent."
> >>
> >>
> >> [Alia] I'll put in: "An I2RS Client may register for notifications
> >> when state that was applied by a particular I2RS Client is modified
> >> or removed."  That is slightly different since it allows an I2RS
> >> Client to learn about the changes to state from itself or from a
> >> different I2RS Client.
> >
> > WFM, thanks.
> >
> >>
> >>      Section 5.4.2:
> >>
> >>      (Bulleted list of examples)
> >>
> >>      JMC: Consider adding an example for an event such as a new route
> being
> >>      learned or an OSPF neighbor removal.
> >>
> >>
> >> [Alia] I think that "writing routes or prefixes to be advertised via the
> >> protocol" describes a new route being learned.   I'd prefer not to put
> >> OSPF neighbor removal in as an example.  It raises the questions
> >> about what is configuration vs. ephemeral data and the I2RS scope.
> >> If you have a good use-case that requires it, then I'd be quite
> >> interested in seeing it.
> >
> > I was specifically asking about an _event_ use case.  Very simply if
> > we learn/lose a route, I'd want my Client to be notified so I can
> > perhaps react to it to install another route or remove a route I have
> > previously installed (e.g., a failover/failback use case).
> >
> > Additionally, if a peer is otherwise reachable, but stops
> > participating in OSPF, BGP, etc., I would like I2RS to notify my
> > Client as I may not know about this any other way (though I could be
> > flooded with route delete events, it's good to correlate that to a peer going
> away).
> >
> >>
> >>
> >>
> >>      Section 5.4.4:
> >>
> >>      Many network elements have separate policy and QoS mechanisms,
> >>         including knobs which affect local path computation and queue
> control
> >>         capabilities.  These capabilities vary widely across implementations,
> >>         and I2RS cannot model the full range of information collection or
> >>         manipulation of these attributes.  A core set does need to be
> >>         included in the I2RS data models and in the expected interfaces
> >>         between the I2RS Agent and the network element, in order to
> provide
> >>         basic capabilities and the hooks for future extensibility.
> >>
> >>      JMC: I think this either needs an editor's note for more discussion or
> >>      perhaps QoS in general should be out of scope.
> >>
> >>
> >> [Alia] I am happy to add in an editor's note for more discussion -
> >> but we should start that conversation now on the list - because the
> >> WG does have quite tight deadlines for milestones.
> >
> > Fair enough.
> >
> >>      Section 6.1:
> >>
> >>      That protocol may use several underlying transports (TCP,
> >>         SCTP, DCCP), with suitable authentication and integrity protection
> >>         mechanisms.  Whatever transport is used for the data exchange, it
> >>         must also support suitable congestion control mechanisms.
> >>
> >>      JMC: I think Carlos (or someone) mentioned this, but I'm not sure DCCP
> >>      is ideal for I2RS since we likely do want reliable order of delivery.
> >>
> >>
> >> [Alia] Yes - DCCP is clearly the wrong choice for a control channel -
> >> but it may be
> >> good for delivering statistics.   I think we'll have different transport
> >> options depending on the requirements of a particular data model or
> >> section.  Since you are the second person to be confused by that
> >> section, I've added the following sentence:
> >>
> >> "These different transports can support different types of
> >> communication (e.g. control, reading, notifications, and information
> >> collection) and different sets of data."
> >>
> >>   Let me know if that helps or if you have better ideas for wording.
> >
> > That works.
> >
> >>      Section 6.7:
> >>
> >>      One of the other important aspects of the I2RS is that it is intended
> >>         to simplify collecting information about the state of network
> >>         elements.
> >>
> >>      JMC: I think this needs to be more specific to routing information
> >>      versus any information from the network element (e.g., it does not
> cover
> >>      CPU statistics).
> >>
> >>
> >> [Alia] The scoping is a question - and that will depend on what the
> >> use-cases we consider need and what the related information and data
> >> models need to be.  If you look at the
> >> draft-bitar-i2rs-service-chaining-00, it does ask for things like CPU
> >> load.  I do think there is a real need to be able to get back
> >> thresholded and filtered information.  You probably heard Ed's personal
> >> thoughts about a single protocol as well...   So - I don't think the
> >> architecture needs to restrict the data in scope - particular in a
> >> section that is talking about communication patterns - but as a WG,
> >> we need to keep a tight focus that still provides sufficient
> >> information to fully solve the desired use-cases.
> >
> > My concerns comes from a desire not to have I2RS become a common
> > API/protocol for things that SNMP or NETCONF or some other potential
> > data collection scheme is used for.  So I agree we need a tight focus
> > and potentially a litmus test for what should be adopted as
> > collectable data via I2RS.  As it stands now, I think someone could
> > argue for any kind of data and present a use case for it (e.g.,
> > latency, interface errors, location).  So the statement I made was
> > more around the lines of should I2RS stay pure to routing and routed
> > topology or should we really open the door to other data that is not
> specifically related to routing?
> >
> > Joe
> >
> >>
> _______________________________________________
> i2rs mailing list
> i2rs@ietf.org
> https://www.ietf.org/mailman/listinfo/i2rs