Jeff,

I could add this to the wiki and we could keep updating it.
Next i will do something similar for the model.

Dean/Andy -  Feel free to throw rotten tomatoes; at least that way we
have something to talk about.

cheers,
jamal
The I2RS protocol must satisfy the following requirements.

1) Model-Driven Programmatic Interfaces
The I2RS protocol MUST work in conjunction with I2RS data model
to facilitate programmatic interfaces

2) Extensibility
The I2RS protocol MUST be extensible

3) Protocol operations

The I2RS protocol, using the I2RS data model, MUST allow clients to:
a) determine the capabilities and capacities exposed by each agent.
b) control(adding/updating/deleting) and query the various I2RS objects
owned by an agent
c) subscribe to and receive agent-generated events 
d) analytics, audits and logging
*protocol requirements being ability to express time stamps and identity
** not sure if this calls out for "streaming" of data (as opposed to
message based) and whether a requirement to call out here is separate
"channel" for this kind of activity.

4) Support for Secure Communication between clients and agent.
I2RS protocol communications must allow for mutual message authentication,
and different levels of integrity, confidentiality, and replay protection
of packets.

5) Client Identity and Authentication
Any client to agent object access must be subject to mutual authentication, 
authorization and resource accountability. 
The protocol MAY need to carry information to enable this requirement.

6) Scalability
a) The I2RS protocol MUST be capable of supporting 
   at least thousands of clients end points. i.e there should be 
   no limitation in the protocol definition which restricts the agent
   from handling many clients (e.g in a header definition dont use
   an 8bit field to define a client id)
b) Multiple pipelined Operations:   A single client should be able 
   to send multiple operations via I2RS without being
   required to wait for each to complete before sending the next. The
   protocol SHALL provide such mechanisms (eg windowing etc)
c) High-Throughput:   At a minimum, the I2RS Agent and associated router
   should be able to handle a considerable number of operations per
   second above what basic Netconf or a propretiary CLI can.
   XXX: I think we need to throw in some numbers here ..
   [achieving 10s to 100s of thousands of table updates/second should be
    possible].
   protocol requirement here would be allowing for batching.
d) Low Latency:   It MUST be possible to complete simple I2RS operations
   within a sub-second time-scale. It SHOULD be possible to to possible to
   process bulk data intensive operations (eg a table dump or update) with
   low latency.
e) Filterable Information Access:  The protocol MUST allow to extract 
   information in a scalable fashion that is more easily used by clients, the
   ability to specify filtering constructs in the I2RS protocol request
   MUST be possible.

7) Multi-Headed Control:   Multiple clients may communicate to the
   same I2RS agent. It is necessary that the I2RS agent can handle 
   requests from multiple clients to the same object within constraints of 
   the client access authorization.

8) Reliability
  The I2RS protocol will be used to transport information that
  requires varying levels of reliability.  By strict or robust
  reliability in this requirement we mean, no losses, no
  corruption, no re-ordering of information being transported and
  delivery in a timely fashion.

    a) Some information or payloads, such as subscribed-to events
       may not require robust reliability (can tolerate some degree of losses).
    c) Payloads such as configuration information from clients
       to the I2RS agent or responses from the I2RS agent
       are mission critical and must be delivered in a robust
       reliable fashion.  Thus, for information of this sort, I2RS
       MUST either provide built-in protocol mechanisms or use a
       reliable transport protocol for achieving robust/strict
       reliability.

9) Message Priority
   The I2RS protocol MUST provide a means to express the protocol
   message priorities. As various types of messages are expected,
   their level of importance will be different depending on congestion.


10) Protection against node overload 
   based on CPU overload or queue overflow to either an agent resource
   or client(s).
   XXX: This may end up being an implementation issue/
   Agents/clients utilizing the I2RS protocol can be subjected
   CPU overload or queue overflow. The I2RS agent MUST be robust
   under such conditions.

11) Transactions capability (section 7.9 of architecture doc)
The protocol must be able to express error handling for batched
operations. These are:
- Perform all or none
- Perform until error
- Perform all storing errors

12) Transport independence
Not sure how well this is a fit. It may complicate things.
If we were to separate the semantics of the I2RS protocol from the underlying
transport protocol then we could allow for more flexibility of different 
characteristics.

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

Reply via email to