Internet DRAFT - draft-cummings-imss-flip
draft-cummings-imss-flip
IMSS Working Group Roger Cummings
Internet Draft Symantec Corporation
Expires: September 2006 March 3, 2006
FAIS Line Interface Protocol Architecture & Requirements
draft-cummings-imss-flip-02.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that
any applicable patent or other IPR claims of which he or she is
aware have been or will be disclosed, and any of which he or she
becomes aware will be disclosed, in accordance with Section 6 of
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/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
This Internet-Draft will expire in September 2006.
Copyright Notice
Copyright (C) The Internet Society (2006). All Rights Reserved.
Abstract
FAIS Line Interface Protocol (FLIP) describes mechanisms that allow a
set of functions that have been defined for an internal API related to
storage virtualization to be extended to operate over a TCP/IP
infrastructure. Significant deployment and configuration flexibility is
gained by taking such an approach.
Cummings Expires September 2006 [Page 1]
Internet-Draft FLIP Architecture & Requirements March 2006
Conventions used in this document
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 RFC-2119 [RFC2119].
Table of Contents
1. Introduction...................................................3
2. FAIS Background and Architecture...............................3
2.1. Introduction..............................................3
2.2. Approach and Structure....................................4
2.3. Object Model Overview.....................................6
2.4. Attributes and Methods....................................7
2.5. Service Groups............................................7
2.6 Event Notifications.......................................8
3. FLIP Architecture..............................................8
4. FLIP Requirements.............................................10
5. Relationship to Other IETF Activities.........................10
6. Security Considerations.......................................12
7. For further work..............................................12
8. Revision History..............................................12
9. References....................................................13
9.1. Normative References.....................................13
9.2. Informative References...................................13
Author's Addresses...............................................13
Intellectual Property Statement..................................14
Disclaimer of Validity...........................................14
Copyright Statement..............................................14
Acknowledgment...................................................14
NOTE: This is an initial document on a new subject for consideration
by the IETF imss WG. Much refinement and further change is to be
expected.
Cummings Expires September 2006 [Page 2]
Internet-Draft FLIP Architecture & Requirements March 2006
1. Introduction
The Fabric Application Interface Standard (FAIS) is a project within
Task Group T11.5 of the International Committee for Information
Technology Standardization (INCITS) Technical Committee T11. T11 and
the IETF imss WG already have active liaisons in place, and are
cooperating on the definitions of MIBs related to storage networking.
FAIS has attracted much attention as the first industry standard API
that supports storage applications executing within equipment that
forms part of a storage network infrastructure, (often known as a
Storage Area Network), rather than within a server of client
platform. FAIS supports both Switch-based and Appliance-based
implementations. However feedback has already been received that the
current configurations supported by FAIS do not address all of the
industry's requirements. However those additional configurations
involve addressing situations where information is exchanged over a
TCP/IP infrastructure rather than a local API, and those situations
are outside of the scope of work of T11.5.
As a result of the above, an initial proposal was made to the IETF
imss WG during IETF-63, and one week later at a T11.5 meeting in
Ottawa, to consider extending the current liaison between the two
groups to cover cooperation in this area. The proposal was well
received in both groups, and this Internet-Draft is an initial
attempt to scope the work that will be required, and derive an
initial set of requirements.
2. FAIS Background and Architecture
2.1. Introduction
[FAIS] is being developed under INCITS Project 1640-D, and has been
in development in T11.5 since June 2003. That development work has
now reached the stage that technical feature cutoff has been achieved
and a draft has been formally balloted by the parent T11 committee.
Resolution of comments from that ballot is proceeding, and is
expected to completed in June 2006. However one or more additional
projects in this area are expected to be approved in the next few
months to continue technical development in the area.
Cummings Expires September 2006 [Page 3]
Internet-Draft FLIP Architecture & Requirements March 2006
2.2. Approach and Structure
The beginning of the development of Storage Area Networks (SANs) can
be traced back to the work on the Fibre Channel (FC) standards that
began in T11 in 1988. FC is logically a bidirectional point-to-point
serial data channel, structured for high performance. Fibre Channel
provides a general transport vehicle for higher level protocols such
as Small Computer System Interface (SCSI) command sets, the High-
Performance Parallel Interface (HIPPI) data framing, IP (Internet
Protocol), IEEE 802.2, and others.
Physically, Fibre Channel is an interconnection of multiple
communication points, called N_Ports, interconnected either by a
switching network, called a Fabric, or by a point-to-point link. A
Fibre Channel "node" consists of one or more N_Ports. A Fabric may
consist of multiple Interconnect Elements, some of which are
switches. An N_Port connects to the Fabric via a port on a switch
called an F_Port. A switch port, which is interconnected to another
switch port via an Inter-Switch Link (ISL), is called an E_Port. FAIS
is defined to support applications resident on an switch within a
Fabric.
FAIS is initially intended to support storage applications that
perform one or two classic enterprise-level storage transformation
processes, namely virtualization and RAID. Virtualization is an
abstraction process by which the boundaries of the physical storage
devices are hidden from operating systems and applications such as
databases (e.g. eight 80 gigabyte disks may appear to the application
as a single 640 gigabyte "virtual" disk. RAID (Redundant Arrays of
Independent Disks) is a process that uses a set of physical storage
devices to hold redundancy information as well as application data so
that the failure of a physical storage device will not result in any
application data loss.
FAIS does not itself define the protocol (command set) used to
control the storage devices, but instead leverages the SCSI command
sets define by a committee that is closely-related to T11, namely
INCITS Technical Committee T10. The SCSI command sets have been in
use for more than 20 years, and are transported over a number of
existing storage interfaces, including Fibre Channel, SAS, Serial ATA
and USB.
Cummings Expires September 2006 [Page 4]
Internet-Draft FLIP Architecture & Requirements March 2006
A storage application may employ FAIS to:
a) perform all of the functions of one or more SCSI Targets (see
[SAM-3]),
b) perform all of the functions of one or more SCSI Initiators
(see [SAM-3]),
c) configure and control high-performance command/data forwarding
and manipulation facilities
present in the underlying equipment, and
d) delegate the processing of specific SCSI command types
addressed to specific entities to those facilities.
FAIS is defined as a a set of programming interfaces and data
structures in the C Language that abstract the details of the
implementation of the platform from the storage management
application. The API is defined as providing for communication
between a Client and a Provider. This approach is appropriate because
API Client and Provider are defined as executing within the same
environment in the same equipment.
The FAIS_Client is the portion of a storage application that
communicates with the FAIS_Provider using the FAIS API. The storage
application is expected to perform such "classic" storage functions
as virtualization and RAID. The FAIS_Client functionality includes
initialization, data path configuration, exception handling,
management operations and the maintenance of other state information.
The FAIS_Client is responsible for building structures and mappings
that reflect the intended data layout (abstraction) and
accessibility. Additionally, the FAIS_CLient may perform data
movement applications (e.g., snapshot copy, on-line migration, remote
mirroring, asynchronous replication).
The FAIS_Provider is an instance of the functionality within the
equipment that provides the FAIS API to a FAIS_Client. The
FAIS_Provider translates information received from the FAIS_Client
into an appropriate form for use by a Data Path Controller (DPC) and
vice versa.
The DPC may be characterized as a high performance complex that
operates on low-level units of interface information at line speed.
Specifically in the case of FAIS those units are Frames defined by
Fibre Channel. Those frame may contain SCSI commands and status as
well as data. The DPC is programmed or "controlled" by the
FAIS_client. Once the initial configuration is programmed, the DPC
Cummings Expires September 2006 [Page 5]
Internet-Draft FLIP Architecture & Requirements March 2006
may process I/Os without intervention from the FAIS_Client. The DPC
is dedicated to frame processing and does not, generally, process
other instruction sets. The primary functions supported by the DPC
are dynamic re-mapping of logical block addresses on SCSI disks and
SCSI I/O faulting. Optionally, the DPC may provide other functions
such as I/O duplication (mirroring) and I/O striping.
2.3. Object Model Overview
FAIS abstracts the DPC and the ports of the switch on which it is
resident by an Object Model containing 19 classes. A simplified view
of the object model is shown below.
+-----------------------------+
| Front-End Interface Classes |
+--------------+--------------+
|
|
+-------v-------+
+------------------> <------------------+
| | VDev | |
|+-----------------> <-----------------+|
|| +-A--A--A--A--A-+ ||
|| | | | | | ||
|| +---------+ | | | +---------+ ||
|| | | | | | ||
|| +-------+-------+ | | | +-------+-------+ ||
|| | Striped VDev | | | | | Concat VDev | ||
|| +-------A-------+ | | | +-------A-------+ ||
|| | | | | | ||
|| +-------+-------+ | | | +-------+-------+ ||
|| | Column | | | | | Block Range | ||
|| +---------------+ | | | +-------+-------+ ||
|| | | | | | ||
|+---------+ | | | +---------+|
| | | | |
| +------------+ | +-------+ |
| | | | |
| +-------+-------+ | +-------+-------+ |
| | Mirrored VDev | | | XMap | |
| +-------A-------+ | +-------A-------+ |
| | | | |
| +-------+-------+ | +-------+-------+ |
| | Mirror | | | XMap Entry | |
| +-------+-------+ | +-------+-------+ |
| | | | |
+----------+ | +----------+
|
|
+--------------+--------------+
| Back-End Interface Classes |
+-----------------------------+
Cummings Expires September 2006 [Page 6]
Internet-Draft FLIP Architecture & Requirements March 2006
The model contains:
a) 4 classes related to "front-end" interface constructs i.e.
associated with the SCSI Target function that communicates with a
server;
b) 6 classes related to "back-end" interface constructs i.e.
associated with the SCSI Initiator function that communicates with
one or more storage peripherals;
c) 7 classes related to the abstract (implementation-independent)
definition of virtual storage Volumes with specific characteristics
(e.g. mirrored, striped volumes)
d) 2 classes related to an XMap, which is a specialized form of
Volume that represents no storage but merely performs address
transformations.
Class relationships are explicitly modeled using standard object-
modeling semantics.
2.4. Attributes and Methods
Each of the objects described above has a defined set of Attributes
and meta-attributes. FAIS defines three standard identifiers that are
used with multiple classes, and a number of common data structures.
Each of the objects defined above also has a defined set of methods.
FAIS defines four separate opaque handles that are used with those
methods. The methods typically support the creation, destruction,
configuration and control of an instance of a class.
2.5. Service Groups
The functions of the FAIS API are organized into the following major
service groups:
a) General Services including those types, data structures, or
functions that may be used by more than
one other defined service.
b) Port Services that provide support for creating, destroying, and
performing operations on, SCSI Ports.
Cummings Expires September 2006 [Page 7]
Internet-Draft FLIP Architecture & Requirements March 2006
c) Front-end Services that provide support for processing requests
and events that arrive at the FAIS_Client from the front-end.
d) Back-end Services that provide support for discovering elements
connected to the logical back-end of the platform, for receiving
events related to the objects, and for issuing commands to devices on
the
back-end.
e) Volume Management Services that provide support for building a
mapping between virtual volumes presented to storage consumers on the
front-end of the platform and storage provided by devices on the
back-end. Also provides support for managing creation and updates of
Xmaps as well as quiescing and resuming ranges of virtual volumes
which have an Xmap type.
2.6. Event Notifications
The FAIS API described by the latest T11 document supports functions
that are synchronous or asynchronous, but not both. API functions
either present a synchronous or an asynchronous request method. For
asynchronous requests, the API schedules the request to be performed
and returns the status. A subsequent callback indicating the
completion status is generated after the request is complete.
FAIS does not currently support a model in which the FAIS_Provider
requests a service from or delivers an event
to the FAIS_Client. This would an asynchronous, unsolicited event and
the FAIS_Client would register to receive
these events by supplying a callback method for the each category of
events using methods provided by a new Service Group. However text in
the current document indicated that such a model will be addressed in
the next FAIS generation.
3. FLIP Architecture
FLIP is conceived as a communication protocol between a storage
application executing on a arbitrary platform, and a receptor
executing on SAN switch. The receptor will then act internally as a
FAIS_Client as described above. The concept is to make the receptor
as simple and as "thin" as possible, and to add to the semantics
supported by FAIS only those necessary to support the lower layers
over which FLIP is being transported.
Cummings Expires September 2006 [Page 8]
Internet-Draft FLIP Architecture & Requirements March 2006
The major advantage gained from the definition of FLIP is that it
obviates the need for a storage application manufacturer to have to
develop their own FAIS_Client for each brand of SAN switch, and then
to find ways of having that client installed on switches in the
field. FLIP allows virtualization applications to leverage FAIS
without having to be installed on each switch, and also allows switch
manufacturers to ship a single simple standardized FAIS client with
all of their products.
FLIP is conceptually partitioned into five layers:
Layer Example
+--------------+ +-----------------------------+
(5) |FAIS Functions| | Create, delete etc. |
+--------------+ +-----------------------------+
| |
+--------------+ +-----------------------------+
(4) | Encoding | | XML or equivalent |
+--------------+ +-----------------------------+
| |
+--------------+ +-----------------------------+
(3) | RPC | | Function Call Semantics |
+--------------+ +-----------------------------+
| |
+--------------+ +-----------------------------+
(2) | Session/Con | | Connection & Session Est |
+--------------+ +-----------------------------+
| |
+--------------+ +-----------------------------+
(1) | App Protocol | | Secure, Authenticated, etc. |
+--------------+ +-----------------------------+
Details of the layers are as follows:
1) The Application Protocol provides a communication path between the
storage application and the receptor.
2) The Session/Connection layer deals with the discovery of entities
capable of communication and the establishment of connections and
sessions with appropriate configuration parameters.
3) The RPC layer maps the semantics of a FAIS function call to a
remote procedure call. The initial approach will be to provide a 1-1
mapping.
Cummings Expires September 2006 [Page 9]
Internet-Draft FLIP Architecture & Requirements March 2006
4) The encoding layer provides an encoding/decoding function that
converts the structures defined by FAIS to blocks of information
suitable for encapsulation within a remote procedure call.
5) The FAIS functions are as defined by [FAIS].
4. FLIP Requirements
The requirements for FLIP are:
1) Support a VERY thin FAIS_Client/FLIP Receptor;
2) Add as few semantics to existing FAIS calls as possible and modify
no existing semantics;
3) Optimize for the case when read/write data is NOT transferred over
FLIP;
4) Be transport-independent and allow the application protocol
referenced above to be any of a number of standard IETF protocols
that support the requirements below.
Requirements for an Application Protocol to support FLIP are:
1) Provide persistent connection-oriented semantics. The connection
must provide reliable, sequenced data delivery.
2) Provide authentication, data integrity, and optionally privacy.
5. Relationship to Other IETF Activities
[NETCONF] defines NETCONF uses a simple RPC-based mechanism to
facilitate communication between a client and a server. The client
can be a script or application typically running as part of a network
manager. The server is typically a network device. The terms
"device" and "server" are used interchangeably in this document, as
are "client" and "application".
A NETCONF session is the logical connection between a network
configuration application and a network device. NETCONF supports one
or more sessions, and defines both global configuration attributes
and Session-specific attributes.
Cummings Expires September 2006 [Page 10]
Internet-Draft FLIP Architecture & Requirements March 2006
NETCONF is conceptually partitioned into four layers:
Layer Example
+-------------+ +-----------------------------+
(4) | Content | | Configuration data |
+-------------+ +-----------------------------+
| |
+-------------+ +-----------------------------+
(3) | Operations | | <get-config>, <edit-config> |
+-------------+ +-----------------------------+
| |
+-------------+ +-----------------------------+
(2) | RPC | | <rpc>, <rpc-reply> |
+-------------+ +-----------------------------+
| |
+-------------+ +-----------------------------+
(1) | Application | | BEEP, SSH, SSL, SOAP |
| Protocol | | |
+-------------+ +-----------------------------+
Details of the layers are as follows:
1) The application protocol layer provides a communication path
between the client and server. NETCONF can be layered over any
application protocol that provides a set of basic requirements.
2) The RPC layer provides a simple, transport-independent framing
mechanism for encoding RPCs.
3) The operations layer defines a set of base operations invoked as
RPC methods with XML-encoded parameters.
4) The content layer is not currently well defined, and only limited
efforts to specify a standard data definition language and standard
content have yet started.
Layers (1) and (2) are certainly applicable to FAIS, but the
operations defined in layer 3 are certainly not extensive enough to
support the semantics defined in section 2. It would therefore be
necessary to define a new set of operations specifically to support
FAIS, and it is not clear from the current NETCONF approach if this
type of usage is being considered. For instance, there seems to be no
current method by which the specific operations supported by a device
can be discovered and enumerated.
Cummings Expires September 2006 [Page 11]
Internet-Draft FLIP Architecture & Requirements March 2006
The advantages of adopting NETCONF Layers (1) and (2) for FLIP are
the reuse of the RPC layer and the ability to leverage the existing
application protocol definitions. Some of the emerging work on
datatype definitions may also be able to be adopted.
The disadvantages of adopting NETCONF Layers (1) and (2) for FLIP are
the need to define a new set of operations, the lack of discovery
support and the complexity of co-ordination with ongoing NETCONF
developments.
6. Security Considerations
TBD
7. For further Work
A major unknown at this time is the method of providing efficient and
transparent data delivery through the encoding scheme defined for
FLIP. Although FLIP will be optimized for the case where only SCSI
commands and status, and configuration and control information are
transported over FLIP, situations have to be supported where all of
the data associated with SCSI read or write commands have to be
transported over FLIP as well.
8. Revision History
-00: Initial Version
-01: Added Object Model Diagram
-02 Updated info about T11 FAIS project, added details of data
structures & calls, anticipated notifications
Cummings Expires September 2006 [Page 12]
Internet-Draft FLIP Architecture & Requirements March 2006
9. References
9.1. Normative References
[FAIS] T11/1620-D, Fabric Application Interface Standard (
http://www.t11.org/t11/docreg.nsf/
ldl/fais).
[NETCONF] Enns, R. et al, "Internet draft (work in progress),
draft-ietf-netconf-prot-11.txt, February 2006.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[SAM-3] INCITS 402-2005, SCSI-3 Architecture Model - 3.
[SBC-2] INCITS 405-2005, SCSI-3 Block Commands - 2.
[SPC-3] T10/1416-D, SCSI Primary Commands - 3.
9.2. Informative References
...TBD
Author's Addresses
Roger Cummings
Symantec
1001 Heathrow Park Lane
Heathrow, FL 32746
Phone: +1 407.357.7257
Email: roger_cummings@symantec.com
Cummings Expires September 2006 [Page 13]
Internet-Draft FLIP Architecture & Requirements March 2006
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Cummings Expires March 2006 [Page 14]