idnits 2.17.1 draft-ietf-storm-iscsi-sam-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** The document seems to lack a License Notice according IETF Trust Provisions of 28 Dec 2009, Section 6.b.i or Provisions of 12 Sep 2009 Section 6.b -- however, there's a paragraph with a matching beginning. Boilerplate error? (You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Feb 2009 rather than one of the newer Notices. See https://trustee.ietf.org/license-info/.) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC3720, updated by this document, for RFC5378 checks: 2000-11-06) -- The document seems to contain a disclaimer for pre-RFC5378 work, and may have content which was first submitted before 10 November 2008. The disclaimer is necessary when there are original authors that you have been unable to contact, or if some do not wish to grant the BCP78 rights to the IETF Trust. If you are able to get all authors (current and original) to grant those rights, you can and should remove the disclaimer; otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (December 2009) is 5238 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '1' on line 403 == Missing Reference: 'RFCxxx' is mentioned on line 1038, but not defined ** Obsolete normative reference: RFC 3720 (Obsoleted by RFC 7143) ** Obsolete normative reference: RFC 5048 (Obsoleted by RFC 7143) ** Obsolete normative reference: RFC 5226 (ref. 'IANA') (Obsoleted by RFC 8126) -- Possible downref: Non-RFC (?) normative reference: ref. 'UML' -- Possible downref: Non-RFC (?) normative reference: ref. 'SAM2' -- Possible downref: Non-RFC (?) normative reference: ref. 'SAM4' Summary: 4 errors (**), 0 flaws (~~), 2 warnings (==), 6 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Storage Maintenance (StorM) Working Group F. Knight 2 Internet Draft NetApp 3 Intended status: Standards Track M. Chadalapaka 4 Expires: June 2010 Hewlett-Packard Co. 5 Updates: 3720, 5048 December 2009 7 Internet Small Computer Systems Interface (iSCSI) Update 8 draft-ietf-storm-iscsi-sam-00.txt 10 Status of this Memo 12 This Internet-Draft is submitted to IETF in full conformance with 13 the provisions of BCP 78 and BCP 79. This document may contain 14 material from IETF Documents or IETF Contributions published or 15 made publicly available before November 10, 2008. The person(s) 16 controlling the copyright in some of this material may not have 17 granted the IETF Trust the right to allow modifications of such 18 material outside the IETF Standards Process. Without obtaining 19 an adequate license from the person(s) controlling the copyright 20 in such materials, this document may not be modified outside the 21 IETF Standards Process, and derivative works of it may not be 22 created outside the IETF Standards Process, except to format it 23 for publication as an RFC or to translate it into languages other 24 than English. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF), its areas, and its working groups. Note that 28 other groups may also distribute working documents as Internet- 29 Drafts. 31 Internet-Drafts are draft documents valid for a maximum of six 32 months and may be updated, replaced, or obsoleted by other 33 documents at any time. It is inappropriate to use Internet- 34 Drafts as reference material or to cite them other than as "work 35 in progress." 37 The list of current Internet-Drafts can be accessed at 38 http://www.ietf.org/1id-abstracts.html. 40 The list of Internet-Draft Shadow Directories can be accessed at 41 http://www.ietf.org/shadow.html. 43 This Internet-Draft will expire on June 10, 2010. 45 Copyright Notice 47 Copyright (c) 2009 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents in effect on the date of 52 publication of this document (http://trustee.ietf.org/license- 53 info). Please review these documents carefully, as they describe 54 your rights and restrictions with respect to this document. 56 Abstract 58 Internet Small Computer Systems Interface (iSCSI) is a SCSI 59 transport protocol that maps the SCSI family of protocols onto 60 TCP/IP. RFC 3720 defines the iSCSI protocol. The current iSCSI 61 protocol (RFC 3720 and RFC 5048) is based on the SAM-2 version of 62 the SCSI family of protocols). This document defines additions 63 and changes to the iSCSI protocol to enabled additional features 64 that were added to the SCSI family of protocols through SAM-3, 65 SAM-4, and SAM-5. 67 This document updates RFC 3720 and RFC 5048 and the text in this 68 document supersedes the text in RFC 3720 and RFC 5048 when the 69 two differ. 71 Table of Contents 72 1 Introduction.................................................... 4 73 2 Definitions, Acronyms, and Document Summary..................... 4 74 2.1 Definitions .............................................. 4 75 2.2 Acronyms ................................................. 4 76 2.3 New Semantics ............................................ 5 77 3 UML Conventions................................................. 5 78 3.2 Multiplicity notation .................................... 5 79 3.3 Class diagram conventions ................................ 6 80 3.4 Class diagram notation for associations .................. 6 81 3.5 Class diagram notation for aggregations .................. 7 82 3.6 Class diagram notation for generalizations ............... 8 83 4 iSCSI UML Model................................................. 9 84 5 Terminology Mapping............................................ 11 85 6 Negotiation of New Feature Use................................. 13 86 7 SCSI Commands.................................................. 13 87 7.1 SCSI Command Additions .................................. 13 88 7.1.1 Command Priority (byte 2) ........................... 13 89 7.2 SCSI Response Additions ................................. 15 90 7.2.1 Status Qualifier .................................... 15 91 7.2.2 Data Segment - Sense and Response Data Segment ...... 16 92 8 Task Management Functions...................................... 16 93 8.1 Existing Task Management Functions ...................... 16 94 8.2 Task Management Function Additions ...................... 16 95 8.2.1 LUN field ........................................... 18 96 8.2.2 Referenced Task Tag ................................. 18 97 8.2.3 RefCmdSN ............................................ 18 98 8.3 Task Management Function Responses ...................... 19 99 8.3.1 Task Management Function Response Additions ......... 20 100 8.4 Task Management Requests Affecting Multiple Tasks ....... 20 101 9 Login/Text Operational Text Keys............................... 21 102 9.1 New Operational Text Keys ............................... 21 103 9.1.1 PDUFormatForSAMUpdate ............................... 21 104 10 IANA Considerations ......................................... 22 105 11 Security Considerations ..................................... 22 106 12 References .................................................. 23 107 13 Acknowledgements ............................................ 24 108 1 Introduction 110 The original [RFC3720] was built based on the SAM-2 model for 111 SCSI. Several new features and capabilities have been added to 112 the SCSI Architecture Model in the intervening years (SAM5 is now 113 the current version of the SCSI Architecture Model). This 114 document is not a complete revision of [RFC3720]. Instead, this 115 document is intended as a companion document to [RFC3720] and 116 [RFC5048]. 118 The text in this document, however, updates and supersedes the 119 text in [RFC3720] and [RFC5048] whenever there is any conflict. 121 2 Definitions, Acronyms, and Document Summary 123 2.1 Definitions 125 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 126 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 127 "OPTIONAL" in this document are to be interpreted as described in 128 [RFC2119]. 130 - iSCSI Node: The iSCSI Node represents a single iSCSI initiator 131 or a single iSCSI target or both. There are one or more iSCSI 132 Nodes within a Network Entity. The iSCSI Node is accessible 133 via one or more Network Portals. An iSCSI Node is identified 134 by its iSCSI Name. The separation of the iSCSI Name from the 135 addresses used by and for the iSCSI Node allows multiple iSCSI 136 Nodes to use the same address, and the same iSCSI Node to use 137 multiple addresses. 139 150 2.2 Acronyms 152 SAM4 SCSI Architecture Model - 4 153 SAM5 SCSI Architecture Model - 5 154 SAM SAM4 or SAM5 155 UML Unified Modeling Language 157 2.3 New Semantics 159 This document specifies new iSCSI semantics. This section 160 summarizes the contents of the document. 162 Section 3: UML Conventions 164 Section 4: The UML diagram of the iSCSI objects 166 Section 5: The mapping of iSCSI objects to SAM5 objects 168 Section 6: The protocol used to negotiate the use of the new 169 capabilities described in this document. 171 Section 7: New Command operations 173 Section 8: New Task Management Functions 175 3 UML Conventions 177 3.1 UML Conventions overview 179 The SCSI Architecture Model (SAM) uses class diagrams and object 180 diagrams with notation that is based on the Unified Modeling 181 Language [UML]. Therefore, this document also uses UML to model 182 the relationships for SCSI and iSCSI objects. 184 A treatise on the graphical notation used in UML is beyond the 185 scope of this document. However, given the use of ASCII drawing 186 for UML static class diagrams, a description of the notational 187 conventions used in this document is included in the remainder of 188 this section. 190 3.2 Multiplicity notation 192 Not specified The number of instances of an attribute is not 193 specified. 194 1 One instance of the class or attribute exists. 195 0..* Zero or more instances of the class or attribute 196 exist. 197 1..* One or more instances of the class or attribute 198 exist. 199 0..1 Zero or one instance of the class or attribute 200 exists. 201 n..m n to m instances of the class or attribute exist 202 (e.g., 2..8). 203 x, n..m Multiple disjoint instances of the class or 204 attribute exist (e.g., 2, 8..15). 206 3.3 Class diagram conventions 208 +--------------+ +--------------+ +--------------+ 209 | Class Name | | Class Name | | Class Name | 210 +--------------+ +--------------+ +--------------+ 211 | | | | 212 +--------------+ +--------------+ 213 | | 214 +--------------+ 215 The above three diagrams are examples of a class with no 216 attributes and with no operations. 218 +-------------------+ +-------------------+ 219 | Class Name | | Class Name | 220 +-------------------+ +-------------------+ 221 | attribute 01[1] | | attribute 01[1] | 222 | attribute 02[1] | | attribute 02[1] | 223 +-------------------+ +-------------------+ 224 | | 225 +-------------------+ 226 The above two diagrams are examples of a class with attributes 227 and with no operations. 229 +------------------------+ 230 | Class Name | 231 +------------------------+ 232 | attribute 01[1..*] | 233 | attribute 02[1] | 234 +------------------------+ 235 | operation 01() | 236 | operation 02() | 237 +------------------------+ 238 The above diagram is an example of a class with attributes that 239 have a specified multiplicity and operations. 241 3.4 Class diagram notation for associations 243 +-----------------+ 244 | Class A | 245 +-----------------+ association_name +-----------------+ 246 | attribute 01[1] |<------------------>| Class B | 247 | attribute 02[1] | 1..* 0..1 +-----------------+ 248 +-----------------+ | attribute 03[1] | 249 | operation 1() | +-----------------+ 250 +-----------------+ 251 The above diagram is an example where Class A knows about Class B 252 (i.e., read as "Class A association_name ClassB") and Class B 253 knows about Class A (i.e., read as "Class B association_name 254 Class A"). The use of association_name is optional. The 255 multiplicity notation (1..* and 0..1) indicate the number of 256 instances of the object. 258 +--------------------+ 259 | Class A | 260 +--------------------+ +--------------------+ 261 | attribute 01[1] |<-------------| Class B | 262 | attribute 02[1] | 1 0..1 +--------------------+ 263 +--------------------+ | attribute 03[1] | 264 | operation 1() | +--------------------+ 265 +--------------------+ 266 The above diagram is an example where Class B knows about Class A 267 (i.e., read as "Class B knows about Class A") but Class A does 268 not know about Class B. 270 +----------------------+ 271 | Class A | 272 +----------------------+ +--------------------+ 273 | attribute 01[1] |----------->| Class B | 274 | attribute 02[1] | 0..* 1 +--------------------+ 275 +----------------------+ | attribute 03[1] | 276 | operation 1() | +--------------------+ 277 +----------------------+ 278 The above diagram is an example where Class A knows about Class B 279 (i.e., read as "Class A knows about Class B") but Class B does 280 not know about Class A. 282 3.5 Class diagram notation for aggregations 284 +---------+ +--------+ 285 | whole |o------------| part | 286 +---------+ +--------+ 287 The above diagram is an example where the part class is part of 288 the whole class and may continue to exist even if the whole class 289 is removed (i.e., read as "the whole contains the part"). 291 +---------+ +--------+ 292 | whole |@------------| part | 293 +---------+ +--------+ 294 The above diagram is an example where the part class is part of 295 the whole class, shall only belong to one whole class, and shall 296 not continue to exist if the whole class is removed (i.e., read 297 as "the whole contains the part"). 299 +-------------+ 300 | | 301 +-------------+ 302 | | 303 + =(a)= + 304 | | 305 The above diagram is an example where there is a constraint 306 between the associations where the (a) footnote describes the 307 constraint. 309 3.6 Class diagram notation for generalizations 311 +---------------+ 312 | Superclass | 313 +-------^-------+ 314 /_\ 315 | 316 +---------------+ 317 | Subclass | 318 +---------------+ 319 The above diagram is an example where the subclass is a kind of 320 superclass. A subclass shares all the attributes and operations 321 of the superclass (i.e., the subclass inherits from the 322 superclass). 324 4 iSCSI UML Model 326 +----------------+ 327 | Network Entity | 328 +----------------+ 329 @ 1 @ 1 330 | | 331 +---------------------+ | 332 | | 333 | | 0..* 334 | +------------------+ 335 | | iSCSI Node | 336 | +------------------+ 337 | @ @ 338 | | | 339 | +------------+ =(a)= +------------+ 340 | | | 341 | | 0..1 | 0..1 342 | +------------------------+ +----------------------+ 343 | | iSCSI Target Node | | iSCSI Initiator Node | 344 | +------------------------+ +----------------------+ 345 | @ 1 @ 1 346 | +---------------+ | 347 | 1..* | | 1..* 348 | +-----------------------------+ 349 | | Portal Group | 350 | +-----------------------------+ 351 | O 1 352 | | 353 | | 1..* 354 | 1..* +------------------------+ 355 +-------------------| Network Portal | 356 +------------------------+ 358 (a) Each instance of an iSCSI Node class MUST contain one iSCSI 359 Target Node instance or one iSCSI Initiator Node instance, or 360 both. 362 +----------------+ 363 | Network Entity | 364 +----------------+ 365 @ 1 @ 1 366 | | +-------------------+ 367 +---------------------+ | | iSCSI Session | 368 | | +-------------------+ 369 | | 0..* | SSID[1] | 370 | +--------------------+ | ISID[1] | 371 | | iSCSI Node | +-------------------+ 372 | +--------------------+ @ 1 373 | | iSCSI Node Name[1] | | 374 | | Alias [0..1] | | 0..* 375 | +--------------------+ +------------------+ 376 | | | | iSCSI Connection | 377 | +--------------------+ +------------------+ 378 | @ 1 @ 1 | CID[1] | 379 | | | +------------------+ 380 | +------------+ ==(b)== +-----------+ | 0..* 381 | | | | 382 | | 1 | 1 | 383 | +------------------------+ +------------------------+ | 384 | | iSCSI Target Node | | iSCSI Initiator Node | | 385 | +------------------------+ +------------------------+ | 386 | | iSCSI Target name [1] | |iSCSI Initiator Name [1]| | 387 | +------------------------+ +------------------------+ | 388 | @ 1 @ 1 | 389 | | | | 390 | | 1..* | 1..* | 391 | +--------------------------+ +------------------------+ | 392 | | Target Portal Group | | Initiator Portal Group | | 393 | +--------------------------+ +------------------------+ | 394 | |Target Portal Group Tag[1]| | Portal group tag[1] | | 395 | +--------------------------+ +------------------------+ | 396 | o 1 o 1 | 397 | | | | 398 | +-----------+ +---------+ | 399 | 1..* | | 1..* | 400 | +-------------------------+ | 401 | | Network Portal | | 402 | +-------------------------+ | 403 | 1..* | IP Address [1] | 1 | 404 +-----------------| TCP Port [0..1] |<--------------------+ 405 +-------------------------+ 407 (b) Each instance of an iSCSI Node class MUST contain one iSCSI 408 Target Node instance or one iSCSI Initiator Node instance, or 409 both. 411 5 Terminology Mapping 413 The iSCSI model (defined in [RFC3720]) uses different terminology 414 than the SCSI Architecture Model. In some cases, iSCSI uses 415 multiple terms to describe what in the SCSI Architecture Model is 416 described with a single term. The iSCSI terms and SAM terms are 417 not necessarily equivalent, but rather, the iSCSI terms represent 418 examples of the objects or classes described in SAM as follows: 420 +-----------------------------+---------------------------+ 421 | RFCxxx Terminology | SAM Terminology | 422 +-----------------------------+---------------------------+ 423 | Network Entity | none | 424 +-----------------------------+---------------------------+ 425 | iSCSI Node | SCSI Device | 426 +-----------------------------+---------------------------+ 427 | iSCSI Name | SCSI Device Name | 428 +-----------------------------+---------------------------+ 429 | iSCSI Node Name | SCSI Device Name | 430 +-----------------------------+---------------------------+ 431 | iSCSI Initiator Node | SCSI Initiator Device | 432 +-----------------------------+---------------------------+ 433 | iSCSI Initiator Name | SCSI Device Name | 434 +-----------------------------+---------------------------+ 435 | iSCSI Initiator Port Name | SCSI Initiator Port Name | 436 | iSCSI Node Name + `,i,' + | | 437 | ISID | | 438 +-----------------------------+---------------------------+ 439 | iSCSI Target Node | SCSI Target Device | 440 +-----------------------------+---------------------------+ 441 | iSCSI Target Name | SCSI Device Name | 442 +-----------------------------+---------------------------+ 443 | iSCSI Target Port Name | SCSI Target Port Name | 444 | iSCSI Node Name + `,t,' + | | 445 | Target Portal Group Tag | | 446 +-----------------------------+---------------------------+ 447 | iSCSI Target Portal Group | SCSI Target Port | 448 +-----------------------------+---------------------------+ 449 | iSCSI Initiator Node + | SCSI Initiator Port | 450 | active ISID | | 451 +-----------------------------+---------------------------+ 452 | iSCSI Initiator Name + | I_T Nexus | 453 | `,i,' + ISID, iSCSI Target | | 454 | Name + `,t,' + Portal | | 455 | Group Tag | | 456 +-----------------------------+---------------------------+ 457 | Target Portal Group Tag | Relative Port ID | 458 +-----------------------------+---------------------------+ 459 -------------------------------------------------------- 460 RFC EDITORS NOTE: The above reference to [RFCxxx] should 461 reference this RFC, and this note should be removed. 462 -------------------------------------------------------- 464 The following diagram shows an example of a combination target 465 device and initiator device. Such a configuration may exist 466 in a target device that implements a SCSI Copy Manager. This 467 example shows how a session that shares Network Portals within 468 a Portal Group may be established (see Target Portal Group 1). 469 In addition, this example shows the Initiator using a 470 different Portal Group than the Target Portal Group, but the 471 Initiator Portal group sharing Network Portal A with the 472 Target Portal Group. 474 ----------------------------IP Network--------------------- 475 | | | 476 +----|---------------|------+ +-----|-----------+ 477 | +----------+ +----------+ | | +----------+ | 478 | | Network | | Network | | | | Network | | 479 | | Portal A | | Portal B | | | | Portal A | | 480 | +----------+ +----------+ | | +----------+ | 481 | | Target | | | | Initiator | 482 | | Portal | | | | Portal | 483 | | Group 1 | | | | Group 2 | 484 +----|---------------|------+ +-----|-----------+ 485 | | | 486 +----------|---------------|--------------------|--------------------+ 487 | +--------|---------------|----+ +-------------|------------------+ | 488 | |+-------|---------------|---+| |+------------|-----------------+| | 489 | ||iSCSI Session (Target side)|| ||iSCSI Session (Initiator side)|| | 490 | || || || || | 491 | || (TSIH = 56) || || (SSID = 48) || | 492 | |+---------------------------+| |+------------------------------+| | 493 | | | | | | 494 | | iSCSI Target Node | | iSCSI Initiator Node | | 495 | +-----------------------------+ +--------------------------------+ | 496 | iSCSI Node | 497 | (within Network Entity, not shown) | 498 +--------------------------------------------------------------------+ 499 6 Negotiation of New Feature Use 501 The PDUFormatForSAMUpdate operational text key (see 9.1.1) 502 containing a value of "Yes" MUST be negotiated to enable the use 503 of features described in this RFC. 505 7 SCSI Commands 507 7.1 SCSI Command Additions 509 The format of the SCSI Command PDU is: 511 Byte/ 0 | 1 | 2 | 3 | 512 / | | | | 513 |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| 514 +---------------+---------------+---------------+---------------+ 515 0|.|I| 0x01 |F|R|W|. .|ATTR | PRI | Reserved | 516 +---------------+---------------+---------------+---------------+ 517 4|TotalAHSLength | DataSegmentLength | 518 +---------------+---------------+---------------+---------------+ 519 8| Logical Unit Number (LUN) | 520 + + 521 12| | 522 +---------------+---------------+---------------+---------------+ 523 16| Initiator Task Tag | 524 +---------------+---------------+---------------+---------------+ 525 20| Expected Data Transfer Length | 526 +---------------+---------------+---------------+---------------+ 527 24| CmdSN | 528 +---------------+---------------+---------------+---------------+ 529 28| ExpStatSN | 530 +---------------+---------------+---------------+---------------+ 531 32/ SCSI Command Descriptor Block (CDB) / 532 +/ / 533 +---------------+---------------+---------------+---------------+ 534 48/ AHS (Optional) / 535 +---------------+---------------+---------------+---------------+ 536 x/ Header Digest (Optional) / 537 +---------------+---------------+---------------+---------------+ 538 y/ (DataSegment, Command Data) (Optional) / 539 +/ / 540 +---------------+---------------+---------------+---------------+ 541 z/ Data Digest (Optional) / 542 +---------------+---------------+---------------+---------------+ 544 7.1.1 Command Priority (byte 2) 545 The Command Priority (PRI) specifies the relative scheduling 546 importance of this task in relation to other SIMPLE tasks already 547 in the task set (see [SAM4]). 549 As defined in Section 10, iSCSI PDU Formats of [RFC3720], 550 compliant senders already set this field to zero. A sender MUST 551 NOT set this field to a value other than zero unless the 552 PDUFormatForSAMUpdate text key defined in section 9.1.1 has been 553 negotiated on the session with a value of "Yes". 555 This field MUST be ignored by iSCSI targets unless the 556 PDUFormatForSAMUpdate text key with a value of "Yes" as defined 557 in section 9.1.1 was negotiated on the session. 559 7.2 SCSI Response Additions 561 The format of the SCSI Response PDU is: 563 Byte/ 0 | 1 | 2 | 3 | 564 / | | | | 565 |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| 566 +---------------+---------------+---------------+---------------+ 567 0|.|.| 0x21 |1|. .|o|u|O|U|.| Response | Status | 568 +---------------+---------------+---------------+---------------+ 569 4|TotalAHSLength | DataSegmentLength | 570 +---------------+---------------+---------------+---------------+ 571 8| Status Qualifier | Reserved | 572 +---------------+---------------+---------------+---------------+ 573 12| Reserved | 574 +---------------+---------------+---------------+---------------+ 575 16| Initiator Task Tag | 576 +---------------+---------------+---------------+---------------+ 577 20| SNACK Tag or Reserved | 578 +---------------+---------------+---------------+---------------+ 579 24| StatSN | 580 +---------------+---------------+---------------+---------------+ 581 28| ExpCmdSN | 582 +---------------+---------------+---------------+---------------+ 583 32| MaxCmdSN | 584 +---------------+---------------+---------------+---------------+ 585 36| ExpDataSN or Reserved | 586 +---------------+---------------+---------------+---------------+ 587 40| Bidirectional Read Residual Count or Reserved | 588 +---------------+---------------+---------------+---------------+ 589 44| Residual Count or Reserved | 590 +---------------+---------------+---------------+---------------+ 591 48| Header-Digest (Optional) | 592 +---------------+---------------+---------------+---------------+ 593 / Data Segment (Optional) / 594 +/ / 595 +---------------+---------------+---------------+---------------+ 596 | Data-Digest (Optional) | 597 +---------------+---------------+---------------+---------------+ 599 7.2.1 Status Qualifier 601 The Status Qualifier provides additional status information (see 602 [SAM4]). 604 As defined in Section 10, iSCSI PDU Formats of [RFC3720], 605 compliant senders already set this field to zero. Compliant 606 senders MUST NOT set this field to a value other than zero unless 607 the PDUFormatForSAMUpdate text key with a value of "Yes" as 608 defined in section 9.1.1 was negotiated on the session. 610 This field MUST be ignored by receivers unless the 611 PDUFormatForSAMUpdate text key with a value of "Yes" as defined 612 in section 9.1.1 was negotiated on the session. 614 7.2.2 Data Segment - Sense and Response Data Segment 616 Section 10.4.7 of [RFC3720] specifies that iSCSI targets MUST 617 support and enable autosense. If Status is CHECK CONDITION 618 (0x02), then the Data Segment MUST contain sense data for the 619 failed command. While [RFC3720] does not make any statements 620 about the state of the Data Segment when the Status is not CHECK 621 CONDITION (0x02)(i.e., the Data Segment is not prohibited from 622 containing sense data when the Status is not CHECK CONDITION), 623 negotiation of the PDUFormatForSAMUpdate text key with a value of 624 "Yes" as defined in section 9.1.1 explicitly indicates that the 625 Data Segment MAY contain sense data at any time, no matter what 626 value is set in the Status field. 628 8 Task Management Functions 630 8.1 Existing Task Management Functions 632 Section 10.5 of [RFC3720] defines the semantics used to request 633 SCSI Task Management Functions be performed. The following task 634 management functions are defined: 636 1 - ABORT TASK 637 2 - ABORT TASK SET 638 3 - CLEAR ACA 639 4 - CLEAR TASK SET 640 5 - LOGICAL UNIT RESET 641 6 - TARGET WARM RESET 642 7 - TARGET COLD RESET 643 8 - TASK REASSIGN 645 8.2 Task Management Function Additions 647 Additional task Management function codes are listed below. For 648 a more detailed description of SCSI task management, see [SAM5]. 650 9 - QUERY TASK - determines if the task identified by the 651 Referenced Task Tag field is present in the task set. 653 10 - QUERY TASK SET - determine if any task is present in the 654 task set. 656 11 - I_T NEXUS RESET - perform an I_T nexus loss function for 657 the I_T nexus of each logical unit accessible through the I_T 658 Nexus on which the task management function was received. 660 12 - QUERY ASYNCHRONOUS EVENT - determine if there is a unit 661 attention condition or a deferred error pending for the I_T 662 nexus on which the task management function was received. 664 Any compliant sender MUST NOT send these task management function 665 requests unless the PDUFormatForSAMUpdate text key with a value 666 of "Yes" as defined in section 9.1.1 was negotiated on the 667 session. 669 Any compliant initiator that sends any of the new task management 670 functions defined in this section MUST also support all new task 671 management function responses (see 8.3.1). 673 For all of the task management functions detailed in this 674 section, the Task Management function response MUST be returned 675 as detailed in section 8.3 Task Management Function Response. 677 The iSCSI target MUST ensure that no responses for the tasks 678 covered by a task management function are delivered to the iSCSI 679 initiator after the Task Management response except for a task 680 covered by a TASK REASSIGN, QUERY TASK, or QUERY TASK SET. 682 If a QUERY TASK is issued for a task created by an immediate 683 command then RefCmdSN MUST be that of the Task Management request 684 itself (i.e., CmdSN and RefCmdSN are equal); otherwise RefCmdSN 685 MUST be set to the CmdSN of the task to be queried (lower than 686 CmdSN). 688 At the target a QUERY TASK function MUST NOT be executed on a 689 Task Management request; such a request MUST result in Task 690 Management response of "Function rejected". 692 For the I_T NEXUS RESET function, the target device MUST respond 693 to the function as defined in [SAM4]. Each logical unit 694 accessible via the receiving I_T NEXUS MUST behave as dictated by 695 the I_T nexus loss function in [SAM4] for the I_T nexus on which 696 the task management function was received. The target device 697 MUST drop all connections in the session over which this function 698 is recevied. Independent of the DefaultTime2Wait and 699 DefaultTime2Retain value applicable to the session over which 700 this function is received, the target device MUST consider each 701 participating connection in the session to have immediately timed 702 out, leading to FREE state. The resulting timeouts cause the 703 session timeout event defined in [RFC3720], which in turn 704 triggers the I_T nexus loss notification to the SCSI layer as 705 described in [RFC3720]. 707 8.2.1 LUN field 709 This field is required for functions that address a specific LU 710 (ABORT TASK, CLEAR TASK SET, ABORT TASK SET, CLEAR ACA, LOGICAL 711 UNIT RESET, QUERY TASK, QUERY TASK SET, I_T NEXUS RESET, and 712 QUERY ASYNCHRONOUS EVENT) and is reserved in all others. 714 8.2.2 Referenced Task Tag 716 The Initiator Task Tag of the task to be aborted for the ABORT 717 TASK function, reassigned for the TASK REASSIGN function, or 718 queried for the QUERY TASK function. For all other functions 719 this field MUST be set to the reserved value 0xffffffff. 721 8.2.3 RefCmdSN 723 If a QUERY TASK is issued for a task created by an immediate 724 command then RefCmdSN MUST be that of the Task Management request 725 itself (i.e., CmdSN and RefCmdSN are equal). 727 For a QUERY TASK of a task created by non-immediate command 728 RefCmdSN MUST be set to the CmdSN of the task identified by the 729 Referenced Task Tag field. Targets must use this field as 730 described in section 10.6.1 of [RFC3720] when the task identified 731 by the Referenced Task Tag field is not in the task set. 733 8.3 Task Management Function Responses 735 Byte/ 0 | 1 | 2 | 3 | 736 / | | | | 737 |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| 738 +---------------+---------------+---------------+---------------+ 739 0|.|.| 0x22 |1| Reserved | Response | Reserved | 740 +---------------+---------------+---------------+---------------+ 741 4|TotalAHSLength | DataSegmentLength | 742 +-----------------------------------------------+---------------+ 743 8| Additional Response Information | Reserved | 744 +-----------------------------------------------+---------------+ 745 12| Reserved | 746 +---------------+---------------+---------------+---------------+ 747 16| Initiator Task Tag | 748 +---------------+---------------+---------------+---------------+ 749 20| Reserved | 750 +---------------+---------------+---------------+---------------+ 751 24| StatSN | 752 +---------------+---------------+---------------+---------------+ 753 28| ExpCmdSN | 754 +---------------+---------------+---------------+---------------+ 755 32| MaxCmdSN | 756 +---------------+---------------+---------------+---------------+ 757 36/ Reserved / 758 +/ / 759 +---------------+---------------+---------------+---------------+ 760 48| Header-Digest (Optional) | 761 +---------------+---------------+---------------+---------------+ 763 Section 10.6 of [RFC3720] defines the semantics used for 764 responses to SCSI Task Management Functions. The following 765 responses are defined in [RFC3720]: 767 0 - Function Complete. 768 1 - Task does not exist. 769 2 - LUN does not exist. 770 3 - Task still allegiant. 771 4 - Task allegiance reassignment not supported. 772 5 - Task management function not supported. 773 6 - Function authorization failed. 774 255 - Function rejected. 776 Responses to new task management functions (see 8.3.1) are listed 777 below. In addition, a new task Management response is listed 778 below. For a more detailed description of SCSI task management 779 responses, see [SAM5]. 781 For the functions QUERY TASK, QUERY TASK SET, I_T NEXUS RESET, 782 and QUERY ASYNCHRONOUS EVENT, the target performs the requested 783 Task Management function and sends a Task Management response 784 back to the initiator. 786 8.3.1 Task Management Function Response Additions 788 The new response is listed below: 790 7 - Function succeeded. 792 In symbolic terms Response value 7 maps to the SCSI service 793 response of FUNCTION SUCCEEDED. 795 The task management function response of function succeeded MUST 796 be supported by an initiator that sends any of the new task 797 management functions (see 8.2). 799 For the QUERY TASK function, if the specified task is in the task 800 set, then the target returns a Response value of Function 801 succeeded and additional response information is returned as 802 specified in [SAM5]. If the specified task is not in the task 803 set, then the target returns a Response value of Function 804 complete. 806 For the QUERY TASK SET function, if there is any command present 807 in the task set from the specified I_T_L nexus, then the target 808 returns a Response value of Function succeeded. If there are no 809 commands present in the task set from the specified I_T_L nexus, 810 then the target returns a Response value of Function complete. 812 For the I_T NEXUS RESET function, after completion of the events 813 described in section 8.2 for this function, the target returns a 814 Response value of Function complete. However, because the target 815 drops all connections, the Service Response (defined by [SAM2]) 816 for this SCSI task management function may not be reliably 817 delivered to the issuing initiator port. 819 For the QUERY ASYNCHRONOUS EVENT, if there is a unit attention 820 condition or deferred error pending for the specified I_T nexus, 821 then the target returns a Response value of Function succeeded 822 and additional response information is returned as specified in 823 [SAM5]. If there is no unit attention or deferred error pending 824 for the specified I_T nexus then the target returns a Response 825 value of Function complete. 827 8.4 Task Management Requests Affecting Multiple Tasks 829 Section 4.1 of [RFC5048] defines the notion of "affected tasks" 830 in multi-task abort scenarios. This section adds to the list 831 include in that section by defining the tasks affected by the I_T 832 NEXUS RESET function. 834 I_T NEXUS RESET: All outstanding tasks received on the I_T 835 nexus on which the function request was received for all 836 logical units accessible to the I_T nexus. 838 Section 4.1.2 of [RFC5048] and section 4.1.3 of [RFC5048] 839 identify semantics for task management functions that involve 840 multi-task abort operations. If an iSCSI implementation supports 841 the I_T NEXUS RESET function, it MUST also support the protocol 842 behavior as defined in those sections and follow the sequence of 843 actions as described in those sections when processing the I_T 844 NEXUS RESET function. 846 9 Login/Text Operational Text Keys 848 9.1 New Operational Text Keys 850 9.1.1 PDUFormatForSAMUpdate 852 Use: LO 853 Irrelevant when: SessionType = Discovery 854 Senders: Initiator and Target 855 Scope: SW 857 PDUFormatForSAMUpdate= 859 Default is No. 860 Result function is AND. 862 This key is used to negotiate the RFC compliance level applicable 863 to the iSCSI session once the session is in full feature phase. 865 If the negotiation answer is ignored by the acceptor, or the 866 answer from the remote iSCSI end point is key=NotUnderstood, then 867 the features defined in this RFC MUST NOT be used. 869 Note that operational value of "Yes" for this key on an iSCSI 870 session does not influence the SCSI level features in any way on 871 that I_T nexus. An operational value of "Yes" for this key 872 permits the iSCSI-related features defined in this document to be 873 used on all connections on this iSCSI session. SCSI level hand- 874 shakes (e.g. commands, mode pages) eventually determine the 875 existence or lack of various SAM features available for the I_T 876 nexus between the two SCSI end points). To summarize, 877 negotiation of this key to "Yes" is a necessary but not a 878 sufficient condition of SAM-4 compliant feature usage at the SCSI 879 protocol level. 881 10 Security Considerations 883 At the time of writing this document does not introduce any new 884 security considerations other than those described in [RFC3720]. 885 Consequently, all the iSCSI-related security text in [RFC3723] is 886 also directly applicable to this document. 888 11 IANA Considerations 890 This document modifies or creates a number of iSCSI-related 891 registries. The following iSCSI-related registries are modified: 893 1. iSCSI Task Management Functions Codes 895 Name of the existing registry: "iSCSI TMF Codes" 897 Additional entries: 899 9, QUERY TASK, [RFCxxx] 901 10, QUERY TASK SET, [RFCxxx] 903 11, I_T NEXUS RESET, [RFCxxx] 905 12, QUERY ASYNCHRONOUS EVENT, [RFCxxx] 907 --------------------------------------------------------- 908 RFC EDITORS NOTE: The above reference to [RFCxxx] should 909 reference this RFC, and this note should be removed. 910 --------------------------------------------------------- 912 2. iSCSI Login/Text Keys 914 Name of the existing registry: "iSCSI Text Keys" 916 Additional entry: 918 PDUFormatForSAMUpdate, [RFCxxx] 920 --------------------------------------------------------- 921 RFC EDITORS NOTE: The above reference to [RFCxxx] should 922 reference this RFC, and this note should be removed. 923 --------------------------------------------------------- 925 This document creates the following iSCSI-related registries for 926 IANA to manage. 928 3. iSCSI Task Management Response Codes 930 Name of new registry: "iSCSI TMF Response Codes" 932 Namespace details: Numerical values that can fit in 8 bits. 934 Information that must be provided to assign a new value: An 935 IESG-approved specification defining the semantics and 936 interoperability requirements of the proposed new value and 937 the fields to be recorded in the registry. 939 Assignment policy: 941 If the requested value is not already assigned, it may be 942 assigned to the requester. 944 8-254: Range reserved by iANA for assignment in this registry. 946 Fields to record in the registry: Assigned value, Operation 947 Name, and its associated RFC reference. 949 0x0, Function complete, [RFC3720] 951 0x1, Task does not exist, [RFC3720] 953 0x2, LUN does not exist, [RFC3720] 955 0x3, Task still allegiant, [RFC3720] 957 0x4, Task allegiance reassignment not supported, [RFC3720] 959 0x5, Task management function not supported, [RFC3720] 961 0x6, Function authorization failed, [RFC3720] 963 0x7, Function succeeded, [RFCxxx] 965 255, Function rejected, [RFC3720] 967 ------------------------------------------------------------ 968 RFC EDITORS NOTE: The above reference to [RFCxxx] should 969 reference this RFC, and this note should be removed. 970 ------------------------------------------------------------ 972 Allocation Policy: 974 Standards Action ([IANA]) 976 12 References 978 12.1 Normative References 980 [RFC2119] Bradner, S. "Key Words for use in RFCs to Indicate 981 Requirement Levels", BCP 14, RFC 2119, March 1997. 983 [RFC3720] Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka, 984 M., and E. Zeidner, "Internet Small Computer Systems 985 Interface (iSCSI)", RFC 3720, April 2004. 987 [RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V., and 988 Travostino, F., "Securing Block Storage Protocols 989 over IP", RFC 3723, April 2004. 991 [RFC5048] Chadalapaka, M., "Internet Small Computer System 992 Interface (iSCSI) Corrections and Clarifications", 993 RFC 5048, October 2007. 995 [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing 996 an IANA Considerations Section in RFCs", BCP 26, RFC 997 5226, May 2008. 999 [UML] ISO/IEC 19501, Unified Modeling Language 1000 Specification Version 1.4.2. 1002 [SAM2] T10/1157D, SCSI Architecture Model - 2 (SAM-2). 1004 [SAM4] ISO/IEC 14776-414, SCSI Architecture Model - 4 (SAM- 1005 4). 1007 12.2 Informative References 1009 [SAM5] T10/2104D rev xxx, SCSI Architecture Model - 5 (SAM- 1010 5), Work in Progress. 1015 12.3 Additional Reference Sources 1017 For more information on the SCSI Architecture Model, contact the 1018 T10 group at http://www.t10.org. 1020 For more information on the UML specification, contact the Object 1021 Modeling Group at http://www.omg.org. 1023 13 Acknowledgements 1025 The Storage Maintenance (STORM) Working Group in the Transport 1026 Area of the IETF has been responsible for defining these 1027 additions to the iSCSI protocol (apart from other relevant IP 1028 Storage protocols). The editor acknowledges the contributions of 1029 the entire working group. 1031 The following individuals directly contributed to identifying 1032 [RFCxxx] issues and/or suggesting resolutions to the issues 1033 clarified in this document: Mallikarjun Chadalapaka, David Black, 1034 Rob Elliott. This document benefited from all of these 1035 contributions. 1037 ------------------------------------------------------------ 1038 RFC EDITORS NOTE: The above reference to [RFCxxx] should 1039 reference this RFC, and this note should be removed. 1040 ------------------------------------------------------------ 1042 Editor's Address 1043 Frederick Knight 1044 7301 Kit Creek Road 1045 P.O. Box 13917 1046 Research Triangle Park, NC 27709 1047 Phone: +1-919-476-5362 1048 Email: knight@netapp.com