RFC 4850

Declarative Public Extension Key for Internet Small Computer Systems Interface (iSCSI) Node Architecture

πŸ“… published April 2007, from ietf

RFC 4850: Declarative Public Extension Key for Internet Small Computer Systems Interface (iSCSI) Node Architecture ✨

Okay bestie, welcome to RFC 4850 πŸŽ€ This one came out of the Network Working Group and was written by D. Wysochanski at Network Appliance, Inc. πŸ’… It's a Standards Track document, dated April 2007, and it updates RFC 3720 πŸ”₯ The header doesn't list anything it obsoletes. Its whole job is to add a little public key to iSCSI so nodes can share what they're made of during login, which makes debugging and support way less painful 🧚

Status of This Memo

This document is an Internet standards track protocol for the Internet community, and it's basically asking everyone to talk about it and suggest improvements πŸ¦‹ For the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited 🌈

Copyright (C) The IETF Trust (2007). πŸ’œ

Abstract ✨

So iSCSI, described in RFC 3720, lets you add extension items in the form of Private or Public Extension Keys 🌸 This doc is about a Public Extension Key that helps with supportability 🫢 The key lets iSCSI nodes share their architecture details during the iSCSI login sequence, and then the receiving node can use that info for better logging and support πŸ“

The other big thing: this document updates RFC 3720 so that iSCSI extension items can be defined by standards track RFCs and experimental RFCs too, not just informational RFCs πŸ’… Iconic glow-up πŸ‘‘

1. Introduction ✨

1.1. Overview

Okay so this doc describes a declarative Public Extension Key, the kind defined in Section 12.22 of RFC 3720 [2] πŸ’– It's used to share extra iSCSI node info with the peer node in a session 🧚 This info has been super useful in real iSCSI customer environments, because initiator and target vendors team up to fix technical issues and understand how their iSCSI implementations interact 🀝

The key is modeled on the HTTP "Server" and "User-Agent" header fields from Sections 14.38 and 14.43 of RFC 2616 [3] πŸŽ€ The text-value(s) of the key are roughly the same as the Product Tokens in Section 3.8 of RFC 2616 [3]. Heads up though, the text-value(s) in the key's list-of-values MUST conform to the Text Format in Section 5.1 of RFC 3720 [2] ⚠️

The key gets sent during operational parameter negotiation in an iSCSI session's login phase 🌈 The whole point is better logging and support, plus collecting iSCSI implementation and usage info πŸ’œ

⚠️ Quick reminder: the Text Format from Section 5.1 of RFC 3720 [2] is non-negotiable for those list-of-values. No cap 🧒

1.2. Terminology

Here's the vibe check on the key words πŸ¦‹ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are read the way RFC 2119 [1] describes ✨

2. Definition

The key's definition is written to match Sections 11 and 12 of RFC 3720 [2], and the example list-of-values follow Section 5.1 of RFC 3720 [2] πŸ’…

Here's the tea: the key uses "LO", which makes it a Leading Only key πŸ’– It doesn't change Sections 11 or 12 of RFC 3720 [2] at all. So the key MUST only be sent on the leading connection, MUST NOT be changed after the leading connection login, and MUST only be sent after the security negotiation login stage is done (during the operational negotiation login stage) πŸ”₯ It may be sent during normal or discovery sessions too 🌸

2.1. X#NodeArchitecture

Here's the key's header info, all cute and tidy πŸŽ€

Use: LO, Declarative
Senders: Initiator and Target
Scope: SW

The syntax is:

X#NodeArchitecture=<list-of-values>

Some examples, because examples are everything 🧚

X#NodeArchitecture=ExampleOS/v1234,ExampleInc_SW_Initiator/1.05a
X#NodeArchitecture=ExampleInc_HW_Initiator/4010,Firmware/2.0.0.5
X#NodeArchitecture=ExampleInc_SW_Initiator/2.1,CPU_Arch/i686

The initiator or target uses this key to tell the remote endpoint the details of its iSCSI node architecture πŸ’œ Those details can include (but aren't limited to!) the iSCSI vendor's software, firmware, or hardware versions, the OS version, or the hardware architecture 🌈

The length of the key value (that's the total length of the list-of-values) MUST NOT be greater than 255 bytes πŸ“ Also, X#NodeArchitecture MUST NOT be redeclared πŸ™…β€β™€οΈ

3. Implementation ✨

Functional behavior of the iSCSI node is totally separate from this key 🫢 That includes the iSCSI protocol logic (the SCSI, iSCSI, and TCP/IP protocols). That behavior MUST NOT depend on the presence, absence, or content of the key πŸ¦‹ Nodes MUST NOT use the key for interoperability or for excluding other nodes either πŸ™…β€β™€οΈ To keep things proper, key values SHOULD be set by the node itself, and there SHOULD NOT be provisions for key values to contain user-defined text πŸ’…

Nodes that implement this key MUST pick one of these options:

  • only transmit the key,
  • only log the key values received from other nodes, or
  • both transmit and log the key values.

Any node that chooses to transmit key values MUST be ready to handle the reply from RFC 3720 [2] compliant nodes that don't understand the key 😭 RFC 3720 [2] says compliant nodes MUST respond with X#NodeArchitecture=NotUnderstood.

Nodes that transmit and/or log key values can also add administrative mechanisms that turn off or change the logging and transmission detail (see Security Considerations) πŸ” So a totally valid behavior for this key is for a node to be completely silent: it doesn't transmit any key value, and it just discards any key values it gets without sending a NotUnderstood response 🀫🌸


to be continued in part 2 πŸ¦‹βœ¨

Appendix A. Acknowledgments πŸŽ€

Okay bestie, the IP Storage (ips) Working Group in the Transport Area of the IETF is the crew that actually defined the iSCSI protocol ✨, along with a whole bunch of other IP Storage protocols. The author gives a shoutout to the entire working group for their contributions 🫢.

The following individuals directly helped out by spotting issues and/or suggesting fixes for the issues in this document πŸ’…: David Black, Mallikarjun Chadalapaka, Paul Koning, Julian Satran, John Hufferd, Claire Kraft, Ranga Sankar, Joseph Pittman, Greg Berg, John Forte, Jim Yuill, William Studenmund, and Ken Sandars. The document benefited from all of them πŸ’–.

Finally, the author thanks Network Appliance, Inc. for sponsorship and support while this work was being developed 🌸.

Author's Address πŸ¦‹

Dave Wysochanski 8311 Brier Creek Parkway Suite 105-296 Raleigh, NC 27617 US

Phone: +1 919 696 8130 EMail: wysochanski@pobox.com


Copyright (C) The IETF Trust (2007).

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.

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, THE IETF TRUST 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.

Intellectual Property πŸ‘‘

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. It also doesn't claim to have made any independent effort to identify any such rights. Info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79 🧚.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt 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 send that info to the IETF at ietf-ipr@ietf.org πŸ’œ.

Acknowledgement πŸ“

Funding for the RFC Editor function is currently provided by the Internet Society ⭐.

πŸ“¦ where this page comes from