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

Alia Atlas <akatlas@gmail.com> Wed, 14 August 2013 19:20 UTC

Return-Path: <akatlas@gmail.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 2FEA121F9263 for <i2rs@ietfa.amsl.com>; Wed, 14 Aug 2013 12:20:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.706
X-Spam-Level:
X-Spam-Status: No, score=-1.706 tagged_above=-999 required=5 tests=[AWL=-0.773, BAYES_00=-2.599, HTML_MESSAGE=0.001, NO_RELAYS=-0.001, SARE_HTML_USL_OBFU=1.666]
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 Z5WZ-5gpLNbA for <i2rs@ietfa.amsl.com>; Wed, 14 Aug 2013 12:20:03 -0700 (PDT)
Received: from mail-oa0-x22b.google.com (mail-oa0-x22b.google.com [IPv6:2607:f8b0:4003:c02::22b]) by ietfa.amsl.com (Postfix) with ESMTP id B35D221F969F for <i2rs@ietf.org>; Wed, 14 Aug 2013 12:19:52 -0700 (PDT)
Received: by mail-oa0-f43.google.com with SMTP id i10so13805354oag.30 for <i2rs@ietf.org>; Wed, 14 Aug 2013 12:19:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=J9xPXSEqhO5A4jq9+4N571Zt3KFaBl0kH923ATbJLng=; b=vbDJhZ4Cu2JP9eVDiNbQcYTdeehRtl4cwXqMVJYff1EUJqzA0qgsdqXL2G+reo5+Wj utt8SXCHFf5cATGIU+Q3FG+4MY5Cd07FQTqbcsvVS1XpR9g0DfFy2NzuHwHkVjGxP/Bl Kc4eUsepIU6OD7jEid3o5W/EkkmBkqPh8amwR18pkOHYCpV4zynsCmXfRpoW5bUmihEu 456aZpAmEQJhrYAKopaw2/Pel9tD30+8Y0C+LMC3SK+m+6LCspZyM2u4q13K9q/2xM5W zQM0sH/nEukM72c3I/nQeerDya+KGPpwj+2Dhk63fHkLeDbEEF8YGZnB18DuB/iTgN7H 1IDA==
MIME-Version: 1.0
X-Received: by 10.60.52.244 with SMTP id w20mr10788229oeo.30.1376507992189; Wed, 14 Aug 2013 12:19:52 -0700 (PDT)
Received: by 10.182.221.98 with HTTP; Wed, 14 Aug 2013 12:19:52 -0700 (PDT)
In-Reply-To: <520BCB50.2040703@joelhalpern.com>
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> <2F3EBB88EC3A454AAB08915FBF0B8C7E02E24B44@eusaamb109.ericsson.se> <520BCB50.2040703@joelhalpern.com>
Date: Wed, 14 Aug 2013 15:19:52 -0400
Message-ID: <CAG4d1re9Q=iCTwcLL6ef+iO0qj5dBOAnVn8nfm3rAuHGhQfq+w@mail.gmail.com>
From: Alia Atlas <akatlas@gmail.com>
To: "Joel M. Halpern" <jmh@joelhalpern.com>
Content-Type: multipart/alternative; boundary="001a11334600e7b8ab04e3ed3d04"
Cc: Jakob Heitz <jakob.heitz@ericsson.com>, "i2rs@ietf.org" <i2rs@ietf.org>, Joe Marcus Clarke <jclarke@cisco.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 19:20:05 -0000

Joel,

I agree - but I do think the atomic writes is interesting for handling
write decisions based upon dynamic state that could be changed.  Something
to think about for a later version perhaps - and unrelated to the multiple
writers of the same data case.

Alia


On Wed, Aug 14, 2013 at 2:24 PM, Joel M. Halpern <jmh@joelhalpern.com>wrote:

> write-locks / atomic writes are an interesting quesiton, but probably
> should not be thought about as part of the multiple writers case.  The
> multiple writers case is:
> A writes value X.
> B decides to write value Y.
> How clever do we want to be about handling this.
> The answer we have proposed is "as simpleminded as we can get away with."
> The specifics we chose are
> 1) this is an error case
> 2) there are priorities which determine which value ends up in effect.
>
> Atomic writes could come up when there is a race, but more likely would
> come up when there are system effects which would change this value when it
> is not pinned by I2RS.
>
> Yours,
> Joel
>
>
> On 8/14/13 2:14 PM, Jakob Heitz wrote:
>
>> 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<https://www.ietf.org/mailman/listinfo/i2rs>
>>>
>>
>>