Network File System Version 4 C. Lever
Internet-Draft Oracle
Intended status: Informational August 12, 2019
Expires: February 13, 2020

Network File System Version 4 Requirements for Computational Storage


This document introduces an architecture for supporting Computational Storage on Network File System version 4 (NFS) servers and clients.

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

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 February 13, 2020.

Copyright Notice

Copyright (c) 2019 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 ( 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

True computational storage conforms to one or both of the following criteria:

There are several broad use cases for computation offloaded to storage:

Examples include SQL offload, a machine learning inference engine co-located with its dataset, or performing a "find" operation without pulling an entire filesystem's data to a client.
Data Transformation:
Examples include compression, transcoding, and encryption.
Data Management:
This might be a control plane that permits administrative actions such as instantiating a transfer to cold storage, integrity measurement (scrubbing), or creating a snapshot of a particular file.

In some cases, computational storage is a computational service that is available as a direct offload for a host CPU. The source and sink data both reside in the host's memory. For NFS, however, the mission of computational storage techniques is to reduce network utilization between an NFS server and its clients. Here, the source and sink are typically located in files on NFS servers; the operation of the computational service is often transparent to applications running on NFS clients.

NFSv4.2 [RFC7862] already applies this approach -- features new to NFSv4.2 include copy offload and file initialization (ALLOCATE), both of which are intended to prevent extra data round-trips between clients and server.

The purpose of the current document is to provide a framework for discussing and reasoning about computational storage relative to the NFS protocol and typical NFS deployments.

2. Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

3. Service Discovery

For various reasons, we do not want to require changes to the NFS protocol to expose computational storage resources. Instead, an NFS server host can advertise RPC programs which allow NFS clients to configure the server's computational services, and the services then operate on data in files stored there. CSS configuration programs can be advertised via the rpcbind service [RFC1833].

Typically a CSS configuration facility would register with the NFS server's rpcbind service, advertising its listening port and RPC program number. Administrative clients would then contact this service to configure it for use.

4. Service Configuration

A configuration program exposes the parameters of an individual CSS. Such configuration might include the selection of encryption algorithms or keys, or the specification of regular expressions or prepared SQL statements. The location of the input dataset or results of a CSS might also be specified.

An important class of input and output parameters for configuration programs are objects (e.g. files and directories) that exist in a filesystem that is shared via NFS. When they are local, such objects can be referenced by filehandle and optionally a range of bytes. To reference a remote object, either an NFS URI (defined in Section 2.8.1 of [RFC7532]) or a tuple consisting of a network address and a filehandle may be used.

5. Service Operation

There are two possible modes of operation:

After the computational service is configured, its operation occurs behind NFS READ and WRITE operations, and is not directly visible to NFS clients. Examples of this mode include data reduction (e.g., deduplication) and encryption-at-rest.
Clients would use a separate (RPC) protocol to initiate requests or capture results, when the results are expected to be small, or are not appropriate for storing into a file. An example of this mode is invoking search operations over large datasets where the results might a small set of filehandles with byte ranges.

Serialization is often necessary to prevent an offload agent from colliding with accesses by standard NFS clients. Open state or a delegation might be necessary for this purpose. Alternatively, no locking would be provided via NFS, and the applications themselves would be responsible for seeing that the integrity of the input datasets is maintained during offloaded operations.

6. Security Considerations

Unlike most block storage, NFS is typically deployed on open networks rather than environments with limited access (such as a PCIe bus). In such open environments, extra attention must be focused on security. In particular:

7. IANA Considerations

This document has no IANA actions.

8. References

8.1. Normative References

[RFC1833] Srinivasan, R., "Binding Protocols for ONC RPC Version 2", RFC 1833, DOI 10.17487/RFC1833, August 1995.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[RFC5531] Thurlow, R., "RPC: Remote Procedure Call Protocol Specification Version 2", RFC 5531, DOI 10.17487/RFC5531, May 2009.
[RFC7532] Lentini, J., Tewari, R. and C. Lever, "Namespace Database (NSDB) Protocol for Federated File Systems", RFC 7532, DOI 10.17487/RFC7532, March 2015.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.

8.2. Informative References

[RFC7861] Adamson, A. and N. Williams, "Remote Procedure Call (RPC) Security Version 3", RFC 7861, DOI 10.17487/RFC7861, November 2016.
[RFC7862] Haynes, T., "Network File System (NFS) Version 4 Minor Version 2 Protocol", RFC 7862, DOI 10.17487/RFC7862, November 2016.


The author is grateful to Bill Baker, Greg Marsden, and Jim Williams of Oracle, and Glenn Watkins of HPE for their input and support of this work.

Special thanks go to Transport Area Director Magnus Westerlund, NFSV4 Working Group Chairs Spencer Shepler and Brian Pawlowski, and NFSV4 Working Group Secretary Thomas Haynes for their support.

Author's Address

Charles Lever Oracle Corporation United States of America EMail: