Found wdiff, but it reported no recognisable version. Falling back to builtin diff colouring...
| draft-pre-ch-21.txt | draft-ietf-nfsv4-minorversion1-23.txt | |||
|---|---|---|---|---|
| skipping to change at page 9, line 42 | skipping to change at page 9, line 42 | |||
| 19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 552 | 19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 552 | |||
| 19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 552 | 19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 552 | |||
| 20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 556 | 20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 556 | |||
| 20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 556 | 20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 556 | |||
| 20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 557 | 20.2. Operation 4: CB_RECALL - Recall a Delegation . . . . . . 557 | |||
| 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | |||
| Client . . . . . . . . . . . . . . . . . . . . . . . . . 558 | Client . . . . . . . . . . . . . . . . . . . . . . . . . 558 | |||
| 20.4. Operation 6: CB_NOTIFY - Notify directory changes . . . 562 | 20.4. Operation 6: CB_NOTIFY - Notify directory changes . . . 562 | |||
| 20.5. Operation 7: CB_PUSH_DELEG - Offer Delegation to | 20.5. Operation 7: CB_PUSH_DELEG - Offer Delegation to | |||
| Client . . . . . . . . . . . . . . . . . . . . . . . . . 566 | Client . . . . . . . . . . . . . . . . . . . . . . . . . 566 | |||
| 20.6. Operation 8: CB_RECALL_ANY - Keep any N delegations . . 567 | 20.6. Operation 8: CB_RECALL_ANY - Keep any N recallable | |||
| objects . . . . . . . . . . . . . . . . . . . . . . . . 567 | ||||
| 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | |||
| Resources for Recallable Objects . . . . . . . . . . . . 570 | Resources for Recallable Objects . . . . . . . . . . . . 570 | |||
| 20.8. Operation 10: CB_RECALL_SLOT - change flow control | 20.8. Operation 10: CB_RECALL_SLOT - change flow control | |||
| limits . . . . . . . . . . . . . . . . . . . . . . . . . 571 | limits . . . . . . . . . . . . . . . . . . . . . . . . . 571 | |||
| 20.9. Operation 11: CB_SEQUENCE - Supply backchannel | 20.9. Operation 11: CB_SEQUENCE - Supply backchannel | |||
| sequencing and control . . . . . . . . . . . . . . . . . 572 | sequencing and control . . . . . . . . . . . . . . . . . 572 | |||
| 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | |||
| Delegation Wants . . . . . . . . . . . . . . . . . . . . 574 | Delegation Wants . . . . . . . . . . . . . . . . . . . . 574 | |||
| 20.11. Operation 13: CB_NOTIFY_LOCK - Notify of possible | 20.11. Operation 13: CB_NOTIFY_LOCK - Notify of possible | |||
| lock availability . . . . . . . . . . . . . . . . . . . 575 | lock availability . . . . . . . . . . . . . . . . . . . 575 | |||
| skipping to change at page 567, line 9 | skipping to change at page 567, line 9 | |||
| If the client does return NFS4ERR_DELAY and there is a conflicting | If the client does return NFS4ERR_DELAY and there is a conflicting | |||
| delegation request, the server MAY process it at the expense of the | delegation request, the server MAY process it at the expense of the | |||
| client that returned NFS4ERR_DELAY. The client's want will typically | client that returned NFS4ERR_DELAY. The client's want will typically | |||
| not be cancelled, but MAY processed behind other delegation requests | not be cancelled, but MAY processed behind other delegation requests | |||
| or registered wants. | or registered wants. | |||
| When a client returns a status other than NFS4_OK, NFSERR_DELAY, or | When a client returns a status other than NFS4_OK, NFSERR_DELAY, or | |||
| NFS4ERR_REJECT_DELAY, the want remains pending, although servers may | NFS4ERR_REJECT_DELAY, the want remains pending, although servers may | |||
| decide to cancel the want by sending a CB_WANTS_CANCELLED. | decide to cancel the want by sending a CB_WANTS_CANCELLED. | |||
| 20.6. Operation 8: CB_RECALL_ANY - Keep any N delegations | 20.6. Operation 8: CB_RECALL_ANY - Keep any N recallable objects | |||
| Notify client to return all but N delegations. | Notify client to return all but N recallable objects. | |||
| 20.6.1. ARGUMENT | 20.6.1. ARGUMENT | |||
| const RCA4_TYPE_MASK_RDATA_DLG = 0; | const RCA4_TYPE_MASK_RDATA_DLG = 0; | |||
| const RCA4_TYPE_MASK_WDATA_DLG = 1; | const RCA4_TYPE_MASK_WDATA_DLG = 1; | |||
| const RCA4_TYPE_MASK_DIR_DLG = 2; | const RCA4_TYPE_MASK_DIR_DLG = 2; | |||
| const RCA4_TYPE_MASK_FILE_LAYOUT = 3; | const RCA4_TYPE_MASK_FILE_LAYOUT = 3; | |||
| const RCA4_TYPE_MASK_BLK_LAYOUT = 4; | const RCA4_TYPE_MASK_BLK_LAYOUT = 4; | |||
| const RCA4_TYPE_MASK_OBJ_LAYOUT_MIN = 8; | const RCA4_TYPE_MASK_OBJ_LAYOUT_MIN = 8; | |||
| const RCA4_TYPE_MASK_OBJ_LAYOUT_MAX = 9; | const RCA4_TYPE_MASK_OBJ_LAYOUT_MAX = 9; | |||
| skipping to change at page 579, line 40 | skipping to change at page 579, line 40 | |||
| A server will probably not send an operation with code OP_CB_ILLEGAL | A server will probably not send an operation with code OP_CB_ILLEGAL | |||
| but if it does, the response will be CB_ILLEGAL4res just as it would | but if it does, the response will be CB_ILLEGAL4res just as it would | |||
| be with any other invalid operation code. Note that if the client | be with any other invalid operation code. Note that if the client | |||
| gets an illegal operation code that is not OP_ILLEGAL, and if the | gets an illegal operation code that is not OP_ILLEGAL, and if the | |||
| client checks for legal operation codes during the XDR decode phase, | client checks for legal operation codes during the XDR decode phase, | |||
| then an instance of data type CB_ILLEGAL4res will not be returned. | then an instance of data type CB_ILLEGAL4res will not be returned. | |||
| 21. Security Considerations | 21. Security Considerations | |||
| NFS has historically used a model where, from an authentication | Historically the authentication of model of NFS had the entire | |||
| perspective, the client was the entire machine, or at least the | machine being the NFS client, and the NFS server trusting the NFS | |||
| source network address of the machine. The NFS server relied on the | client to authenticate the end-user. The NFS server in turn shared | |||
| NFS client to make the proper authentication of the end-user. The | its files only to specific clients, as identified by the client's | |||
| NFS server in turn shared its files only to specific clients, as | source network address. Given this model, the AUTH_SYS RPC security | |||
| identified by the client's source network address. Given this model, | flavor simply identified the end-user using the client to the NFS | |||
| the AUTH_SYS RPC security flavor simply identified the end-user using | server. When processing NFS responses, the client ensured that the | |||
| the client to the NFS server. When processing NFS responses, the | responses came from the same network address and port number that the | |||
| client ensured that the responses came from the same network address | request was sent to. While such a model is easy to implement and | |||
| and port number that the request was sent to. While such a model is | simple to deploy and use, it is unsafe. Thus, NFSv4.1 | |||
| easy to implement and simple to deploy and use, it is certainly not a | implementations are REQUIRED to support a security model that uses | |||
| safe model. Thus, NFSv4.1 implementations are REQUIRED to support a | end to end authentication, where an end-user on a client mutually | |||
| security model that uses end to end authentication, where an end-user | authenticates (via cryptographic schemes that do not expose passwords | |||
| on a client mutually authenticates (via cryptographic schemes that do | or keys in the clear on the network) to a principal on an NFS server. | |||
| not expose passwords or keys in the clear on the network) to a | Consideration is also be given to the integrity and privacy of NFS | |||
| principal on an NFS server. Consideration should also be given to | requests and responses. The issues of end to end mutual | |||
| the integrity and privacy of NFS requests and responses. The issues | authentication, integrity, and privacy are discussed | |||
| of end to end mutual authentication, integrity, and privacy are | Section 2.2.1.1.1. | |||
| discussed Section 2.2.1.1.1. | ||||
| Note that while NFSv4.1 mandates an end to end mutual authentication | Note that being REQUIRED to implement does not mean REQUIRED to use; | |||
| model, the "classic" model of machine authentication via network | AUTH_SYS can be used by NFSv4.1 clients and servers. However, | |||
| address checking and AUTH_SYS identification can still be supported | AUTH_SYS is merely an OPTIONAL security flavor in NFSv4.1, and so | |||
| with the caveat that the AUTH_SYS flavor is neither REQUIRED nor | interoperability via AUTH_SYS is not assured. | |||
| RECOMMENDED by this specification, and so interoperability via | ||||
| AUTH_SYS is not assured. | ||||
| For reasons of reduced administration overhead, better performance | For reasons of reduced administration overhead, better performance | |||
| and/or reduction of CPU utilization, users of NFSv4.1 implementations | and/or reduction of CPU utilization, users of NFSv4.1 implementations | |||
| may opt to not use security mechanisms that enable integrity | may opt to not use security mechanisms that enable integrity | |||
| protection on each remote procedure call and response. The use of | protection on each remote procedure call and response. The use of | |||
| mechanisms without integrity leaves the user vulnerable to an | mechanisms without integrity leaves the user vulnerable to an | |||
| attacker in the middle of the NFS client and server that modifies the | attacker in the middle of the NFS client and server that modifies the | |||
| RPC request and/or the response. While implementations are free to | RPC request and/or the response. While implementations are free to | |||
| provide the option to use weaker security mechanisms, there are three | provide the option to use weaker security mechanisms, there are three | |||
| operations in particular that warrant the implementation overriding | operations in particular that warrant the implementation overriding | |||
| user choices. | user choices. | |||
| The first two such operations are SECINFO SECINFO_NO_NAME. It is | o The first two such operations are SECINFO SECINFO_NO_NAME. It is | |||
| RECOMMENDED that the client send the either operation such that it is | RECOMMENDED that the client send the either operation such that it | |||
| protected with a security flavor that has integrity protection, such | is protected with a security flavor that has integrity protection, | |||
| as RPCSEC_GSS with either the rpc_gss_svc_integrity or | such as RPCSEC_GSS with either the rpc_gss_svc_integrity or | |||
| rpc_gss_svc_privacy service. Without integrity protection | rpc_gss_svc_privacy service. Without integrity protection | |||
| encapsulating SECINFO and SECINFO_NO_NAME and their results, an | encapsulating SECINFO and SECINFO_NO_NAME and their results, an | |||
| attacker in the middle could modify results such that the client | attacker in the middle could modify results such that the client | |||
| might select a weaker algorithm in the set allowed by server, making | might select a weaker algorithm in the set allowed by server, | |||
| the client and/or server vulnerable to further attacks. | making the client and/or server vulnerable to further attacks. | |||
| The second operation that should definitely use integrity protection | o The third operation that should definitely use integrity | |||
| is any GETATTR for the fs_locations attribute. The attack has two | protection is any GETATTR for the fs_locations and | |||
| steps. First the attacker modifies the unprotected results of some | fs_locations_info attributes. The attack has two steps. First | |||
| operation to return NFS4ERR_MOVED. Second, when the client follows | the attacker modifies the unprotected results of some operation to | |||
| up with a GETATTR for the fs_locations attribute, the attacker | return NFS4ERR_MOVED. Second, when the client follows up with a | |||
| modifies the results to cause the client migrate its traffic to a | GETATTR for the fs_locations or fs_locations_info attributes, the | |||
| server controlled by the attacker. | attacker modifies the results to cause the client migrate its | |||
| traffic to a server controlled by the attacker. | ||||
| Relative to previous NFS versions, NFSv4.1 has additional security | Relative to previous NFS versions, NFSv4.1 has additional security | |||
| considerations for pNFS (see Section 12.9 and Section 13.12), locking | considerations for pNFS (see Section 12.9 and Section 13.12), locking | |||
| and session state (see Section 2.10.7.3). | and session state (see Section 2.10.7.3). | |||
| 22. IANA Considerations | 22. IANA Considerations | |||
| 22.1. Named Attribute Definitions | 22.1. Named Attribute Definitions | |||
| The NFSv4.1 protocol provides for the association of named attributes | The NFSv4.1 protocol supports the association of a file with zero or | |||
| to files. The name space identifiers for these attributes are | more named attributes. The name space identifiers for these | |||
| defined as string names. The protocol does not define the specific | attributes are defined as string names. The protocol does not define | |||
| assignment of the name space for these file attributes. Even though | the specific assignment of the name space for these file attributes. | |||
| the name space is not specifically controlled to prevent collisions, | Even though the name space is not specifically controlled to prevent | |||
| an IANA registry has been created for the registration of NFSv4.1 | collisions, an IANA registry has been created for the registration of | |||
| named attributes. Registration will be achieved through the | NFSv4.1 named attributes. Registration will be achieved through the | |||
| publication of an Informational RFC and will require not only the | publication of an Informational RFC and will require not only the | |||
| name of the attribute but the syntax and semantics of the named | name of the attribute but the syntax and semantics of the named | |||
| attribute contents; the intent is to promote interoperability where | attribute contents; the intent is to promote interoperability where | |||
| common interests exist. While application developers are allowed to | common interests exist. While application developers are allowed to | |||
| define and use attributes as needed, they are encouraged to register | define and use attributes as needed, they are encouraged to register | |||
| the attributes with IANA. | the attributes with IANA. | |||
| Such registered named attributes are presumed to apply to all minor | Such registered named attributes are presumed to apply to all minor | |||
| versions of NFSv4, including those defined subsequently to the | versions of NFSv4, including those defined subsequently to the | |||
| registration. Where the named attribute is intended to be limited | registration. Where the named attribute is intended to be limited | |||
| with regard to the minor versions for which they are not be used, the | with regard to the minor versions for which they are not be used, the | |||
| Informational RFC must clearly state the applicable limits. | Informational RFC must clearly state the applicable limits. | |||
| 22.2. ONC RPC Network Identifiers (netids) | 22.2. ONC RPC Network Identifiers (netids) | |||
| Section 3.3.9) discussed the r_netid field and the corresponding | Section 3.3.9) discussed the r_netid field and the corresponding | |||
| r_addr field within a netaddr4 structure. The NFSv4 protocol depends | r_addr field within a netaddr4 structure. The NFSv4 protocol depends | |||
| on the syntax and semantics of these fields to effectively | on the syntax and semantics of these fields to effectively | |||
| communicate callback information between client and server. | communicate callback and other information between client and server. | |||
| Therefore, an IANA registry has been created to include the values | Therefore, an IANA registry has been created to include the values | |||
| defined in this document and to allow for future expansion based on | defined in this document and to allow for future expansion based on | |||
| transport usage/availability. Additions to this ONC RPC Network | transport usage/availability. Additions to this ONC RPC Network | |||
| Identifier registry must be done with the publication of an RFC. | Identifier registry must be done with the publication of an RFC. | |||
| The initial values for this registry are as follows (some of this | The initial values for this registry are as follows (some of this | |||
| text is replicated from Section 3.3.9 for clarity): | text is replicated from Section 3.3.9 for clarity): | |||
| The Network Identifier (or r_netid for short) is used to specify a | The Network Identifier (or r_netid for short) is used to specify a | |||
| transport protocol and associated universal address (or r_addr for | transport protocol and associated universal address (or r_addr for | |||
| skipping to change at page 582, line 44 | skipping to change at page 582, line 44 | |||
| to NFSv4. This requires a new minor version of NFSv4, and requires a | to NFSv4. This requires a new minor version of NFSv4, and requires a | |||
| standards track document from IETF. Another way to add a | standards track document from IETF. Another way to add a | |||
| notification is to specify a new layout type. Notifications for new | notification is to specify a new layout type. Notifications for new | |||
| layout types would be requested via GETDEVICELIST (Section 18.41) and | layout types would be requested via GETDEVICELIST (Section 18.41) and | |||
| GETDEVICEINFO (Section 18.40). See Section 22.4). | GETDEVICEINFO (Section 18.40). See Section 22.4). | |||
| 22.4. Defining New Layout Types | 22.4. Defining New Layout Types | |||
| New layout type numbers will be requested from IANA. IANA will only | New layout type numbers will be requested from IANA. IANA will only | |||
| provide layout type numbers for Standards Track RFCs approved by the | provide layout type numbers for Standards Track RFCs approved by the | |||
| IESG, in accordance with Standards Action policy defined in RFC2434 | IESG, in accordance with Standards Action policy defined in [20]. | |||
| [20]. | All layout types assigned by IANA MUST be in the range 0x00000001 to | |||
| 0x7FFFFFFF. | ||||
| The author of a new pNFS layout specification must follow these steps | The author of a new pNFS layout specification must follow these steps | |||
| to obtain acceptance of the layout type as a standard: | to obtain acceptance of the layout type as a standard: | |||
| 1. The author devises the new layout specification. | 1. The author devises the new layout specification. | |||
| 2. The new layout type specification MUST, at a minimum: | 2. The new layout type specification MUST, at a minimum: | |||
| * Define the contents of the layout-type-specific fields of the | * Define the contents of the layout-type-specific fields of the | |||
| following data types: | following data types: | |||
| skipping to change at page 583, line 36 | skipping to change at page 583, line 36 | |||
| 1. Failure and restart for client, server, storage device. | 1. Failure and restart for client, server, storage device. | |||
| 2. Lease expiration from perspective of the active client, | 2. Lease expiration from perspective of the active client, | |||
| server, storage device. | server, storage device. | |||
| 3. Loss of layout state resulting in fencing of client access | 3. Loss of layout state resulting in fencing of client access | |||
| to storage devices (for an example, see Section 12.7.3). | to storage devices (for an example, see Section 12.7.3). | |||
| * A list of any new notification values for CB_NOTIFY_DEVICEID. | * A list of any new notification values for CB_NOTIFY_DEVICEID. | |||
| * A list of any new recallable object types for CB_RECALL_ANY. | ||||
| * Include an IANA considerations section. | * Include an IANA considerations section. | |||
| * Include a security considerations section. | * Include a security considerations section. | |||
| 3. The author documents the new layout specification as an Internet | 3. The author documents the new layout specification as an Internet | |||
| Draft. | Draft. | |||
| 4. The author submits the Internet Draft for review through the IETF | 4. The author submits the Internet Draft for review through the IETF | |||
| standards process as defined in "Internet Official Protocol | standards process as defined in "Internet Official Protocol | |||
| Standards" (STD 1). The new layout specification will be | Standards" (STD 1). The new layout specification will be | |||
| skipping to change at page 588, line 29 | skipping to change at page 588, line 29 | |||
| Burnett, and Charles Fan with contributions from Ted Anderson, Neil | Burnett, and Charles Fan with contributions from Ted Anderson, Neil | |||
| Brown, and Jon Haswell. | Brown, and Jon Haswell. | |||
| The initial drafts for the Directory Delegations support were | The initial drafts for the Directory Delegations support were | |||
| contributed by Saadia Khan with input from Dave Noveck, Mike Eisler, | contributed by Saadia Khan with input from Dave Noveck, Mike Eisler, | |||
| Carl Burnett, Ted Anderson and Tom Talpey. | Carl Burnett, Ted Anderson and Tom Talpey. | |||
| The initial drafts for the ACL explanations were contributed by Sam | The initial drafts for the ACL explanations were contributed by Sam | |||
| Falkner and Lisa Week. | Falkner and Lisa Week. | |||
| The pNFS work was inspired by the NASD and OSD work done by Garth | ||||
| Gibson. Gary Grider has also been a champion of high-performance | ||||
| parallel I/O. Garth Gibson and Peter Corbett started the pNFS effort | ||||
| with a problem statement document for IETF that formed the basis for | ||||
| the pNFS work in NFSv4.1. | ||||
| The initial drafts for the parallel NFS support were edited by Brent | The initial drafts for the parallel NFS support were edited by Brent | |||
| Welch and Garth Goodson. Additional authors for those documents were | Welch and Garth Goodson. Additional authors for those documents were | |||
| Benny Halevy, David Black, and Andy Adamson. Additional input came | Benny Halevy, David Black, and Andy Adamson. Additional input came | |||
| from the informal group which contributed to the construction of the | from the informal group which contributed to the construction of the | |||
| initial pNFS drafts; specific acknowledgement goes to Gary Grider, | initial pNFS drafts; specific acknowledgement goes to Gary Grider, | |||
| Peter Corbett, Dave Noveck, Peter Honeyman, and Stephen Fridella. | Peter Corbett, Dave Noveck, Peter Honeyman, and Stephen Fridella. | |||
| The pNFS work was inspired by the NASD and OSD work done by Garth | ||||
| Gibson. Gary Grider of the national labs (LANL) has also been a | ||||
| champion of high-performance parallel I/O. | ||||
| Fredric Isaman found several errors in draft versions of the ONC RPC | Fredric Isaman found several errors in draft versions of the ONC RPC | |||
| XDR description of the NFSv4.1 protocol. | XDR description of the NFSv4.1 protocol. | |||
| Audrey Van Bellingham provided, in numerous ways, essential co- | Audrey Van Bellingham provided, in numerous ways, essential co- | |||
| ordination and management of the process of editing the specification | ordination and management of the process of editing the specification | |||
| drafts. | drafts. | |||
| Richard Jernigan gave feedback on the file layout's striping pattern | Richard Jernigan gave feedback on the file layout's striping pattern | |||
| design. | design. | |||
| skipping to change at page 589, line 49 | skipping to change at page 589, line 51 | |||
| Iyer, Suchit Kaura, Trond Myklebust, Anatoly Pinchuk, Spencer | Iyer, Suchit Kaura, Trond Myklebust, Anatoly Pinchuk, Spencer | |||
| Shepler, Renu Tewari, Lisa Week, and Brent Welch. | Shepler, Renu Tewari, Lisa Week, and Brent Welch. | |||
| A review team worked together to generate the tables of assignments | A review team worked together to generate the tables of assignments | |||
| of error sets to operations and make sure that each such assignment | of error sets to operations and make sure that each such assignment | |||
| had two or more people validating it. Participating in the process | had two or more people validating it. Participating in the process | |||
| were: Andy Adamson, Mike Eisler, Sam Falkner, Garth Goodson, Robert | were: Andy Adamson, Mike Eisler, Sam Falkner, Garth Goodson, Robert | |||
| Gordon, Trond Myklebust, Dave Noveck Spencer Shepler, Tom Talpey, Amy | Gordon, Trond Myklebust, Dave Noveck Spencer Shepler, Tom Talpey, Amy | |||
| Weaver, and Lisa Week. | Weaver, and Lisa Week. | |||
| Others who provided comments include: Mahesh Siddheshwar. | Others who provided comments include: Jason Goldschmidt and Mahesh | |||
| Siddheshwar. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Spencer Shepler | Spencer Shepler | |||
| Sun Microsystems, Inc. | Sun Microsystems, Inc. | |||
| 7808 Moonflower Drive | 7808 Moonflower Drive | |||
| Austin, TX 78750 | Austin, TX 78750 | |||
| USA | USA | |||
| Phone: +1-512-401-1080 | Phone: +1-512-401-1080 | |||
| End of changes. 15 change blocks. | ||||
| 55 lines changed or deleted | 61 lines changed or added | |||
This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||