idnits 2.17.1 draft-ietf-ipfc-fibre-channel-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 51 longer pages, the longest (page 2) being 66 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 51 pages Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 312 instances of too long lines in the document, the longest one being 5 characters in excess of 72. ** The abstract seems to contain references ([3]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 15 has weird spacing: '...as, and its w...' == Line 24 has weird spacing: '...ccessed at...' == Line 27 has weird spacing: '...ccessed at...' == Line 154 has weird spacing: '... most of th...' == Line 168 has weird spacing: '...promote inter...' == (6 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: After a LIP, a port SHALL not transmit any link data to another port until the address of the other port has been validated. The validation consists of completing either ADISC or PDISC. (See Appendix G.) ADISC (Address Discovery) is an ELS command for discovering the hard addresses - the 24-bit identifier- of NL_Ports [5], [6]. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- Couldn't find a document date in the document -- date freshness check skipped. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: '14' is defined on line 1529, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. '1' -- Possible downref: Non-RFC (?) normative reference: ref. '2' -- Possible downref: Non-RFC (?) normative reference: ref. '3' -- Possible downref: Non-RFC (?) normative reference: ref. '4' -- Possible downref: Non-RFC (?) normative reference: ref. '5' -- Possible downref: Non-RFC (?) normative reference: ref. '6' -- Possible downref: Non-RFC (?) normative reference: ref. '7' -- Possible downref: Non-RFC (?) normative reference: ref. '10' -- Possible downref: Non-RFC (?) normative reference: ref. '11' -- Possible downref: Non-RFC (?) normative reference: ref. '12' -- Possible downref: Non-RFC (?) normative reference: ref. '13' -- Possible downref: Non-RFC (?) normative reference: ref. '14' -- Duplicate reference: RFC2390, mentioned in '16', was also mentioned in '15'. -- Possible downref: Non-RFC (?) normative reference: ref. '18' ** Downref: Normative reference to an Informational RFC: RFC 2469 (ref. '20') Summary: 9 errors (**), 0 flaws (~~), 12 warnings (==), 16 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IP and ARP Over FC Working Group Murali Rajagopal 3 INTERNET-DRAFT Raj Bhagwat 4 Wayne Rickard 5 (Expires September 1, 1999) (Gadzoox Networks) 7 IP and ARP over Fibre Channel 9 Status of this Memo 11 This document is an Internet-Draft and is in full conformance with 12 all provisions of Section 10 of RFC 2026. 14 Internet-Drafts are working documents of the Internet Engineering 15 Task Force (IETF), its areas, and its working groups. Note that 16 other groups may also distribute working documents as Internet- 17 Drafts. 19 Internet-Drafts are draft documents valid for a maximum of six months 20 and may be updated, replaced, or obsoleted by other documents at any 21 time. It is inappropriate to use Internet-Drafts as Reference 22 material or to cite them other than as ``work in progress''. 24 The list of current Internet-Drafts can be accessed at 25 http://www.ietf.org/ietf/lid-abstracts.txt 27 The list of Internet-Draft Shadow Directories can be accessed at 28 http://www.ietf.org/shadow.html 30 Abstract 32 Fibre Channel (FC) is a high speed serial interface technology that 33 supports several higher layer protocols including Small Computer 34 System Interface (SCSI) and Internet Protocol(IP). Until now, SCSI 35 has been the only widely used protocol over FC. Existing FC standards 36 [3] do not adequately specify how IP packets may be transported over 37 FC and how IP addresses are resolved to FC addresses. The purpose of 38 this document is to specify a way of encapsulating IP and Address 39 Resolution Protocol(ARP) over Fibre Channel and also to describe a 40 mechanism(s) for IP address resolution. 42 Contents 44 Status of this Memo ........................................... 1 45 Abstract ....................................................... 1 47 1. Introduction ............................................... 4 49 2. Problem Statement .......................................... 5 51 3. IP and ARP Encapsulation ................................... 6 52 3.1 FC Frame Format ........................................ 6 53 3.2 MTU .................................................... 7 54 3.2.1 IP MTU ........................................... 7 55 3.2.2 Maximally Minimum IPv4 packet .................... 8 56 3.2.3 ARP MTU .......................................... 8 57 3.2.4 FC Data Field containing FARP Packet ............. 8 58 3.3 FC Port and Node Network Addresses ..................... 9 59 3.4 FC Payload Format ...................................... 9 60 3.5 Bit and Byte Ordering .................................. 11 62 4. ARP .........................................................12 63 4.1 Address Resolution .................................... 12 64 4.2 ARP Packet Format ...................................... 12 65 4.3 ARP Layer Mapping and Operation ........................ 14 66 4.4 ARP Broadcast in a Point-to-Point Topology ............. 14 67 4.5 ARP Broadcast in a Private Loop Topology ............... 15 68 4.6 ARP Broadcast in a Public Loop Topology ................ 15 69 4.7 ARP Operation in a Fabric Topology ..................... 16 71 5. FARP ....................................................... 16 72 5.1 Scope .................................................. 16 73 5.2 FARP Overview .......................................... 17 74 5.3 FARP Command Format .................................... 18 75 5.4 Match Address Code Points .............................. 20 76 5.5 Responder Flags ........................................ 21 77 5.6 FARP Support Requirements .............................. 21 79 6. Exchange Management ........................................ 22 80 6.1 Exchange Origination ................................... 22 81 6.2 Exchange Termination ................................... 22 83 7. Summary of Supported Features .............................. 22 84 7.1 FC-4 Header ............................................ 23 85 7.2 R_CTL .................................................. 23 86 7.3 F_CTL .................................................. 24 87 7.4 Sequences .............................................. 25 88 7.5 Exchanges .............................................. 26 89 7.6 ARP and InARP ......................................... 26 90 7.7 Extended Link Services (ELS) ........................... 27 91 7.8 Login Parameters ....................................... 28 92 7.8.1 Common Service Parameters - FLOGI ............... 28 93 7.8.2 Common Services Parameters - PLOGI ............... 28 94 7.8.3 Class Service Parameters - PLOGI ................. 28 96 8. Security Considerations .................................... 28 97 8.1 IP and ARP Related ..................................... 28 98 8.2 FC Related ............................................. 28 100 9. Acknowledgements ........................................... 29 102 10. References ................................................ 29 104 11. Authors' Addresses ........................................ 30 106 Appendix A: Additional Matching Mechanisms in FARP ............ 31 108 Appendix B: InARP ............................................. 34 109 B.1 General Discussion ..................................... 34 110 B.2 InARP Protocol Operation ............................... 34 111 B.3 InARP Packet Format .................................... 34 112 B.4 InARP Support Requirements ............................. 35 114 Appendix C: Some Informal Mechanisms for FC Layer Mappings .....36 115 C.1 Login on cached Mapping Information .................... 36 116 C.2 Login on ARP parsing ................................... 36 117 C.3 Login to Everyone ...................................... 37 118 C.4 Static Table ........................................... 37 120 Appendix D: FC Layer Address Validation........................ 38 121 D.1 General Discussion ..................................... 38 122 D.2 FC Layer Address Validation in a Point-to-Point Topology 38 123 D.3 FC Layer Address Validation in a Private Loop Topology . 38 124 D.4 FC Layer Address Validation in a Public Loop Topology .. 39 125 D.5 FC layer Address Validation in a Fabric Topology ....... 39 127 Appendix E: Fibre channel Overview ............................ 40 128 E.1 Brief Tutorial ......................................... 40 129 E.2 Exchange, Information Unit, Sequence, and Frame ........ 41 130 E.3 Fibre Channel Header Fields ............................ 41 131 E.4 Code Points for FC Frame ............................... 44 132 E.4.1 With IP and ARP Packet .......................... 44 133 E.4.2 With FARP Command ............................... 45 135 Appendix F: Fibre Channel Protocol Considerations.............. 48 136 F.1 Reliability in Class 3 ................................. 48 137 F.2 Continuously Increasing SEQ_CNT ........................ 48 139 Appendix G: Acronyms and Glossary of FC Terms ................. 49 141 1. Introduction 143 Fibre Channel (FC) is a gigabit speed networking technology primarily 144 used for Storage Area Networking (SAN). FC is standardized under 145 American National Standard for Information Systems of the National 146 Committee for Information Technology Standards (NCITS) and has 147 specified a number of documents describing its protocols, operations, 148 and services. 150 Need: 152 Currently, Fibre Channel is predominantly used for communication 153 between storage devices and servers using the SCSI protocol, with 154 most of the servers still communicating with each other over LANs. 155 Although, there exists a Fibre Channel Standard [3] that has 156 architecturally defined support for IP encapsulation and address 157 resolution, it is inadequately specified. ([3] prohibits broadcasts, 158 thus loops are not covered; [10] has no support for Class 3). 160 This has lead to a nonstandard way of using IP over FC in the past. 161 Once such a standard method is completely specified, servers can 162 directly communicate with each other using IP over FC, possibly 163 boosting performance in Server host-to-host communications. This 164 technique will be especially useful in a Clustering Application. 166 Objective and Scope: 168 The major objective of this specification is to promote inter- 169 operable implementations of IPv4 over FC. This specification 170 describes a method for encapsulating IPv4 and Address Resolution 171 Protocol (ARP) packets over FC. This specification accommodates any 172 FC topology (loop, fabric, or point-to-point) and any FC class of 173 service (1, 2 or 3). This specification also describes a FC Address 174 Resolution Protocol(FARP) for associating World Wide Port Names (MAC 175 addresses) and FC Port identifiers. 177 A secondary objective of this specification is to describe other 178 optional address resolution mechanisms: 180 - Other FARP mechanisms that directly build IPv4 address and FC 181 Port Identifier (Port_ID) associations. 182 - Inverse ARP (InARP) that allows learning the IP address of a 183 remote node given its World Wide Port Name (WW_PN) and Port_ID. 185 "Multicasting" in Fibre Channel is defined as an optional service 186 [11] for FC Classes 3 and 6 only, with no definition for Classes 1 187 and 2. Currently, there are no vendor implementations of this service 188 for either Class of service. Broadcast service available within Fibre 189 Channel can be used to do multicasting, although less efficiently. 190 Presently, there appears to be no IP applications over Fibre Channel 191 that require support for IP multicasting. This specification 192 therefore does not support IP Multicasting. 194 Organization: 196 Section 2 states the problem that is solved in this specification. 197 Section 3 describes the techniques used for encapsulating IP and ARP 198 packets in a FC sequence. Section 4 discusses the ARP protocol(IP 199 address to WW_PN). Section 5 discusses the FARP protocol used in FC 200 Layer mappings (WW_PN to Port_ID). Section 6 describes the 201 "Exchange" Management in FC. Section 7 is a summary section and 202 provides a quick reference to FC header settings, FC Link Service 203 Commands, supported features in ARP, FARP, InARP, FC Sequences, FC 204 Exchanges, and FC Login Parameters. Section 8 discusses security. 205 Section 9 acknowledges the technical contributors of this document. 206 Section 10 provides a list of references, and Section 11 provides the 207 authors' addresses. 209 Appendix A discusses other optional FARP mechanisms. Appendix B 210 discusses the Inverse ARP protocol(WW_PN to IP address) as an 211 alternate and optional way of building MAC and IP address 212 associations. Appendix C lists some informal mechanisms for FC Layer 213 Mappings. Appendix D provides a discussion on validation of the FC- 214 layer mappings for the different FC topologies. Appendix E provides 215 a brief overview of the FC Protocols and Networks. Appendix F 216 addresses reliability in Class 3 and Sequence Count FC Protocol 217 issues. Appendix G provides a list of acronyms and a glossary of FC 218 Terms used in this specification. 220 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 221 "SHOULD", SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 222 document are to be interpreted as described in RFC 2119 [19]. 224 2. Problem Statement 226 This specification addresses two problems: 228 - A format definition and encapsulation mechanism for IPv4 229 and ARP packets over FC 230 - Mechanisms for Address Resolution 232 As noted earlier, the existing FC Standard [3] ([10]) is inadequate 233 to solve the above problems. A solution to both problems was first 234 proposed by the Fibre Channel Association (FCA)[1]. FCA is an 235 industry consortium of FC vendor companies and not a Standards Body. 236 This specification is based on the proposed solution in [1] and 237 builds on it. 239 Address Resolution is concerned with resolving IP addresses to WW_PN 240 (MAC address) and WW_PN to FC Port Identifiers (Port_ID). ARP 241 provides a solution to the first resolution problem and FARP the 242 second. 244 An optional FARP mechanism resolves IP address directly to FC 245 Port_IDs. This is useful in some upper layer applications. 247 InARP is another optional mechanism that resolves WW_PN and Port_ID 248 to an IP address. InARP is useful when a node after performing a 249 PLOGI with a remote node, knows its WW_PN and Port_ID, but not its IP 250 address. 252 3. IP and ARP Encapsulation 254 3.1 FC Frame Format 256 All FC frames have a standard format much like LAN 802.x protocols. 257 (See Appendix E and F). However, the exact size of each frame varies 258 depending on the size of the variable fields. The size of the 259 variable field ranges from 0 to 2112-bytes as shown in the FC Frame 260 Format in Fig. 1. 262 +------+--------+-----------+----//-------+------+------+ 263 | SOF |Frame |Optional | Frame | CRC | EOF | 264 | (4B) |Header |Header | Payload | (4B) | (4B) | 265 | |(24B) |<----------------------->| | | 266 | | | Data Field = (0-2112B) | | | 267 +------+--------+-----------+----//-------+------+------+ 269 Fig. 1 FC Frame Format 271 The Start of Frame (SOF) and End of Frame (EOF) are both 4-bytes long 272 and act as frame delimiters. 274 The CRC is 4-bytes long and uses the same 32-bit polynomial used in 275 FDDI and is specified in ANSI X3.139 Fiber Distributed Data 276 Interface. 278 The Frame Header is 24-bytes long and has several fields that are 279 associated with the identification and control of the payload. Some 280 of the values and options for this field that are relevant to the IP 281 and ARP payloads are discussed in Section 7. 283 Current FC Standards allow up to 3 Optional Header fields [11]: 285 - Network_Header (16-bytes) 286 - Association_Header (32-bytes) 287 - Device_Header (up to 64-bytes). 289 The IP and ARP FC Sequences SHALL carry only the Network_Header field 290 which is 16-bytes long. Other types of optional headers SHALL NOT be 291 used. The Network_Header is REQUIRED in all ARP packets and in the 292 first frame of a logical sequence carrying an IP payload as described 293 below. 295 An application level payload such as IP is called an Information Unit 296 at the FC-4 Level. Lower FC levels map this to a FC Sequence. (See 297 Appendix E.2 for a description of Sequences and Information Units.) 298 Typically, a Sequence consists of more than one frame. Larger user 299 data is segmented and reassembled using two methods: Sequence Count 300 and Relative Offset [18]. With the use of Sequence Count, data blocks 301 are sent using frames with increasing sequence counts (modulo 65536) 302 and it is quite straightforward to detect the first frame that 303 contains the Network_Header. When Relative Offset is used, as frames 304 arrive, some computation is required to detect the first frame that 305 contains the Network_Header. Sequence Count and Relative Offset field 306 control information, is carried in the FC Header. 308 In FC, the physical temporal ordering of the frames as it arrives at 309 a destination can be different from that of the order sent because of 310 traversing through a FC Network. 312 When IP forms the FC Payload then only the first frame of the logical 313 Sequence SHALL include the FC Network_Header. Fig. 2 shows the 314 logical First Frame and logical subsequent frames. Since frames may 315 arrive out of order, detection of the first frame of the logical FC 316 Sequence is necessary. 318 ARP packets map to a single frame FC Sequence and SHALL always carry 319 the FC Network_Header. 321 Note the definition of FC Data Field and FC Frame Payload in Fig. 1. 322 FC Data Field includes the FC Frame Payload and the FC Optional 323 Header, that is, Frame Payload definition does not include the FC 324 Optional Header. One or more Frame Payloads together make the FC 325 Sequence Payload as shown in Fig 2 and discussed further in Sections 326 3.2 and 3.4. FC Sequence Payload includes the mapped IP or ARP packet 327 along with the LLC/SNAP headers. 329 First Frame of a Logical FC Sequence 330 ---+------------+---------------------------+----------//----------+--- 331 | FC Header | FC Network_Header | FC Sequence Payload | 332 ---+------------+---------------------------+---------//-----------+--- 334 Subsequent Frames of a Logical FC Sequence 335 --+-----------+--------------//----------------+-- 336 | FC Header | Additional FC Sequence Payload | 337 --+-----------+-------------//-----------------+-- 339 Fig. 2 FC Network_Header in a Frame Sequence 341 The SOF, CRC, EOF control fields of the FC frame and other optional 342 headers have been omitted in the figure for clarity. 344 3.2 MTU 346 3.2.1 IP MTU 348 An FC Information Unit specific to each protocol such as IP is 349 defined in FC-4. This defines the upper bound on the size of the 350 information that can be transported. 352 Each IP or ARP Packet is mapped to a single FC Information Unit, 353 which in turn is mapped to a single FC Sequence. There is a one-to- 354 one mapping between an IP or ARP packet and a FC Sequence. 356 Fibre Channel limits the size of a single Information Unit to 2^32-1, 357 which is very large [2]. However, since the Maximum Transmission 358 Unit (MTU) size of an IPv4 packet does not exceed 65,536-bytes, the 359 mapped IPv4 size is far below the 2^32-1 limit. 361 IPv4 Packet definition includes the IP Payload and IP Headers - both 362 fixed and optional. The corresponding FC Sequence Payload includes 363 the LLC/SNAP Header and the IPv4 packet. 365 As noted above, the greatest length allowed for an IPv4 Packet 366 including any optional headers and independent of this standard is 367 65,536-bytes. However, limiting the IP MTU size to 65,280-bytes helps 368 in buffer resource allocation at N_Ports and also allows for up to 369 256-bytes of overhead. Since the FC Network_Header requires 16-bytes 370 and the IEEE 802.2 LLC/SNAP header requires 8 bytes, it leaves 232 371 bytes for future use. 373 All implementations SHALL restrict the IP MTU size to 65,280 bytes 374 and the corresponding FC Sequence Payload size to 65536-bytes. 376 3.2.2 Maximally Minimum IPv4 Packet 378 In order for IP fragmentation and reassembly to work properly it is 379 necessary that every implementation of IP be capable of transporting 380 a maximally minimum size IP packet without fragmentation. A maximally 381 minimum size IP Packet is defined as an IP Packet with an 8-byte 382 payload (the smallest possible non-zero payload size for a fragment) 383 and a 60-byte header (the largest possible header consisting of a 384 20-byte fixed part and a maximum size option field of 40-bytes) [17]. 386 All implementations SHALL support a FC Data Field of 92-bytes, which 387 is required to support 68-bytes of the maximally minimum sized IP 388 Packet, 16-bytes of the FC Network_Header, and 8-bytes of the 389 LLC/SNAP Header. 391 3.2.3 ARP MTU 393 The ARP packet has a fixed size of 28-bytes. All implementations 394 SHALL support a FC Data Field size of 52-bytes, which is required to 395 support 28-bytes of an ARP Packet, 16-bytes of the FC Network_Header, 396 and 8-bytes of the LLC/SNAP Header. Note that the minimum MTU 397 requirement for ARP is already covered by the minimum MTU requirement 398 for IP but it is mentioned here for completeness. 400 The InARP packet is identical in size to the ARP and the same MTU 401 requirements apply. 403 3.2.4 FC Data Field containing FARP Packet 405 The FARP Command is a FC Extended Link Service (ELS) command and maps 406 directly to the FC Data Field without the LLC/SNAP or the FC 407 Network_Header. The FARP Command has a fixed size of 76-bytes. 408 Because FARP operates purely in the FC space, it places no special 409 MTU requirements in this specification. 411 3.3 FC Port and Node Network Addresses 413 FC devices are identified by Nodes and their Ports. A Node is a 414 collection of one or more Ports identified by a unique nonvolatile 415 64-bit World Wide Node name (WW_NN). Each Port in a node, is 416 identified with a unique nonvolatile 64-bit World Wide Port name 417 (WW_PN), and a volatile Port Identifier (Port_ID). 419 Port_IDs are 24-bits long. A FC frame header carries a Source Port_ID 420 (S_ID) and a Destination Port_ID (D_ID). The Port_ID of a given port 421 is volatile. (The mechanism(s) by which a Port_ID may change in a FC 422 topology is outside the scope of this document. See Appendix D). 424 The FC Network_Header is normally optional in FC Standards, but 425 REQUIRED in this specification. A FC Network_Header carries source 426 and destination WW_PNs. A WW_PN consists of a 60-bit Network Address 427 and a upper 4-bit Network Address Authority (NAA) field as shown in 428 Fig. 3. The 4-bit NAA field is used to distinguish between the 429 various name registration authorities used to define the Network 430 Address [2]. 432 In this specification, both the Source and Destination 4-bit NAA 433 identifiers SHALL be set to binary '0001' indicating that an IEEE 434 48-bit MAC address is contained in the lower 48 bits of the network 435 address fields. The high order 12 bits in the network address fields 436 SHALL be set to 0x0000. The NAA field value equal to binary '0001' 437 allows FC networks to be bridged with other FC networks or 438 traditional LANs. 440 +--------+---------------------------------------+ 441 | D_NAA |Network_Dest_Address (High-order bits) | 442 |(4 bits)| (28 bits) | 443 +--------+---------------------------------------+ 444 | Network_Dest_Address (Low-order bits) | 445 | (32 bits) | 446 +--------+---------------------------------------+ 447 | S_NAA |Network_Source_Address(High-order bits)| 448 |(4 bits)| (28 bits) | 449 +--------+---------------------------------------+ 450 | Network_Source_Address (Low-order bit) | 451 | (32 bits) | 452 +--------+---------------------------------------+ 454 Fig. 3 Format of the Network_Header Field 456 3.4 FC Sequence Payload Format 458 FC Payload with IP: 460 An FC Sequence Payload carrying an IP and ARP packet SHALL use the 461 formats shown in Figs. 4 and 5 respectively. Both formats use the 462 8-byte LLC/SNAP header. 464 +-----------------+-----------+------------+-------------//----------+ 465 | LLC/SNAP Header | IP Header | Opt.IP Hdr.| IP Data | 466 | (8 bytes) | (20 bytes)| (40 bytes | (65280 -IP Header | 467 | | | Max) | - Opt. IP Hdr.) bytes | 468 +-----------------+-----------+------------+-------------//----------+ 470 Fig. 4 Format of FC Sequence Payload carrying IP 472 FC Sequence Payload with ARP: 474 As noted earlier, FC frames belonging to the same Sequence may be 475 delivered out of order over a Fabric. If the Relative Offset method 476 is used to identify FC Sequence Payload fragments, then the IP Header 477 MUST appear in the frame that has a relative offset of 0. 479 +-----------------+-------------------+ 480 | LLC/SNAP Header | ARP Packet | 481 | (8 bytes) | (28 bytes) | 482 +-----------------+-------------------+ 484 Fig. 5 Format of FC Sequence Payload carrying ARP 486 FC Sequence Payload with FARP: 488 FARP Protocol commands are directly mapped to the Frame Sequence 489 Payload and are 76-bytes long. No LLC/SNAP Header or FC 490 Network_Header is used and therefore the FC Data Field size simply 491 consists of the FC Sequence Payload. 493 LLC: 495 A Logical Link Control (LLC) field along with a Sub Network Access 496 Protocol (SNAP) field is a method used to identify routed and bridged 497 non-OSI protocol PDUs and is defined by IEEE 802.2 and applied to IP 498 in [8]. In LLC Type 1 operation (i.e., unacknowledged connectionless 499 mode), the LLC header is 3-bytes long and consists of a 1-byte 500 Destination Service Access Point (DSAP)field, a 1-byte Source Service 501 Access Point (SSAP)field, and a 1-byte Control field as shown in Fig. 502 6. 504 +----------+----------+----------+ 505 | DSAP | SSAP | CTRL | 506 | (1 byte) | (1 byte | (1 byte) | 507 +----------+----------+----------+ 508 Fig. 6 LLC Format 510 The LLC's DSAP and SSAP values of 0xAA indicate that an IEEE 802.2 511 SNAP header follows. The LLC's CTRL value equal to 0x03 specifies an 512 Unnumbered Information Command PDU. In this specification the LLC 513 Header value SHALL be set to 0xAA-AA-03. Other values of DSAP/SSAP 514 indicate support for other protocols and SHALL NOT be used in this 515 specification. 517 SNAP: 519 The SNAP Header is 5-bytes long and consists of a 3-byte 520 Organizationally Unique Identifier (OUI) field and a 2-byte Protocol 521 Identifier (PID) as shown in Fig. 7 523 +------+------+-------+------+------+ 524 | OUI | PID | 525 | ( 3 bytes) | (2 bytes) | 526 +------+------+-------+------+------+ 527 Fig. 7 SNAP Format 529 SNAP was invented to "encapsulate" LAN frames within the payload. 530 The SNAP OUI value equal to 0x00-00-00 specifies that the PID is an 531 EtherType (i.e., routed non-OSI protocol). 533 The SNAP OUI value equal to 0x00-80-C2 indicates Bridged Protocols. 535 With the OUI value set to 0x00-00-00, the SNAP PID value equal to 536 0x08-00 indicates IP and a PID value equal to 0x08-06 indicates ARP 537 (or InARP). 539 The complete LLC/SNAP Header is shown in Fig. 8. 541 +----------+----------+----------+-------+-------+-------+-------+------+ 542 | DSAP | SSAP | CTRL | OUI | PID | 543 | (1 byte) | (1 byte) | (1 byte) | ( 3 bytes) | (2 bytes | 544 +----------+----------+----------+-------+-------+-------+-------+------+ 546 Fig. 8 LLC/SNAP Header 548 3.5 Bit and Byte Ordering 550 IP or ARP Packets are mapped to FC-4 Level using the big endian byte 551 ordering, which corresponds to the standard network byte order or 552 canonical form [20]. FC-4 Payload maps with no change in order to the 553 FC-2 Level. 555 FC-1 Level defines the method used to encode data prior to 556 transmission and subsequently decode the data upon reception. The 557 method encodes 8-bit bytes into 10-bit transmission characters to 558 improve the transmission characteristics of the serial data stream. 559 In Fibre Channel data fields are aligned on word boundaries. See 560 Appendix E. A word in FC is defined as 4 bytes or 32 bits. The 561 resulting transmission word after the 8-bit to 10-bit encoding 562 consists of 40 bits. 564 Data words or Ordered Sets (special FC-2 Level control words) from 565 the FC-2 Level map to the FC-1 Level with no change in order and the 566 bytes in the word are transmitted in the Most Significant Byte first 567 to Least Significant Byte order. The transmission order of bits 568 within each byte is the Least Significant Bit to the Most Significant 569 Bit. 571 4. ARP 573 4.1 Address Resolution 575 Address Resolution in this specification is primarily concerned with 576 associating IP addresses with FC Port addresses. As described 577 earlier, FC device ports have two types of addresses: 579 - a non-volatile unique 64-bit address called World Wide Port_Name 580 (WW_PN) 581 - a volatile 24-bit address called a Port_ID 583 The Address Resolution mechanism therefore will need two levels of 584 mapping: 586 1. A mapping from the IP address to the WW_PN (i.e., IEEE 587 48-bit MAC address) 589 2. A mapping from the WW_PN to the Port_ID (see Appendix G for a 590 definition of Port_ID) 592 The address resolution problem is compounded by the fact that the 593 Port_ID is volatile and the second mapping MUST be valid before use. 594 Moreover, this validation process can be different depending on the 595 FC network topology used. Appendix D provides a discussion on 596 validation for the different FC topologies. 598 Architecturally, the first level of mapping and control operation is 599 handled by the Address Resolution Protocol (ARP), and the second 600 level by the FC Address Resolution Protocol (FARP). FARP is described 601 in Section 5. 603 Other optional mechanisms in FARP that directly map an IP address to 604 a Port_ID, or WW_NN to a Port_ID are described in Appendix A. 606 The Inverse Address Resolution Protocol (InARP) is yet another 607 optional mechanism that resolves WW_PN and Port_IDs to IP addresses. 608 InARP is described in Appendix B. 610 4.2 ARP Packet Format 612 The Address Resolution Protocol (ARP) given in [9] was designed to be 613 a general purpose protocol, and to work with many network 614 technologies, and with many upper layer protocols. Fig 9 shows the 615 ARP packet format based on [9], where the upper layer protocol uses a 616 4 octet protocol (IP) address and the network technology uses six- 617 octet hardware (MAC) address. 619 The ARP consists of two packet types - Request and Reply - and the 620 ARP Packet is 28-bytes long in this specification. The ARP Packet 621 fields are common to both ARP Requests and ARP Replys. 623 The LLC/SNAP encapsulated ARP Request Packet is mapped to a FC 624 Broadcast Sequence and the exact mechanism used to broadcast a FC 625 Sequence depends on the FC topology. This is discussed later in this 626 section. Compliant ARP Request Broadcasts SHALL include 627 Network_Headers. 629 The LLC/SNAP encapsulated ARP Reply Packet is mapped to a FC 630 Sequence. Compliant ARP Replys SHALL include Network_Headers. 632 Note that in all discussions to follow, the WW_PN and the 48-bit MAC 633 address conceptually mean the same thing. 635 The 'HW Type' field SHALL be set to 0x00-01. 637 Technically, the correct HW Type value should be set to 0x00-06 638 according to RFC 1700 indicating IEEE 802 networks. However, as a 639 practical matter a HW Type value of 0x00-06 is known to cause 640 rejections from some Ethernet end stations when FC is bridged to 641 Ethernet. Translational bridges are normally expected to change this 642 field from Type 6 to 1 and vice versa under these configurations, but 643 many do not. It is because of this reason that the Type Code is set 644 to 1 rather than 6. However, both HW Type values of 0x00-01 and 645 0x00-06 SHALL be accepted. 647 The 'Protocol' field SHALL be set to 0x08-00 indicating IP protocol. 649 The 'HW Addr Length' field SHALL be set to 0x06 indicating 6-bytes of 650 HW address. 652 The 'Protocol Addr Length' field SHALL be set to 0x04 indicating 653 4-bytes of IPv4 address. 655 The 'Operation' Code field SHALL be set as follows: 657 0x00-01 for ARP Request 658 0x00-02 for ARP Reply 660 The 'HW Addr of Sender' field SHALL be the 6-byte IEEE MAC address of 661 the sender. It is either the Requester (ARP Request) or the Responder 662 (ARP Reply) address. 664 The 'Protocol Addr of Sender' field SHALL be the 4-byte IP address of 665 the Requester (ARP Request) or that of the Responder (ARP Reply). 667 The 'HW Addr of Target' field SHALL be set to zero during an ARP 668 Request and to the 6-byte MAC address of the Requester (ARP Request) 669 in an ARP Reply. 671 The 'Protocol Addr of Target' field SHALL be set to the 4-byte IP 672 address of the Responder (ARP Reply) in a ARP Request, and to the 673 4-byte IP address of the Requester (ARP Request) in an ARP Reply. 675 +-------------------------+ 676 | HW Type | 2 bytes 677 +-------------------------+ 678 | Protocol | 2 bytes 679 +-------------------------+ 680 | HW Addr Length | 1 byte 681 +-------------------------+ 682 | Protocol Addr Length | 1 byte 683 +-------------------------+ 684 | Op Code | 2 bytes 685 +-------------------------+ 686 | HW Addr of Sender | 6 bytes 687 +-------------------------+ 688 | Protocol Addr of Sender | 4 bytes 689 +-------------------------+ 690 | HW Addr of Target | 6 bytes 691 +-------------------------+ 692 | Protocol Addr of Target | 4 bytes 693 +-------------------------+ 694 Total 28 bytes 695 Fig. 9 ARP Packet Format 697 4.3 ARP Layer Mapping and Operation 699 Whenever a FC port wishes to send IP data to another FC port, then 700 the following steps are taken: 702 1. The source port should first consult its local mapping tables to 703 determine the . 705 2. If such a mapping is found, then the source sends the IP 706 data to the port whose WW_PN address was found in the table. 708 3. If such a mapping is not found, then the source sends an 709 ARP Request broadcast to its connected FC network in 710 anticipation of getting a reply from the correct destination 711 along with its WW_PN. 713 4. When an ARP Request Broadcast frame is received by a node with 714 the matching IP address, it generates an ARP Reply. 715 Since the ARP Reply must be addressed to a specific 716 destination Port_ID, the FC layer mapping between the WW_PN 717 and Port_ID (of the ARP Request orginator) MUST be 718 valid before the reply is sent. 720 5. If no node has the matching IP address, the result is a silent 721 behavior. 723 4.4 ARP Broadcast in a Point-to-Point Topology 725 The ARP Request (Broadcast) and Reply mechanism described above 726 still apply, although there is only one node that receives the ARP 727 Request. 729 4.5 ARP Broadcast in a Private Loop Topology 731 In a private loop, the ARP Request Broadcast frame is sent using 732 the broadcast method specified in the FC-AL [7]standard. 734 1. The source port first sends an Open Broadcast 735 Replicate primitive (OPN(fr))Signal forcing all the ports in 736 the loop (except itself), to replicate the frames that they 737 receive while examining the frame header's Destination_ID 738 field. 740 2. The source port then removes this OPN(fr) signal when it 741 returns to it. 743 3. The loop is now ready to receive the ARP broadcast. 744 The source now sends the ARP Request as a single-frame 745 Broadcast Sequence in a Class 3 frame with the following 746 FC Header D_ID field and F_CTL bits setting: 748 Destination ID : D_ID = 0xFF-FF-FF 750 Sequence Initiative : SI=0 752 Last Sequence : LS=1 754 End Sequence : ES=1. 756 4. A compliant ARP Broadcast Sequence frame SHALL include the 757 Network_Header with destination MAC address set to 758 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 760 5. The destination port recognizing its IP address in the ARP 761 Request packet SHALL respond with an ARP Reply. 763 4.6 ARP Broadcast in a Public Loop Topology 765 The following steps will be followed when a port is configured in a 766 public loop: 768 1. A public loop device attached to a fabric through a FL_Port 769 MUST NOT use the OPN(fr) signal primitive. Rather, it 770 sends the broadcast sequence to the FL_Port at AL_PA = 0x00. 772 2. A FC Fabric propagates the broadcast to all other ports 773 including the FL_Port which the broadcast arrived on. This 774 includes all F_Ports, and other FL_Ports. 776 3. On each FL_Port, the fabric propagates the broadcast by first 777 using the primitive signal OPNfr, in order to prepare the loop 778 to receive the broadcast sequence. 780 4. A Broadcast Sequence is now sent on all ports (all FL_ports, 781 F_Ports) in Class 3 frame with: 783 Destination ID : D_ID = 0xFF-FF-FF 785 Sequence Initiative : SI=0 787 Last Sequence : LS=1 789 End Sequence : ES=1. 791 5. A compliant ARP Broadcast Sequence frame SHALL include the 792 Network_Header with destination MAC address set to 793 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 795 6. The destination port recognizing its IP address in the ARP 796 Request packet SHALL respond with an ARP Reply. 798 4.7 ARP Operation in a Fabric Topology 800 1. Nodes directly attached to fabric do not require the OPN(fr) 801 primitive signal. 803 2. A Broadcast Sequence is now sent on all ports (all FL_ports, 804 F_Ports) in Class 3 frame with: 806 Destination ID : D_ID = 0xFF-FF-FF 808 Sequence Initiative : SI=0 810 Last Sequence : LS=1 812 End Sequence : ES=1. 814 3. A compliant ARP Broadcast Sequence frame SHALL include the 815 Network_Header with destination MAC address set to 816 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 818 4. The destination port recognizing its IP address in 819 the ARP packet SHALL respond with an ARP Reply. 821 5. FARP 823 5.1 Scope 825 FC Layer Mapping between the WW_PN and the Port_ID is independent of 826 the ARP mechanism and is more closely associated with the details of 827 the FC protocols. Name Server and FC Address Resolution Protocol 828 (FARP) are two formal mechanisms that can be used to create and 829 maintain WW_PN to Port_ID tables. 831 FARP is a method using Extended Link Service (ELS) commands that 832 resolves mappings. The WW_PN to Port_ID address 833 resolution using FARP is especially useful in instances where the 834 Login table entries at a node expire and a Name Server is not 835 available. It is outside the scope of this document to describe Name 836 Server. (See [4].) 837 Additional address matching mechanisms that resolve 838 and mapping have been added to FARP. These 839 additional mechanisms are optional and described in Appendix A. 840 Direct IP address to Port_ID mapping is useful in applications where 841 there is no visibility of the MAC address. 843 Other less formal FC Layer Mapping mechanisms are described in 844 Appendix C. 846 Since Port_IDs are volatile, all mapped Port_IDs at all times MUST 847 be valid before use. There are many events that can invalidate this 848 mapping. Appendix D discusses conditions when such a validation is 849 required. 851 5.2 FARP Overview 853 The FARP protocol uses two ELS commands - FARP-REQ and FARP-REPLY. 855 Note: In the following discussion 'Requester' means the node 856 issuing the FARP-REQ ELS message; 'Responder' means the 857 node replying to the request by sending the FARP-REPLY 858 command. 860 The FARP-REQ ELS Broadcast Request command is used to retrieve a 861 specific node's current Port_ID given its unique WW_PN. This Port_ID 862 is sent in a FARP-REPLY unicast command. 864 The FARP-REQ may indicate that the Responder: 866 - Perform only a Login with it (Requester) - Send only a FARP- 867 REPLY - Perform a Login and send a FARP-REPLY. 869 No sequence initiative is transferred with the FARP-REQ and therefore 870 no Reply (ACCEPT or REJECT) follows this command. 872 Since a Sequence Initiative is transferred with the FARP-REPLY, 873 either a ACCEPT or REJECT follows this command as a response. 875 Reception of a FARP-REQ requires a higher level entity at the 876 responding node to send a FARP-REPLY or perform a Port Login. 878 You do not have to be logged in to issue a FARP Request. Also, you do 879 not have to be logged in to the FARP Requester to issue a FARP-REPLY. 881 The FARP Protocol Steps: 883 FARP-REQ (ELS broadcast) Request Sequence 885 (No Reply Sequence) 887 FARP-REPLY (ELS command) Sequence 889 Accept/Reject Reply Sequence 891 The FARP Protocol Format [2] and Size: 893 FT_1, 76-bytes fixed size 895 The FARP Protocol Addressing: 897 - In a FARP-REQ, the S_ID in the FC Header designates the 898 Requester's Port ID. The D_ID in the FC Header is the 899 broadcast identifier, 0xFF-FF-FF. 901 - In a FARP-REPLY, the S_ID in the FC Header designates the 902 Responder's Port_ID. The D_ID in the FC Header is the 903 Requester's Port_ID. 905 5.3 FARP Command Format 907 FARP-REQ and FARP-REPLY commands have identical formats (76-bytes 908 fixed size) and fields but use different command codes. See tables 909 below. 911 +---------------------------------------------------------------------+ 912 | FARP-REQ Command | 913 +-------------------------------------+---------+---------------------+ 914 | Field | Size | Remarks | 915 | | (Bytes) | | 916 +-------------------------------------+---------+---------------------+ 917 | 0x54-00-00-00 | 4 | Request Command Code| 918 +-------------------------------------+---------+---------------------+ 919 | Match Address Code Points | 1 | Indicates Address | 920 | | | Matching Mechanism | 921 +-------------------------------------+---------+---------------------+ 922 | Port_ID of Requester | 3 | Supplied by | 923 | | | Requester = | 924 | | | S_ID in FC Header | 925 +-------------------------------------+---------+---------------------+ 926 | Responder Flags | 1 | Response Action to | 927 | | | be taken | 928 +-------------------------------------+---------+---------------------+ 929 | Port_ID of Responder | 3 | Set to 0x00-00-00 | 930 +-------------------------------------+---------+---------------------+ 931 | WW_PN of Requester | 8 |Supplied by Requester| 932 +-------------------------------------+---------+---------------------+ 933 | WW_NN of Requester | 8 |OPTIONAL; | 934 | | |See Appendix A | 935 +-------------------------------------+---------+---------------------+ 936 | WW_PN of Responder | 8 |Supplied by Requester| 937 +-------------------------------------+---------+---------------------+ 938 | WW_NN of Responder | 8 |OPTIONAL; see App. A | 939 +-------------------------------------+---------+---------------------+ 940 | IP Address of Requester | 16 |OPTIONAL; see App. A | 941 +-------------------------------------+---------+---------------------+ 942 | IP Address of Responder | 16 |OPTIONAL; see App. A | 943 +-------------------------------------+---------+---------------------+ 944 +---------------------------------------------------------------------+ 945 | FARP-REPLY Command | 946 +-------------------------------------+---------+---------------------+ 947 | Field | Size | Remarks | 948 | | (Bytes) | | 949 +-------------------------------------+---------+---------------------+ 950 | 0x55-00-00-00 | 4 | Reply Command Code | 951 +-------------------------------------+---------+---------------------+ 952 | Match Address Code Points | 1 | Not Used and | 953 | | | Unchanged from the | 954 | | | FARP-REQ | 955 +-------------------------------------+---------+---------------------+ 956 | Port_ID of Requester | 3 | Extracted from | 957 | | | FARP-REQ | 958 +-------------------------------------+---------+---------------------+ 959 | Responder Flags | 1 | Not Used and | 960 | | | Unchanged from the | 961 | | | FARP-REQ | 962 +-------------------------------------+---------+---------------------+ 963 | Port_ID of Responder | 3 | Supplied by | 964 | | | Responder = | 965 | | | S_ID in FC Header | 966 +-------------------------------------+---------+---------------------+ 967 |WW_PN of Requester | 8 |Supplied by Requester| 968 +-------------------------------------+---------+---------------------+ 969 |WW_NN of Requester | 8 |OPTIONAL; see App. A | 970 +-------------------------------------+---------+---------------------+ 971 |WW_PN of Responder | 8 |Supplied by Requester| 972 +-------------------------------------+---------+---------------------+ 973 |WW_NN of Responder | 8 |OPTIONAL; see App. A | 974 +-------------------------------------+---------+---------------------+ 975 |IP Add. of Requester | 16 |OPTIONAL; see App. A | 976 +-------------------------------------+---------+---------------------+ 977 |IP Address of Responder | 16 |OPTIONAL; see App. A | 978 +-------------------------------------+---------+---------------------+ 980 Following is a description of the address fields in the FARP 981 Commands. 983 Port_ID of Requester: 985 It is the 24-bit Port_ID used in the S_ID field of the FC Header of a 986 FARP-REQ. It is supplied by the Requester in a FARP-REQ and retained 987 in a FARP-REPLY. 989 Port_ID of Responder: 991 It is the 24-bit Port_ID used in the S_ID field of the FC Header of a 992 FARP-REPLY. It SHALL be set to 0x00-00-00 in a FARP-REQ. It is 993 supplied by the Responder in a FARP-REPLY. 995 WW_PN: 997 This address field is used with the b'001', b'011', b'101, b'111', 998 Match Address Code Points. See Match Address Code Point Table below. 999 The Requester supplies the unique 8-byte WW_PN of the Requester and 1000 the Responder. It is retained in a FARP-REPLY. 1002 WW_NN: 1004 The WW_NN address field is used with Match Address Code Points 1005 b'010', b'011', b'110', and b'111', which are all optional. Its usage 1006 is fully described in Appendix A. When the WW_NN field is not used it 1007 SHALL be either set to '0' or a valid non-zero address. 1009 IPv4: 1011 The IPv4 address field is used with the Match Address Code Points 1012 b'100', b'101', b'110', and b'111', which are all optional. Its usage 1013 is fully described in Appendix A. When the IP Address field is not 1014 used it SHALL be either set to '0' or a valid IP address. A valid IP 1015 address consists of the 32-bit IPv4 Address with the upper 96 bits 1016 set to '0'. 1018 5.4 Match Address Code Points 1020 For each receipt of the FARP-REQ Broadcast ELS, the recipients match 1021 one or more addresses based on the encoded bits of the "FARP Match 1022 Address Code Points" field shown in the table below. FARP operation 1023 with the Match Address Code Point equal to b'001' is described in 1024 this section. Other code points are OPTIONAL and are discussed in 1025 Appendix A. The upper 5 bits of the Match Address Code Point byte are 1026 unused and their use not currently defined. 1028 +------------------------------------------------------------------+ 1029 | Match Address Code Points | 1030 +------------------------------------------------------------------+ 1031 | LSBits | Bit name | Action | 1032 +-----------+--------------------+---------------------------------+ 1033 | 000 | Reserved | | 1034 +-----------+--------------------+---------------------------------+ 1035 | 001 | MATCH_WW_PN | If 'WW_PN of Responder' = | 1036 | | | Node's WW_PN then respond | 1037 +-----------+--------------------+---------------------------------+ 1038 | 010 | MATCH_WW_NN | OPTIONAL; see Appendix A | 1039 +-----------+--------------------+---------------------------------+ 1040 | 011 | MATCH_WW_PN_NN | OPTIONAL; see Appendix A | 1041 +-----------+--------------------+---------------------------------+ 1042 | 100 | MATCH_IPv4 | OPTIONAL; see Appendix A | 1043 +-----------+--------------------+---------------------------------+ 1044 | 101 | MATCH_WW_PN_IPv4 | OPTIONAL; see Appendix A | 1045 +-----------+--------------------+---------------------------------+ 1046 | 110 | MATCH_WW_NN_IPv4 | OPTIONAL; see Appendix A | 1047 +-----------+--------------------+---------------------------------+ 1048 | 111 | MATCH_WW_PN_NN_IPv4| OPTIONAL; see Appendix A | 1049 +-----------+--------------------+---------------------------------+ 1051 When a node receives a FARP-REQ with Code Point b'001', it checks its 1052 WW_PN against the one set in 'WW_PN of Responder' field of the FARP- 1053 REQ command. If there is a match, then the node issues a response 1054 according to the action indicated by the FARP Responder Flag. See 1055 table below. 1057 WW_NN and IPv4 address fields are not used with the b'001' Code Point 1058 operation. They SHALL be set to '0' or a valid address either by the 1059 Requester or the Requester and the Responder. 1061 Note that there can be utmost one FARP-REPLY per FARP-REQ. 1063 5.5 Responder Flags 1065 The Responder Flags define what Responder action to take if the 1066 result of the Match Address Code Points is successful. 'Responder 1067 Flags' is an 8-bit field (bits 0-7) and is defined in the table 1068 below. This field is used only in a FARP-REQ. This field is retained 1069 unchanged in a FARP-REPLY. If no bits are set, the Responder will 1070 take no action. 1072 +----------+-------------------------------------------------------+ 1073 | | FARP Responder Flag | 1074 +----------+----------------+--------------------------------------+ 1075 | Bit | Bit Name | Action | 1076 | Position | | | 1077 +----------+----------------+--------------------------------------+ 1078 | 0 | INIT_P_LOGI | Initiate a P_LOGI to the Requester | 1079 +----------+----------------+--------------------------------------+ 1080 | 1 | INIT_REPLY | Send FARP_REPLY to Requester | 1081 +----------+----------------+--------------------------------------+ 1082 | 2 to 7 | Reserved | | 1083 +----------+----------------+--------------------------------------+ 1085 If INIT_P_LOGI bit is set then, a Login is performed with the port 1086 identified by "Port_ID of Requester" field. 1088 If INIT_REPLY is set then, a FARP-REPLY is sent to the Port 1089 Identified by "Port_ID of Requester" field. 1091 If both bits are set at the same time, then both Actions are 1092 performed. 1094 All other bit patterns are undefined at this time and are reserved 1095 for possible future use. 1097 5.6 FARP Support Requirements 1099 Responder action - FARP-REPLY and/or Port Login - for a successful 1100 MATCH_WW_PN is always REQUIRED. If there is no address match then a 1101 silent behavior is specified. 1103 Support for all other Match Address Code Points is OPTIONAL and a 1104 silent behavior from the Responder is valid when it is not supported. 1105 Recipients of the FARP-REQ ELS SHALL NOT issue a Service Reject 1106 (LS_RJT) if FARP OPTIONAL mechanisms are not supported. 1108 In all cases, if there are no matches, then a silent behavior is 1109 specified. 1111 If an implementation issues a FARP-REQ with a Match Address Code 1112 Point that is OPTIONAL, and fails to receive a response, and the 1113 implementation has not obtained the Port_ID of the Responder's port 1114 by other means (e.g., prior FARP-REQ with other Code Points), then 1115 the implementation SHALL reattempt the FARP-REQ with the MATCH_WW_PN 1116 Code Point. 1118 Getting multiple FARP Replies corresponding to a single FARP-REQ 1119 should normally never occur. It is beyond the scope of this document 1120 to specify conditions under which this error may occur or what the 1121 corrective action ought to be. 1123 6. Exchange Management 1125 6.1 Exchange Origination 1127 FC Exchanges shall be established to transfer data between ports. 1128 Frames on IP exchanges shall not transfer Sequence Initiative. See 1129 Appendix E for a discussion on FC Exchanges. 1131 6.2 Exchange Termination 1133 With the exception of the recommendations in Appendix F, Section F.1, 1134 "Reliability in Class 3", the mechanism for aging or expiring 1135 exchanges based on activity, timeout, or other method is outside the 1136 scope of this document. 1138 Exchanges may be terminated by either port. The Exchange Originator 1139 may terminate Exchanges by setting the LS bit, following normal FC 1140 standard FC-PH [2] rules. This specification prohibits the use of the 1141 NOP ELS with LS set for Exchange termination. 1143 Exchanges may be torn down by the Exchange Originator or Exchange 1144 Responder by using the ABTS_LS protocol. The use of ABTS_LS for 1145 terminating aged Exchanges or error recovery is outside the scope of 1146 this document. 1148 The termination of IP Exchanges by Logout is discouraged, since this 1149 may terminate active Exchanges on other FC-4s. 1151 7. Summary of Supported Features 1153 Note: 'Settable' means support is as specified in the relevant 1154 standard; all other key words are as defined earlier in this 1155 document. 1157 7.1 FC-4 Header 1159 +--------------------------------------------------------------------+ 1160 | Feature | Support | Notes | 1161 +--------------------------------------------------------------------+ 1162 | Type Code ( = 5) ISO8802-2 LLC/SNAP | REQUIRED | 2 | 1163 | Network_Headers | REQUIRED | 3 | 1164 | Other Optional Headers | MUST NOT | | 1165 +--------------------------------------------------------------------+ 1167 Notes: 1169 1. This table applies only to FC-4 related data, such as IP and 1170 ARP packets. This table does not apply to link services and 1171 other non-FC-4 sequences (PLOGI, for example) that must occur 1172 for normal operation. 1174 2. The TYPE field in the FC Header (Word 2 bits 31-24) MUST 1175 indicate ISO 8802-2 LLC/SNAP Encapsulation (Type 5). This 1176 revision of the document focuses solely on the issues related 1177 to running IP and ARP over FC. All other issues are outside 1178 the scope of this document, including full support for IEEE 1179 802.2 LLC. 1181 3. DF_CTL field (Word 3, bits 23-16 of FC-Header) MUST indicate 1182 the presence of a Network_Header (0010 0000) on the First 1183 logical Frame of FC-4 Sequences. 1185 7.2 R_CTL 1187 R_CTL in FC-Header: Word 0, bits 31-24 1188 +--------------------------------------------------------------------+ 1189 | Feature | Support | Notes | 1190 +--------------------------------------------------------------------+ 1191 | Information Category (R_CTL Routing): | | | 1192 | | | | 1193 | FC-4 Device Data | REQUIRED | 1 | 1194 | Extended Link Data | REQUIRED | | 1195 | FC-4 Link Data | MUST NOT | | 1196 | Video Data | MUST NOT | | 1197 | Basic Link Data | REQUIRED | | 1198 | Link Control | REQUIRED | | 1199 | | | | 1200 | R_CTL information : | | | 1201 | | | | 1202 | Uncategorized | MUST NOT | | 1203 | Solicited Data | MUST NOT | | 1204 | Unsolicited Control | REQUIRED | | 1205 | Solicited Control | REQUIRED | | 1206 | Unsolicited Data | REQUIRED | 1 | 1207 | Data Descriptor | MUST NOT | | 1208 | Unsolicited Command | MUST NOT | | 1209 | Command Status | MUST NOT | | 1210 +--------------------------------------------------------------------+ 1211 Notes: 1213 1. This is REQUIRED for FC-4 (IP and ARP) packets 1215 - Routing bits of R_CTL field MUST indicate Device Data 1216 frames (0000) 1217 - Information Category of R_CTL field MUST indicate 1218 Unsolicited Data (0100) 1220 7.3 F_CTL 1222 F_CTL in FC-Header: Word 2, bits 23-0 1223 +--------------------------------------------------------------------+ 1224 | Feature | Support | Notes | 1225 +--------------------------------------------------------------------+ 1226 | Exchange Context | Settable | | 1227 | Sequence Context | Settable | | 1228 | First / Last / End Sequence (FS/LS/ES) | Settable | | 1229 | Chained Sequence | MUST NOT | | 1230 | Sequence Initiative (SI) | Settable | 1 | 1231 | X_ID Reassigned / Invalidate | MUST NOT | | 1232 | Unidirectional Transmit | Settable | | 1233 | Continue Sequence Condition | REQUIRED | 2 | 1234 | Abort Seq. Condition -continue and single Seq.| REQUIRED | 3 | 1235 | Relative Offset - Unsolicited Data | Settable | 4 | 1236 | Fill Bytes | Settable | | 1237 +--------------------------------------------------------------------+ 1239 Notes: 1241 1. For FC-4 frames, each N_Port shall have a dedicated OX_ID for 1242 sending data to each N_Port in the network and a dedicated 1243 RX_ID for receiving data from each N_Port as well. Exchanges 1244 are used in a unidirectional mode, thus setting Sequence 1245 Initiative is not valid for FC-4 frames. Sequence Initiative 1246 is valid when using Extended Link Services. 1248 2. This field is required to be 00, no information. 1250 3. Sequence error policy is requested by an exchange originator 1251 in the F_CTL Abort Sequence Condition bits in the first data 1252 frame of the exchange. For classes 1 and 2, ACK frame is 1253 required to be "continuous sequence". 1255 4. Relative offset prohibited on all other types (Information 1256 Category) of frames. 1258 7.4 Sequences 1260 +---------------------------------------------------------------------+ 1261 | Feature | Support |Notes | 1262 +---------------------------------------------------------------------+ 1263 | Class 2 open Sequences / Exchange | 1 | 1 | 1264 | Length of Seq. not limited by end-to-end credit | REQUIRED | 2 | 1265 | IP and ARP Packet and FC Data Field sizes | REQUIRED | 3 | 1266 | Capability to receive Sequence of maximum size | OPTIONAL | 4 | 1267 | Sequence Streaming | MUST NOT | 5 | 1268 | Stop Sequence Protocol | MUST NOT | | 1269 | ACK_0 support | OPTIONAL | 6 | 1270 | ACK_1 support | REQUIRED | 6 | 1271 | ACK_N support | MUST NOT | | 1272 | Class of Service for transmitted Sequences | Class | 7 | 1273 | | 1, 2, or 3 | | 1274 | Continuously Increasing Sequence Count | OPTIONAL | 8, 9 | 1275 +---------------------------------------------------------------------+ 1277 Notes: 1279 1. Only one active sequence per exchange is optional. 1281 2. A Sequence Initiator shall be capable of transmitting 1282 Sequences containing more frames than the available credit 1283 indicated by a Sequence recipient at Login. FC-PH [2] end-to 1284 end flow control rules will be followed when transmitting such 1285 Sequences. 1287 3. a) IP MTU size is 65280-bytes and resulting FC Sequence 1288 Payload size is 65536-bytes. 1289 b) Maximally Minimum IP Packet size is 68-bytes and resulting 1290 FC Data Field size is 92-bytes. 1291 c) ARP (and InARP) Packet size is 28-bytes and resulting FC 1292 Data Field size is 52-bytes. 1294 4. Some OS environments may not handle the max Sequence 1295 Payload size of 65536. It is up to the administrator to 1296 configure the Max size for all systems. 1298 5. All class 3 sequences are assumed to be non-streamed. 1300 6. Only applies for Class 1 and 2. Use of ACK_1 is default, 1301 ACK_0 used if indicated by Sequence recipient at Login. 1303 7. The administrator configured class of service is used, except 1304 where otherwise specified (e.g. Broadcasts are always sent in 1305 class 3). 1307 8. Review Appendix F, "Reliability in Class 3". 1309 9. The first frame of the first sequence of a new Exchange must 1310 have SEQ_CNT = 0 [2]. 1312 7.5 Exchanges 1314 +--------------------------------------------------------------------+ 1315 | Feature | Support | Notes | 1316 +--------------------------------------------------------------------+ 1317 | X_ID interlock support | OPTIONAL | 1 | 1318 | OX_ID=FFFF | MUST NOT | | 1319 | RX_ID=FFFF | OPTIONAL | 2 | 1320 | Action if no exchange resources available | P_RJT | 3 | 1321 | Long Lived Exchanges | OPTIONAL | 4 | 1322 | Reallocation of Idle Exchanges | OPTIONAL | | 1323 +--------------------------------------------------------------------+ 1324 Notes: 1326 1. Only applies to Classes 1 and 2, supported by the Exchange 1327 Originator. A Port SHALL be capable of interoperating with 1328 another Port that requires X_ID interlock. The Exchange 1329 Originator facility within the Port shall use the X_ID 1330 Interlock protocol in such cases. 1332 2. An Exchange Responder is not required to assign RX_IDs. If a 1333 RX_ID of FFFF is assigned, it is identifying Exchanges based 1334 on S_ID / D_ID / OX_ID only. 1336 3. In Classes 1 and 2, a Port shall reject a frame that would 1337 create a new Exchange with a P_RJT containing reason code 1338 "Unable to establish Exchange". In Class 3, the frame would 1339 be dropped. 1341 4. When an Exchange is created between 2 Ports for IP/ARP data, 1342 it remains active while the ports are logged in with each 1343 other. An Exchange SHALL NOT transfer Sequence Initiative 1344 (SI). Broadcasts and ELS commands may use short lived 1345 Exchanges. 1347 7.6 ARP and InARP 1349 +--------------------------------------------------------------------+ 1350 | Feature | Support | Notes | 1351 +--------------------------------------------------------------------+ 1352 | ARP Server Support | MUST NOT | 1 | 1353 | Response to ARP requests | REQUIRED | 2 | 1354 | Class of Service for ARP requests | Class 3 | 3 | 1355 | Class of Service for ARP replies | Class | 4 | 1356 | | 1, 2, or 3 | | 1357 | Response to InARP requests | OPTIONAL | | 1358 | Class of Service for InARP requests/replies | Class | | 1359 | | 1, 2 or 3 | 5 | 1360 +--------------------------------------------------------------------+ 1362 Notes: 1364 1. Well-known Address FFFFFC is not used for ARP requests. Frames 1365 from Well-known address FFFFFC are not considered to be ARP 1366 frames. Broadcast support is REQUIRED for ARP. 1368 2. The IP Address is mapped to a specific MAC address with ARP. 1370 3. An ARP request is a Broadcast Sequence, therefore Class 3 1371 is always used. 1373 4. An ARP reply is a normal Sequence, thus the administrator 1374 configured class of service is used. 1376 5. An InARP Request or Reply is a normal Sequence, thus an 1377 administrator configured class of service is used. 1379 7.7 Extended Link Services (ELS) 1381 +--------------------------------------------------------------------+ 1382 | Feature | Support | Notes | 1383 +--------------------------------------------------------------------+ 1384 | Class of service for ELS commands / responses | Class | | 1385 | | 1,2 or 3 | 1 | 1386 | Explicit N-Port Login | REQUIRED | | 1387 | Explicit F-Port Login | REQUIRED | | 1388 | FLOGI ELS command | REQUIRED | | 1389 | PLOGI ELS command | REQUIRED | | 1390 | ADISC ELS command | REQUIRED | | 1391 | PDISC ELS command | OPTIONAL | 2 | 1392 | FAN ELS command | REQUIRED | 5 | 1393 | LOGO ELS command | REQUIRED | | 1394 | FARP-REQ/FARP-REPLY ELS commands | REQUIRED | 3 | 1395 | Other ELS command support | OPTIONAL | 4 | 1396 +-----------------------------------------------+------------+-------+ 1398 Notes: 1400 1. The administrator configured class of service is used. 1402 2. PDISC shall not be used as a Requester; ADISC shall be used 1403 instead. As a Responder, an implementation may need to respond 1404 to both ADISC and PDISC for compatibility with other 1405 specifications. 1407 3. Responder Action - FARP-REPLY and/or Port Login - for a 1408 successful MATCH_WW_PN is always REQUIRED. 1409 Support for all other match Address Codes Points is optional; 1410 a silent behavior from the Responder is valid when it is not 1411 supported. 1412 Recipients of the FARP-REQ ELS shall not issue a Service 1413 Reject (LS_RJT) if FARP is not supported 1415 4. If other ELS commands are received an LS_RJT may be sent. NOP 1416 is not required by this specification, and shall not be used 1417 as a mechanism to terminate exchanges. 1419 5. Required for FL_Ports 1421 7.8 Login Parameters 1423 Unless explicitly noted here, a compliant implementation shall use 1424 the login parameters as described in [4]. 1426 7.8.1 Common Service Parameters - FLOGI 1428 - FC-PH Version, lowest version may be 0x09 to indicate 1429 'minimum 4.3'. 1430 - Can't use BB_Credit=0 for N_Port on a switched Fabric 1431 (F_Port). 1433 7.8.2 Common Service Parameters - PLOGI 1435 - FC-PH Version, lowest version may be 0x09 to indicate 1436 'minimum 4.3'. 1437 - Can't use BB_Credit=0 for N_Port in a Point-to-Point 1438 configuration 1440 - Random Relative Offset is optional. 1442 - Note that the 'Receive Data Field Size' fields specified in 1443 the PLOGI represent both optional headers and payload. 1445 - The MAC Address can therefore be extracted from the 6 lower 1446 bytes of the WW_PN field (when the IEEE 48-bit Identifier 1447 format is chosen as the NAA) during PLOGI or ACC payload 1448 exchanged during Fibre Channel Login [2]. 1450 - The MAC Address can also be extracted from the WW_PN field in 1451 the Network_Header during ADISC (and ADISC ACC), or PDISC 1452 (and PDISC ACC). 1454 7.8.3 Class Service Parameters - PLOGI 1456 - Discard error policy only. 1458 8. Security Considerations 1460 8.1 IP and ARP Related 1462 IP and ARP do not introduce any new security concerns beyond what 1463 already exists within the Fibre Channel Protocols and Technology. 1464 Therefore IP and ARP related Security does not require special 1465 consideration in this document. 1467 8.2 FC Related 1469 FC Standards [11] specify a Security Key Server (independent of IP 1470 and ARP) as an optional service. However, there are no known 1471 implementations of this server yet. Also, the previously defined [2] 1472 use of a Security Header has been discontinued [11]. 1474 9. Acknowledgement 1476 This specification is based on FCA IP Profile, Version 3.3. The FCA 1477 IP Profile was a joint work of the Fibre Channel Association (FCA) 1478 vendor community. The following organizations or individuals have 1479 contributed to the creation of the FCA IP Profile: Adaptec, Ancor, 1480 Brocade, Clariion, Crossroads, emf Associates, Emulex, Finisar, 1481 Gadzoox, Hewlett Packard, Interphase, Jaycor, McData, Migration 1482 Associates, Orca Systems, Prisa, Q-Logic, Symbios, Systran, 1483 Tektronix, Univ. of Minnesota, Univ. of New Hamshire. Jon Infante 1484 from Emulex deserves special mention for his contributions to the 1485 FARP Protocol. The authors extend their thanks to all who provided 1486 comments and especially to Lansing Sloan from LLNL for his detailed 1487 comments. 1489 10. References 1491 [1] FCA IP Profile, Revision 3.3, May 15, 1997 1493 [2] Fibre Channel Physical and Signaling Interface (FC-PH) , ANSI 1494 X3.230-1994 1496 [3] Fibre Channel Link Encapsulation (FC-LE), Revision 1.1, June 26, 1497 1996 1499 [4] Fibre Channel Fabric Loop Attachment (FC-FLA), Rev. 2.7, August 1500 12, 1997 1502 [5] Fibre Channel Private Loop SCSI Direct Attach (FC-PLDA), 1503 Rev. 2.1, September 22, 1997 1505 [6] Fibre Channel Physical and Signaling Interface-2 (FC-PH-2), 1506 Rev. 7.4, ANSI X3.297-1996 1508 [7] Fibre Channel Arbitrated Loop (FC-AL), ANSI X3.272-1996 1510 [8] Postel, J. and Reynolds, J., "A standard for the Transmission of 1511 IP Datagrams over IEEE 802 Networks". RFC 1042, ISI, Feb, 1988 1513 [9] Plummer, D. "An Ethernet Address Resolution Protocol -or- 1514 Converting Network Addresses to 48-bit Ethernet Address for 1515 Transmission on Ethernet Hardware", STD 37, RFC 826, MIT, Nov 1516 1982. 1518 [10] FCSI IP Profile, FCSI-202, Revision 2.1, September 8, 1995 1520 [11] Fibre Channel Physical and Signaling Interface -3 (FC-PH-3), 1521 Rev. 9.3, ANSI X3.xxx-199x 1523 [12] Fibre Channel-The Basics, "Gary R. Stephens and Jan V. Dedek", 1524 Ancot Corporation 1526 [13] Fibre Channel -Gigabit Communications and I/O for Computers 1527 Networks "Alan Benner", McGraw-Hill, 1996, ISBN 0-07-005669-2 1529 [14] Fibre Channel Generic Services -2 (FC-GS-2), Rev. 5.2 1530 X3.288-199x 1532 [15] RFC 1293: Inverse Address Resolution Protocol. 1533 T. Bradley, C. Brown. Jan. 1992, PROPOSED STD, 1534 Obsoleted by RFC 2390 1536 [16] RFC 2390: Inverse Address Resolution Protocol. 1537 T. Bradley, C. Brown, A. Malis Aug. 1992, DRAFT STD 1539 [17] RFC 791: Internet Protocol. J. Postel. Sep 01-1981. 1540 STANDRAD 1542 [18] The Fibre Channel Consultant: A Comprehensive Introduction, 1543 "Robert W. Kembel", Northwest Learning Associates, 1998 1545 [19] RFC 2119: Key Words for use in RFCs to Indicate Requirement 1546 Levels, S. Bradner. March 1997. 1548 [20] RFC 2469: A caution on The Canonical Ordering of Link-Layer 1549 Addresses, T. Narten, C. Burton. December 1998. 1551 11. Authors' Addresses 1553 Murali Rajagopal 1554 Gadzoox Networks, Inc. 1555 711 Kimberly Avenue, Suite 100 1556 Placentia, CA 92870 1558 Phone: +1 714 577 6805 1559 Fax: +1 714 524 8508 1560 Email: murali@gadzoox.com 1562 Raj Bhagwat 1563 Gadzoox Networks, Inc. 1564 711 Kimberly Avenue, Suite 100 1565 Placentia, CA 92870 1567 Phone: +1 714 577 6806 1568 Fax: +1 714 524 8508 1569 Email: raj@gadzoox.com 1571 Wayne Rickard 1572 Gadzoox Networks, Inc. 1573 711 Kimberly Avenue, Suite 100 1574 Placentia, CA 92870 1576 Phone: +1 714 577 6803 1577 Fax: +1 714 524 8508 1578 Email: wayne@gadzoox.com 1579 Appendix A: Additional Matching Mechanisms in FARP 1581 Section 5 described the FC Layer mapping between the WW_PN and the 1582 Port_ID using the FARP Protocol. This appendix describes other 1583 optional criteria for address matching and includes: 1585 - WW_NN 1587 - WW_PN & WW_NN at the same time 1589 - IPv4 1591 - IPv4 & WW_PN at the same time 1593 - IPv4 & WW_NN at the same time 1595 - IPv4 & WW_PN & WW_NN at the same time 1597 Depending on the Match Address Code Points, the FARP protocol 1598 fundamentally resolves three main types of addresses to Port_IDs and 1599 is described in table below. 1601 - For Match Address Code Point b'001': 1602 WW_PN Names fields are used to resolve the WW_PN names to 1603 Port_IDs. 1604 WW_NN and IP address fields are not used with these Code Points 1605 and SHALL be set to either '0' or valid addresses by Requester 1606 or Requester and Responder. 1608 - For Match Address Code Point b'010': 1609 WW_NN Names fields are used to resolve the WW_NN names to 1610 Port_IDs. 1611 WW_PN and IP address fields are not used with these Code Points 1612 and SHALL be set to either '0' or valid addresses by Requester 1613 or Requester and Responder. 1615 - For Match Address Code Point b'100': 1616 IPv4 fields are used to resolve the IPv4 addresses to Port_IDs. 1617 WW_PN and WW_NN fields are not used with these Code Points and 1618 SHALL be set to either '0' or valid addresses by Requester or 1619 Requester and Responder. 1621 - For all other Match Address Code Points b'011', b'101',b'110', 1622 b'111', depending on set bits one or more addresses are jointly 1623 resolved to a Port_ID. See table below. If fields are not used, 1624 then they are set either to '0' or valid addresses. 1626 The Responder Flags remain the same as before. Note that there can be 1627 utmost one FARP-REPLY per FARP-REQ. 1629 Tables showing FARP-REQ and FARP-REPLY and address fields setting are 1630 given below: 1632 +--------------------------------------------------------------------+ 1633 | Match Address Code Points | 1634 +--------------------------------------------------------------------+ 1635 | LSBits| Bit name | Action | 1636 +-------+--------------------+---------------------------------------+ 1637 | 000 | Reserved | | 1638 +-------+--------------------+---------------------------------------+ 1639 | 001 | MATCH_WW_PN | If 'WW_PN of Responder' = | 1640 | | | Node's WW_PN then respond | 1641 +-------+--------------------+---------------------------------------+ 1642 | 010 | MATCH_WW_NN | If 'WW_NN of Responder' = | 1643 | | | Node's WW_NN then respond | 1644 +-------+--------------------+---------------------------------------+ 1645 | 011 | MATCH_WW_PN_NN | If both 'WW_PN of Responder' & | 1646 | | | 'WW_NN of Responder' = | 1647 | | | Node's WW_PN & WW_NN then respond | 1648 +-------+--------------------+---------------------------------------+ 1649 | 100 | MATCH_IPv4 | If 'IPv4 Address of Responder' = | 1650 | | | Node's IPv4 Address then respond | 1651 +-------+--------------------+---------------------------------------+ 1652 | 101 | MATCH_WW_PN_IPv4 | If 'WW_PN & IPv4 of Responder' = | 1653 | | | Node's WW_PN and IPv4 then respond | 1654 +-------+--------------------+---------------------------------------+ 1655 | 110 | MATCH_WW_NN_IPv4 | If both 'WW_NN of Responder' & | 1656 | | | 'IPv4 Address of Responder' = | 1657 | | | Node's WW_NN & IPv4 then respond | 1658 +-------+--------------------+---------------------------------------+ 1659 | 111 |MATCH_WW_PN_NN_IPv4 | If 'WW_PN of Responder' & | 1660 | | | 'WW_NN of Responder' & | 1661 | | | 'IPv4 Address of Responder' = | 1662 | | | Nodes' WW_PN & WW_NN & IPv4 | 1663 | | | then respond | 1664 +-------+--------------------+---------------------------------------+ 1666 +---------------------------------------------------------------------+ 1667 | FARP-REQ Command | 1668 +-------------------------------+---------+---------------------------+ 1669 | Field | Size | Remarks | 1670 | | (Bytes) | | 1671 +-------------------------------+---------+---------------------------+ 1672 | 0x54-00-00-00 | 4 | Request Command Code | 1673 +-------------------------------+---------+---------------------------+ 1674 | Match Address Code Points | 1 | Indicates Address | 1675 | | | Matching Mechanism | 1676 +-------------------------------+---------+---------------------------+ 1677 | Port_ID of Requester | 3 |Supplied by Requester | 1678 +-------------------------------+---------+---------------------------+ 1679 | Responder Flags | 1 |Response Action to be taken| 1680 +-------------------------------+---------+---------------------------+ 1681 | Port_ID of Responder | 3 | Set to 0x00-00-00 | 1682 +-------------------------------+---------+---------------------------+ 1683 |WW_PN of Requester | 8 | Supplied by Requester | 1684 +-------------------------------+---------+---------------------------+ 1685 |WW_NN of Requester | 8 |OPTIONAL; | 1686 | | |Supplied by Requester | 1687 +-------------------------------+---------+---------------------------+ 1688 |WW_PN of Responder | 8 |Supplied by Requester | 1689 +-------------------------------+---------+---------------------------+ 1690 |WW_NN of Responder | 8 |OPTIONAL ;Supplied by | 1691 | | |Requester or Responder | 1692 +-------------------------------+---------+---------------------------+ 1693 |IP Add. of Requester | 16 |OPTIONAL; Supplied by | 1694 | | |Requester | 1695 | | |IPv4 Add.=low 32 bits | 1696 +-------------------------------+---------+---------------------------+ 1697 |IP Address of Responder | 16 |OPTIONAL; Supplied by | 1698 | | |Requester or Responder | 1699 | | |IPv4 Add.=low 32 bits | 1700 +-------------------------------+---------+---------------------------+ 1702 +---------------------------------------------------------------------+ 1703 | FARP-REPLY Command | 1704 +-------------------------------+---------+---------------------------+ 1705 | Field | Size | Remarks | 1706 | | (Bytes) | | 1707 +-------------------------------+---------+---------------------------+ 1708 | 0x55-00-00-00 | 4 |Reply Command Code | 1709 +-------------------------------+---------+---------------------------+ 1710 | Match Address Code Points | 1 | Not Used and unchanged | 1711 | | |from the FARP-REQ | 1712 +-------------------------------+---------+---------------------------+ 1713 | Port_ID of Requester | 3 |Supplied by Requester | 1714 +-------------------------------+---------+---------------------------+ 1715 | Responder Flags | 1 | Not Used and unchanged | 1716 | | |from the FARP-REQ | 1717 +-------------------------------+---------+---------------------------+ 1718 | Port_ID of Responder | 3 |Supplied by Responder | 1719 +-------------------------------+---------+---------------------------+ 1720 |WW_PN of Requester | 8 |Supplied by Requester | 1721 +-------------------------------+---------+---------------------------+ 1722 |WW_NN of Requester | 8 |OPTIONAL; Supplied by | 1723 | | |Requester | 1724 +-------------------------------+---------+---------------------------+ 1725 |WW_PN of Responder | 8 |Supplied by Requester | 1726 +-------------------------------+---------+---------------------------+ 1727 |WW_NN of Responder | 8 |OPTIONAL; Supplied by | 1728 | | |Requester or Responder | 1729 +-------------------------------+---------+---------------------------+ 1730 |IP Add. of Requester | 16 |OPTIONAL; Supplied by | 1731 | | |Requester | 1732 | | |IPv4 Add.=low 32 bits | 1733 +-------------------------------+---------+---------------------------+ 1734 |IP Address of Responder | 16 |OPTIONAL; Supplied by | 1735 | | |Requester or Responder | 1736 | | |IPv4 Add.=low 32 bits | 1737 +-------------------------------+---------+---------------------------+ 1738 Appendix B: InARP 1740 B.1 General Discussion 1742 Inverse ARP (InARP) is a mechanism described in RFC 1293/2390 [15, 1743 16], which is useful when a node desires to know the protocol address 1744 of a target node whose hardware address is known. Situations where 1745 this could occur are described in [15, 16]. The motivation for using 1746 InARP in FC is to allow a node to learn the IP address of another 1747 node with which it has performed a Port Login (PLOGI). PLOGI is a 1748 normal FC process that happens between nodes, independent of this 1749 standard. PLOGI makes it possible for a node to discover the WW_PN 1750 and the Port_ID of the other node but not its IP address. A node in 1751 this way may potentially obtain the IP address of all nodes with 1752 which it can PLOGI. 1754 Note that the use of the InARP mechanism can result in resolving all 1755 WW_PN to IP addresses and ARP may no longer be required. This can be 1756 beneficially applied in cases where a particular FC topology makes it 1757 inefficient to send out an ARP broadcast. 1759 B.2 InARP Protocol Operation 1761 InARP uses the same ARP Packet format but with different 'Op Codes', 1762 one for InARP Request and another for InARP Reply. 1764 The InARP protocol operation is very simple. The requesting node 1765 fills the hardware address (WW_PN) of the target device and sets the 1766 protocol address to 0x00-00-00-00. Because, the request is sent to a 1767 node whose WW_PN and Port_ID are known, there is no need for a 1768 broadcast. The target node fills in its Protocol address (IP address 1769 in this case) and sends an InARP Reply back to the sender. A node 1770 may collect, all such WW_PN and IP addresses pairs in a similar way. 1772 B.3 InARP Packet Format 1774 Since the InARP protocol uses the same packet format as the ARP 1775 protocol, much of the discussion on ARP formats given in Section 4 1776 applies here. 1778 The InARP is 28-bytes long in this application and uses two messages: 1779 Request and Reply. Like ARP, the InARP Packet fields are common to 1780 both InARP Requests and InARP Replies. 1782 InARP Request and Reply Packets are encapsulated in a single frame FC 1783 Sequence much like ARP. Compliant InARP Request and Reply FC 1784 Sequences SHALL include Network_Headers. 1786 The 'HW Type' field SHALL be set to 0x00-01. 1788 The 'Protocol' field SHALL be set to 0x08-00 indicating IP protocol. 1790 The 'HW Addr Length' field SHALL be set to 0x06 indicating 6-bytes of 1791 HW address. 1793 The 'Protocol Addr Length' field SHALL be set to 0x04 indicating 1794 4-bytes of IP address. 1796 The 'Operation' Code field SHALL be set as follows: 1798 0x00-08 for InARP Request 1799 0x00-09 for InARP Reply 1801 The 'HW Addr of Sender' field SHALL be the 6-byte IEEE MAC address of 1802 the Requester (InARP Request) or Responder (InARP Reply). 1804 The 'Protocol Addr of Sender' field SHALL be the 4-byte IP address of 1805 the Requester (InARP Request) or Responder (InARP Reply). 1807 The 'HW Addr of Target' field SHALL be set to the 6-byte MAC address 1808 of the Responder in an InARP Request and to the 6-byte MAC address of 1809 the Requester in an InARP Reply. 1811 The 'Protocol Addr of Target' field SHALL be set to 0x00-00-00-00 in 1812 an InARP Request and to the 4-byte IP address of the Requester in an 1813 InARP Reply. 1815 B.4 InARP Support Requirements 1817 Support for InARP is OPTIONAL. If a node does not support InARP and 1818 it receives an InARP Request message then a silent behavior is 1819 specified. 1821 APPENDIX C: Some Informal Mechanisms for FC Layer Mappings 1823 Each method SHALL have some check to ensure PLOGI has completed 1824 successfully before data is sent. A related concern in large networks 1825 is limiting concurrent logins to only those ports with active IP 1826 traffic. 1828 C.1 Login on Cached Mapping Information 1830 This method insulates the level performing Login from the level 1831 interpreting ARP. It is more accommodating of non-ARP mechanisms for 1832 building the FC-layer mapping table. 1834 1. Broadcast messages that carry a Network_Header contain 1835 the S_ID on the FC-header and WW_PN in the Network-Header. 1836 Caching this information provides a correlation of Port_ID to 1837 WW_PN. If the received Broadcast message is compliant with 1838 this specification, the WW_PN will contain the MAC Address. 1840 2. The WW_PN is "available" if Login has been performed to the 1841 Port_ID and flagged. If Login has not been performed, the 1842 WW_PN is "unavailable". 1844 3. If an outbound packet is destined for a port that is 1845 "unavailable", the cached information (from broadcast) is used 1846 to look up the Port_ID. 1848 4. After sending an ELS PLOGI command (Port Login) to the Port 1849 (from a higher level entity at the host), waiting for an 1850 outbound packet before sending this Port Login conserves 1851 resources for only those ports which wish to establish 1852 communication. 1854 5. After Port Login completes (ACC received), the outbound packet 1855 can be forwarded. At this point in time, both ends have the 1856 necessary information to complete their association. 1859 C.2 Login on ARP Parsing 1861 This method performs Login sooner by parsing ARP before passing it up 1862 to higher levels for IP/MAC Address correlation. It requires a low- 1863 level awareness of the IP address, and is therefore protocol- 1864 specific. 1866 1. When an ARP Broadcast Message is received, the S_ID is 1867 extracted from the FC-header and the corresponding 1868 Network_Source_Address from the Network_Header. 1870 2. The ARP payload is parsed to determine if 1871 (a) this host is the target of the ARP request (Target IP 1872 Address match), and 1873 (b) if this host is currently logged in with the port 1874 (Port_ID = S_ID) originating the ARP broadcast. 1876 3. The ARP is passed to a higher level for ARP Response 1877 generation. 1879 4. If a Port Login is required, an ELS PLOGI command (Port Login) 1880 is sent immediately to the Port originating the ARP Broadcast. 1882 5. After Port Login completes, an ARP response can be forwarded. 1883 Note that there are two possible scenarios: 1885 - The ACC to PLOGI returns before the ARP reply is processed 1886 and the ARP Reply is immediately forwarded. 1887 - The ARP reply is delayed, waiting for ACC (successful 1888 Login). 1890 6. At this point in time, both ends have the necessary 1891 information to complete their 1892 association. 1894 C.3 Login to Everyone 1896 In Fibre Channel topologies with a limited number of ports, it may be 1897 efficient to unconditionally Login to each port. This method is 1898 discouraged in fabric and public loop environments. 1900 After Port Login completes, the MAC Address to Port_ID Address tables 1901 can be constructed. 1903 C.4 Static Table 1905 In some loop environments with a limited number of ports, a static 1906 mapping from a MAC Address to Port_ID (D_ID or AL_PA) may be 1907 maintained. The FC layer will always know the destination Port_ID 1908 based on the table. The table is typically downloaded into the driver 1909 at configuration time. This method scales poorly, and is therefore 1910 not recommended. 1912 Appendix D: FC Layer Address Validation 1914 D.1 General Discussion 1916 At all times, the mapping MUST be valid before use. 1917 There are many events that can invalidate this mapping. The 1918 following discussion addresses conditions when such a validation is 1919 required. 1921 After a FC link interruption occurs, the Port_ID of a port may 1922 change. After the interruption, the Port_IDs of all other ports that 1923 have previously performed PLOGI (N_Port Login) with this port may 1924 have changed, and its own Port_ID may have changed. 1926 Because of this, address validation is required after a LIP in a loop 1927 topology [7] or after NOS/OLS in a point-to-point topology [6]. 1929 Port_IDs will not change as a result of Link Reset (LR),thus address 1930 validation is not required. 1932 In addition to actively validating devices after a link interruption, 1933 if a port receives any FC-4 data frames (other than broadcast 1934 frames), from a port that is not currently logged in, then it shall 1935 send an explicit Extended Link Service (ELS) Request logout (LOGO) 1936 command to that port. 1938 ELS commands (Requests and Replies) are used by an N_Port to solicit 1939 a destination port (F_Port or N_Port) to perform some link-level 1940 function or service.) The LOGO Request is used to request 1941 invalidation of the service parameters and Port_ID of the recipient 1942 N_Port. 1944 The level of initialization and subsequent validation and recovery 1945 reported to the upper (FC-4) layers is implementation-specific. 1947 In general, an explicit Logout (LOGO) SHALL be sent whenever the FC- 1948 Layer mapping between the Port_ID and WW_PN of a remote port is 1949 removed. 1951 The effect of power-up or re-boot on the mapping tables is outside 1952 the scope of this specification. 1954 D.2 FC Layer Address Validation in a Point-to-Point Topology 1956 No validation is required after LR. In a point-to-point topology, 1957 NOS/OLS causes implicit Logout of each port and after a NOS/OLS, each 1958 port must perform a PLOGI [2]. 1960 D.3 FC Layer Address Validation in a Private Loop Topology 1962 After a LIP, a port SHALL not transmit any link data to another port 1963 until the address of the other port has been validated. The 1964 validation consists of completing either ADISC or PDISC. (See 1965 Appendix G.) 1966 ADISC (Address Discovery) is an ELS command for discovering the hard 1967 addresses - the 24-bit identifier- of NL_Ports [5], [6]. 1969 PDISC (Discover Port) is an ELS command for exchanging service 1970 parameters without affecting Login state [5], [6]. 1972 As a requester, this specification prohibits PDISC and requires 1973 ADISC. 1975 As a responder, an implementation may need to respond to both ADISC 1976 and PDISC for compatibility with other FC specifications. 1978 If the three addresses, Port_ID, WW_PN, WW_NN, exactly match the 1979 values prior to the LIP, then any active exchanges may continue. 1981 If any of the three addresses have changed, then the node must be 1982 explicitly Logged out [4], [5]. 1984 If a port's N_Port ID changes after a LIP, then all active Port-ID to 1985 WW_PN mappings at this port must be explicitly Logged out. 1987 D.4 FC Layer Address Validation in a Public Loop Topology 1989 A FAN (Fabric Address Notification) ELS command is sent by the fabric 1990 to all known previously logged in ports following an initialization 1991 event. Therefore, after a LIP, hosts may wait for this notification 1992 to arrive or they may perform a FLOGI. 1994 If the WW_PN and WW_NN of the fabric FL_Port contained in the FAN ELS 1995 or FLOGI response exactly match the values before the LIP, and if the 1996 AL_PA obtained by the port is the same as the one before the LIP, 1997 then the port may resume all exchanges. If not, then FLOGI (Fabric 1998 Login) must be performed with the fabric and all nodes must be 1999 explicitly Logged out. 2001 A public loop device will have to perform the private loop 2002 authentication to any nodes on the local loop which have an Area + 2003 Domain Address == 0x00-00-XX 2005 D.5 FC Layer Address Validation in a Fabric Topology 2007 No validation is required after LR (link reset). 2009 After NOS/OLS, a port must perform FLOGI. If, after FLOGI, the S_ID 2010 of the port, the WW_PN of the fabric, and the WW_NN of the fabric are 2011 the same as before the NOS/OLS, then the port may resume all 2012 exchanges. If not, all nodes must be explicitly, Logged out [2]. 2014 APPENDIX E: Fibre Channel Overview 2016 E.1 Brief Tutorial 2018 The FC Standard [2] defines 5 "levels" (not layers) for its protocol 2019 description: FC-0, FC-1, FC-2, FC-3, and FC-4. The first three levels 2020 (FC-0, FC-1, FC-2) are largely concerned with the physical formatting 2021 and control aspects of the protocol. FC-3 has been architected to 2022 provide a place holder for functions that might need to be performed 2023 after the upper layer protocol has requested the transmission of an 2024 information unit, but before FC-2 is asked to deliver that piece of 2025 information by using a sequence of frames [19]. At this time, no FC-3 2026 functions have been defined. FC-4 is meant for supporting profiles 2027 of Upper Layer Protocols (ULP) such as IP and Small Computer System 2028 Interface (SCSI), and supports a relatively small set compared to LAN 2029 protocols such as IEEE 802.3. 2031 FC devices are called "Nodes", each of which has at least one "Port" 2032 to connect to other ports. A Node may be a workstation, a disk drive 2033 or disk array, a camera, a display unit, etc. A "Link" is two 2034 unidirectional paths flowing in opposite directions and connecting 2035 two Ports within adjacent Nodes. 2037 FC Nodes communicate using higher layer protocols such as SCSI and IP 2038 and are configured to operate using Point-to-Point, Private Loop, 2039 Public Loop (attachment to a Fabric), or Fabric network topologies. 2041 The point-to-point is the simplest of the four topologies, where only 2042 two nodes communicate with each other. The private loop may connect a 2043 number of devices (max 126) in a logical ring much like Token Ring, 2044 and is distinguished from a public loop by the absence of a Fabric 2045 Node participating in the loop. The Fabric topology is a switched 2046 network where any attached node can communicate with any other. For a 2047 detail description of FC topologies refer to [18]. 2049 Table below summarizes the usage of port types depending on its 2050 location [12]. Note that E-Port is not relevant to any discussion in 2051 this specification but is included below for completeness. 2053 +-----------+-------------+-----------------------------------------+ 2054 | Port Type | Location | Topology Associated with | 2055 +-----------+-------------+-----------------------------------------+ 2056 | N_Port | Node | Point-to-Point or Fabric | 2057 +-----------+-------------+-----------------------------------------+ 2058 | NL_Port | Node |In N_Port mode -Point-to-Point or Fabric | 2059 | | |In NL_Port mode - Arbitrated Loop | 2060 +-----------+-------------+-----------------------------------------+ 2061 | F_Port | Fabric | Fabric | 2062 +-----------+-------------+-----------------------------------------+ 2063 | FL_Port | Fabric | In F_Port mode - Fabric | 2064 | | | In FL_Port mode - Arbitrated Loop | 2065 +-----------+-------------+-----------------------------------------+ 2066 | E_Port | Fabric | Internal Fabric Expansion | 2067 +-----------+-------------+-----------------------------------------+ 2069 E.2 Exchange, Information Unit, Sequence, and Frame 2071 The FC 'Exchange' is a mechanism used by two FC ports to identify and 2072 manage an operation between them [18]. An Exchange is opened whenever 2073 an operation is started between two ports. The Exchange is closed 2074 when this operation ends. 2076 The FC-4 Level specifies data units for each type of application 2077 level payload called 'Information Unit' (IU). Each protocol carried 2078 by FC has a defined size for the IU. Every operation must have at 2079 least one IU. Lower FC levels map this to a FC Sequence. 2081 Typically, a Sequence consists of more than one frame. Larger user 2082 data is segmented and reassembled using two methods: Sequence Count 2083 and Relative Offset [18]. With the use of Sequence Count, data blocks 2084 are sent using frames with increasing sequence counts (modulo 65536) 2085 and it is quite straightforward to detect the first frame that 2086 contains the Network_Header. When Relative Offset is used, as frames 2087 arrive, some computation is required to detect the first frame that 2088 contains the Network_Header. Sequence Count and Relative Offset field 2089 control information, is carried in the FC Header. 2091 The FC-4 Level makes a request to FC-3 Level when it wishes it to be 2092 delivered. Currently, there are no FC-3 level defined functions, and 2093 this level simply converts the Information Unit delivery request into 2094 a 'Sequence' delivery request and passes it on to the FC-2 Level. 2095 Therefore, each FC-4 Information Unit corresponds to a FC-2 Level 2096 Sequence. 2098 The maximum data carried by a FC frame cannot exceed 2112-bytes [2]. 2099 Whenever, the Information Unit exceeds this value, the FC-2 breaks it 2100 into multiple frames and sends it in a sequence. 2102 There can be multiple Sequences within an Exchange. Sequences within 2103 an Exchange are processed sequentially. Only one Sequence is active 2104 at a time. Within an Exchange information may flow in one direction 2105 only or both. If bi-directional then one of the ports has the 2106 initiative to send the next Sequence for that Exchange. Sequence 2107 Initiative can be passed between the ports on the last frame of 2108 Sequence when control is transferred. This amounts to half-duplex 2109 behavior. 2111 Ports may have more than one Exchange open at a time. Ports can 2112 multiplex between Exchanges. Exchanges are uniquely identified by 2113 Exchange IDs (X_ID). An Originator OX_ID and a Responder RX_ID 2114 uniquely identify an Exchange. 2116 E.3 Fibre Channel Header Fields 2118 The FC header as shown in the diagrams below contains routing and 2119 other control information to manage Frames, Sequences, and Exchanges. 2120 The Frame-header is sent as 6 transmission words immediately 2121 following an SOF delimiter and before the Data Field. 2123 D_ID and S_ID: 2125 FC uses destination address routing [12], [13]. Frame routing in 2126 a point-to-point topology is trivial. 2128 For the Arbitrated Loop topology, with the destination NL_Port on 2129 the same AL, the source port must pick the destination port, 2130 determine its AL Physical Address, and "Open" the destination 2131 port. The frames must pass through other NL_Ports or the FL_Port 2132 on the loop between the source and destination, but these ports 2133 do not capture the frames. They simply repeat and transmit the 2134 frame. Either communicating port may "Close" the circuit. 2136 When the destination port is not on the same AL, the source 2137 NL_Port must open the FL_Port attached to a Fabric. Once in the 2138 Fabric, the Fabric routes the frames again to the destination. 2140 In a Fabric topology, the Fabric looks into the Frame-header, 2141 extracts the destination address (D_ID), searches its own routing 2142 tables, and sends the frame to the destination port along the 2143 path chosen. The process of choosing a path may be performed at 2144 each fabric element or switch until the F_Port attached to the 2145 destination N_Port is reached. 2147 Fibre Channel Frame Header, Network_Header, and Payload carrying IP Packet 2148 +---+----------------+----------------+----------------+--------------+ 2149 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2150 +---+----------------+----------------+----------------+--------------+ 2151 |0 | R_CTL | D_ID | 2152 +---+----------------+----------------+----------------+--------------+ 2153 |1 | CS_CTL | S_ID | 2154 +---+----------------+----------------+----------------+--------------+ 2155 |2 | TYPE | F_CTL | 2156 +---+----------------+----------------+----------------+--------------+ 2157 |3 | SEQ_ID | DF_CTL | SEQ_CNT | 2158 +---+----------------+----------------+----------------+--------------+ 2159 |4 | OX_ID | RX_ID | 2160 +---+--------+-------+----------------+----------------+--------------+ 2161 |5 | Parameter (Control or Relative Offset for Data ) | 2162 +---+-----------------------------------------------------------------+ 2163 |6 | NAA | Network_Dest_Address (Hi order bits) | 2164 +---+--------+-------+----------------+----------------+--------------+ 2165 |7 | Network_Dest_Address (Lo order bits) | 2166 +---+--------+-------+----------------+----------------+--------------+ 2167 |8 | NAA | Network_Src_Address (Hi order bits) | 2168 +---+--------+-------+----------------+----------------+--------------+ 2169 |9 | Network_Src_Address (Lo order bits) | 2170 +---+----------------+----------------+----------------+--------------+ 2171 |10 | DSAP | SSAP | CTRL | OUI | 2172 +---+----------------+----------------+----------------+--------------+ 2173 |11 | OUI | PID | 2174 +---+----------------+----------------+----------------+--------------+ 2175 |12 | IP Packet Data ... | 2176 +---+----------------+----------------+----------------+--------------+ 2177 R_CTL (Routing Control) and TYPE(data structure): 2179 Frames for each FC-4 can be easily distinguished from the others 2180 at the receiving port using the R_CTL (Routing Control) and TYPE 2181 (data structure) fields in the Frame-header. 2183 The R_CTL has two sub-fields: Routing bits and Information 2184 category. The Routing bits sub-field has specific values that 2185 mean FC-4 data follows and the Information Category tells the 2186 receiver the "Type" of data contained in the frame. The R_CTL 2187 and TYPE code points are shown in the diagrams. 2189 Other Header fields: 2191 F_CTL (Frame Control) and SEQ_ID (Sequence Identification), 2192 SEQ_CNT (Sequence Count), OX_ID (Originator exchange Identifier), 2193 RX_ID (Responder exchange Identifier), and Parameter fields are 2194 used to manage the contents of a frame, and mark information 2195 exchange boundaries for the destination port. 2197 F_CTL(Frame Control): 2199 The FC_CTL field is a 3-byte field that contains information 2200 relating to the frame content. Most of the other Frame-header 2201 fields are used for frame identification. Among other things, 2202 bits in this field indicate the First Sequence, Last Sequence, or 2203 End Sequence. Sequence Initiative bit is used to pass control of 2204 the next Sequence in the Exchange to the recipient. 2206 SEQ_ID (Sequence Identifier) and SEQ_CNT (Sequence Count): 2208 This is used to uniquely identify sequences within an Exchange. 2209 The uniquely identifies any active Sequence. 2210 SEQ_CNT is used to uniquely identify frames within a Sequence to 2211 assure sequentiality of frame reception, and to allow unique 2212 correlation of link control frames with their related data 2213 frames. 2215 Originator Exchange Identifier (OX_ID) and Responder Exchange 2216 Identifier (RX_ID): 2218 The OX_ID value provides association of frames with specific 2219 Exchanges originating at a particular N_Port. The RX_ID field 2220 provides the same function that the OX_ID provides for the 2221 Exchange Originator. The OX_ID is meaningful on the Exchange 2222 Originator, and the RX_ID is meaningful on the Responder. 2224 DF_CTL (Data Field Control): 2226 The DF_CTL field specifies the presence or absence of optional 2227 headers between the Frame-header and Frame Payload 2229 PARAMETER: 2231 The Parameter field has two meanings, depending on Frame type. 2232 For Link Control Frames, the Parameter field indicates the 2233 specific type of Link Control frame. For Data frames, this 2234 field contains the Relative Offset value. This specifies an 2235 offset from an Upper Layer Protocol buffer from a base address. 2237 E.4 Code Points for FC Frame 2239 E.4.1 Code Point with IP and ARP Packets 2241 The Code Points for FC Frames with IP and ARP Packets are very 2242 similar with the exception of PID value in Word 11 which is set to 2243 0x08-00 for IP and 0x08-06 for ARP. Also, the Network_Header appears 2244 only in the first logical frame of a FC Sequence carrying IP. In the 2245 case, where FC frames carry ARP packets it is always present because 2246 these are single frame Sequences. 2248 Code Points for FC Frame with IP packet Data 2249 +---+----------------+----------------+----------------+------------+ 2250 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2251 +---+----------------+----------------+----------------+------------+ 2252 | 0 | 0x04 | D_ID | 2253 +---+----------------+----------------+----------------+------------+ 2254 | 1 | 0x00 | S_ID | 2255 +---+----------------+----------------+----------------+------------+ 2256 | 2 | 0x05 | F_CTL | 2257 +---+----------------+----------------+----------------+------------+ 2258 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2259 +---+----------------+----------------+----------------+------------+ 2260 | 4 | OX_ID | RX_ID | 2261 +---+----------------+----------------+----------------+------------+ 2262 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2263 +---+------+--------------------------------------------------------+ 2264 | 6 | 0001 | 0x000 | Dest. MAC (Hi order bits) | 2265 +---+------+---------+----------------+----------------+------------+ 2266 | 7 | Dest. MAC (Lo order bits) | 2267 +---+------+----------+----------------+----------------------------+ 2268 | 8 | 0001 | 0x000 | Src. MAC (Hi order bits) | 2269 +---+------+---------+----------------+----------------+------------+ 2270 | 9 | Src. MAC (Lo order bits) | 2271 +---+----------------+----------------+----------------+------------+ 2272 |10 | 0xAA | 0xAA | 0x03 | 0x00 | 2273 +---+----------------+----------------+----------------+------------+ 2274 |11 | 0x00-00 | 0x08-00 | 2275 +---+----------------+----------------+----------------+------------+ 2276 |12 | IP Packet Data | 2277 +---+----------------+----------------+----------------+------------+ 2278 |13 | ... | 2279 +---+----------------+----------------+----------------+------------+ 2280 Code Points for FC Frame with ARP packet Data 2281 +---+----------------+----------------+----------------+------------+ 2282 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2283 +---+----------------+----------------+----------------+------------+ 2284 | 0 | 0x04 | D_ID | 2285 +---+----------------+----------------+----------------+------------+ 2286 | 1 | 0x00 | S_ID | 2287 +---+----------------+----------------+----------------+------------+ 2288 | 2 | 0x05 | F_CTL | 2289 +---+----------------+----------------+----------------+------------+ 2290 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2291 +---+----------------+----------------+----------------+------------+ 2292 | 4 | OX_ID | RX_ID | 2293 +---+----------------+----------------+----------------+------------+ 2294 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2295 +---+------+--------------------------------------------------------+ 2296 | 6 | 0001 | 0x000 | Dest. MAC (Hi order bits) | 2297 +---+------+---------+----------------+----------------+------------+ 2298 | 7 | Dest. MAC (Lo order bits) | 2299 +---+------+----------+----------------+----------------------------+ 2300 | 8 | 0001 | 0x000 | Src. MAC (Hi order bits) | 2301 +---+------+---------+----------------+----------------+------------+ 2302 | 9 | Src. MAC (Lo order bits) | 2303 +---+----------------+----------------+----------------+------------+ 2304 |10 | 0xAA | 0xAA | 0x03 | 0x00 | 2305 +---+----------------+----------------+----------------+------------+ 2306 |11 | 0x00-00 | 0x08-06 | 2307 +---+----------------+----------------+----------------+------------+ 2308 |12 | ARP Packet Data | 2309 +---+----------------+----------------+----------------+------------+ 2310 |13| ... | 2311 +---+----------------+----------------+----------------+------------+ 2313 The Code Points for a FARP-REQ for a specific Match Address Code 2314 Point MATCH_WW_PN_NN ( b'011') is shown below. In particular, note 2315 the IP addresses field of the Requester set to a valid address and 2316 that of the responder set to '0'. Note also the setting of the D_ID 2317 address and the Port_ID of the Responder. 2319 The corresponding code point for a FARP-REPLY is also shown below. 2320 In particular, note that the setting of the Port_ID of Responder and 2321 the IP address setting of the Responder. 2323 E.4.2 Code Points with FARP Command 2325 Code Points for FC Frame with FARP-REQ Command for MATCH_WW_PN_NN 2326 +---+----------------+----------------+----------------+------------+ 2327 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2328 +---+----------------+----------------+----------------+------------+ 2329 | 0 | 0x04 | D_ID = | 2330 | | | 0xFF 0xFF 0xFF | 2331 +---+----------------+----------------+----------------+------------+ 2332 | 1 | 0x00 | S_ID | 2333 +---+----------------+----------------+----------------+------------+ 2334 | 2 | 0x05 | F_CTL | 2335 +---+----------------+----------------+----------------+------------+ 2336 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2337 +---+----------------+----------------+----------------+------------+ 2338 | 4 | OX_ID | RX_ID | 2339 +---+----------------+----------------+----------------+------------+ 2340 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2341 +---+----------------+----------------+----------------+------------+ 2342 | 6 | 0x54 | 0x00 | 0x00 | 0x00 | 2343 +---+----------------+----------------+----------------+------------+ 2344 | 7 | Port_ID of Requester = S_ID |Match Addr. | 2345 | | |Code Points | 2346 | | | xxxxx011 | 2347 +---+----------------+----------------+----------------+------------+ 2348 | 8 | Port_ID of Responder = |Responder | 2349 | | 0x00 0x00 0x00 |Flags | 2350 +---+----------------+----------------+----------------+------------+ 2351 | 9 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2352 +---+------+---------+----------------+----------------+------------+ 2353 |10 | WW_PN Src. MAC (Lo order bits) | 2354 +---+------+----------+---------------+-----------------------------+ 2355 |11 | 0001 | 0x000 |WW_NN Src. MAC(Hi order bits)| 2356 +---+------+---------+----------------+----------------+------------+ 2357 |12 | WW_NN Src. MAC (Lo order bits) | 2358 +---+----------------+----------------+----------------+------------+ 2359 |13 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2360 +---+------+---------+----------------+----------------+------------+ 2361 |14 | WW_PN Dest. MAC (Lo order bits) | 2362 +---+------+----------+---------------+-----------------------------+ 2363 |15 | 0001 | 0x000 |WW_NN Dest.MAC(Hi order bits)| 2364 +---+------+---------+----------------+----------------+------------+ 2365 |16 | WW_NN Dest. MAC (Lo order bits) | 2366 +---+----------------+----------------+----------------+------------+ 2367 |17 | 0x00-00-00-00 | 2368 +--------------------+----------------+---------+-------------------+ 2369 |18 | 0x00-00-00-00 | 2370 +--------------------+----------------+---------+-------------------+ 2371 |19 | 0x00-00-00-00 | 2372 +--------------------+----------------+---------+-------------------+ 2373 |20 | set to a valid IPv4 Address by Requester | 2374 +--------------------+----------------+---------+-------------------+ 2375 |21 | 0x00-00-00-00 | 2376 +--------------------+----------------+---------+-------------------+ 2377 |22 | 0x00-00-00-00 | 2378 +--------------------+----------------+---------+-------------------+ 2379 |23 | 0x00-00-00-00 | 2380 +--------------------+----------------+---------+-------------------+ 2381 | | 0x00-00-00-00 | 2382 |24 | set to a valid IPv4 Address of Responder if available | 2383 +--------------------+----------------+---------+-------------------+ 2384 Code Points for FC Frame with FARP-REPLY Command 2385 +---+----------------+----------------+----------------+------------+ 2386 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2387 +---+----------------+----------------+----------------+------------+ 2388 | 0 | 0x04 | D_ID | 2389 +---+----------------+----------------+----------------+------------+ 2390 | 1 | 0x00 | S_ID | 2391 +---+----------------+----------------+----------------+------------+ 2392 | 2 | 0x05 | F_CTL | 2393 +---+----------------+----------------+----------------+------------+ 2394 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2395 +---+----------------+----------------+----------------+------------+ 2396 | 4 | OX_ID | RX_ID | 2397 +---+----------------+----------------+----------------+------------+ 2398 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2399 +---+----------------+----------------+----------------+------------+ 2400 | 6 | 0x55 | 0x00 | 0x00 | 0x00 | 2401 +---+----------------+----------------+----------------+------------+ 2402 | 7 | Port_ID of Requester = D_ID | xxxxx011 | 2403 +---+----------------+----------------+----------------+------------+ 2404 | 8 | Port_ID of Responder = S_ID |Resp. Flag | 2405 +---+----------------+----------------+----------------+------------+ 2406 | 9 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2407 +---+------+---------+----------------+----------------+------------+ 2408 |10 | WW_PN Src. MAC (Lo order bits) | 2409 +---+------+----------+---------------+-----------------------------+ 2410 |11 | 0001 | 0x000 |WW_NN Src. MAC(Hi order bits)| 2411 +---+------+---------+----------------+----------------+------------+ 2412 |12 | WW_NN Src. MAC (Lo order bits) | 2413 +---+----------------+----------------+----------------+------------+ 2414 |13 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2415 +---+------+---------+----------------+----------------+------------+ 2416 |14 | WW_PN Dest. MAC (Lo order bits) | 2417 +---+------+----------+---------------+-----------------------------+ 2418 |15 | 0001 | 0x000 |WW_NN Dest.MAC(Hi order bits)| 2419 +---+------+---------+----------------+----------------+------------+ 2420 |16 | WW_NN Dest. MAC (Lo order bits) | 2421 +---+----------------+----------------+----------------+------------+ 2422 |17 | 0x00-00-00-00 | 2423 +--------------------+----------------+---------+-------------------+ 2424 |18 | 0x00-00-00-00 | 2425 +--------------------+----------------+---------+-------------------+ 2426 |19 | 0x00-00-00-00 | 2427 +--------------------+----------------+---------+-------------------+ 2428 |20 | set to a valid IPv4 Address by Requester | 2429 +--------------------+----------------+---------+-------------------+ 2430 |21 | 0x00-00-00-00 | 2431 +--------------------+----------------+---------+-------------------+ 2432 |22 | 0x00-00-00-00 | 2433 +--------------------+----------------+---------+-------------------+ 2434 |23 | 0x00-00-00-00 | 2435 +--------------------+----------------+---------+-------------------+ 2436 |24 | set to a valid IPv4 Address by Responder | 2437 +--------------------+----------------+---------+-------------------+ 2438 APPENDIX F: Fibre Channel Protocol Considerations 2440 F.1 RELIABILITY IN CLASS 3 2442 Problem: Sequence ID reuse in Class 3 can conceivably result in 2443 missing frame aliasing, which could result in delivery of corrupted 2444 (incorrectly- assembled) data, with no corresponding detection at the 2445 FC level. 2447 Prevention: This specification requires one of the following methods 2448 if Class 3 is used. 2450 - Continuously increasing Sequence Count (new Login Bit) - both 2451 sides must set When an N_Port sets the PLOGI login bit for 2452 continuously increasing SEQ_CNT, it is guaranteeing that it 2453 will transmit all frames within an Exchange using a 2454 continuously increasing SEQ_CNT (see description in Section 2455 B.1 below). 2456 - After using all SEQ_IDs (0-255) once, must start a new 2457 Exchange. It is recommended that a minimum of 4 Exchanges be 2458 used before an OX_ID can be reused. 2459 - Note: If an implementation is not checking the OX_ID when 2460 reassembling Sequences, the problem can still occur. Cycling 2461 through some number of SEQ_IDs, then jumping to a new Exchange 2462 does not solve the problem. SEQ_IDs must still be unique 2463 between two N_Ports, even across Exchanges. 2464 - Use only single-frame Sequences. 2466 F.2 CONTINUOUSLY INCREASING SEQ_CNT 2468 This method allows the recipient to check incoming frames, knowing 2469 exactly what SEQ_CNT value to expect next. Since the SEQ_CNT will not 2470 repeat for 65,536 frames, the aliasing problem is significantly 2471 reduced. 2473 A Login bit (PLOGI) is used to indicate that a device always uses a 2474 continuously increasing SEQ_CNT, even across transfers of Sequence 2475 Initiative. This bit is necessary for interoperability with some 2476 devices, and it provides other benefits as well. 2478 In the FC-PH-3 [11], the following is supported: 2480 Word 1, bit 17 - SEQ_CNT (S) 2481 0 = Normal FC-PH rules apply 2482 1 = Continuously increasing SEQ_CNT 2484 Any N_Port that sets Word 1, Bit 17 = 1, is guaranteeing that it will 2485 transmit all frames within an Exchange using a continuously 2486 increasing SEQ_CNT. Each Exchange SHALL start with SEQ_CNT = 0 in the 2487 first frame, and every frame transmitted after that SHALL increment 2488 the previous SEQ_CNT by one, even across transfers of Sequence 2489 Initiative. Any frames received from the other N_Port in the Exchange 2490 shall have no effect on the transmitted SEQ_CNT. 2492 Appendix G: Acronyms and Glossary of FC Terms 2494 It is assumed that the reader is familiar with the terms and acronyms 2495 used in the FC protocol specification [2]. The following is provided 2496 for easy reference. 2498 First Frame: The frame that contains the SOFi field. This means a 2499 logical first and may not necessarily be the first frame temporally 2500 received in a sequence. 2502 Code Point: The coded bit pattern associated with control fields in 2503 frames or packets. 2505 PDU: Protocol Data Unit 2507 ABTS_LS: Abort Sequence Protocol - Last Sequence. A protocol for 2508 aborting an exchange based on the ABTS recipient setting the 2509 Last_Sequence bit in the BA_ACC ELS to the ABTS 2511 ADISC: Discover Address. An ELS for discovering the Hard Addresses 2512 (the 24 bit NL_Port Identifier) of N_Ports 2514 D_ID: Destination ID 2516 ES: End sequence. This FCTL bit in the FC header indicates this frame 2517 is the last frame of the sequence. 2519 FAN: Fabric Address Notification. An ELS sent by the fabric to all 2520 known previously Logged in ports following an initialization event. 2522 FLOGI: Fabric Login. 2524 LIP: Loop Initialization. A primitive Sequence used by a port to 2525 detect if it is part of a loop or to recover from certain loop 2526 errors. 2528 Link: Two unidirectional paths flowing in opposite directions and 2529 connecting two Ports within adjacent Nodes. 2531 LOGO: Logout. 2533 LR: Link reset. A primitive sequence transmitted by a port to 2534 initiate the link reset protocol or to recover from a link timeout. 2536 LS: Last Sequence of Exchange. This FCTL bit in the FC header 2537 indicates the Sequence is the Last Sequence of the Exchange. 2539 Network Address Authority: A 4-bit field specified in Network_Headers 2540 that distinguishes between various name registration authorities that 2541 may be used to identify the WW_PN and the WW_NN. NAA=b'0001' 2542 indicates IEEE-48-bit MAC addresses 2544 Node: A collection of one or more Ports identified by a unique World 2545 Wide Node Name (WW_NN). 2547 NOS: Not Operational. A primitive Sequence transmitted to indicate 2548 that the port transmitting this Sequence has detected a link failure 2549 or is offline, waiting for OLS to be received. 2551 OLS: Off line. A primitive Sequence transmitted to indicate that the 2552 port transmitting this Sequence is either initiating the link 2553 initialization protocol, receiving and recognizing NOS, or entering 2554 the offline state. 2556 PDISC: Discover Port. An ELS for exchanging Service Parameters 2557 without affecting Login state. 2559 Primitive Sequence: A primitive Sequence is an Ordered Set that is 2560 transmitted repeatedly and continuously. 2562 Private Loop Device: A device that does not attempt Fabric Login 2563 (FLOGI) and usually adheres to PLDA. The Area and Domain components 2564 of the NL_Port ID must be 0x0000. These devices cannot communicate 2565 with any port not in the local loop. 2567 Public Loop Device: A device whose Area and Domain components of the 2568 NL_Port ID cannot be 0x0000. Additionally, to be FLA compliant, the 2569 device must attempt to open AL_PA 0x00 and attempt FLOGI. These 2570 devices communicate with devices on the local loop as well as devices 2571 on the other side of a Fabric. 2573 Port: The transmitter, receiver and associated logic at either end of 2574 a link within a Node. There may be multiple Ports per Node. Each Port 2575 is identified by a unique Port_ID, which is volatile, and a unique 2576 World Wide Port Name (WW_PN), which is unchangeable. In this 2577 document, the term "port" may be used interchangeably with NL_Port or 2578 N_Port. 2580 Port_ID: Fibre Channel ports are addressed by unique 24-bit Port_IDs. 2581 In a Fibre Channel frame header, the Port_ID is referred to as S_ID 2582 (Source ID) to identify the port originating a frame, and D_ID to 2583 identify the destination port. The Port_ID of a given port is 2584 volatile (changeable). 2586 PLOGI: Port Login. 2588 SI: Sequence Initiative 2590 World Wide Port_Name (WW_PN): Fibre Channel requires each Port to 2591 have an unchangeable WW_PN. Fibre Channel specifies a Network Address 2592 Authority (NAA) to distinguish between the various name registration 2593 authorities that may be used to identify the WW_PN. A 4-bit NAA 2594 identifier, 12-bit field set to 0x0 and an IEEE 48-bit MAC address 2595 together make this a 64-bit field. 2597 World Wide Node_Name (WW_NN): Fibre Channel identifies each Node with 2598 a unchangeable WW_NN. In a single port Node, the WW_NN and the WW_PN 2599 may be identical. 2601 [draft-ietf-ipfc-fibre-channel-06.txt] [This INTERNET DRAFT expires 2602 on September 1, 1999]