< draft-ietf-nfsv4-rfc5661sesqui-msns-00.txt   draft-ietf-nfsv4-rfc5661sesqui-msns-01.txt >
NFSv4 D. Noveck, Ed. NFSv4 D. Noveck, Ed.
Internet-Draft NetApp Internet-Draft NetApp
Obsoletes: 5661 (if approved) C. Lever Obsoletes: 5661 (if approved) C. Lever
Intended status: Standards Track ORACLE Intended status: Standards Track ORACLE
Expires: December 27, 2019 June 25, 2019 Expires: February 5, 2020 August 4, 2019
Network File System (NFS) Version 4 Minor Version 1 Protocol Network File System (NFS) Version 4 Minor Version 1 Protocol
draft-ietf-nfsv4-rfc5661sesqui-msns-00 draft-ietf-nfsv4-rfc5661sesqui-msns-01
Abstract Abstract
This document describes the Network File System (NFS) version 4 minor This document describes the Network File System (NFS) version 4 minor
version 1, including features retained from the base protocol (NFS version 1, including features retained from the base protocol (NFS
version 4 minor version 0, which is specified in RFC 7530) and version 4 minor version 0, which is specified in RFC 7530) and
protocol extensions made subsequently. The later minor version has protocol extensions made subsequently. The later minor version has
no dependencies on NFS version 4 minor version 0, and is considered a no dependencies on NFS version 4 minor version 0, and is considered a
separate protocol. separate protocol.
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 27, 2019. This Internet-Draft will expire on February 5, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 38 skipping to change at page 2, line 38
1.3. Requirements Language . . . . . . . . . . . . . . . . . . 9 1.3. Requirements Language . . . . . . . . . . . . . . . . . . 9
1.4. Scope of This Document . . . . . . . . . . . . . . . . . 9 1.4. Scope of This Document . . . . . . . . . . . . . . . . . 9
1.5. NFSv4 Goals . . . . . . . . . . . . . . . . . . . . . . . 9 1.5. NFSv4 Goals . . . . . . . . . . . . . . . . . . . . . . . 9
1.6. NFSv4.1 Goals . . . . . . . . . . . . . . . . . . . . . . 10 1.6. NFSv4.1 Goals . . . . . . . . . . . . . . . . . . . . . . 10
1.7. General Definitions . . . . . . . . . . . . . . . . . . . 10 1.7. General Definitions . . . . . . . . . . . . . . . . . . . 10
1.8. Overview of NFSv4.1 Features . . . . . . . . . . . . . . 13 1.8. Overview of NFSv4.1 Features . . . . . . . . . . . . . . 13
1.9. Differences from NFSv4.0 . . . . . . . . . . . . . . . . 17 1.9. Differences from NFSv4.0 . . . . . . . . . . . . . . . . 17
2. Core Infrastructure . . . . . . . . . . . . . . . . . . . . . 18 2. Core Infrastructure . . . . . . . . . . . . . . . . . . . . . 18
2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 18 2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 18
2.2. RPC and XDR . . . . . . . . . . . . . . . . . . . . . . . 18 2.2. RPC and XDR . . . . . . . . . . . . . . . . . . . . . . . 18
2.3. COMPOUND and CB_COMPOUND . . . . . . . . . . . . . . . . 21 2.3. COMPOUND and CB_COMPOUND . . . . . . . . . . . . . . . . 22
2.4. Client Identifiers and Client Owners . . . . . . . . . . 22 2.4. Client Identifiers and Client Owners . . . . . . . . . . 22
2.5. Server Owners . . . . . . . . . . . . . . . . . . . . . . 28 2.5. Server Owners . . . . . . . . . . . . . . . . . . . . . . 28
2.6. Security Service Negotiation . . . . . . . . . . . . . . 28 2.6. Security Service Negotiation . . . . . . . . . . . . . . 29
2.7. Minor Versioning . . . . . . . . . . . . . . . . . . . . 34 2.7. Minor Versioning . . . . . . . . . . . . . . . . . . . . 34
2.8. Non-RPC-Based Security Services . . . . . . . . . . . . . 36 2.8. Non-RPC-Based Security Services . . . . . . . . . . . . . 36
2.9. Transport Layers . . . . . . . . . . . . . . . . . . . . 37 2.9. Transport Layers . . . . . . . . . . . . . . . . . . . . 37
2.10. Session . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.10. Session . . . . . . . . . . . . . . . . . . . . . . . . . 40
3. Protocol Constants and Data Types . . . . . . . . . . . . . . 85 3. Protocol Constants and Data Types . . . . . . . . . . . . . . 86
3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . . 86 3.1. Basic Constants . . . . . . . . . . . . . . . . . . . . . 86
3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 86 3.2. Basic Data Types . . . . . . . . . . . . . . . . . . . . 87
3.3. Structured Data Types . . . . . . . . . . . . . . . . . . 88 3.3. Structured Data Types . . . . . . . . . . . . . . . . . . 89
4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 97 4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 97 4.1. Obtaining the First Filehandle . . . . . . . . . . . . . 98
4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 98 4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . 99
4.3. One Method of Constructing a Volatile Filehandle . . . . 101 4.3. One Method of Constructing a Volatile Filehandle . . . . 101
4.4. Client Recovery from Filehandle Expiration . . . . . . . 101 4.4. Client Recovery from Filehandle Expiration . . . . . . . 102
5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 102 5. File Attributes . . . . . . . . . . . . . . . . . . . . . . . 103
5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . . 103 5.1. REQUIRED Attributes . . . . . . . . . . . . . . . . . . . 104
5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 103 5.2. RECOMMENDED Attributes . . . . . . . . . . . . . . . . . 104
5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 104 5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . 105
5.4. Classification of Attributes . . . . . . . . . . . . . . 105 5.4. Classification of Attributes . . . . . . . . . . . . . . 106
5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 106 5.5. Set-Only and Get-Only Attributes . . . . . . . . . . . . 107
5.6. REQUIRED Attributes - List and Definition References . . 106 5.6. REQUIRED Attributes - List and Definition References . . 107
5.7. RECOMMENDED Attributes - List and Definition References . 107 5.7. RECOMMENDED Attributes - List and Definition References . 108
5.8. Attribute Definitions . . . . . . . . . . . . . . 109 5.8. Attribute Definitions . . . . . . . . . . . . . . 110
5.9. Interpreting owner and owner_group . . . . . . . . . . . 118 5.9. Interpreting owner and owner_group . . . . . . . . . . . 119
5.10. Character Case Attributes . . . . . . . . . . . . . . . . 120 5.10. Character Case Attributes . . . . . . . . . . . . . . . . 121
5.11. Directory Notification Attributes . . . . . . . . . . . . 120 5.11. Directory Notification Attributes . . . . . . . . . . . . 121
5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 121 5.12. pNFS Attribute Definitions . . . . . . . . . . . . . . . 122
5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 122 5.13. Retention Attributes . . . . . . . . . . . . . . . . . . 123
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 125 6. Access Control Attributes . . . . . . . . . . . . . . . . . . 126
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 126 6.2. File Attributes Discussion . . . . . . . . . . . . . . . 127
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 143 6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 144
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 145 6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 146
7. Single-Server Namespace . . . . . . . . . . . . . . . . . . . 152 7. Single-Server Namespace . . . . . . . . . . . . . . . . . . . 153
7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 152 7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 153
7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 152 7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 153
7.3. Server Pseudo File System . . . . . . . . . . . . . . . . 153 7.3. Server Pseudo File System . . . . . . . . . . . . . . . . 154
7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 153 7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 154
7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . . 154 7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . . 155
7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . . 154 7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . . 155
7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 154 7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 155
7.8. Security Policy and Namespace Presentation . . . . . . . 155 7.8. Security Policy and Namespace Presentation . . . . . . . 156
8. State Management . . . . . . . . . . . . . . . . . . . . . . 156 8. State Management . . . . . . . . . . . . . . . . . . . . . . 157
8.1. Client and Session ID . . . . . . . . . . . . . . . . . . 157 8.1. Client and Session ID . . . . . . . . . . . . . . . . . . 158
8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 157 8.2. Stateid Definition . . . . . . . . . . . . . . . . . . . 158
8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . . 166 8.3. Lease Renewal . . . . . . . . . . . . . . . . . . . . . . 167
8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 168 8.4. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 169
8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 179 8.5. Server Revocation of Locks . . . . . . . . . . . . . . . 180
8.6. Short and Long Leases . . . . . . . . . . . . . . . . . . 180 8.6. Short and Long Leases . . . . . . . . . . . . . . . . . . 181
8.7. Clocks, Propagation Delay, and Calculating Lease 8.7. Clocks, Propagation Delay, and Calculating Lease
Expiration . . . . . . . . . . . . . . . . . . . . . . . 181 Expiration . . . . . . . . . . . . . . . . . . . . . . . 182
8.8. Obsolete Locking Infrastructure from NFSv4.0 . . . . . . 181 8.8. Obsolete Locking Infrastructure from NFSv4.0 . . . . . . 182
9. File Locking and Share Reservations . . . . . . . . . . . . . 182 9. File Locking and Share Reservations . . . . . . . . . . . . . 183
9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 182 9.1. Opens and Byte-Range Locks . . . . . . . . . . . . . . . 183
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . . 186 9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . . 187
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . . 187 9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . . 188
9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . . 187 9.4. Stateid Seqid Values and Byte-Range Locks . . . . . . . . 188
9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 187 9.5. Issues with Multiple Open-Owners . . . . . . . . . . . . 188
9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 188 9.6. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 189
9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 189 9.7. Share Reservations . . . . . . . . . . . . . . . . . . . 190
9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . . 190 9.8. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . . 191
9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 191 9.9. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 192
9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 192 9.10. Parallel OPENs . . . . . . . . . . . . . . . . . . . . . 193
9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 192 9.11. Reclaim of Open and Byte-Range Locks . . . . . . . . . . 193
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 193 10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 194
10.1. Performance Challenges for Client-Side Caching . . . . . 193 10.1. Performance Challenges for Client-Side Caching . . . . . 194
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 194 10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 195
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 199 10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 200
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 203 10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 204
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 214 10.5. Data Caching and Revocation . . . . . . . . . . . . . . 215
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 216 10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 217
10.7. Data and Metadata Caching and Memory Mapped Files . . . 218 10.7. Data and Metadata Caching and Memory Mapped Files . . . 219
10.8. Name and Directory Caching without Directory Delegations 220 10.8. Name and Directory Caching without Directory Delegations 221
10.9. Directory Delegations . . . . . . . . . . . . . . . . . 222 10.9. Directory Delegations . . . . . . . . . . . . . . . . . 223
11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 226 11. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 227
11.1. Terminology . . . . . . . . . . . . . . . . . . . . . . 226 11.1. Terminology . . . . . . . . . . . . . . . . . . . . . . 227
11.2. File System Location Attributes . . . . . . . . . . . . 229 11.2. File System Location Attributes . . . . . . . . . . . . 230
11.3. File System Presence or Absence . . . . . . . . . . . . 230 11.3. File System Presence or Absence . . . . . . . . . . . . 231
11.4. Getting Attributes for an Absent File System . . . . . . 231 11.4. Getting Attributes for an Absent File System . . . . . . 232
11.5. Uses of File System Location Information . . . . . . . . 233 11.5. Uses of File System Location Information . . . . . . . . 234
11.6. Users and Groups in a Multi-server Namespace . . . . . . 241 11.6. Users and Groups in a Multi-server Namespace . . . . . . 242
11.7. Additional Client-Side Considerations . . . . . . . . . 242 11.7. Additional Client-Side Considerations . . . . . . . . . 243
11.8. Overview of File Access Transitions . . . . . . . . . . 243 11.8. Overview of File Access Transitions . . . . . . . . . . 244
11.9. Effecting Network Endpoint Transitions . . . . . . . . . 243 11.9. Effecting Network Endpoint Transitions . . . . . . . . . 244
11.10. Effecting File System Transitions . . . . . . . . . . . 244 11.10. Effecting File System Transitions . . . . . . . . . . . 245
11.11. Transferring State upon Migration . . . . . . . . . . . 252 11.11. Transferring State upon Migration . . . . . . . . . . . 253
11.12. Client Responsibilities when Access is Transitioned . . 254 11.12. Client Responsibilities when Access is Transitioned . . 255
11.13. Server Responsibilities Upon Migration . . . . . . . . . 263 11.13. Server Responsibilities Upon Migration . . . . . . . . . 264
11.14. Effecting File System Referrals . . . . . . . . . . . . 269 11.14. Effecting File System Referrals . . . . . . . . . . . . 270
11.15. The Attribute fs_locations . . . . . . . . . . . . . . . 276 11.15. The Attribute fs_locations . . . . . . . . . . . . . . . 277
11.16. The Attribute fs_locations_info . . . . . . . . . . . . 279 11.16. The Attribute fs_locations_info . . . . . . . . . . . . 280
11.17. The Attribute fs_status . . . . . . . . . . . . . . . . 292 11.17. The Attribute fs_status . . . . . . . . . . . . . . . . 293
12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 296 12. Parallel NFS (pNFS) . . . . . . . . . . . . . . . . . . . . . 297
12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 296 12.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 297
12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 297 12.2. pNFS Definitions . . . . . . . . . . . . . . . . . . . . 298
12.3. pNFS Operations . . . . . . . . . . . . . . . . . . . . 303 12.3. pNFS Operations . . . . . . . . . . . . . . . . . . . . 304
12.4. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 304 12.4. pNFS Attributes . . . . . . . . . . . . . . . . . . . . 305
12.5. Layout Semantics . . . . . . . . . . . . . . . . . . . . 304 12.5. Layout Semantics . . . . . . . . . . . . . . . . . . . . 305
12.6. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 319 12.6. pNFS Mechanics . . . . . . . . . . . . . . . . . . . . . 320
12.7. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 321 12.7. Recovery . . . . . . . . . . . . . . . . . . . . . . . . 322
12.8. Metadata and Storage Device Roles . . . . . . . . . . . 326 12.8. Metadata and Storage Device Roles . . . . . . . . . . . 327
12.9. Security Considerations for pNFS . . . . . . . . . . . . 326 12.9. Security Considerations for pNFS . . . . . . . . . . . . 327
13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type . 328 13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type . 329
13.1. Client ID and Session Considerations . . . . . . . . . . 328 13.1. Client ID and Session Considerations . . . . . . . . . . 329
13.2. File Layout Definitions . . . . . . . . . . . . . . . . 331 13.2. File Layout Definitions . . . . . . . . . . . . . . . . 332
13.3. File Layout Data Types . . . . . . . . . . . . . . . . . 331 13.3. File Layout Data Types . . . . . . . . . . . . . . . . . 332
13.4. Interpreting the File Layout . . . . . . . . . . . . . . 335 13.4. Interpreting the File Layout . . . . . . . . . . . . . . 336
13.5. Data Server Multipathing . . . . . . . . . . . . . . . . 343 13.5. Data Server Multipathing . . . . . . . . . . . . . . . . 344
13.6. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 344 13.6. Operations Sent to NFSv4.1 Data Servers . . . . . . . . 345
13.7. COMMIT through Metadata Server . . . . . . . . . . . . . 346 13.7. COMMIT through Metadata Server . . . . . . . . . . . . . 347
13.8. The Layout Iomode . . . . . . . . . . . . . . . . . . . 347 13.8. The Layout Iomode . . . . . . . . . . . . . . . . . . . 348
13.9. Metadata and Data Server State Coordination . . . . . . 348 13.9. Metadata and Data Server State Coordination . . . . . . 349
13.10. Data Server Component File Size . . . . . . . . . . . . 351 13.10. Data Server Component File Size . . . . . . . . . . . . 352
13.11. Layout Revocation and Fencing . . . . . . . . . . . . . 351 13.11. Layout Revocation and Fencing . . . . . . . . . . . . . 352
13.12. Security Considerations for the File Layout Type . . . . 352 13.12. Security Considerations for the File Layout Type . . . . 353
14. Internationalization . . . . . . . . . . . . . . . . . . . . 353 14. Internationalization . . . . . . . . . . . . . . . . . . . . 354
14.1. Stringprep Profile for the utf8str_cs Type . . . . . . . 354 14.1. Stringprep Profile for the utf8str_cs Type . . . . . . . 355
14.2. Stringprep Profile for the utf8str_cis Type . . . . . . 356 14.2. Stringprep Profile for the utf8str_cis Type . . . . . . 357
14.3. Stringprep Profile for the utf8str_mixed Type . . . . . 357 14.3. Stringprep Profile for the utf8str_mixed Type . . . . . 358
14.4. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 359 14.4. UTF-8 Capabilities . . . . . . . . . . . . . . . . . . . 360
14.5. UTF-8 Related Errors . . . . . . . . . . . . . . . . . . 359 14.5. UTF-8 Related Errors . . . . . . . . . . . . . . . . . . 360
15. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 360 15. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 361
15.1. Error Definitions . . . . . . . . . . . . . . . . . . . 360 15.1. Error Definitions . . . . . . . . . . . . . . . . . . . 361
15.2. Operations and Their Valid Errors . . . . . . . . . . . 379 15.2. Operations and Their Valid Errors . . . . . . . . . . . 380
15.3. Callback Operations and Their Valid Errors . . . . . . . 395 15.3. Callback Operations and Their Valid Errors . . . . . . . 396
15.4. Errors and the Operations That Use Them . . . . . . . . 398 15.4. Errors and the Operations That Use Them . . . . . . . . 399
16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 413 16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 414
16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 413 16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 414
16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 413 16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 414
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 425 17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 426
18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 428 18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 429
18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 428 18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 429
18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 434 18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 435
18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 435 18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 436
18.4. Operation 6: CREATE - Create a Non-Regular File Object . 438 18.4. Operation 6: CREATE - Create a Non-Regular File Object . 439
18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting 18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting
Recovery . . . . . . . . . . . . . . . . . . . . . . . . 441 Recovery . . . . . . . . . . . . . . . . . . . . . . . . 442
18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 442 18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 443
18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 442 18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 443
18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 444 18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 445
18.9. Operation 11: LINK - Create Link to a File . . . . . . . 445 18.9. Operation 11: LINK - Create Link to a File . . . . . . . 446
18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 448 18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 449
18.11. Operation 13: LOCKT - Test for Lock . . . . . . . . . . 453 18.11. Operation 13: LOCKT - Test for Lock . . . . . . . . . . 454
18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 454 18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 455
18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 456 18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 457
18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 458 18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 459
18.15. Operation 17: NVERIFY - Verify Difference in Attributes 459 18.15. Operation 17: NVERIFY - Verify Difference in Attributes 460
18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 460 18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 461
18.17. Operation 19: OPENATTR - Open Named Attribute Directory 480 18.17. Operation 19: OPENATTR - Open Named Attribute Directory 481
18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 482 18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 483
18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 483 18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 484
18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . 484 18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . 485
18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 486 18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 487
18.22. Operation 25: READ - Read from File . . . . . . . . . . 487 18.22. Operation 25: READ - Read from File . . . . . . . . . . 488
18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 489 18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 490
18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 493 18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 494
18.25. Operation 28: REMOVE - Remove File System Object . . . . 494 18.25. Operation 28: REMOVE - Remove File System Object . . . . 495
18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 497 18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 498
18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 500 18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 501
18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 501 18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 502
18.29. Operation 33: SECINFO - Obtain Available Security . . . 502 18.29. Operation 33: SECINFO - Obtain Available Security . . . 503
18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 506 18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 507
18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 509 18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 510
18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 510 18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 511
18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 515 18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control . . 516
18.34. Operation 41: BIND_CONN_TO_SESSION - Associate 18.34. Operation 41: BIND_CONN_TO_SESSION - Associate
Connection with Session . . . . . . . . . . . . . . . . 516 Connection with Session . . . . . . . . . . . . . . . . 517
18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 519 18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 520
18.36. Operation 43: CREATE_SESSION - Create New Session and 18.36. Operation 43: CREATE_SESSION - Create New Session and
Confirm Client ID . . . . . . . . . . . . . . . . . . . 537 Confirm Client ID . . . . . . . . . . . . . . . . . . . 538
18.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 548 18.37. Operation 44: DESTROY_SESSION - Destroy a Session . . . 549
18.38. Operation 45: FREE_STATEID - Free Stateid with No Locks 549 18.38. Operation 45: FREE_STATEID - Free Stateid with No Locks 550
18.39. Operation 46: GET_DIR_DELEGATION - Get a Directory 18.39. Operation 46: GET_DIR_DELEGATION - Get a Directory
Delegation . . . . . . . . . . . . . . . . . . . . . . . 550 Delegation . . . . . . . . . . . . . . . . . . . . . . . 551
18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 554 18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 555
18.41. Operation 48: GETDEVICELIST - Get All Device Mappings 18.41. Operation 48: GETDEVICELIST - Get All Device Mappings
for a File System . . . . . . . . . . . . . . . . . . . 557 for a File System . . . . . . . . . . . . . . . . . . . 558
18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a 18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made Using a
Layout . . . . . . . . . . . . . . . . . . . . . . . . . 559 Layout . . . . . . . . . . . . . . . . . . . . . . . . . 560
18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 563 18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 564
18.44. Operation 51: LAYOUTRETURN - Release Layout Information 572 18.44. Operation 51: LAYOUTRETURN - Release Layout Information 573
18.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed 18.45. Operation 52: SECINFO_NO_NAME - Get Security on Unnamed
Object . . . . . . . . . . . . . . . . . . . . . . . . . 577 Object . . . . . . . . . . . . . . . . . . . . . . . . . 578
18.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing 18.46. Operation 53: SEQUENCE - Supply Per-Procedure Sequencing
and Control . . . . . . . . . . . . . . . . . . . . . . 578 and Control . . . . . . . . . . . . . . . . . . . . . . 579
18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 584 18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 585
18.48. Operation 55: TEST_STATEID - Test Stateids for Validity 586 18.48. Operation 55: TEST_STATEID - Test Stateids for Validity 587
18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 588 18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 589
18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 592 18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID . . 593
18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims 18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims
Finished . . . . . . . . . . . . . . . . . . . . . . . . 593 Finished . . . . . . . . . . . . . . . . . . . . . . . . 594
18.52. Operation 10044: ILLEGAL - Illegal Operation . . . . . . 596 18.52. Operation 10044: ILLEGAL - Illegal Operation . . . . . . 597
19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 597 19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 598
19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 597 19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 598
19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 597 19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 598
20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 602 20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 603
20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 602 20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 603
20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 603 20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 604
20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from Client 604 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from Client 605
20.4. Operation 6: CB_NOTIFY - Notify Client of Directory 20.4. Operation 6: CB_NOTIFY - Notify Client of Directory
Changes . . . . . . . . . . . . . . . . . . . . . . . . 607 Changes . . . . . . . . . . . . . . . . . . . . . . . . 608
20.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested 20.5. Operation 7: CB_PUSH_DELEG - Offer Previously Requested
Delegation to Client . . . . . . . . . . . . . . . . . . 611 Delegation to Client . . . . . . . . . . . . . . . . . . 612
20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable 20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable
Objects . . . . . . . . . . . . . . . . . . . . . . . . 612 Objects . . . . . . . . . . . . . . . . . . . . . . . . 613
20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal Resources
for Recallable Objects . . . . . . . . . . . . . . . . . 615 for Recallable Objects . . . . . . . . . . . . . . . . . 616
20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control 20.8. Operation 10: CB_RECALL_SLOT - Change Flow Control
Limits . . . . . . . . . . . . . . . . . . . . . . . . . 616 Limits . . . . . . . . . . . . . . . . . . . . . . . . . 617
20.9. Operation 11: CB_SEQUENCE - Supply Backchannel 20.9. Operation 11: CB_SEQUENCE - Supply Backchannel
Sequencing and Control . . . . . . . . . . . . . . . . . 617 Sequencing and Control . . . . . . . . . . . . . . . . . 618
20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending
Delegation Wants . . . . . . . . . . . . . . . . . . . . 620 Delegation Wants . . . . . . . . . . . . . . . . . . . . 621
20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible 20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of Possible
Lock Availability . . . . . . . . . . . . . . . . . . . 621 Lock Availability . . . . . . . . . . . . . . . . . . . 622
20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of 20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify Client of
Device ID Changes . . . . . . . . . . . . . . . . . . . 622 Device ID Changes . . . . . . . . . . . . . . . . . . . 623
20.13. Operation 10044: CB_ILLEGAL - Illegal Callback Operation 624 20.13. Operation 10044: CB_ILLEGAL - Illegal Callback Operation 625
21. Security Considerations . . . . . . . . . . . . . . . . . . . 625 21. Security Considerations . . . . . . . . . . . . . . . . . . . 626
22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 629 22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 630
22.1. IANA Actions Neeeded . . . . . . . . . . . . . . . . . . 629 22.1. IANA Actions Neeeded . . . . . . . . . . . . . . . . . . 630
22.2. Named Attribute Definitions . . . . . . . . . . . . . . 629 22.2. Named Attribute Definitions . . . . . . . . . . . . . . 630
22.3. Device ID Notifications . . . . . . . . . . . . . . . . 630 22.3. Device ID Notifications . . . . . . . . . . . . . . . . 631
22.4. Object Recall Types . . . . . . . . . . . . . . . . . . 632 22.4. Object Recall Types . . . . . . . . . . . . . . . . . . 633
22.5. Layout Types . . . . . . . . . . . . . . . . . . . . . . 634 22.5. Layout Types . . . . . . . . . . . . . . . . . . . . . . 635
22.6. Path Variable Definitions . . . . . . . . . . . . . . . 636 22.6. Path Variable Definitions . . . . . . . . . . . . . . . 637
23. References . . . . . . . . . . . . . . . . . . . . . . . . . 640 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 641
23.1. Normative References . . . . . . . . . . . . . . . . . . 640 23.1. Normative References . . . . . . . . . . . . . . . . . . 641
23.2. Informative References . . . . . . . . . . . . . . . . . 643 23.2. Informative References . . . . . . . . . . . . . . . . . 644
Appendix A. Need for this Update . . . . . . . . . . . . . . . . 646 Appendix A. Need for this Update . . . . . . . . . . . . . . . . 647
Appendix B. Changes in this Update . . . . . . . . . . . . . . . 648 Appendix B. Changes in this Update . . . . . . . . . . . . . . . 649
B.1. Revisions Made to Section 11 of [RFC5661] . . . . . . . . 648 B.1. Revisions Made to Section 11 of [RFC5661] . . . . . . . . 649
B.2. Revisions Made to Operations in [RFC5661] . . . . . . . . 651 B.2. Revisions Made to Operations in [RFC5661] . . . . . . . . 652
B.3. Revisions Made to Error Definitions in [RFC5661] . . . . 654 B.3. Revisions Made to Error Definitions in [RFC5661] . . . . 655
B.4. Other Revisions Made to [RFC5661] . . . . . . . . . . . . 654 B.4. Other Revisions Made to [RFC5661] . . . . . . . . . . . . 655
Appendix C. Security Issues that Need to be Addressed . . . . . 655 Appendix C. Security Issues that Need to be Addressed . . . . . 656
Appendix D. Acknowledgments . . . . . . . . . . . . . . . . . . 657 Appendix D. Acknowledgments . . . . . . . . . . . . . . . . . . 658
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 659 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 661
1. Introduction 1. Introduction
1.1. Introduction to this Update 1.1. Introduction to this Update
The revised description of the NFS version 4 minor version 1 The revised description of the NFS version 4 minor version 1
(NFSv4.1) protocol presented in this update is necessary to enable (NFSv4.1) protocol presented in this update is necessary to enable
full use of trunking in connection with multi-server namespace full use of trunking in connection with multi-server namespace
features and to enable the use of transparent state migration in features and to enable the use of transparent state migration in
connection with NFSv4.1. See Appendix A for a discussion of the need connection with NFSv4.1. See Appendix A for a discussion of the need
skipping to change at page 8, line 26 skipping to change at page 8, line 26
o Work would have to be done with regard to RFC8178 [61] with which o Work would have to be done with regard to RFC8178 [61] with which
RFC5661 [60] is curretly inconsistent, in order to arrive at a RFC5661 [60] is curretly inconsistent, in order to arrive at a
situation in which there would be no need for RFC8178 to update situation in which there would be no need for RFC8178 to update
the NFSv4.1 specfication. the NFSv4.1 specfication.
o Work would have to be done with regard to RFC8434 [64] which o Work would have to be done with regard to RFC8434 [64] which
curently updates RFC5661 [60]. When that work is done and the curently updates RFC5661 [60]. When that work is done and the
resulting document approved, the new NFSv4.1 specfication will resulting document approved, the new NFSv4.1 specfication will
obsolete RFC8434 as well as RFC5661. obsolete RFC8434 as well as RFC5661.
o There is a need for a new section describing internationalization o There is a need for a new approach to the description of
since the current section has never been implemented and does not internationalization since the current internationalization
meet the needs of the NFSv4 protocol. section (Section 14) has never been implemented and does not meet
the needs of the NFSv4 protocol. Possible solutions are to create
a new internationalization section modeled on that in [62] or to
create a new document describing internationalization for all
NFSv4 minor versions and reference that document in the RFCs
defining both NFSv4.0 and NFSv4.1.
o There is a need for a revised treatment of security of in NFSv4.1. o There is a need for a revised treatment of security of in NFSv4.1.
The issues with the existing treatment are discussed in The issues with the existing treatment are discussed in
Appendix C. Appendix C.
Until the above work is done, there will not be a full, correct Until the above work is done, there will not be a full, correct
description of the NFSv41 protocol in a single document and any full description of the NFSv41 protocol in a single document and any full
description would involves documents updating the specification, just description would involves documents updating the specification, just
as RFC8434 [64] and RFC8178 [61] do today. as RFC8434 [64] and RFC8178 [61] do today.
skipping to change at page 655, line 31 skipping to change at page 656, line 31
o The Security Considerations Section of RFC5661 [60] is not written o The Security Considerations Section of RFC5661 [60] is not written
in accord with RFC3552 [66] (also BCP72). Of particular concern in accord with RFC3552 [66] (also BCP72). Of particular concern
is the fact that the section does not contain a threat analysis. is the fact that the section does not contain a threat analysis.
o Initial analysis of the existing security issues with NFSv4.1 has o Initial analysis of the existing security issues with NFSv4.1 has
made it likely that a revised Security Considerations Section for made it likely that a revised Security Considerations Section for
the existing protocol (one containing a threat analysis) would be the existing protocol (one containing a threat analysis) would be
likely to conclude that NFSv4.1 does not meet the goal of secure likely to conclude that NFSv4.1 does not meet the goal of secure
use on the internet. use on the internet.
Because of these difficulties, the Security Considerations Section of The Security Considerations Section of this document (in Section 21)
this document (in Section 21) has not been thoroughly revised to has not been thoroughly revised to correct the difficulties mentioned
correct the difficulties mentioned above. Instead, it has been above. Instead, it has been modified to take proper account of
modified to take proper account of issues related to the multi-server issues related to the multi-server namespace features discussed in
namespace features discussed in Section 11, leaving the incomplete Section 11, leaving the incomplete discussion and security weaknesses
discussion and security weaknesses pretty much as they were. pretty much as they were.
The following major security issues need to be addressed in a The following major security issues need to be addressed in a
satisfactory fashion before an updated Security Considerations satisfactory fashion before an updated Security Considerations
section can be published as part of a bis document for NFSv4.1: section can be published as part of a bis document for NFSv4.1:
o The continued use of AUTH_SYS and the security exposures it o The continued use of AUTH_SYS and the security exposures it
creates needs to be addressed. Addressing this issue must not be creates needs to be addressed. Addressing this issue must not be
limited to the questions of whether the designation of this as limited to the questions of whether the designation of this as
OPTIONAL was justified and whether it should be changed. OPTIONAL was justified and whether it should be changed.
skipping to change at page 657, line 5 skipping to change at page 657, line 49
implementations. implementations.
o The difficulty of making changes to NFSv4 protocols other than o The difficulty of making changes to NFSv4 protocols other than
those in the form of OPTIONAL extensions. those in the form of OPTIONAL extensions.
o The tendency of those responsible for existing NFSv4 deployments o The tendency of those responsible for existing NFSv4 deployments
to ignore security flaws in the context of local area networks to ignore security flaws in the context of local area networks
under the mistaken impression that network isolation provides, in under the mistaken impression that network isolation provides, in
and of itself, isolation from all potential attackers. and of itself, isolation from all potential attackers.
Given that the difficulties mentioned above apply to minor version
zero as well, it may make sense to deal with these security issues in
a common document applying to all NFSv4 minor versions. If that
approach is taken the, Security Considertions section of an eventual
NFv4.1 bis document would reference that common document and the
defining RFCs for other minor versions might do so as well.
Appendix D. Acknowledgments Appendix D. Acknowledgments
D.1. Acknowledgments for this Update D.1. Acknowledgments for this Update
The authors wish to acknowledge the important role of Andy Adamson of The authors wish to acknowledge the important role of Andy Adamson of
Netapp in clarifying the need for trunking discovery functionality, Netapp in clarifying the need for trunking discovery functionality,
and exploring the role of the file system location attributes in and exploring the role of the file system location attributes in
providing the necessary support. providing the necessary support.
The authors wish to thank Tom Haynes of Hammerspace for drawing our
attention to the fact that internationalization and security might
best be handled in documents dealing with such protocol issues as
they apply to all NFSv4 minor versions.
The authors also wish to acknowledge the work of Xuan Qi of Oracle The authors also wish to acknowledge the work of Xuan Qi of Oracle
with NFSv4.1 client and server prototypes of transparent state with NFSv4.1 client and server prototypes of transparent state
migration functionality. migration functionality.
The authors wish to thank others that brought attention to important The authors wish to thank others that brought attention to important
issues. The comments of Trond Myklebust of Primary Data related to issues. The comments of Trond Myklebust of Primary Data related to
trunking helped to clarify the role of DNS in trunking discovery. trunking helped to clarify the role of DNS in trunking discovery.
Rick Macklem's comments brought attention to problems in the handling Rick Macklem's comments brought attention to problems in the handling
of the per-fs version of RECLAIM_COMPLETE. of the per-fs version of RECLAIM_COMPLETE.
 End of changes. 32 change blocks. 
226 lines changed or deleted 243 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/