Internet DRAFT - draft-rfernando-irs-framework-requirement

draft-rfernando-irs-framework-requirement



 



INTERNET-DRAFT                                               R. Fernando
Intended Status: Informational                                 J. Medved
Expires: April 11, 2013                                          D. Ward
                                                                   Cisco
                                                                        
                                                                A. Atlas
                                                              B. Rijsman
                                                        Juniper Networks
                                                        October 11, 2012


                       IRS Framework Requirements
              draft-rfernando-irs-framework-requirement-00


Abstract

   The Interface to Routing System (IRS) allows an application to  
   programmatically query and modify the state of the network. This  
   document defines the requirements for IRS with appropriate  
   reasoning where required.


Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html


Copyright and License Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 1]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   document authors. All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document. Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.



Table of Contents

   1  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1  Terminology . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  IRS Overview . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3. IRS Framework Terminology . . . . . . . . . . . . . . . . . . .  4
   4. IRS Framework Design Objectives . . . . . . . . . . . . . . . .  7
   5. IRS Framework Requirements  . . . . . . . . . . . . . . . . . .  9
     5.1 General Assumptions  . . . . . . . . . . . . . . . . . . . .  9
     5.2 Transport Requirements . . . . . . . . . . . . . . . . . . . 10
     5.3 Identity Requirements  . . . . . . . . . . . . . . . . . . . 11
     5.4 Message Encoding Requirements  . . . . . . . . . . . . . . . 12
     5.5 Message Exchange Pattern Requirements  . . . . . . . . . . . 13
     5.6 API Method Requirements  . . . . . . . . . . . . . . . . . . 15
     5.7 Service and SDM Requirements . . . . . . . . . . . . . . . . 16
     5.7 Security Requirements  . . . . . . . . . . . . . . . . . . . 18
     5.8 Performance and Scale Requirements . . . . . . . . . . . . . 19
     5.9 Availability Requirements  . . . . . . . . . . . . . . . . . 20
     5.10 Application Programmability Requirements  . . . . . . . . . 20
     5.11 Operational Requirements  . . . . . . . . . . . . . . . . . 21
   6 Security Considerations  . . . . . . . . . . . . . . . . . . . . 21
   7 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 22
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
     8.1  Normative References  . . . . . . . . . . . . . . . . . . . 22
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 22









 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 2]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


1  Introduction

   Routers, switches and network appliances that form today's network  
   infrastructure maintain state at various layers of detail and  
   function.  For example, each router has a Routing Information Base  
   (RIB), and the routing protocols (OSPF, ISIS, BGP, etc.) each  
   maintain protocol state and information about the state of the  
   network.

   IRS [IRS-FRMWK] defines a standard interface through well defined
   APIs to   access this information. The information collected by an  
   application could be used to influence the routing system in  
   conjunction with user defined policies in a feedback loop.

   IRS enables this feedback loop so that applications can not only  
   collect information but also use them to influence the network. The  
   goal is to facilitate control and diagnosis of the routing  
   infrastructure, as well as enable sophisticated applications to be  
   built on top of today's network infrastructure.

   Over time applications would evolve and with it their requirements  
   too.  IRS MUST be extensible so that future requirements can be  
   easily factored in. IRS should be modular and extensible. It should  
   be simple to understand and friendly to application developers.

   This document describes some of these requirements in detail taking  
   into consideration the use cases described in [2]. Particular  
   attention is paid to API and the application consumption model so  
   that it is developer friendly.

   This document's scope is purely to collect and document requirements
   for the IRS framework. This could serve three purposes:

   a. To help the stakeholders (equipment vendors, application
   programmers or interested IETF participants), to arrive at a common
   understanding of the important elements of IRS.

   b. To provide requirements to the designers of IRS framework on the
   different aspects of the framework that needs consideration in the
   design process.

   c. To allow the stakeholders to evaluate technology choices that are
   suitable for IRS, to identify gaps in them and to help evolve them to
   suite IRS's needs.

1.1  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 3]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].


2.  IRS Overview

   IRS provides a standard interface for applications to read and  
   write state in a network device. Since the application and the  
   network device could reside in different physical nodes, IRS could  
   be viewed as a distributed client-server system.

   IRS can also be viewed as a "framework" that helps reduce the  
   "start up" cost in developing network based applications. A  
   framework codifies a set of principles, patterns and software  
   artifacts that allow application developers to quickly develop new  
   applications.

   Instead of designing each application from scratch, the IRS  
   framework provides a set of infrastructure that abstracts the  
   application indepedent mechanisms. This approach enhances software  
   agility, reusability and portability. 

   This document aims at making sure that the requirements of the IRS  
   framework are well articulated by describing its high level  
   objectives, the concepts and components involved, how they are  
   related and what their requirements are.

3. IRS Framework Terminology

   Before we delve into the details of the IRS framework, it might  
   help to establish some basic terminology. 

   Service: For the purposes of IRS, a service refers to a set of  
   related state access functions together with the policies that  
   control its usage. For instance, 'RIB service' could be an example  
   of a service that gives access to state held in a device's RIB.

   Server: Is a system that implements one or more services so that  
   other client systems can call them through well defined   interfaces.
   A server can export multiple services. A server is   typically a
   network device.

   Client: Is a system that calls a service implemented by a server  
   through the well defined interface. A client can make use of  
   multiple services from many servers. A client is typically a  
   network application.

   Participants: The server and client are collectively called the  
 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 4]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   participants of a service.

   Transport: Is any mode of communication on an end-to-end basis  
   between the server and client that allows them to exchange data. In  
   principle, the transport hides the topology and other network  
   properties from the participants of a service.

   Messages: Messages are logical chunks of data that are exchanged  
   between service participants.

   Message Exchange Pattern: Is a categorization of different ways in  
   which messages could be exchanged between service participants.  
   MEPs specify the sequence, order, direction and cardinality of  
   messages exchanged. Request-response and asynchronous notifications  
   are examples of MEPs. MEPs are also sometimes referred to as   the
   session protocol.

   Message Data Model: The schema representing the structure of  
   messages being exchanged between the service participants. The MDMs  
   can specify certain constraints such as the data type, length,  
   format and allowed values of fields in messages.

   Message Encoding: The "wire" representation of messages exchanged  
   between service participants. 

   API Method: Is an application level procedure or a function that is  
   invoked by the client to query or modify the state held in the  
   server.

   Service Scope: Is the functional scope of a service. The service  
   scope is established during the service definition phase.

   Service Data Model: The schema representing the conceptual  
   structure of the state held in the server for a given service. The  
   SDMs can specify certain constraints such as the data type, length,  
   format and allowed values for fields representing the state. They  
   also describe the relationship between the state.

   Modeling Language: Is a language that defines schema for Message  
   Data Models and Service Data Models.

   Namespaces: Allows a method for uniquely identifying and scoping of  
   schemas declared for messages and services. Namespace is an  
   important consideration when defining services and messages.

   Service State or State: Is the general data held by the server for  
   a given service.

 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 5]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   State Element: A programmable state present in the server. State  
   Element could vary in granularity.

   State Identifier: A unique identity for the state element. The  
   identifier is derived from the SDM and uses the same naming  
   convention as the SDM. State Identifier can be viewed as the 'key'
   for the   state.

   State Value or 'value: This is a value that is assigned to a  
   particular state identifier (key). The state is referred using the  
   State Identifier or 'key' in operations that sets or transfers the  
   value of the state.

   State Owner: Identity of the client that was the source of a state  
   held in the server.

   State lifetime: The duration up to which the state is maintained in  
   the server.

   Datastore: This is the physical mechanism used to store a service's  
   state.

   Capabilities: Capabilities represents the functionality supported  
   by a server including the services supported and exported to  
   clients.

   Authentication: Mechanism that allows a server to recognize the   
   identity of a client.

   Authorization: Determination of what an authenticated client is  
   allowed to do.

   Confidentiality: Specifies if data remains confidential while in  
   transit between service participants.

   Policy: For the purposes of this document, a policy is an explicit  
   user configurable modification to the default behavior of the  
   system. The enforcement could be conditional; they could become  
   effective only when certain conditions are met.

   As can be seen, there are many aspects to be considered in designing
   the IRS framework. The next section decribes the broad objectives of
   the framework and breaks down the concerns so that each's
   requirements can be individually examined.




 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 6]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


4. IRS Framework Design Objectives

   The goal is to provide a framework with the infrastructural
   components needed to develop intelligent applications that control
   the network. These are some of the core guiding principles and
   objectives that should be kept in mind when designing that
   framework.

   a. Requirements Driven: The design of the framework should be  
   pragmatic and requirements driven. Having adequate provisions to  
   meet the needs of current applications yet making key aspects  
   extensible to meet future needs should be the goal.

   b. Simple to Program: The success of any architectural framework  
   depends on the how simple it is to understand and implement  
   against. When presented with multiple choices to perform a  
   function, choosing one of them instead of supporting all of them  
   might lead to simpler design. In doing so, the design should  
   consider the most important requirements and the most common  
   deployment scenarios.

   c. Standards Based: The need for a standards-based approach to
   network programmability has been recognized by many standardization
   groups including IETF. All aspects of IRS should be open standards
   based. However, IRS should specify mechanisms to extend it in vendor
   specific manner. The aspects of IRS that could be extended should  
   be identified in this document and should be supported by an  
   implementation.

   d. Design for Scale and Performance: The design should meet current  
   and future performance and scale needs. It goes without saying that  
   scale and performance should be key criteria for making design  
   choices. There are well understood design patterns that allow us to  
   compose a scalable, high performing system.

   e. Extensible: IRS will be deployed in environments whose
   requirements   evolve over time. Hence the system should be designed
   with provisions that will allow significant enhancements to be added
   to meet specified future goals and requirements. An extensible and  
   future-proof design will drive better adoption as it is a promise  
   against future technology churn.

   f. Promote Reuse: Reuse in this context refers to using existing  
   tools, technologies and mechanisms instead of inventing them from  
   scratch. It also refers to reusing a network device's current set  
   of capabilities that applications could harness without reinventing  
   them from scratch.

 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 7]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   g. Promote Portability: Portability refers to the ease with which  
   software written for one device or environment can be moved to work  
   seamlessly with another device or environment to achieve similar  
   functionality. A fundamental requirement for IRS is to achieve  
   predictive and consistent behavior when applications are migrated  
   from one platform or environment to another.

   h. Security: IRS could be deployed in environments where it might be
   subjected to threats and denial-of-service attacks that might cause  
   intentional damage to the functioning of a network. This could be  
   in the form of loss of service, degradation of performance, loss of  
   confidentiality, etc. Therefore, the security aspects should be  
   carefully thought through when designing IRS.

   i. Separation of concerns: The components of the system should be  
   decoupled from each other as much as possible to achieve clear  
   separation of concerns. This modularity would allow for  
   interchangeable design and implementation choices that address the  
   individual components requirements.

   j. Robustness: Robustness is the ability of a system to operate in
   the face of failures and errors. It is also its ability to correctly 
   and predictably recover from such errors and to settle to a known  
   state. Since applications that use the IRS framework are remote and  
   would be controlling the entire network, ensuring fault tolerance  
   is an important consideration.

   Most of these requirements cut across all the components of the
   system and hence should be kept in mind while designing each
   component and the system as a whole.


















 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 8]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


5. IRS Framework Requirements

   This section is divided into multiple sub-sections, each dealing with
   a specific consideration of IRS framework design. As we list the
   requirements under each subsection, we'll annotate each requirement
   with what high level objectives they meet. A reason for creating the
   requirement is additionally provided where appropriate.


5.1 General Assumptions

   This section captures the general, high level assumptions of the IRS
   framework. Since the design choices for the IRS framework are many,
   some simplifying assumptions could make the framework requirements
   more tangible and useful. 

   +--------+       +--------+              +-----------+
   | Client |  ...  | Client |  ....   .... |  Client   |
   +--------+       +--------+              +-----------+
       ^                 ^  ^                  ^
       |                 |  |                  |
       |                 |  |                  |
       |                 |  |     IRS          |
       |                 |  +-------------+    |      
       |                 |                |    |
       |                 | IRS            |    |
       |                 +---+            |    | IRS        
       |                     |            |    |
       |      IRS            |            |    |
       +------------------+  |            |    |
                          |  |            |    |
                          V  V            V    V
                      +-----------+     +-----------+     
                      |   Server  |     |   Server  |
                      +-----------+     +-----------+


   G.1 Programmatic access to the state held in a network device is   
   provided to an application by exposing a set of API's from the   
   device to the application. Due to this characteristic, IRS is a   
   client-server protocol/framework. IRS must provide mechanisms for the
   client to discover services that a server provides.

   G.2 The client can use the API's provided by the server to   
   programmatically add, modify, delete and query state held in the   
   server. Additionally clients can register for certain events and be
   notified when those events occur.

 


R. Fernando, et. al.     Expires April 11, 2013                 [Page 9]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   G.3 The client and the server communicate using a simple transport   
   connection. The client initiates the transport connection to the   
   server. The server does not know the number and timing of the   
   connections from its clients.

   G.4 A service provides access to the state held in the server   
   structured according to the SDM of that service. A service allows   
   a client the ability to manipulate the service state.

   G.5 The IRS MUST define a data model to describe the SDMs supported
   in the server and MUST define a data modeling language to formally
   describe that data model. IRS MUST specify the mapping from the
   service data model to the message data model and subsequently to the
   client API.


5.2 Transport Requirements

   The transport layer provides connectivity between the client and the
   server. This section details the transport requirements.

   T.1 There should exist a default transport connection between the  
   client and the server for communication. This control connection is
   point-to-point and should provide in-order and reliable delivery of
   data in both directions. The simplest IRS setup will only have a
   single transport session between the participants.

   T.2 Depending on the data being exchanged, there could be additional
   transport connections between the client and server defined in    
   future. The characteristics of these additional transport    
   connections will be dictated by the requirements that create them.

   T.3 The transport connection between the client and server should
   have mechanisms to support authentication, authorization and
   optionally provide confidentiality of data exchanged between the
   client and the server. See 'Security Requirements' for more details.

   T.4 A client could connect to multiple servers. Similarly, a server  
   could accept connections from multiple clients.

   T.5 The exact technology used for the transport layer should be    
   replaceable. There should be a single mandatory transport that    
   should be supported by all participants. This requirement will    
   ensure that there is always an interoperable transport mechanism    
   between any client and any server.

   T.6 Clients and servers by default communicate using a point-to-point
   transport connection. 
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 10]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   T.7 Point-to-multipoint transport are mainly used to scale the system
   by avoiding ingress replication when the same message has to be
   delivered to multiple receivers. P2MP transport would work hand-in-
   hand with a P2MP MEP. The subject of P2MP transport and P2MP MEP is
   for future work.

   T.8 Once the transport connection is up, it is desirable to keep it
   up and use it to perform multiple operations. This requirement    
   ensures that the system scales by amortizing the session setup    
   cost across multiple operations. Session down events do not have    
   an impact on the state maintained by the server.

   T.9 After the transport connection comes up, the participants
   exchange capabilities and other session parameters before exchanging
   service related messages. 

   T.10 Messages pertaining to multiple services could be exchanged over
   a single transport connection.

   T.11 The "default" transport connection between the client and server
   is purely for control plane message exchanges. Data plane packets    
   are not expected to be sent over this "default" connection. When
   required,     data plane 'punt' and 'inject' packets between
   participants could     be designed as a service in itself that sets
   up a 'punt-inject-transport' that processes the right
   characteristics.

   T.12 For operational reasons, there MUST be a need to identify a    
   transport connection failure. To satisfy this requirement, transport 
   level keep-alives could be used. If the underlying transport
   connection does not provide a keep-alive mechanism, it should be
   provided at the IRS protocol level. For example, if TCP is used as a 
   transport, TCP keep-alives could be used to detect transport    
   session failures. 


5.3 Identity Requirements

   IRS could be used in a multi-domain distributed environment.
   Therefore a fool-proof way to ascertain the identity of clients is of
   utmost importance. Identity provides authenticated access to clients
   to state held by the server.

   I.1 Each client should have a unique identity that can be verified by
   the server. The authentication could be direct or through an    
   identity broker.

   I.2 The server should use the client's identity to track state    
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 11]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   provided by the client. State ownership enables the multiple    
   clients to edit their shared state. This is useful during client    
   death or disconnection when state owned by one client might be    
   delegated to another client that shares the same identity.

   I.3 The client's identity should be independent of the location or
   the network address of the physical node in which it is hosted. This 
   allows the client to move between physical nodes. It also allows a   
   standby client to take over when the primary fails and allows shared 
   state editing by multiple clients as discussed in I.2.

   I.4 A client that reboots or reconnects after a disconnection MUST   
   have the same identity if it wishes to continue to operate on the    
   state that it previously injected.

   I.5 A clients ability to operate on a state held by the server is    
   expressed at the granularity of a service. A service could be    
   read-only or read-write by a client possessing a particular    
   identity.

   I.6 A policy on the server could dictate the services that could be  
   exposed to clients. Upon identity verification, the authorized    
   services are exported to the client by capability announcement.

   I.7 A client can edit (write, delete) only the state that was
   injected by it or other clients with the same shared identity.
   Therefore, two conditions must be met for a client to edit a state
   through a session. First, the client should receive capability from
   the server that it has 'edit' permissions for the service in    
   question, and, secondly, the state that it edits should be its    
   own state.

   I.8 When there is a single client and it dies, operational provisions
   should be made to garbage collect its state by a client that    
   shares the original clients identity.

   I.9 The server retains the client's identity till all of its state is
   purged from the server.



5.4 Message Encoding Requirements

   Clients and servers communicate by exchanging messages between them.
   Message encoding is the process of converting information content in
   a message to a form that can be transferred between them.

   ME.1 Every message between the client and the server is encoded in a 
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 12]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   transport independent frame format.

   ME.2 Each message is serialized on the senders side and de-serialized
    on the receivers side. The technology used for encoding and     
   decoding messages could be negotiated between the client and the
   server.

   ME.3 A mandatory default encoding standard should be specified and   
   implemented by all IRS participants. This ensures that there is     
   an interoperable default encoding mechanism between any client     
   and any server.

   ME.4 The mandatory encoding technology chosen should be well
   supported by a developer community and should be standards based.    
   Availability of tools and language bindings should be one of the     
   criteria in selecting the mandatory encoding technology.

   ME.5 If multiple message encoding is supported in the framework, the 
   encoding used for the current session should be configured using     
   a policy on the server side and negotiated using capabilities. Note
   that currently there is no requirement to support multiple encoding
   schemes.

   ME.6 The message encoding standard should be language and platform   
   neutral. It should provide tools to express fields in messages     
   platform independent IDL based language.

   ME.7 The encoding/decoding mechanism should be fast and efficient. It
   should allow for operation on legacy equipment.

   ME.8 The encoding scheme should allow for optional fields and
   backward compatibility. It should be independent of the transport and
   the message exchange pattern used.

   ME.9 Human readability of messages exchanged on the wire might be a
   goal but it is secondary to efficiency needs.



5.5 Message Exchange Pattern Requirements

   Message exchange patterns form the basis for all service level
   activities. MEPs create a pattern of message exchanges that any task
   can be mapped to whether initiated by a client or the server. This
   section provides the requirements for MEPS.

   MEP.1 IRS defines three types of messages between the client and the
   server. First, capabilities need to be exchanged on session
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 13]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   establishment. Second, API commands send down from client to server
   to add, delete, modify and query state. And     third, asynchronous
   notifications from server to client when       interesting state
   changes occur.

   MEP.2 The above message exchanges can be satisfied by two message
   exchange patterns. Capabilities and asynchronous notifications can be
   satisfied by one-way unsolicited fire and forget message. API
   commands can be satisfied using a request-response message exchange.
   The base IRS framework should thus support at least these two MEPs.

   MEP.3 For a request-response MEP, the server should acknowledge every
   request message from the client with a response message.

   MEP.4 The response message in a request-response MEP should indicate 
   that the server has received the message, done some basic sanity    
   checking on its contents and has accepted the message. The      
   arrival of a response does not mean all post processing of the      
   message has completed. 

   MEP.5 The response message should indicate an error and carry error  
   information if there was a failure to process the request.  The      
   error code should be accompanied by a descriptive reason for      
   the failure.

   MEP.6 Error codes should indicate to the client which layer generated
   that error (transport, message parsing, schema validation,      
   application level failure, etc). IRS framework should specify a
   standard set of error codes.

   MEP.7 The request-response messages should be asynchronous. That is, 
   the client should not stop-and-wait for one message to be      
   acknowledged before it transmits the next request.

   MEP.8 To satisfy MEP.5, there needs to be a mechanism such as a
   message-id, carried in the response that helps the sender correlate
   the response message to its original request.

   MEP.9 The response messages need not arrive in the order in which the
   request was transmitted.

   MEP.10 The request message should carry an application cookie that   
   should be returned back to it in the corresponding response.

   MEP.11 Besides the request-response MEP, there is a need for a fire
   and forget MEP. Asynchronous notifications from the server to the    
   client could be carried using this MEP. Fire and forget MEPs can be
   used in both client-to-server and server-to-client directions.
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 14]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   MEP.12 The fire-and-forget MEP does not carry a message-id but it    
   should carry a cookie that can be set by the sender and      
   processed by the receiver. The cookie could help the receiver      
   of the message to use the message for its intended purpose.



5.6 API Method Requirements

   API methods specify the exact operation that one participant intends
   to perform. This section outlines the requirements for API methods.

   A.1 The IRS framework should provide for a simple set of API methods,
   invoked from the client to the server. These methods should allow   
   to add, modify, query and delete of state that the server maintains.

   A.2 The IRS framework should provide for two methods, subscribe and  
   unsubscribe, that the client can use to express its interest in   
   specific state changes in the server.

   A.3 The API methods discussed in A.1 and A.2 should be transported   
   in a request-response MEP from the client to the server.

   A.4 The API framework should provide for a single notify method from 
   the server to the client when interested state changes occur. The   
   notification method should be transported in a fire-and-forget MEP   
   from the server to the client.

   A.5 The framework should define a set of base API methods for   
   manipulating state. These should be generic and should not service   
   specific.

   A.6 All API methods that affect the state in the server should be   
   idempotent. That is, the final state on the server should be   
   independent of the number of times a state change method with the   
   same parameters was invoked by the client.

   A.7 All API methods should support a batched mode for efficiency   
   purposes. In this mode multiple state entries are transmitted in a   
   single message with a single operation such as add, delete, etc. For
   methods described in A.1 and A.2 which elicit a response, the failure
   mechanism that is specific to a subset of state in the batch should
   be devised. Notify method should also support a batched mode.

   A.8 Since the API methods are primarily oriented towards state   
   transfer between the client and server, there should be a   
   identifier (or a key) to uniquely identify the state being   
   addressed.
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 15]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   A.9 API methods that refer to value of a particular state should
   carry the state identifier (key) as well as the its value. For
   instance, during a state add operation, both the identifier (key) and
   the value should be passed down from the client to the server.

   A.10  Besides the basic API methods that are common to all services,
   a server could support proprietary methods or service specific     
   methods. The framework should devise a mechanism to express     
   these methods and their semantics through a modelling language     
   or otherwise.  The ability to support additional API methods     
   should be conveyed to the client through the capability message.

   A.11  Transactions allow a set of operations to be completed atom(all
   or nothing) and that the end result is consistent. This might be a
   requirement for some network applications and the framework designers
   should keep this requirement in mind during the design phase.



5.7 Service and SDM Requirements

   S.1 Each service is associated with a service data model that defines
   the type and structure of the state pertaining to that service. IRS
   should provide mechanisms to manage the state held in the server in
   accordance to the SDM.

   S.2 The data model should have the ability to express one-to-one,    
   one-to-many and hierarchical relationships between entities.

   S.3 The base IRS API methods should allow a client to add, modify,
   query and delete state information. 

   S.4 Neither the transport or the MEP should have any bearing on the 
   structure of the state being transferred. Each service module in    
   the server would be responsible for interpreting the structure of    
   the state being transferred corresponding to the SDM.

   S.5  A client, after proper identification, could operate on multiple
   'services' that are exported to it. A client could have read-only    
   or read-write access to a service. This is expressed by exchanging  
   capability information with the client.

   S.6 The arrangement and structure of state (SDM) should be expressed 
   in a network friendly data modelling language. 

   S.7 Service data model once defined should be able to be extended.
   Service data  models should be able to express mandatory and optional
   elements. If should also have the ability to express exceptions    
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 16]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   for unsupported elements in the model. These are requirements for    
   the modelling language.

   S.8 For every service that it wishes to expose to a client, the
   server should send capabilities that indicate the service data model,
   any exceptions to it and the optional features of the data model    
   that it supports.

   S.9  A service data model could be dependent on another SDM and
   should  have the ability to refer to state elements in another
   service  data model.

   S.10 A state element expressed in a data model could be writeable by
   a  client or purely readable. Readable state elements are populated  
   and managed by the server and clients don't have the ability to    
   write their value. Routing next-hops added by a client is an    
   example of read-write state. Statistics associated with that    
   next-hop is an example of read-only state. The modelling language    
   should have the ability to express this constraint.

   S.11 Query and notification API should be able to carry both read-
   only as well as read-write state.

   S.12 Besides specifying a SDM, a service should also specify the    
   interesting state changes that clients can subscribe to for    
   notifications.

   S.13 A client which is authenticated to access a service (either    
   read-only or read-write) can subscribe to state change events.

   S.14 A subscribe method should optionally have a filter associated.  
   This increases the efficiency by filtering out events that the    
   client is not interested in. The notification filter should have    
   the ability to express state identifiers and wildcards for    
   values.

   S.15 The base API operations should be generic and allow a client to 
   operate on multiple services with the same set of methods. Each    
   service dictates its one schema or SDM.

   S.16 IRS protocol should allow a server to export standard services
   as well as vendor proprietary services. A namespace scheme should be
   devised to recognize standard and proprietary services.

   S.17 The server should indicate to the client the availability of    
   infrastructure to manage the state that it maintains. This    
   includes but not limited to the availability of persistent store,    
   the availability of timer to clean up state after a specified    
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 17]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   timeout, the ability to clean up state on the occurrence of an    
   event, etc. Equipped with this information, the client is    
   responsible for the lifetime of the state.

   S.18 Each state should have a set of meta data associated with    
   it. This includes the state's owner, the state's lifetime    
   attributes, a creation and modification timestamp, etc. This    
   information would aid in the debugging of the system. An    
   authenticated client that is exposed to a service should also    
   have access to the meta data associated with that service's    
   state.




5.7 Security Requirements

   Security requirements should be thought through up front to avoid
   expensive rework to the framework. Adding security requirements once
   the system is designed could be an expensive and painful process.
   This section calls out some security concerns to be kept in mind
   while designing the framework.

   SEC.1 Every client should be authenticated and associated with an    
    identity. A secure mechanism to uniquely identify a client such     
   as certificates should be adopted.

   SEC.2 Every client should have an authorized role whereby only
   certain state can be accessed and only certain operations can be     
   performed by that client. To keep the model simple and     
   applications portable, authorization should be at a per service     
   level and not on individual state element level.

   SEC.3 The framework should provide for information confidentiality
   and information integrity as options.

   SEC.4 Every state maintained by the server should be tagged with the 
   client's identity as well as meta-data to indicate last access     
   and last modifications time-stamps. This ensures accountability     
   and helps auditing the system.

   SEC.5 The framework designers are strongly encouraged to provide     
   mechanisms to "hook" into third-party security infrastructure to     
   achieve these security goals whenever possible. This keeps     
   applications programmers free of security concerns and yet     
   provides a flexible, configurable and well integrated security     
   model.

 


R. Fernando, et. al.     Expires April 11, 2013                [Page 18]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


5.8 Performance and Scale Requirements

   Performance requirements are usually weaved in with the functional
   requirements of a system. They feature in every decision made to
   fulfill the systems requirements. Performance and scale are a complex
   function of many things. Hence performance requirements cannot be
   precisely quantified by a single number. This section lays out some
   common sense guidelines that should be kept in mind while designing
   the system from a scale and performance standpoint.

   PS.1 The request-response MEP should be asynchronous. This ensures   
   that a system is not stuck waiting for a response and makes the    
   entire system more responsive and increases concurrency between    
   operations.

   PS.2 When applicable, messages should carry application level cookies
   that enable an application to quickly lookup the context    
   necessary to process a message. The management of the cookie is    
   the applications responsibility.

   PS.3 The framework should allow for bulk operations which amortizes  
   the communication and messaging costs.

   PS.4 Provide for a binary encoding option for messages between the   
   participants.

   PS.5 Provide for a non-encrypted transport between the service    
   participants.

   PS.6 Provide for message prioritization.

   PS.7 Multiple operations could be completed with one transport    
   session.

   PS.8 Keep the server as stateless with respect to the number and
   location of each client.

   PS.9 For notifications, support filtered subscription.

   PS.10 If a client requires to re-synchronize state with the server,  
   device a mechanism to do this efficiently without transferring     
   all the state between them.

   PS.11 Allow clients that perform infrequent operations to disconnect 
   their transport connection without cleaning up their state.

   PS.12 Create the basic necessary mechanisms in the framework and
   build everything else as a service if possible.
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 19]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


5.9 Availability Requirements

   The ability of the system to withstand operational failures and
   function in a predictable manner is called availability. A few
   guidelines that are important are,

   A.1 Provide a 'superuser' identity that is capable of changing   
   security policies, clearing state and perform other actions that   
   override client initiated actions in the system.

   A.2 Handle session disconnection and client deaths gracefully. These
   should have the least impact on the system.

   A.3 Log client connections and disconnections and provide this as a 
   well known service to authenticated users. 

   A.4 Notify clients of message processing and other errors through   
   error codes in messages.

   A.5 Have a mechanism to gracefully terminate the session between the 
   client and the server.

   A.6 Provide a mechanism for authenticated clients to query the load 
   attributes of the system, both instantaneous and running    average.
   Provide this as a service.



5.10 Application Programmability Requirements

   The framework should pay particular attention the the requirements of
   application programmers. A well written framework should improve the
   productivity of programmers and shorten the time to make an
   application. This section has some issues to consider when devising
   the framework from an applications standpoint.

   AP.1 A client programming framework should allow applications writers
   to focus on the app functionality rather than mechanisms required to 
   communicate with the server.

   AP.2 The application once written to certain requirements should be  
   portable to other identical environments. The framework should    
   not have fine grained data access controls as this would lead to    
   a poorly written application with portability issues.

   AP.3 The framework should be devised in a manner that it is possible 
   to automate code generation and constraint checking in popular    
   programming languages. Generated code can then be used readily by
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 20]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


   application programmers instead of dealing with the nitty-gritties of
   the system.

   AP.4 Define a common repository for SDMs from which clients can
   obtain the SDMs they are interested in and automatically generate
   most of the boilerplate code.

   AP.5 Provisions should be made for debugging & troubleshooting tools
   that includes message trace, call traces, access to relevant    
   server traces and logs, packet decode tools to trace & decode    
   messages on the wire, consistency checkers of state inserted into    
   a server. 

   AP.6 The toolset should have a general portion (for common functions,
   such as session management) and SDM-specific portions (for    
   example, a flag to control generation of debug code in code    
   generated for a particular SDM).

   AP.7 The framework should define SDMs and MDMs in a language neutral
   format so as to enable code generation in multiple programming
   languages.


5.11 Operational Requirements

   O.1 There is a need to identify operational performance parameters of
   the system and provide mechanisms to retrieve them from a running   
   system.

   O.2 Provide a way to upgrade a service independently of the other   
   services. This modularity allows uninterrupted operation of the   
   all but one service which is being upgraded.

   O.3 Provide a detailed workflow for bringing about a new service.
   This workflow will start with the need to introduce a new service and
   address the following: How SDMs defined? Where are they   
   standardized? How are new entities (MEPs, transport, encoding)   
   introduced? What are the tools and workflow involved to develop and
   operationalize a service. The intent is to introduce a level    of
   understanding about stakeholders responsibilities.

   O.4 Provide mechanisms and methodologies to test a new service before
   deployment.


6 Security Considerations

   See "Security Requirements", section 5.7 above.
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 21]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012


7 Acknowledgements

   Thanks to the following people for reviewing and providing feedback:
   Alexander Clemm, John McDowell.


8.  References

8.1  Normative References

   [IRS-FRMWK] A. Atlas, T. Nadeau, D. Ward, "Interface to the Routing
              System Framework", draft-ward-irs-framework-00

Authors' Addresses

              Rex Fernando, Ed.
              170 W Tasman Dr,
              San Jose, CA 95134

              EMail: rex@cisco.com

              Jan Medved
              Cisco Systems
              170 W Tasman Dr,
              San Jose, CA 95134

              Email: jmedved@cisco.com

              David Ward
              Cisco Systems
              170 W Tasman Dr,
              San Jose, CA 95134

              Email: wardd@cisco.com

              Alia Atlas
              Juniper Networks
              10 Technology park Drive
              Westford, MA 01886

              Email: akatlas@juniper.net

              Bruno Rijsman
              Juniper Networks
              10 Technology Park Drive
              Westford, MA 01886

              Email: brijsman@juniper.net
 


R. Fernando, et. al.     Expires April 11, 2013                [Page 22]

INTERNET DRAFT         IRS Framework Requirements        October 8, 2012





















































R. Fernando, et. al.     Expires April 11, 2013                [Page 23]