Internet DRAFT - draft-rfernando-i2rs-protocol-requirements
draft-rfernando-i2rs-protocol-requirements
Network Working Group R. Fernando
Internet-Draft J. Medved
Intended status: Standards Track Cisco Systems
Expires: April 23, 2014 E. Crabbe
Google
K. Patel
Cisco Systems
October 20, 2013
I2RS Protocol Requirements
draft-rfernando-i2rs-protocol-requirements-00
Abstract
The Interface to Routing System (I2RS) allows an application to
programmatically query and modify the state of the network. This
document defines requirements for an I2RS protocol between
applications (clients) and network elements (servers).
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on April 23, 2014.
Fernando, et al. Expires April 23, 2014 [Page 1]
Internet-Draft I2RS Protocol Requirements October 2013
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
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 . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. I2RS Protocol High Level Design Objectives . . . . . . . . . 5
4. I2RS Protocol Requirements . . . . . . . . . . . . . . . . . 7
4.1. General Assumptions . . . . . . . . . . . . . . . . . . . 7
4.2. Transport Requirements . . . . . . . . . . . . . . . . . 8
4.3. Identity Requirements . . . . . . . . . . . . . . . . . . 10
4.4. Message Encoding Requirements . . . . . . . . . . . . . . 11
4.5. Message Exchange Pattern Requirements . . . . . . . . . . 11
4.6. API Method Requirements . . . . . . . . . . . . . . . . . 13
4.7. Service and SDM Requirements . . . . . . . . . . . . . . 14
4.8. Security Requirements . . . . . . . . . . . . . . . . . . 16
4.9. Performance and Scale Requirements . . . . . . . . . . . 17
4.10. High Availability Requirements . . . . . . . . . . . . . 18
4.11. Application Programmability Requirements . . . . . . . . 19
4.12. Operational Requirements . . . . . . . . . . . . . . . . 19
5. Contributing Authors . . . . . . . . . . . . . . . . . . . . 20
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1. Normative References . . . . . . . . . . . . . . . . . . 20
6.2. Informative References . . . . . . . . . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21
1. Introduction
Fernando, et al. Expires April 23, 2014 [Page 2]
Internet-Draft I2RS Protocol Requirements October 2013
I2RS defines a standard, programmatic interface for state transfer in
and out of the Internet's routing system. I2RS is intended to
automate network operations - it will allow applications to quickly
interact with routing systems and to implement more complex
operations, such as policy-based controls.
[I-D.ietf-i2rs-problem-statement] gives detailed problem statement
for I2RS, while [I-D.ietf-i2rs-architecture] defines its high-level
architecture.
This document expands on the required aspects of a protocol for I2RS,
described in Section 5 of [I-D.ietf-i2rs-problem-statement], and
refines I2RS protocol requirements formulated in Section 6 of
[I-D.ietf-i2rs-architecture]. The purpose of this document is as
follows:
1. To help stakeholders (equipment vendors, operators, application
programmers or interested IETF participants), to arrive at a
common understanding of the critical characteristics of the I2RS
protocol(s).
2. To provide requirements to designers of the I2RS framework and
protocols on aspects of the framework that warrant significant
consideration during the design process.
3. To allow the stakeholders to evaluate technology choices that are
suitable for I2RS, to identify gaps in these technologies and to
help evolve them to suite I2RS's needs.
2. Terminology
This document uses the following terminology definitions.
Service: For the purposes of I2RS, a service refers to a set of
related state access functions together with the policies that
control it's usage. For example, the 'RIB service' is a service
that provides access to state held in a device's RIB.
Server: Is a system that implements one or more services that can be
accessed by client systems via well defined interfaces (APIs). A
server can export multiple services. A server is typically a
network device. [ed: as an aside, I still find this usage to be
completely counterintuitive]
Client: A system that uses a service implemented by a server through
a well defined interface. A client can make use of multiple
services from multiple servers.
Fernando, et al. Expires April 23, 2014 [Page 3]
Internet-Draft I2RS Protocol Requirements October 2013
Participants: The server and client are collectively referred to as
the participants of a service.
Transport: Any end-to-end mode of communication between a server and
a client that allows exchange data the exchange of data. In
principle, the transport hides the topology and other network
properties from the participants of a service.
Messages: Messages are logical units of data that are exchanged
between service participants.
Message Exchange Pattern: A categorization of a way 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.
Message Data Model: The schema representing the structure of
messages being exchanged between the service participants. The
MDMs can specify certain constraints such as data type, length,
format and valid 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.
[definition needs work]
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 various state elements that
constitute the state.
Modeling Language: A language that defines schema for Message Data
Models and Service Data Models.
Namespaces: A method for uniquely identifying and scoping of schemas
declared for messages and services. Namespace is an important
consideration when defining services and messages.
Fernando, et al. Expires April 23, 2014 [Page 4]
Internet-Draft I2RS Protocol Requirements October 2013
Service State or State: Is the general data held by the server for a
given service.
State Element: A readable or writable state present in the server.
The term 'State Element' may refer to states at different levels
of 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 Identifiers may be viewed as the
'key' for the state.
State Value or 'value': A value that is assigned to a particular
state identifier (key). The state is referred to 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 which the state is maintained in the
server.
Datastore: 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: A mechanism that allows a server to recognize the
identity of a client.
Authorization: A mechanism that allows 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; a given policy
could potentially become active only when certain conditions are
met.
3. I2RS Protocol High Level Design Objectives
The core guiding principles and objectives that should be used in
defining the specifics of the I2RS protocol(s) are as follows:
Fernando, et al. Expires April 23, 2014 [Page 5]
Internet-Draft I2RS Protocol Requirements October 2013
HLO-1. Design for Scale and Performance: is a key criteria for
making design choices. The design should meet current and future
performance and scale needs. Design patterns that allow us to
compose a scalable, high performing system are well understood and
should be utilized where possible.
HLO-2. Extensible: I2RS will be deployed in environments that will
evolve over time. Hence the system should be designed with
provisions that will allow significant modifications/extensions to
be added to existing mechanisms. An extensible and future-proof
design will drive better adoption as it is a promise against
future technology churn.
HLO-3. 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.
HLO-4. 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 I2RS is to
achieve predictive and consistent behavior when applications are
migrated from one platform or environment to another.
HLO-5. Security: I2RS may 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 I2RS
protocol must provide basic security mechanisms including but not
limited to authentication, authorization, confidentiality along
with sufficiently expressive policy requirements for each.
HLO-6. 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.
HLO-7. 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 I2RS framework
are remote and would be controlling the entire network, ensuring
fault tolerance is an important consideration.
Fernando, et al. Expires April 23, 2014 [Page 6]
Internet-Draft I2RS Protocol Requirements October 2013
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.
4. I2RS Protocol Requirements
This section is divided into multiple sub-sections, each dealing with
a specific consideration of I2RS protocol design. As we list the
requirements under each subsection, we'll annotate each requirement
with what high level objectives they meet. Additional reasoning is
additionally provided where appropriate.
4.1. General Assumptions
This section captures the general, high level assumptions of the I2RS
framework. The context for defining protocol requirements is shown
in the following figure.
+--------+ +--------+ +--------+
| Client | ... | Client | .... .... | Client |
+--------+ +--------+ +--------+
^ ^ ^
| | |
| | |
| | |
| | |
| | |
| | I2RS |
| +----+-------------+ |
| | | |
| I2RS | | I2RS |
+-----------|--------------+ | +-------+
| | | | |
V V V V V
+-----------+ +-----------+
| Server | | Server |
+-----------+ +-----------+
Figure 1: Protocol requirements context
Since the design choices for the I2RS framework are many, some
simplifying assumptions could make the framework requirements more
tangible and useful.
Fernando, et al. Expires April 23, 2014 [Page 7]
Internet-Draft I2RS Protocol Requirements October 2013
GEN-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, I2RS is a
client-server protocol/framework. I2RS must provide mechanisms
for the client to discover services that a server provides.
GEN-2: The client can use the APIs 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.
GEN-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.
GEN-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.
GEN-5: The I2RS 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. I2RS MUST specify the
mapping from the service data model to the message data model and
subsequently to the client API.
4.2. Transport Requirements
The transport layer provides connectivity between the client and the
server. This section details the transport requirements.
TR-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 I2RS setup
would only have a single transport session between the
participants.
TR-2: Depending on the data being exchanged, there may 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.
TR-3: The transport connection between the client and server MUST
have mechanisms to support authentication, authorization and to
optionally provide confidentiality of data exchanged between the
client and the server. See Section 4.8 for more details.
Fernando, et al. Expires April 23, 2014 [Page 8]
Internet-Draft I2RS Protocol Requirements October 2013
TR-4: A client could connect to multiple servers. Similarly, a
server could accept connections from multiple clients. Any
participant may initiate the transport connection.
TR-5: The exact technology used for the transport layer should be
replaceable. There should be a single mandatory transport that
must be supported by all participants. This requirement will
ensure that there is always an interoperable transport mechanism
between any client and any server.
TR-6: Clients and servers by default communicate using a point-to-
point transport connection.
TR-7: Point-to-multipoint transports 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.
TR-8: Once the transport connection is established, it is desirable
to reuse it to perform multiple operations. This requirement
ensures that the system scales by amortizing the session setup
cost across multiple operations. Session down events may not have
an impact on the state maintained by the server.
TR-9: After the transport is established, the participants exchange
capabilities and other session parameters before exchanging
service related messages.
TR-10: Messages pertaining to multiple services could be exchanged
over a single transport connection.
TR-11: The "default" transport connection between a client and a
server is purely for control plane message exchanges. Data plane
packets are not expected to be sent over this "default"
connection. When required, packets to be extracted from or
injected to the data plane could be designed as a service in
itself that sets up a separate packet injection/extraction channel
that provides the correct characteristics.
TR-12: For operational reasons, a participant MUST be able to detect
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 I2RS protocol level. For example, if
TCP is used as a transport, TCP keep-alives could be used to
detect transport session failures.
Fernando, et al. Expires April 23, 2014 [Page 9]
Internet-Draft I2RS Protocol Requirements October 2013
4.3. Identity Requirements
I2RS 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.
ID-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.
ID-2: The server should use the client's identity to track state
provided by the client. State ownership enables multiple clients
to edit their shared state. This is useful for troubleshooting
and during client death or disconnection when the client's state
may have to be purged or delegated to another client that shares
the same identity.
ID-3: The client's I2RS 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.
ID-4: A client that reboots or reconnects after a disconnection MUST
have the same I2RS identity if it wishes to continue to operate on
the state that it previously injected.
ID-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.
ID-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.
ID-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.
ID-8: The server retains the client's identity till all of that
client's state is purged from the server.
Fernando, et al. Expires April 23, 2014 [Page 10]
Internet-Draft I2RS Protocol Requirements October 2013
4.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 transport-independent frame format.
ME-2: Each message is serialized on the sender's side and de-
serialized on the receiver's 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 I2RS 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 used 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 individual fields in
a message in a 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 concerns.
4.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
Fernando, et al. Expires April 23, 2014 [Page 11]
Internet-Draft I2RS Protocol Requirements October 2013
can be mapped to whether initiated by a client or the server. This
section provides the requirements for MEPS.
MEP-1: I2RS defines three types of messages between the client and
the server. First, capabilities need to be exchanged on session
establishment. Second, API commands are sent from a client to a
server to add, delete, modify and query state. And third,
asynchronous notifications are sent from a server to a 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 I2RS 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: If an error occurs with an API command, The response message
MUST 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). The I2RS framework
should specify a standard set of error codes.
MEP-7: The request-response messages SHOULD be asynchronous. That
is, the client should not be required to stop-and-wait for one
message to be acknowledged before it transmits the next request.
[ed: there must be a method for dependency tracking in the
protocol. possibly negotiate as an optional capability?]
MEP-8: To satisfy asynchronous operations, a mechanism MUST exist
to correlate response messages to their respective original
requests. For example, a message-id could be carried in the
response that would help the sender to correlate the response
message to its original request.
Fernando, et al. Expires April 23, 2014 [Page 12]
Internet-Draft I2RS Protocol Requirements October 2013
MEP-9: The response messages need not arrive in the order in which
the request was transmitted. [ed: again, there must be a method
for providing an order of operations, and for receiving positive
ack on completion]
MEP-10: The request message SHOULD carry an application cookie that
should be returned back to it in the corresponding response. [ed:
provide further justification]
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.
MEP-12: Fire-and-forget messages MAY optionally be acknowledged.
MEP-13: 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.
4.6. API Method Requirements
API methods specify the exact operation that one participant intends
to perform. This section outlines the requirements for API methods.
API-1: The I2RS 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.
API-2: The I2RS framework should provide for three query methods,
subscribe, unsubscribe, and one-time-query, that the client can
use to express an interest or collect specific state changes or
state from the server.
API-3: The API methods discussed in API-1 and API-2 should be
transported in a request-response MEP from the client to the
server.
API-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.
API-5: The framework SHOULD define a set of base API methods for
manipulating state. These SHOULD be generic and SHOULD not be
service specific.
Fernando, et al. Expires April 23, 2014 [Page 13]
Internet-Draft I2RS Protocol Requirements October 2013
API-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.
API-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. The Notify method SHOULD also support a
batched mode.
API-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.
API-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.
API-10: Besides basic API methods common to all services, a server
could support proprietary methods or service specific methods.
The framework SHOULD specify a mechanism to express these methods
and their semantics through a modeling language or otherwise. The
ability to support additional API methods SHOULD be conveyed to
the client through capability negotiation.
API-11: Transactions allow a set of operations to be completed
atomically (all or nothing) and that the end result is consistent.
Transactions MAY be required for some network applications. [ed:
i'd like to remove this for the the first version. it's a bit of
a canard']
4.7. Service and SDM Requirements
SVC-1: Each service is associated with a service data model that
defines the type and structure of the state (data) pertaining to
that service. I2RS MUST provide mechanisms to manage the state
held in the server in accordance to the SDM.
SVC-2: The base I2RS API methods MUST allow a client to add,
modify, query and delete state information.
SVC-3: Neither the transport or the MEP SHOULD have any bearing on
the structure of the state being transferred. Each service module
Fernando, et al. Expires April 23, 2014 [Page 14]
Internet-Draft I2RS Protocol Requirements October 2013
in the server would be responsible for interpreting the structure
of the state being transferred corresponding to the SDM.
SVC-4: 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 given service. The
availability of the service, valid entities and parameter ranges
associated with same are expressed via the exchange of capability
information with the client.
SVC-5: The arrangement and structure of state (SDM) SHOULD be
expressed in a network friendly data modeling language. [ed: I
have no idea what this means]
SVC-6: The data modeling language SHOULD have the ability to
express one-to-one, one-to-many and hierarchical relationships
between modelled entities.
SVC-7: The data modeling language MUST allow for a service data
model to be extended beyond its initial definition. The language
MUST be able to express mandatory and optional elements in SDMs.
It SHOULD also have the ability to express exceptions for
unsupported elements in the model.
SVC-8: For every service that it wishes to expose to a client, the
server SHOULD send capabilities that indicate the existence and
identity of the service data model, as well as valid states and
parameter ranges, any exceptions to it and the optional features
of the data model that it supports.
SVC-9: The data modeling language MUST be able to express a
dependence of service data model on another SDM. It SHOULD also
have the ability to express references to state elements in
another service data model.
SVC-10: The modeling language MUST have the ability to express read/
write and read-only constraints for state elements in an SDM.
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.
SVC-11: Query and notification APsI MUST be able to carry both read-
only as well as read-write state.
SVC-12: Besides specifying a SDM, a service SHOULD also specify the
interesting state changes that clients can subscribe to for
Fernando, et al. Expires April 23, 2014 [Page 15]
Internet-Draft I2RS Protocol Requirements October 2013
notifications. The absence of such a specification SHOULD be
interpreted as an implicit unavailability of any subscribable
entities. [ed: terminology to be worked out here]
SVC-13: A client which is authenticated to access a service (either
read-only or read-write) MAY subscribe to any subscribable state
change events.
SVC-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.
SVC-15: The base API operations MUST 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.
SVC-16: I2RS 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.
SVC-17: The server SHOULD indicate to the client the availability of
infrastructure to manage the state that it maintains. This
includes but is not limited to the availability of persistent
store, the availability of timer to clean up state after a
specified 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.
SVC-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.
4.8. Security Requirements
This section lists security requirements for the I2RS protocol.
SEC-1: Every client MUST be authenticated and associated with an
identity. A secure mechanism to uniquely identify a client such
as certificates MUST be adopted.
SEC-2: Every client MUST have an authorized role whereby only
certain state can be accessed and only certain operations can be
Fernando, et al. Expires April 23, 2014 [Page 16]
Internet-Draft I2RS Protocol Requirements October 2013
performed by that client. To keep the model simple and
applications portable, authorization MUST be at a per service
level and not on individual state element level.
SEC-3: The framework MUST 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: Mechanisms to "hook" into third-party security infrastructure
whenever possible SHOULD be provided in order to achieve security
goals. Applications programmers SHOULD be kept free of security
concerns and yet given a flexible, configurable and well
integrated security model.
4.9. Performance and Scale Requirements
Performance requirements are usually woven 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 enables 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. Management of cookies is the
applications responsibility.
PS-3: The framework SHOULD allow for bulk operations which
amortizes the communication and messaging costs.
PS-4: The transport protocol SHOULD provide for a binary encoding
option for messages between the participants.
PS-5: The transport protocol MUST provide for both encrypted and
non-encrypted transport between participants.
Fernando, et al. Expires April 23, 2014 [Page 17]
Internet-Draft I2RS Protocol Requirements October 2013
PS-6: The transport protocol MUST provide for message
prioritization.
PS-7: Multiple operations should be completed using a single
transport session whenever possible.
PS-8: The server MUST be kept stateless with respect to the number
and location of each client.
PS-9: Filtered subscription MUST be supported for notifications.
PS-10: An efficient synchronization mechanism between a client and a
server SHOULD be provided that avoids 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.
4.10. High 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,
HA-1: A 'superuser' identity SHOULD be provided that is capable of
changing security policies, clearing state and perform actions
that override client initiated actions in the system.
HA-2: Session disconnection and client deaths MUST be handled
gracefully. They should have the least impact on the server
system.
HA-3: Client connections and disconnections MUST be logged and
provided as a well-known service to authenticated users.
HA-4: Clients MUST be notified of message processing and other
errors through error codes in messages.
HA-5: A mechanism to gracefully terminate the session between the
client and the server MUST be provided.
HA-6: A mechanism for authenticated clients to query the load
attributes of the system, both instantaneous and running average
MUST be provided as a service.
Fernando, et al. Expires April 23, 2014 [Page 18]
Internet-Draft I2RS Protocol Requirements October 2013
4.11. Application Programmability Requirements
The framework should pay particular attention 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.
PGM-1: A client programming framework SHOULD allow applications
writers to focus on the app functionality rather than mechanisms
required to communicate with the server.
PGM-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.
PGM-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 application programmers instead of dealing with the
nitty-gritties of the system.
PGM-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.
PGM-5: Provisions SHOULD be made for debugging and troubleshooting
tools that includes message trace, call traces, access to relevant
server traces and logs, packet decode tools to trace and decode
messages on the wire, consistency checkers of state inserted into
a server.
PGM-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).
PGM-7: The framework SHOULD define SDMs and MDMs in a language
neutral format so as to enable code generation in multiple
programming languages.
4.12. Operational Requirements
OP-1: There is a need to identify operational performance parameters
of the system and provide mechanisms to retrieve them from a
running system.
Fernando, et al. Expires April 23, 2014 [Page 19]
Internet-Draft I2RS Protocol Requirements October 2013
OP-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.
OP-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.
OP-4: Provide mechanisms and methodologies to test a new service
before deployment.
5. Contributing Authors
Thanks to the following people for reviewing and providing meaningful
contributions: Alia Atlas, Palani Chinnakannan, Alexander Clemm,
Muthumayan Mahdhayyan, John McDowell and Bruno Rijsman and David
Ward.
6. References
6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
6.2. Informative References
[I-D.ietf-i2rs-architecture]
Atlas, A., Halpern, J., Hares, S., Ward, D., and T.
Nadeau, "An Architecture for the Interface to the Routing
System", draft-ietf-i2rs-architecture-00 (work in
progress), August 2013.
[I-D.ietf-i2rs-problem-statement]
Atlas, A., Nadeau, T., and D. Ward, "Interface to the
Routing System Problem Statement", draft-ietf-i2rs-
problem-statement-00 (work in progress), August 2013.
[RFC1776] Crocker, S., "The Address is the Message", RFC 1776, April
1995.
[RFC1925] Callon, R., "The Twelve Networking Truths", RFC 1925,
April 1996.
Fernando, et al. Expires April 23, 2014 [Page 20]
Internet-Draft I2RS Protocol Requirements October 2013
Authors' Addresses
Rex Fernando
Cisco Systems
170 W Tasman Dr,
San Jose, CA 95134
US
Email: rex@cisco.com
Jan Medved
Cisco Systems
170 W Tasman Dr,
San Jose, CA 95134
US
Email: jmedved@cisco.com
Edward Crabbe
Google
1600 Amphitheater Parkway
Mountain View, CA 94043
US
Email: edward.crabbe@gmail.com
Keyur Patel
Cisco Systems
170 W Tasman Dr,
San Jose, CA 95134
US
Email: keyur@cisco.com
Fernando, et al. Expires April 23, 2014 [Page 21]