1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
|
<pre>Network Working Group M. Bakke
Request for Comments: 3722 Cisco
Category: Standards Track April 2004
<span class="h1">String Profile for Internet Small Computer</span>
<span class="h1">Systems Interface (iSCSI) Names</span>
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
This document describes how to prepare internationalized iSCSI names
to increase the likelihood that name input and comparison work in
ways that make sense for typical users throughout the world.
The Internet Small Computer Systems Interface (iSCSI) protocol
provides a way for hosts to access SCSI devices over an IP network.
The iSCSI end-points, called initiators and targets, each have a
globally-unique name that must be transcribable, as well as easily
compared.
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The iSCSI protocol [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>] provides a way for hosts to access SCSI
[<a href="#ref-SAM2" title=""SCSI Architectural Model 2"">SAM2</a>] devices over an IP network. The iSCSI end-points, called
initiators and targets, each have a globally-unique name, defined in
[<a href="./rfc3721" title=""Internet Small Computer Systems Interface (iSCSI) Naming and Discovery"">RFC3721</a>].
An iSCSI name is a string of UTF-8 [<a href="./rfc3629">RFC3629</a>] characters that includes
a type designator, a naming authority based on domain names, and a
unique part within the naming authority. The unique part may be
generated based on anything the naming authority deems useful, and
may include user input.
These names may need to be transcribed (sent between two
administrators via email, voice, paper, etc), so a case-insensitive
comparison would be desirable. However, these names must often be
<span class="grey">Bakke Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
compared by initiator and target implementations, most of which are
done in simple, embedded software. This makes case-sensitive
comparison highly desirable for these implementors.
However, a completely case-sensitive implementation would result in
identifiers such as "example-name" and "Example-Name" being
different, which could lead to confusion as these names are
transcribed.
The goal, then, is to generate iSCSI names that can be transcribed
and entered by users, and also compared byte-for-byte, with minimal
confusion. To attain these goals, iSCSI names are generalized using
a normalized character set (converted to lower case or equivalent),
with no white space allowed, and very limited punctuation.
For those using only ASCII characters (U+0000 to U+007F), the
following characters are allowed:
- ASCII dash character ('-' = U+002d)
- ASCII dot character ('.' = U+002e)
- ASCII colon character (':' = U+003a)
- ASCII lower-case characters ('a'..'z' = U+0061..U+007a)
- ASCII digit characters ('0'..'9' = U+0030..U+0039)
In addition, any upper-case characters input via a user interface
MUST be mapped to their lower-case equivalents.
This document specifies the valid character set for iSCSI names,
along with the rules for normalizing and generating iSCSI names based
on user input or other information that contains international
characters.
In particular, it defines the following, as required by [<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>]:
- The intended applicability of the profile: internationalized iSCSI
names.
- The character repertoire that is the input and output to
stringprep: Unicode 3.2, specified in <a href="#section-3">section 3</a>.
- The mappings used: specified in <a href="#section-4">section 4</a>.
- The Unicode normalization used: specified in <a href="#section-5">section 5</a>.
- The characters that are prohibited as output: specified in <a href="#section-6">section</a>
<a href="#section-6">6</a>.
This profile MUST be used with the iSCSI protocol.
<span class="grey">Bakke Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Terminology</span>
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 [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
Examples in this document use the notation for code points and names
from the Unicode Standard [<a href="#ref-Unicode3.2" title="Version 3.2.0: The Unicode Consortium. The Unicode Standard">Unicode3.2</a>] and ISO/IEC 10646 [<a href="#ref-ISO10646">ISO10646</a>].
For example, the letter "a" may be represented as either "U+0061" or
"LATIN SMALL LETTER A". In the lists of prohibited characters, the
"U+" is left off to make the lists easier to read. The comments for
character ranges are shown in square brackets (such as "[SYMBOLS]")
and do not come from the standards.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Character Repertoire</span>
This profile uses Unicode 3.2, as defined in <a href="./rfc3454#appendix-A">[RFC3454] Appendix A</a>.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Mapping</span>
This profile specifies mapping using the following tables from
[<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>]. The following mapping tables MUST be used when generating
iSCSI names from Unicode characters.
Table B.1
Table B.2
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Normalization</span>
Unicode normalization form KC MUST be used with this profile, as
described in [<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>].
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Prohibited Output</span>
This profile specifies prohibiting using the following tables from
[<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>]. Characters appearing within these tables MUST NOT be used
within an iSCSI name.
Table C.1.1
Table C.1.2
Table C.2.1
Table C.2.2
Table C.3
Table C.4
Table C.5
Table C.6
<span class="grey">Bakke Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
Table C.7
Table C.8
Table C.9
Important note: this profile MUST be used with the iSCSI protocol.
The iSCSI protocol has additional naming rules that are checked
outside of this profile.
In addition, this profile adds the following prohibitions. The full
set of prohibited characters are those from the tables above plus
those listed individually below.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. Inappropriate Characters from Common Input Mechanisms</span>
u+3002 is used as if it were u+002e in many domain name input
mechanisms used by applications, particularly in Asia. The character
u+3002 MUST NOT be used in an iSCSI name.
3002; ideographic full stop
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Currently-prohibited ASCII characters</span>
Some of the ASCII characters that are currently prohibited in iSCSI
names by [<a href="./rfc3721" title=""Internet Small Computer Systems Interface (iSCSI) Naming and Discovery"">RFC3721</a>] are also used in protocol elements such as URIs.
Some examples are described in [<a href="./rfc2396" title=""Uniform Resource Identifiers"">RFC2396</a>] and [<a href="./rfc2732" title=""Format for Literal IPv6 Addresses in URL's"">RFC2732</a>]. Note that
there are many other RFCs that define additional URI schemes.
The other characters in the range U+0000 to U+007F that are not
currently allowed are prohibited in iSCSI names to reserve them for
future use in protocol elements. Note that the dash (U+002D), dot
(U+002E), and colon (U+003A) are not prohibited.
The following characters MUST NOT be used in iSCSI names:
0000-002C; [ASCII CONTROL CHARACTERS and SPACE through ,]
002F; [ASCII /]
003B-0040; [ASCII ; through @]
005B-0060; [ASCII [ through `]
007B-007F; [ASCII { through DEL]
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Bidirectional Characters</span>
This profile specifies checking bidirectional strings as described in
<a href="./rfc3454#section-6">[RFC3454] section 6</a>.
<span class="grey">Bakke Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Unassigned Code Points in Internationalized Domain Names</span>
If the processing in [<a href="./rfc3720" title=""Internet Small Computer Systems Interface (iSCSI)"">RFC3720</a>] specifies that a list of unassigned
code points be used, the system uses table A.1 from [<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>] as its
list of unassigned code points.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Security Considerations</span>
ISO/IEC 10646 has many characters that look similar. In many cases,
users of security protocols might do visual matching, such as when
comparing the names of trusted third parties. This profile does
nothing to map similar-looking characters together.
iSCSI names may be used by an initiator to verify that a target it
has discovered is the correct one, and by a target to verify that an
initiator is to be allowed access. If these names are interpreted
and compared differently by different iSCSI implementations, an
initiator could gain access to the wrong target, or could be denied
access to a legitimate target.
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. IANA Considerations</span>
This is a profile of stringprep. It has been registered in the IANA
"Stringprep Profiles" registry. This process is described in the
IANA Considerations section of [<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>].
<span class="h2"><a class="selflink" id="section-11" href="#section-11">11</a>. Summary</span>
This document describes a stringprep profile to be used with programs
generating names for iSCSI initiators and targets.
<span class="h2"><a class="selflink" id="section-12" href="#section-12">12</a>. Acknowledgements</span>
This document was produced as a result of discussions on iSCSI name
formats with Joe Czap, Jim Hafner, Howard Hall, Jack Harwood, John
Hufferd, Marjorie Krueger, Lawrence Lamers, Todd Sperry, Joshua
Tseng, and Kaladhar Voruganti, as well as discussions on the
normalization of names into identifiers with Paul Hoffman and Marc
Blanchet.
Thanks also to Bob Snively for suggesting the use of the nameprep
process for iSCSI name normalization.
Most of this document was copied from the stringprep profile for
Internationalized Domain Names [<a href="./rfc3491" title=""Nameprep: A Stringprep Profile for Internationalized Domain Names"">RFC3491</a>], written by Paul Hoffman and
Marc Blanchet.
<span class="grey">Bakke Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
<span class="h2"><a class="selflink" id="section-13" href="#section-13">13</a>. References</span>
<span class="h3"><a class="selflink" id="section-13.1" href="#section-13.1">13.1</a>. Normative References</span>
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC3454">RFC3454</a>] Hoffman, P. and M. Blanchet, "Preparation of
Internationalized Strings ("stringprep")", <a href="./rfc3454">RFC 3454</a>,
December 2002.
[<a id="ref-RFC3720">RFC3720</a>] Satran, J., Meth, K., Sapuntzakis, C. Chadalapaka, M.
and E. Zeidner, "Internet Small Computer Systems
Interface (iSCSI)", <a href="./rfc3720">RFC 3720</a>, April 2004.
<span class="h3"><a class="selflink" id="section-13.2" href="#section-13.2">13.2</a>. Informative References</span>
[<a id="ref-RFC2396">RFC2396</a>] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
Resource Identifiers", <a href="./rfc2396">RFC 2396</a>, August 1998.
[<a id="ref-RFC2732">RFC2732</a>] Hinden, R., Carpenter, B. and L. Masinter, "Format for
Literal IPv6 Addresses in URL's", <a href="./rfc2732">RFC 2732</a>, December
1999.
[<a id="ref-RFC3491">RFC3491</a>] Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep
Profile for Internationalized Domain Names", <a href="./rfc3491">RFC 3491</a>,
March 2003.
[<a href="./rfc3629">RFC3629</a>] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, <a href="./rfc3629">RFC 3629</a>, November 2003.
[<a id="ref-RFC3721">RFC3721</a>] Bakke, M., Hafner, J., Hufferd, J., Voruganti, K. and M.
Krueger, "Internet Small Computer Systems Interface
(iSCSI) Naming and Discovery", <a href="./rfc3721">RFC 3721</a>, April 2004.
[<a id="ref-SAM2">SAM2</a>] ANSI T10. "SCSI Architectural Model 2", March 2000.
[<a id="ref-Unicode3.2">Unicode3.2</a>] The Unicode Standard, Version 3.2.0: The Unicode
Consortium. The Unicode Standard, Version 3.2.0 is
defined by The Unicode Standard, Version 3.0 (Reading,
MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), as
amended by the Unicode Standard Annex #27: Unicode 3.1
(<a href="http://www.unicode.org/unicode/reports/tr27/">http://www.unicode.org/unicode/reports/tr27/</a>) and by
the Unicode Standard Annex #28: Unicode 3.2
(<a href="http://www.unicode.org/unicode/reports/tr28/">http://www.unicode.org/unicode/reports/tr28/</a>).
<span class="grey">Bakke Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
[<a id="ref-ISO10646">ISO10646</a>] ISO/IEC 10646-1:2000. International Standard --
Information technology -- Universal Multiple-Octet Coded
Character Set (UCS) -- Part 1: Architecture and Basic
Multilingual Plane.
<span class="h2"><a class="selflink" id="section-14" href="#section-14">14</a>. Author's Address</span>
Mark Bakke
Cisco Systems, Inc.
6450 Wedgwood Road
Maple Grove, MN
USA 55311
Voice: +1 763-398-1000
EMail: mbakke@cisco.com
<span class="grey">Bakke Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc3722">RFC 3722</a> String Profile for iSCSI Names April 2004</span>
<span class="h2"><a class="selflink" id="section-15" href="#section-15">15</a>. Full Copyright Statement</span>
Copyright (C) The Internet Society (2004). This document is subject
to the rights, licenses and restrictions contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, 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 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; 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 <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
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
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
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.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Bakke Standards Track [Page 8]
</pre>
|