idnits 2.17.1 draft-ietf-ipfc-fibre-channel-05.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 50 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 50 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 150 has weird spacing: '... most of th...' == Line 164 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 1491, 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' -- Possible downref: Non-RFC (?) normative reference: ref. '20' Summary: 8 errors (**), 0 flaws (~~), 12 warnings (==), 17 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 August 15, 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 ................................... 5 52 3.1 FC Frame Format ........................................ 5 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 ..................... 8 59 3.4 FC Payload Format ...................................... 9 61 4. ARP .........................................................11 62 4.1 Address Resolution .................................... 11 63 4.2 ARP Packet Format ...................................... 12 64 4.3 ARP Layer Mapping and Operation ........................ 13 65 4.4 ARP Broadcast in a Point-to-Point Topology ............. 14 66 4.5 ARP Broadcast in a Private Loop Topology ............... 14 67 4.6 ARP Broadcast in a Public Loop Topology ................ 14 68 4.7 ARP Operation in a Fabric Topology ..................... 15 70 5. FARP ....................................................... 16 71 5.1 Scope .................................................. 16 72 5.2 FARP Overview .......................................... 16 73 5.3 FARP Command Format .................................... 17 74 5.4 Match Address Code Points .............................. 19 75 5.5 Responder Flags ........................................ 20 76 5.6 FARP Support Requirements .............................. 21 78 6. Exchange Management ........................................ 21 79 6.1 Exchange Origination ................................... 21 80 6.2 Exchange Termination ................................... 21 82 7. Summary of Supported Features .............................. 22 83 7.1 FC-4 Header ............................................ 22 84 7.2 R_CTL .................................................. 22 85 7.3 F_CTL .................................................. 23 86 7.4 Sequences .............................................. 24 87 7.5 Exchanges .............................................. 25 88 7.6 ARP and InARP ......................................... 25 89 7.7 Extended Link Services (ELS) ........................... 26 90 7.8 Login Parameters ....................................... 27 91 7.8.1 Common Service Parameters - FLOGI ............... 27 92 7.8.2 Common Services Parameters - PLOGI ............... 27 93 7.8.3 Class Service Parameters - PLOGI ................. 27 95 8. Security Considerations .....................................27 96 9. Acknowledgements ........................................... 28 98 10. References ................................................ 28 100 11. Authors' Addresses ........................................ 29 102 Appendix A: Additional Matching Mechanisms in FARP ............ 30 104 Appendix B: InARP ............................................. 33 105 B.1 General Discussion ..................................... 33 106 B.2 InARP Protocol Operation ............................... 33 107 B.3 InARP Packet Format .................................... 33 108 B.4 InARP Support Requirements ............................. 34 110 Appendix C: Some Informal Mechanisms for FC Layer Mappings .....35 111 C.1 Login on cached Mapping Information .................... 35 112 C.2 Login on ARP parsing ................................... 35 113 C.3 Login to Everyone ...................................... 36 114 C.4 Static Table ........................................... 36 116 Appendix D: FC Layer Address Validation........................ 37 117 D.1 General Discussion ..................................... 37 118 D.2 FC Layer Address Validation in a Point-to-Point Topology 37 119 D.3 FC Layer Address Validation in a Private Loop Topology . 37 120 D.4 FC Layer Address Validation in a Public Loop Topology .. 38 121 D.5 FC layer Address Validation in a Fabric Topology ....... 38 123 Appendix E: Fibre channel Overview ............................ 39 124 E.1 Brief Tutorial ......................................... 39 125 E.2 Exchange, Information Unit, Sequence, and Frame ........ 40 126 E.3 Fibre Channel Header Fields ............................ 40 127 E.4 Code Points for FC Frame ............................... 43 128 E.4.1 With IP and ARP Packet .......................... 43 129 E.4.2 With FARP Command ............................... 44 131 Appendix F: Fibre Channel Protocol Considerations.............. 47 132 F.1 Reliability in Class 3 ................................. 47 133 F.2 Continuously Increasing SEQ_CNT ........................ 47 135 Appendix G: Acronyms and Glossary of FC Terms ................. 48 137 1. Introduction 139 Fibre Channel (FC) is a gigabit speed networking technology primarily 140 used for Storage Area Networking (SAN). FC is standardized under 141 American National Standard for Information Systems of the National 142 Committee for Information Technology Standards (NCITS) and has 143 specified a number of documents describing its protocols, operations, 144 and services. 146 Need: 148 Currently, Fibre Channel is predominantly used for communication 149 between storage devices and servers using the SCSI protocol, with 150 most of the servers still communicating with each other over LANs. 151 Although, there exists a Fibre Channel Standard [3] that has 152 architecturally defined support for IP encapsulation and address 153 resolution, it is inadequately specified. ([3] prohibits broadcasts, 154 thus loops are not covered; [10] has no support for Class 3). 156 This has lead to a nonstandard way of using IP over FC in the past. 157 Once such a standard method is completely specified, servers can 158 directly communicate with each other using IP over FC, possibly 159 boosting performance in Server host-to-host communications. This 160 technique will be especially useful in a Clustering Application. 162 Objective and Scope: 164 The major objective of this specification is to promote inter- 165 operable implementations of IPv4 over FC. This specification 166 describes a method for encapsulating IPv4 and Address Resolution 167 Protocol (ARP) packets over FC. This specification accommodates any 168 FC topology (loop, fabric, or point-to-point) and any FC class of 169 service (1, 2 or 3). This specification also describes a FC Address 170 Resolution Protocol(FARP) for associating World Wide Port Names (MAC 171 addresses) and FC Port identifiers. 173 A secondary objective of this specification is to describe other 174 optional address resolution mechanisms: 176 - Other FARP mechanisms that directly build IPv4 address and FC 177 Port Identifier (Port_ID) associations. 178 - Inverse ARP (InARP) that allows learning the IP address of a 179 remote node given its World Wide Port Name (WW_PN) and Port_ID. 181 Organization: 183 Section 2 states the problem that is solved in this specification. 184 Section 3 describes the techniques used for encapsulating IP and ARP 185 packets in a FC sequence. Section 4 discusses the ARP protocol(IP 186 address to WW_PN). Section 5 discusses the FARP protocol used in FC 187 Layer mappings (WW_PN to Port_ID). Section 6 describes the 188 "Exchange" Management in FC. Section 7 is a summary section and 189 provides a quick reference to FC header settings, FC Link Service 190 Commands, supported features in ARP, FARP, InARP, FC Sequences, FC 191 Exchanges, and FC Login Parameters. Section 8 discusses security. 192 Section 9 acknowledges the technical contributors of this document. 193 Section 10 provides a list of references, and Section 11 provides the 194 authors' addresses. 196 Appendix A discusses other optional FARP mechanisms. Appendix B 197 discusses the Inverse ARP protocol(WW_PN to IP address) as an 198 alternate and optional way of building MAC and IP address 199 associations. Appendix C lists some informal mechanisms for FC Layer 200 Mappings. Appendix D provides a discussion on validation of the FC- 201 layer mappings for the different FC topologies. Appendix E provides 202 a brief overview of the FC Protocols and Networks. Appendix F 203 addresses reliability in Class 3 and Sequence Count FC Protocol 204 issues. Appendix G provides a list of acronyms and a glossary of FC 205 Terms used in this specification. 207 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 208 "SHOULD", SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 209 document are to be interpreted as described in RFC 2119 [19]. 211 2. Problem Statement 213 This specification addresses two problems: 215 - A format definition and encapsulation mechanism for IPv4 216 and ARP packets over FC 217 - Mechanisms for Address Resolution 219 As noted earlier, the existing FC Standard [3] ([10]) is inadequate 220 to solve the above problems. A solution to both problems was first 221 proposed by the Fibre Channel Association (FCA)[1]. FCA is an 222 industry consortium of FC vendor companies and not a Standards Body. 223 This specification is based on the proposed solution in [1] and 224 builds on it. 226 Address Resolution is concerned with resolving IP addresses to WW_PN 227 (MAC address) and WW_PN to FC Port Identifiers (Port_ID). ARP 228 provides a solution to the first resolution problem and FARP the 229 second. 231 An optional FARP mechanism resolves IP address directly to FC 232 Port_IDs. This is useful in some upper layer applications. 234 InARP is another optional mechanism that resolves WW_PN and Port_ID 235 to an IP address. InARP is useful when a node after performing a 236 PLOGI with a remote node, knows its WW_PN and Port_ID, but not its IP 237 address. 239 3. IP and ARP Encapsulation 241 3.1 FC Frame Format 243 All FC frames have a standard format much like LAN 802.x protocols. 245 (See Appendix E and F). However, the exact size of each frame varies 246 depending on the size of the variable fields. The size of the 247 variable field ranges from 0 to 2112-bytes as shown in the FC Frame 248 Format in Fig. 1. 250 +------+--------+-----------+----//-------+------+------+ 251 | SOF |Frame |Optional | Frame | CRC | EOF | 252 | (4B) |Header |Header | Payload | (4B) | (4B) | 253 | |(24B) |<----------------------->| | | 254 | | | Data Field = (0-2112B) | | | 255 +------+--------+-----------+----//-------+------+------+ 257 Fig. 1 FC Frame Format 259 The Start of Frame (SOF) and End of Frame (EOF) are both 4-bytes long 260 and act as frame delimiters. 262 The CRC is 4-bytes long and uses the same 32-bit polynomial used in 263 FDDI and is specified in ANSI X3.139 Fiber Distributed Data 264 Interface. 266 The Frame Header is 24-bytes long and has several fields that are 267 associated with the identification and control of the payload. Some 268 of the values and options for this field that are relevant to the IP 269 and ARP payloads are discussed in Section 7. 271 Current FC Standards allow up to 3 Optional Header fields [20]: 273 - Network_Header (16-bytes) 274 - Association_Header (32-bytes) 275 - Device_Header (up to 64-bytes). 277 The IP and ARP FC Sequences SHALL carry only the Network_Header field 278 which is 16-bytes long. Other types of optional headers SHALL NOT be 279 used. The Network_Header is REQUIRED in all ARP packets and in the 280 first frame of a logical sequence carrying an IP payload as described 281 below. 283 An application level payload such as IP is called an Information Unit 284 at the FC-4 Level. Lower FC levels map this to a FC Sequence. (See 285 Appendix E.2 for a description of Sequences and Information Units.) 286 Typically, a Sequence consists of more than one frame. Larger user 287 data is segmented and reassembled using two methods: Sequence Count 288 and Relative Offset [18]. With the use of Sequence Count, data blocks 289 are sent using frames with increasing sequence counts (modulo 65536) 290 and it is quite straightforward to detect the first frame that 291 contains the Network_Header. When Relative Offset is used, as frames 292 arrive, some computation is required to detect the first frame that 293 contains the Network_Header. Sequence Count and Relative Offset field 294 control information, is carried in the FC Header. 296 In FC, the physical temporal ordering of the frames as it arrives at 297 a destination can be different from that of the order sent because of 298 traversing through a FC Network. 300 When IP forms the FC Payload then only the first frame of the logical 301 Sequence SHALL include the FC Network_Header. Fig. 2 shows the 302 logical First Frame and logical subsequent frames. Since frames may 303 arrive out of order, detection of the first frame of the logical FC 304 Sequence is necessary. 306 ARP packets map to a single frame FC Sequence and SHALL always carry 307 the FC Network_Header. 309 Note the definition of FC Data Field and FC Frame Payload in Fig. 1. 310 FC Data Field includes the FC Frame Payload and the FC Optional 311 Header, that is, Frame Payload definition does not include the FC 312 Optional Header. One or more Frame Payloads together make the FC 313 Sequence Payload as shown in Fig 2 and discussed further in Sections 314 3.2 and 3.4. FC Sequence Payload includes the mapped IP or ARP packet 315 along with the LLC/SNAP headers. 317 First Frame of a Logical FC Sequence 318 ---+------------+---------------------------+----------//----------+--- 319 | FC Header | FC Network_Header | FC Sequence Payload | 320 ---+------------+---------------------------+---------//-----------+--- 322 Subsequent Frames of a Logical FC Sequence 323 --+-----------+--------------//----------------+-- 324 | FC Header | Additional FC Sequence Payload | 325 --+-----------+-------------//-----------------+-- 327 Fig. 2 FC Network_Header in a Frame Sequence 329 The SOF, CRC, EOF control fields of the FC frame and other optional 330 headers have been omitted in the figure for clarity. 332 3.2 MTU 334 3.2.1 IP MTU 336 An FC Information Unit specific to each protocol such as IP is 337 defined in FC-4. This defines the upper bound on the size of the 338 information that can be transported. 340 Each IP or ARP Packet is mapped to a single FC Information Unit, 341 which in turn is mapped to a single FC Sequence. There is a one-to- 342 one mapping between an IP or ARP packet and a FC Sequence. 344 Fibre Channel limits the size of a single Information Unit to 2^32-1, 345 which is very large [2]. However, since the Maximum Transmission 346 Unit (MTU) size of an IPv4 packet does not exceed 65,536-bytes, the 347 mapped IPv4 size is far below the 2^32-1 limit. 349 IPv4 Packet definition includes the IP Payload and IP Headers - both 350 fixed and optional. The corresponding FC Sequence Payload includes 351 the LLC/SNAP Header and the IPv4 packet. 353 As noted above, the greatest length allowed for an IPv4 Packet 354 including any optional headers and independent of this standard is 355 65,536-bytes. However, limiting the IP MTU size to 65,280-bytes helps 356 in buffer resource allocation at N_Ports and also allows for up to 357 256-bytes of overhead. Since the FC Network_Header requires 16-bytes 358 and the IEEE 802.2 LLC/SNAP header requires 8 bytes, it leaves 232 359 bytes for future use. 361 All implementations SHALL restrict the IP MTU size to 65,280 bytes 362 and the corresponding FC Sequence Payload size to 65536-bytes. 364 3.2.2 Maximally Minimum IPv4 Packet 366 In order for IP fragmentation and reassembly to work properly it is 367 necessary that every implementation of IP be capable of transporting 368 a maximally minimum size IP packet without fragmentation. A maximally 369 minimum size IP Packet is defined as an IP Packet with an 8-byte 370 payload (the smallest possible non-zero payload size for a fragment) 371 and a 60-byte header (the largest possible header consisting of a 372 20-byte fixed part and a maximum size option field of 40-bytes) [17]. 374 All implementations SHALL support a FC Data Field of 92-bytes, which 375 is required to support 68-bytes of the maximally minimum sized IP 376 Packet, 16-bytes of the FC Network_Header, and 8-bytes of the 377 LLC/SNAP Header. 379 3.2.3 ARP MTU 381 The ARP packet has a fixed size of 28-bytes. All implementations 382 SHALL support a FC Data Field size of 52-bytes, which is required to 383 support 28-bytes of an ARP Packet, 16-bytes of the FC Network_Header, 384 and 8-bytes of the LLC/SNAP Header. Note that the minimum MTU 385 requirement for ARP is already covered by the minimum MTU requirement 386 for IP but it is mentioned here for completeness. 388 The InARP packet is identical in size to the ARP and the same MTU 389 requirements apply. 391 3.2.4 FC Data Field containing FARP Packet 393 The FARP Command is a FC Extended Link Service (ELS) command and maps 394 directly to the FC Data Field without the LLC/SNAP or the FC 395 Network_Header. The FARP Command has a fixed size of 76-bytes. 396 Because FARP operates purely in the FC space, it places no special 397 MTU requirements in this specification. 399 3.3 FC Port and Node Network Addresses 401 FC devices are identified by Nodes and their Ports. A Node is a 402 collection of one or more Ports identified by a unique nonvolatile 403 64-bit World Wide Node name (WW_NN). Each Port in a node, is 404 identified with a unique nonvolatile 64-bit World Wide Port name 405 (WW_PN), and a volatile Port Identifier (Port_ID). 407 Port_IDs are 24-bits long. A FC frame header carries a Source Port_ID 408 (S_ID) and a Destination Port_ID (D_ID). The Port_ID of a given port 409 is volatile. (The mechanism(s) by which a Port_ID may change in a FC 410 topology is outside the scope of this document. See Appendix D). 412 The FC Network_Header is normally optional in FC Standards, but 413 REQUIRED in this specification. A FC Network_Header carries source 414 and destination WW_PNs. A WW_PN consists of a 60-bit Network Address 415 and a upper 4-bit Network Address Authority (NAA) field as shown in 416 Fig. 3. The 4-bit NAA field is used to distinguish between the 417 various name registration authorities used to define the Network 418 Address [2]. 420 In this specification, both the Source and Destination 4-bit NAA 421 identifiers SHALL be set to binary '0001' indicating that an IEEE 422 48-bit MAC address is contained in the lower 48 bits of the network 423 address fields. The high order 12 bits in the network address fields 424 SHALL be set to 0x0000. The NAA field value equal to binary '0001' 425 allows FC networks to be bridged with other FC networks or 426 traditional LANs. 428 +--------+---------------------------------------+ 429 | D_NAA |Network_Dest_Address (High-order bits) | 430 |(4 bits)| (28 bits) | 431 +--------+---------------------------------------+ 432 | Network_Dest_Address (Low-order bits) | 433 | (32 bits) | 434 +--------+---------------------------------------+ 435 | S_NAA |Network_Source_Address(High-order bits)| 436 |(4 bits)| (28 bits) | 437 +--------+---------------------------------------+ 438 | Network_Source_Address (Low-order bit) | 439 | (32 bits) | 440 +--------+---------------------------------------+ 442 Fig. 3 Format of the Network_Header Field 444 3.4 FC Sequence Payload Format 446 FC Payload with IP: 448 An FC Sequence Payload carrying an IP and ARP packet SHALL use the 449 formats shown in Figs. 4 and 5 respectively. Both formats use the 450 8-byte LLC/SNAP header. 452 +-----------------+-----------+------------+-------------//----------+ 453 | LLC/SNAP Header | IP Header | Opt.IP Hdr.| IP Data | 454 | (8 bytes) | (20 bytes)| (40 bytes | (65280 -IP Header | 455 | | | Max) | - Opt. IP Hdr.) bytes | 456 +-----------------+-----------+------------+-------------//----------+ 458 Fig. 4 Format of FC Sequence Payload carrying IP 460 FC Sequence Payload with ARP: 462 As noted earlier, FC frames belonging to the same Sequence may be 463 delivered out of order over a Fabric. If the Relative Offset method 464 is used to identify FC Sequence Payload fragments, then the IP Header 465 MUST appear in the frame that has a relative offset of 0. 467 +-----------------+-------------------+ 468 | LLC/SNAP Header | ARP Packet | 469 | (8 bytes) | (28 bytes) | 470 +-----------------+-------------------+ 472 Fig. 5 Format of FC Sequence Payload carrying ARP 474 FC Sequence Payload with FARP: 476 FARP Protocol commands are directly mapped to the Frame Sequence 477 Payload and are 76-bytes long. No LLC/SNAP Header or FC 478 Network_Header is used and therefore the FC Data Field size simply 479 consists of the FC Sequence Payload. 481 LLC: 483 A Logical Link Control (LLC) field along with a Sub Network Access 484 Protocol (SNAP) field is a method used to identify routed and bridged 485 non-OSI protocol PDUs and is defined by IEEE 802.2 and applied to IP 486 in [8]. In LLC Type 1 operation (i.e., unacknowledged connectionless 487 mode), the LLC header is 3-bytes long and consists of a 1-byte 488 Destination Service Access Point (DSAP)field, a 1-byte Source Service 489 Access Point (SSAP)field, and a 1-byte Control field as shown in Fig. 490 6. 492 +----------+----------+----------+ 493 | DSAP | SSAP | CTRL | 494 | (1 byte) | (1 byte | (1 byte) | 495 +----------+----------+----------+ 496 Fig. 6 LLC Format 498 The LLC's DSAP and SSAP values of 0xAA indicate that an IEEE 802.2 499 SNAP header follows. The LLC's CTRL value equal to 0x03 specifies an 500 Unnumbered Information Command PDU. In this specification the LLC 501 Header value SHALL be set to 0xAA-AA-03. Other values of DSAP/SSAP 502 indicate support for other protocols and SHALL NOT be used in this 503 specification. 505 SNAP: 507 The SNAP Header is 5-bytes long and consists of a 3-byte 508 Organizationally Unique Identifier (OUI) field and a 2-byte Protocol 509 Identifier (PID) as shown in Fig. 7 511 +------+------+-------+------+------+ 512 | OUI | PID | 513 | ( 3 bytes) | (2 bytes) | 514 +------+------+-------+------+------+ 515 Fig. 7 SNAP Format 517 SNAP was invented to "encapsulate" LAN frames within the payload. 518 The SNAP OUI value equal to 0x00-00-00 specifies that the PID is an 519 EtherType (i.e., routed non-OSI protocol). 521 The SNAP OUI value equal to 0x00-80-C2 indicates Bridged Protocols. 523 With the OUI value set to 0x00-00-00, the SNAP PID value equal to 524 0x08-00 indicates IP and a PID value equal to 0x08-06 indicates ARP 525 (or InARP). 527 The complete LLC/SNAP Header is shown in Fig. 8. 529 +----------+----------+----------+-------+-------+-------+-------+------+ 530 | DSAP | SSAP | CTRL | OUI | PID | 531 | (1 byte) | (1 byte) | (1 byte) | ( 3 bytes) | (2 bytes | 532 +----------+----------+----------+-------+-------+-------+-------+------+ 534 Fig. 8 LLC/SNAP Header 535 4. ARP 537 4.1 Address Resolution 539 Address Resolution in this specification is primarily concerned with 540 associating IP addresses with FC Port addresses. As described 541 earlier, FC device ports have two types of addresses: 543 - a non-volatile unique 64-bit address called World Wide Port_Name 544 (WW_PN) 545 - a volatile 24-bit address called a Port_ID 547 The Address Resolution mechanism therefore will need two levels of 548 mapping: 550 1. A mapping from the IP address to the WW_PN (i.e., IEEE 551 48-bit MAC address) 553 2. A mapping from the WW_PN to the Port_ID (see Appendix G for a 554 definition of Port_ID) 556 The address resolution problem is compounded by the fact that the 557 Port_ID is volatile and the second mapping MUST be valid before use. 558 Moreover, this validation process can be different depending on the 559 FC network topology used. Appendix D provides a discussion on 560 validation for the different FC topologies. 562 Architecturally, the first level of mapping and control operation is 563 handled by the Address Resolution Protocol (ARP), and the second 564 level by the FC Address Resolution Protocol (FARP). FARP is described 565 in Section 5. 567 Other optional mechanisms in FARP that directly map an IP address to 568 a Port_ID, or WW_NN to a Port_ID are described in Appendix A. 570 The Inverse Address Resolution Protocol (InARP) is yet another 571 optional mechanism that resolves WW_PN and Port_IDs to IP addresses. 572 InARP is described in Appendix B. 574 4.2 ARP Packet Format 576 The Address Resolution Protocol (ARP) given in [9] was designed to be 577 a general purpose protocol, and to work with many network 578 technologies, and with many upper layer protocols. Fig 9 shows the 579 ARP packet format based on [9], where the upper layer protocol uses a 580 4 octet protocol (IP) address and the network technology uses six- 581 octet hardware (MAC) address. 583 The ARP consists of two packet types - Request and Reply - and the 584 ARP Packet is 28-bytes long in this specification. The ARP Packet 585 fields are common to both ARP Requests and ARP Replys. 587 The LLC/SNAP encapsulated ARP Request Packet is mapped to a FC 588 Broadcast Sequence and the exact mechanism used to broadcast a FC 589 Sequence depends on the FC topology. This is discussed later in this 590 section. Compliant ARP Request Broadcasts SHALL include 591 Network_Headers. 593 The LLC/SNAP encapsulated ARP Reply Packet is mapped to a FC 594 Sequence. Compliant ARP Replys SHALL include Network_Headers. 596 Note that in all discussions to follow, the WW_PN and the 48-bit MAC 597 address conceptually mean the same thing. 599 The 'HW Type' field SHALL be set to 0x00-01. 601 Technically, the correct HW Type value should be set to 0x00-06 602 according to RFC 1700 indicating IEEE 802 networks. However, as a 603 practical matter a HW Type value of 0x00-06 is known to cause 604 rejections from some Ethernet end stations when FC is bridged to 605 Ethernet. Translational bridges are normally expected to change this 606 field from Type 6 to 1 and vice versa under these configurations, but 607 many do not. It is because of this reason that the Type Code is set 608 to 1 rather than 6. However, both HW Type values of 0x00-01 and 609 0x00-06 SHALL be accepted. 611 The 'Protocol' field SHALL be set to 0x08-00 indicating IP protocol. 613 The 'HW Addr Length' field SHALL be set to 0x06 indicating 6-bytes of 614 HW address. 616 The 'Protocol Addr Length' field SHALL be set to 0x04 indicating 617 4-bytes of IPv4 address. 619 The 'Operation' Code field SHALL be set as follows: 621 0x00-01 for ARP Request 622 0x00-02 for ARP Reply 624 The 'HW Addr of Sender' field SHALL be the 6-byte IEEE MAC address of 625 the sender. It is either the Requester (ARP Request) or the Responder 626 (ARP Reply) address. 628 The 'Protocol Addr of Sender' field SHALL be the 4-byte IP address of 629 the Requester (ARP Request) or that of the Responder (ARP Reply). 631 The 'HW Addr of Target' field SHALL be set to zero during an ARP 632 Request and to the 6-byte MAC address of the Requester (ARP Request) 633 in an ARP Reply. 635 The 'Protocol Addr of Target' field SHALL be set to the 4-byte IP 636 address of the Responder (ARP Reply) in a ARP Request, and to the 637 4-byte IP address of the Requester (ARP Request) in an ARP Reply. 639 +-------------------------+ 640 | HW Type | 2 bytes 641 +-------------------------+ 642 | Protocol | 2 bytes 643 +-------------------------+ 644 | HW Addr Length | 1 byte 645 +-------------------------+ 646 | Protocol Addr Length | 1 byte 647 +-------------------------+ 648 | Op Code | 2 bytes 649 +-------------------------+ 650 | HW Addr of Sender | 6 bytes 651 +-------------------------+ 652 | Protocol Addr of Sender | 4 bytes 653 +-------------------------+ 654 | HW Addr of Target | 6 bytes 655 +-------------------------+ 656 | Protocol Addr of Target | 4 bytes 657 +-------------------------+ 658 Total 28 bytes 659 Fig. 9 ARP Packet Format 661 4.3 ARP Layer Mapping and Operation 663 Whenever a FC port wishes to send IP data to another FC port, then 664 the following steps are taken: 666 1. The source port should first consult its local mapping tables to 667 determine the . 669 2. If such a mapping is found, then the source sends the IP 670 data to the port whose WW_PN address was found in the table. 672 3. If such a mapping is not found, then the source sends an 673 ARP Request broadcast to its connected FC network in 674 anticipation of getting a reply from the correct destination 675 along with its WW_PN. 677 4. When an ARP Request Broadcast frame is received by a node with 678 the matching IP address, it generates an ARP Reply. 679 Since the ARP Reply must be addressed to a specific 680 destination Port_ID, the FC layer mapping between the WW_PN 681 and Port_ID (of the ARP Request orginator) MUST be 682 valid before the reply is sent. 684 5. If no node has the matching IP address, the result is a silent 685 behavior. 687 4.4 ARP Broadcast in a Point-to-Point Topology 689 The ARP Request (Broadcast) and Reply mechanism described above 690 still apply, although there is only one node that receives the ARP 691 Request. 693 4.5 ARP Broadcast in a Private Loop Topology 695 In a private loop, the ARP Request Broadcast frame is sent using 696 the broadcast method specified in the FC-AL [7]standard. 698 1. The source port first sends an Open Broadcast 699 Replicate primitive (OPN(fr))Signal forcing all the ports in 700 the loop (except itself), to replicate the frames that they 701 receive while examining the frame header's Destination_ID 702 field. 704 2. The source port then removes this OPN(fr) signal when it 705 returns to it. 707 3. The loop is now ready to receive the ARP broadcast. 708 The source now sends the ARP Request as a single-frame 709 Broadcast Sequence in a Class 3 frame with the following 710 FC Header D_ID field and F_CTL bits setting: 712 Destination ID : D_ID = 0xFF-FF-FF 714 Sequence Initiative : SI=0 716 Last Sequence : LS=1 718 End Sequence : ES=1. 720 4. A compliant ARP Broadcast Sequence frame SHALL include the 721 Network_Header with destination MAC address set to 722 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 724 5. The destination port recognizing its IP address in the ARP 725 Request packet SHALL respond with an ARP Reply. 727 4.6 ARP Broadcast in a Public Loop Topology 729 The following steps will be followed when a port is configured in a 730 public loop: 732 1. A public loop device attached to a fabric through a FL_Port 733 MUST NOT use the OPN(fr) signal primitive. Rather, it 734 sends the broadcast sequence to the FL_Port at AL_PA = 0x00. 736 2. A FC Fabric propagates the broadcast to all other ports 737 including the FL_Port which the broadcast arrived on. This 738 includes all F_Ports, and other FL_Ports. 740 3. On each FL_Port, the fabric propagates the broadcast by first 741 using the primitive signal OPNfr, in order to prepare the loop 742 to receive the broadcast sequence. 744 4. A Broadcast Sequence is now sent on all ports (all FL_ports, 745 F_Ports) in Class 3 frame with: 747 Destination ID : D_ID = 0xFF-FF-FF 749 Sequence Initiative : SI=0 751 Last Sequence : LS=1 753 End Sequence : ES=1. 755 5. A compliant ARP Broadcast Sequence frame SHALL include the 756 Network_Header with destination MAC address set to 757 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 759 6. The destination port recognizing its IP address in the ARP 760 Request packet SHALL respond with an ARP Reply. 762 4.7 ARP Operation in a Fabric Topology 764 1. Nodes directly attached to fabric do not require the OPN(fr) 765 primitive signal. 767 2. A Broadcast Sequence is now sent on all ports (all FL_ports, 768 F_Ports) in Class 3 frame with: 770 Destination ID : D_ID = 0xFF-FF-FF 772 Sequence Initiative : SI=0 774 Last Sequence : LS=1 776 End Sequence : ES=1. 778 3. A compliant ARP Broadcast Sequence frame SHALL include the 779 Network_Header with destination MAC address set to 780 0xFF-FF-FF-FF-FF-FF and with NAA = b'0001' 782 4. The destination port recognizing its IP address in 783 the ARP packet SHALL respond with an ARP Reply. 785 5. FARP 787 5.1 Scope 789 FC Layer Mapping between the WW_PN and the Port_ID is independent of 790 the ARP mechanism and is more closely associated with the details of 791 the FC protocols. Name Server and FC Address Resolution Protocol 792 (FARP) are two formal mechanisms that can be used to create and 793 maintain WW_PN to Port_ID tables. 795 FARP is a method using Extended Link Service (ELS) commands that 796 resolves mappings. The WW_PN to Port_ID address 797 resolution using FARP is especially useful in instances where the 798 Login table entries at a node expire and a Name Server is not 799 available. It is outside the scope of this document to describe Name 800 Server. (See [4].) 802 Additional address matching mechanisms that resolve 803 and mapping have been added to FARP. These 804 additional mechanisms are optional and described in Appendix A. 805 Direct IP address to Port_ID mapping is useful in applications where 806 there is no visibility of the MAC address. 808 Other less formal FC Layer Mapping mechanisms are described in 809 Appendix C. 811 Since Port_IDs are volatile, all mapped Port_IDs at all times MUST 812 be valid before use. There are many events that can invalidate this 813 mapping. Appendix D discusses conditions when such a validation is 814 required. 816 5.2 FARP Overview 818 The FARP protocol uses two ELS commands - FARP-REQ and FARP-REPLY. 820 Note: In the following discussion 'Requester' means the node 821 issuing the FARP-REQ ELS message; 'Responder' means the 822 node replying to the request by sending the FARP-REPLY 823 command. 825 The FARP-REQ ELS Broadcast Request command is used to retrieve a 826 specific node's current Port_ID given its unique WW_PN. This Port_ID 827 is sent in a FARP-REPLY unicast command. 829 The FARP-REQ may indicate that the Responder: 831 - Perform only a Login with it (Requester) 833 - Send only a FARP-REPLY 835 - Perform a Login and send a FARP-REPLY. 837 No sequence initiative is transferred with the FARP-REQ and therefore 838 no Reply (ACCEPT or REJECT) follows this command. 840 Since a Sequence Initiative is transferred with the FARP-REPLY, 841 either a ACCEPT or REJECT follows this command as a response. 843 Reception of a FARP-REQ requires a higher level entity at the 844 responding node to send a FARP-REPLY or perform a Port Login. 846 You do not have to be logged in to issue a FARP Request. Also, you do 847 not have to be logged in to the FARP Requester to issue a FARP-REPLY. 849 The FARP Protocol Steps: 851 FARP-REQ (ELS broadcast) Request Sequence 853 (No Reply Sequence) 855 FARP-REPLY (ELS command) Sequence 857 Accept/Reject Reply Sequence 859 The FARP Protocol Format [2] and Size: 861 FT_1, 76-bytes fixed size 863 The FARP Protocol Addressing: 865 - In a FARP-REQ, the S_ID in the FC Header designates the 866 Requester's Port ID. The D_ID in the FC Header is the 867 broadcast identifier, 0xFF-FF-FF. 869 - In a FARP-REPLY, the S_ID in the FC Header designates the 870 Responder's Port_ID. The D_ID in the FC Header is the 871 Requester's Port_ID. 873 5.3 FARP Command Format 875 FARP-REQ and FARP-REPLY commands have identical formats (76-bytes 876 fixed size) and fields but use different command codes. See tables 877 that follow. 879 Following is a description of the address fields in the FARP 880 Commands. 882 Port_ID of Requester: 884 It is the 24-bit Port_ID used in the S_ID field of the FC Header of a 885 FARP-REQ. It is supplied by the Requester in a FARP-REQ and retained 886 in a FARP-REPLY. 888 Port_ID of Responder: 890 It is the 24-bit Port_ID used in the S_ID field of the FC Header of a 891 FARP-REPLY. It SHALL be set to 0x00-00-00 in a FARP-REQ. It is 892 supplied by the Responder in a FARP-REPLY. 894 +---------------------------------------------------------------------+ 895 | FARP-REQ Command | 896 +-------------------------------------+---------+---------------------+ 897 | Field | Size | Remarks | 898 | | (Bytes) | | 899 +-------------------------------------+---------+---------------------+ 900 | 0x54-00-00-00 | 4 | Request Command Code| 901 +-------------------------------------+---------+---------------------+ 902 | Match Address Code Points | 1 | Indicates Address | 903 | | | Matching Mechanism | 904 +-------------------------------------+---------+---------------------+ 905 | Port_ID of Requester | 3 | Supplied by | 906 | | | Requester = | 907 | | | S_ID in FC Header | 908 +-------------------------------------+---------+---------------------+ 909 | Responder Flags | 1 | Response Action to | 910 | | | be taken | 911 +-------------------------------------+---------+---------------------+ 912 | Port_ID of Responder | 3 | Set to 0x00-00-00 | 913 +-------------------------------------+---------+---------------------+ 914 | WW_PN of Requester | 8 |Supplied by Requester| 915 +-------------------------------------+---------+---------------------+ 916 | WW_NN of Requester | 8 |OPTIONAL; | 917 | | |See Appendix A | 918 +-------------------------------------+---------+---------------------+ 919 | WW_PN of Responder | 8 |Supplied by Requester| 920 +-------------------------------------+---------+---------------------+ 921 | WW_NN of Responder | 8 |OPTIONAL; see App. A | 922 +-------------------------------------+---------+---------------------+ 923 | IP Address of Requester | 16 |OPTIONAL; see App. A | 924 +-------------------------------------+---------+---------------------+ 925 | IP Address of Responder | 16 |OPTIONAL; see App. A | 926 +-------------------------------------+---------+---------------------+ 928 WW_PN: 930 This address field is used with the b'001', b'011', b'101, b'111', 931 Match Address Code Points. See Match Address Code Point Table below. 932 The Requester supplies the unique 8-byte WW_PN of the Requester and 933 the Responder. It is retained in a FARP-REPLY. 935 WW_NN: 937 The WW_NN address field is used with Match Address Code Points 938 b'010', b'011', b'110', and b'111', which are all optional. Its usage 939 is fully described in Appendix A. When the WW_NN field is not used it 940 SHALL be either set to '0' or a valid non-zero address. 942 IPv4: 944 The IPv4 address field is used with the Match Address Code Points 945 b'100', b'101', b'110', and b'111', which are all optional. Its usage 946 is fully described in Appendix A. When the IP Address field is not 947 used it SHALL be either set to '0' or a valid IP address. A valid IP 948 address consists of the 32-bit IPv4 Address with the upper 96 bits 949 set to '0'. 951 +---------------------------------------------------------------------+ 952 | FARP-REPLY Command | 953 +-------------------------------------+---------+---------------------+ 954 | Field | Size | Remarks | 955 | | (Bytes) | | 956 +-------------------------------------+---------+---------------------+ 957 | 0x55-00-00-00 | 4 | Reply Command Code | 958 +-------------------------------------+---------+---------------------+ 959 | Match Address Code Points | 1 | Not Used and | 960 | | | Unchanged from the | 961 | | | FARP-REQ | 962 +-------------------------------------+---------+---------------------+ 963 | Port_ID of Requester | 3 | Extracted from | 964 | | | FARP-REQ | 965 +-------------------------------------+---------+---------------------+ 966 | Responder Flags | 1 | Not Used and | 967 | | | Unchanged from the | 968 | | | FARP-REQ | 969 +-------------------------------------+---------+---------------------+ 970 | Port_ID of Responder | 3 | Supplied by | 971 | | | Responder = | 972 | | | S_ID in FC Header | 973 +-------------------------------------+---------+---------------------+ 974 |WW_PN of Requester | 8 |Supplied by Requester| 975 +-------------------------------------+---------+---------------------+ 976 |WW_NN of Requester | 8 |OPTIONAL; see App. A | 977 +-------------------------------------+---------+---------------------+ 978 |WW_PN of Responder | 8 |Supplied by Requester| 979 +-------------------------------------+---------+---------------------+ 980 |WW_NN of Responder | 8 |OPTIONAL; see App. A | 981 +-------------------------------------+---------+---------------------+ 982 |IP Add. of Requester | 16 |OPTIONAL; see App. A | 983 +-------------------------------------+---------+---------------------+ 984 |IP Address of Responder | 16 |OPTIONAL; see App. A | 985 +-------------------------------------+---------+---------------------+ 987 5.4 Match Address Code Points 989 For each receipt of the FARP-REQ Broadcast ELS, the recipients match 990 one or more addresses based on the encoded bits of the "FARP Match 991 Address Code Points" field shown in the table below. FARP operation 992 with the Match Address Code Point equal to b'001' is described in 993 this section. Other code points are OPTIONAL and are discussed in 994 Appendix A. The upper 5 bits of the Match Address Code Point byte are 995 unused and their use not currently defined. 997 When a node receives a FARP-REQ with Code Point b'001', it checks its 998 WW_PN against the one set in 'WW_PN of Responder' field of the FARP- 999 REQ command. If there is a match, then the node issues a response 1000 according to the action indicated by the FARP Responder Flag. See 1001 table below. 1003 WW_NN and IPv4 address fields are not used with the b'001' Code Point 1004 operation. They SHALL be set to '0' or a valid address either by the 1005 Requester or the Requester and the Responder. 1007 Note that there can be utmost one FARP-REPLY per FARP-REQ. 1008 +------------------------------------------------------------------+ 1009 | Match Address Code Points | 1010 +------------------------------------------------------------------+ 1011 | LSBits | Bit name | Action | 1012 +-----------+--------------------+---------------------------------+ 1013 | 000 | Reserved | | 1014 +-----------+--------------------+---------------------------------+ 1015 | 001 | MATCH_WW_PN | If 'WW_PN of Responder' = | 1016 | | | Node's WW_PN then respond | 1017 +-----------+--------------------+---------------------------------+ 1018 | 010 | MATCH_WW_NN | OPTIONAL; see Appendix A | 1019 +-----------+--------------------+---------------------------------+ 1020 | 011 | MATCH_WW_PN_NN | OPTIONAL; see Appendix A | 1021 +-----------+--------------------+---------------------------------+ 1022 | 100 | MATCH_IPv4 | OPTIONAL; see Appendix A | 1023 +-----------+--------------------+---------------------------------+ 1024 | 101 | MATCH_WW_PN_IPv4 | OPTIONAL; see Appendix A | 1025 +-----------+--------------------+---------------------------------+ 1026 | 110 | MATCH_WW_NN_IPv4 | OPTIONAL; see Appendix A | 1027 +-----------+--------------------+---------------------------------+ 1028 | 111 | MATCH_WW_PN_NN_IPv4| OPTIONAL; see Appendix A | 1029 +-----------+--------------------+---------------------------------+ 1031 5.5 Responder Flags 1033 The Responder Flags define what Responder action to take if the 1034 result of the Match Address Code Points is successful. 'Responder 1035 Flags' is an 8-bit field (bits 0-7) and is defined in the table 1036 below. This field is used only in a FARP-REQ. This field is retained 1037 unchanged in a FARP-REPLY. If no bits are set, the Responder will 1038 take no action. 1040 +----------+-------------------------------------------------------+ 1041 | | FARP Responder Flag | 1042 +----------+----------------+--------------------------------------+ 1043 | Bit | Bit Name | Action | 1044 | Position | | | 1045 +----------+----------------+--------------------------------------+ 1046 | 0 | INIT_P_LOGI | Initiate a P_LOGI to the Requester | 1047 +----------+----------------+--------------------------------------+ 1048 | 1 | INIT_REPLY | Send FARP_REPLY to Requester | 1049 +----------+----------------+--------------------------------------+ 1050 | 2 to 7 | Reserved | | 1051 +----------+----------------+--------------------------------------+ 1053 If INIT_P_LOGI bit is set then, a Login is performed with the port 1054 identified by "Port_ID of Requester" field. 1056 If INIT_REPLY is set then, a FARP-REPLY is sent to the Port 1057 Identified by "Port_ID of Requester" field. 1059 If both bits are set at the same time, then both Actions are 1060 performed. 1062 All other bit patterns are undefined at this time and are reserved 1063 for possible future use. 1065 5.6 FARP Support Requirements 1067 Responder action - FARP-REPLY and/or Port Login - for a successful 1068 MATCH_WW_PN is always REQUIRED. If there is no address match then a 1069 silent behavior is specified. 1071 Support for all other Match Address Code Points is OPTIONAL and a 1072 silent behavior from the Responder is valid when it is not supported. 1073 Recipients of the FARP-REQ ELS SHALL NOT issue a Service Reject 1074 (LS_RJT) if FARP OPTIONAL mechanisms are not supported. 1076 In all cases, if there are no matches, then a silent behavior is 1077 specified. 1079 If an implementation issues a FARP-REQ with a Match Address Code 1080 Point that is OPTIONAL, and fails to receive a response, and the 1081 implementation has not obtained the Port_ID of the Responder's port 1082 by other means (e.g., prior FARP-REQ with other Code Points), then 1083 the implementation SHALL reattempt the FARP-REQ with the MATCH_WW_PN 1084 Code Point. 1086 Getting multiple FARP Replies corresponding to a single FARP-REQ 1087 should normally never occur. It is beyond the scope of this document 1088 to specify conditions under which this error may occur or what the 1089 corrective action ought to be. 1091 6. Exchange Management 1093 6.1 Exchange Origination 1095 FC Exchanges shall be established to transfer data between ports. 1096 Frames on IP exchanges shall not transfer Sequence Initiative. See 1097 Appendix E for a discussion on FC Exchanges. 1099 6.2 Exchange Termination 1101 With the exception of the recommendations in Appendix F, Section F.1, 1102 "Reliability in Class 3", the mechanism for aging or expiring 1103 exchanges based on activity, timeout, or other method is outside the 1104 scope of this document. 1106 Exchanges may be terminated by either port. The Exchange Originator 1107 may terminate Exchanges by setting the LS bit, following normal FC 1108 standard FC-PH [2] rules. This specification prohibits the use of the 1109 NOP ELS with LS set for Exchange termination. 1111 Exchanges may be torn down by the Exchange Originator or Exchange 1112 Responder by using the ABTS_LS protocol. The use of ABTS_LS for 1113 terminating aged Exchanges or error recovery is outside the scope of 1114 this document. 1116 The termination of IP Exchanges by Logout is discouraged, since this 1117 may terminate active Exchanges on other FC-4s. 1119 7. Summary of Supported Features 1121 Note: 'Settable' means support is as specified in the relevant 1122 standard; all other key words are as defined earlier in this 1123 document. 1125 7.1 FC-4 Header 1126 +--------------------------------------------------------------------+ 1127 | Feature | Support | Notes | 1128 +--------------------------------------------------------------------+ 1129 | Type Code ( = 5) ISO8802-2 LLC/SNAP | REQUIRED | 2 | 1130 | Network_Headers | REQUIRED | 3 | 1131 | Other Optional Headers | MUST NOT | | 1132 +--------------------------------------------------------------------+ 1133 Notes: 1135 1. This table applies only to FC-4 related data, such as IP and 1136 ARP packets. This table does not apply to link services and 1137 other non-FC-4 sequences (PLOGI, for example) that must occur 1138 for normal operation. 1140 2. The TYPE field in the FC Header (Word 2 bits 31-24) MUST 1141 indicate ISO 8802-2 LLC/SNAP Encapsulation (Type 5). This 1142 revision of the document focuses solely on the issues related 1143 to running IP and ARP over FC. All other issues are outside 1144 the scope of this document, including full support for IEEE 1145 802.2 LLC. 1147 3. DF_CTL field (Word 3, bits 23-16 of FC-Header) MUST indicate 1148 the presence of a Network_Header (0010 0000) on the First 1149 logical Frame of FC-4 Sequences. 1151 7.2 R_CTL 1153 R_CTL in FC-Header: Word 0, bits 31-24 1154 +--------------------------------------------------------------------+ 1155 | Feature | Support | Notes | 1156 +--------------------------------------------------------------------+ 1157 | Information Category (R_CTL Routing): | | | 1158 | | | | 1159 | FC-4 Device Data | REQUIRED | 1 | 1160 | Extended Link Data | REQUIRED | | 1161 | FC-4 Link Data | MUST NOT | | 1162 | Video Data | MUST NOT | | 1163 | Basic Link Data | REQUIRED | | 1164 | Link Control | REQUIRED | | 1165 | | | | 1166 | R_CTL information : | | | 1167 | | | | 1168 | Uncategorized | MUST NOT | | 1169 | Solicited Data | MUST NOT | | 1170 | Unsolicited Control | REQUIRED | | 1171 | Solicited Control | REQUIRED | | 1172 | Unsolicited Data | REQUIRED | 1 | 1173 | Data Descriptor | MUST NOT | | 1174 | Unsolicited Command | MUST NOT | | 1175 | Command Status | MUST NOT | | 1176 +--------------------------------------------------------------------+ 1177 Notes: 1179 1. This is REQUIRED for FC-4 (IP and ARP) packets 1181 - Routing bits of R_CTL field MUST indicate Device Data 1182 frames (0000) 1183 - Information Category of R_CTL field MUST indicate 1184 Unsolicited Data (0100) 1186 7.3 F_CTL 1188 F_CTL in FC-Header: Word 2, bits 23-0 1189 +--------------------------------------------------------------------+ 1190 | Feature | Support | Notes | 1191 +--------------------------------------------------------------------+ 1192 | Exchange Context | Settable | | 1193 | Sequence Context | Settable | | 1194 | First / Last / End Sequence (FS/LS/ES) | Settable | | 1195 | Chained Sequence | MUST NOT | | 1196 | Sequence Initiative (SI) | Settable | 1 | 1197 | X_ID Reassigned / Invalidate | MUST NOT | | 1198 | Unidirectional Transmit | Settable | | 1199 | Continue Sequence Condition | REQUIRED | 2 | 1200 | Abort Seq. Condition -continue and single Seq.| REQUIRED | 3 | 1201 | Relative Offset - Unsolicited Data | Settable | 4 | 1202 | Fill Bytes | Settable | | 1203 +--------------------------------------------------------------------+ 1204 Notes: 1206 1. For FC-4 frames, each N_Port shall have a dedicated OX_ID for 1207 sending data to each N_Port in the network and a dedicated 1208 RX_ID for receiving data from each N_Port as well. Exchanges 1209 are used in a unidirectional mode, thus setting Sequence 1210 Initiative is not valid for FC-4 frames. Sequence Initiative 1211 is valid when using Extended Link Services. 1213 2. This field is required to be 00, no information. 1215 3. Sequence error policy is requested by an exchange originator 1216 in the F_CTL Abort Sequence Condition bits in the first data 1217 frame of the exchange. For classes 1 and 2, ACK frame is 1218 required to be "continuous sequence". 1220 4. Relative offset prohibited on all other types (Information 1221 Category) of frames. 1223 7.4 Sequences 1224 +---------------------------------------------------------------------+ 1225 | Feature | Support |Notes | 1226 +---------------------------------------------------------------------+ 1227 | Class 2 open Sequences / Exchange | 1 | 1 | 1228 | Length of Seq. not limited by end-to-end credit | REQUIRED | 2 | 1229 | IP and ARP Packet and FC Data Field sizes | REQUIRED | 3 | 1230 | Capability to receive Sequence of maximum size | OPTIONAL | 4 | 1231 | Sequence Streaming | MUST NOT | 5 | 1232 | Stop Sequence Protocol | MUST NOT | | 1233 | ACK_0 support | OPTIONAL | 6 | 1234 | ACK_1 support | REQUIRED | 6 | 1235 | ACK_N support | MUST NOT | | 1236 | Class of Service for transmitted Sequences | Class | 7 | 1237 | | 1, 2, or 3 | | 1238 | Continuously Increasing Sequence Count | OPTIONAL | 8, 9 | 1239 +---------------------------------------------------------------------+ 1240 Notes: 1242 1. Only one active sequence per exchange is optional. 1244 2. A Sequence Initiator shall be capable of transmitting 1245 Sequences containing more frames than the available credit 1246 indicated by a Sequence recipient at Login. FC-PH [2] end-to 1247 end flow control rules will be followed when transmitting such 1248 Sequences. 1250 3. a) IP MTU size is 65280-bytes and resulting FC Sequence 1251 Payload size is 65536-bytes. 1252 b) Maximally Minimum IP Packet size is 68-bytes and resulting 1253 FC Data Field size is 92-bytes. 1254 c) ARP (and InARP) Packet size is 28-bytes and resulting FC 1255 Data Field size is 52-bytes. 1257 4. Some OS environments may not handle the max Sequence 1258 Payload size of 65536. It is up to the administrator to 1259 configure the Max size for all systems. 1261 5. All class 3 sequences are assumed to be non-streamed. 1263 6. Only applies for Class 1 and 2. Use of ACK_1 is default, 1264 ACK_0 used if indicated by Sequence recipient at Login. 1266 7. The administrator configured class of service is used, except 1267 where otherwise specified (e.g. Broadcasts are always sent in 1268 class 3). 1270 8. Review Appendix F, "Reliability in Class 3". 1272 9. The first frame of the first sequence of a new Exchange must 1273 have SEQ_CNT = 0 [2]. 1275 7.5 Exchanges 1277 +--------------------------------------------------------------------+ 1278 | Feature | Support | Notes | 1279 +--------------------------------------------------------------------+ 1280 | X_ID interlock support | OPTIONAL | 1 | 1281 | OX_ID=FFFF | MUST NOT | | 1282 | RX_ID=FFFF | OPTIONAL | 2 | 1283 | Action if no exchange resources available | P_RJT | 3 | 1284 | Long Lived Exchanges | OPTIONAL | 4 | 1285 | Reallocation of Idle Exchanges | OPTIONAL | | 1286 +--------------------------------------------------------------------+ 1287 Notes: 1289 1. Only applies to Classes 1 and 2, supported by the Exchange 1290 Originator. A Port SHALL be capable of interoperating with 1291 another Port that requires X_ID interlock. The Exchange 1292 Originator facility within the Port shall use the X_ID 1293 Interlock protocol in such cases. 1295 2. An Exchange Responder is not required to assign RX_IDs. If a 1296 RX_ID of FFFF is assigned, it is identifying Exchanges based 1297 on S_ID / D_ID / OX_ID only. 1299 3. In Classes 1 and 2, a Port shall reject a frame that would 1300 create a new Exchange with a P_RJT containing reason code 1301 "Unable to establish Exchange". In Class 3, the frame would 1302 be dropped. 1304 4. When an Exchange is created between 2 Ports for IP/ARP data, 1305 it remains active while the ports are logged in with each 1306 other. An Exchange SHALL NOT transfer Sequence Initiative 1307 (SI). Broadcasts and ELS commands may use short lived 1308 Exchanges. 1310 7.6 ARP and InARP 1312 +--------------------------------------------------------------------+ 1313 | Feature | Support | Notes | 1314 +--------------------------------------------------------------------+ 1315 | ARP Server Support | MUST NOT | 1 | 1316 | Response to ARP requests | REQUIRED | 2 | 1317 | Class of Service for ARP requests | Class 3 | 3 | 1318 | Class of Service for ARP replies | Class | 4 | 1319 | | 1, 2, or 3 | | 1320 | Response to InARP requests | OPTIONAL | | 1321 | Class of Service for InARP requests/replies | Class | | 1322 | | 1, 2 or 3 | 5 | 1323 +--------------------------------------------------------------------+ 1325 Notes: 1327 1. Well-known Address FFFFFC is not used for ARP requests. Frames 1328 from Well-known address FFFFFC are not considered to be ARP 1329 frames. Broadcast support is REQUIRED for ARP. 1331 2. The IP Address is mapped to a specific MAC address with ARP. 1333 3. An ARP request is a Broadcast Sequence, therefore Class 3 1334 is always used. 1336 4. An ARP reply is a normal Sequence, thus the administrator 1337 configured class of service is used. 1339 5. An InARP Request or Reply is a normal Sequence, thus an 1340 administrator configured class of service is used. 1342 7.7 Extended Link Services (ELS) 1344 +--------------------------------------------------------------------+ 1345 | Feature | Support | Notes | 1346 +--------------------------------------------------------------------+ 1347 | Class of service for ELS commands / responses | Class | | 1348 | | 1,2 or 3 | 1 | 1349 | Explicit N-Port Login | REQUIRED | | 1350 | Explicit F-Port Login | REQUIRED | | 1351 | FLOGI ELS command | REQUIRED | | 1352 | PLOGI ELS command | REQUIRED | | 1353 | ADISC ELS command | REQUIRED | | 1354 | PDISC ELS command | OPTIONAL | 2 | 1355 | FAN ELS command | REQUIRED | 5 | 1356 | LOGO ELS command | REQUIRED | | 1357 | FARP-REQ/FARP-REPLY ELS commands | REQUIRED | 3 | 1358 | Other ELS command support | OPTIONAL | 4 | 1359 +-----------------------------------------------+------------+-------+ 1361 Notes: 1363 1. The administrator configured class of service is used. 1365 2. PDISC shall not be used as a Requester; ADISC shall be used 1366 instead. As a Responder, an implementation may need to respond 1367 to both ADISC and PDISC for compatibility with other 1368 specifications. 1370 3. Responder Action - FARP-REPLY and/or Port Login - for a 1371 successful MATCH_WW_PN is always REQUIRED. 1372 Support for all other match Address Codes Points is optional; 1373 a silent behavior from the Responder is valid when it is not 1374 supported. 1375 Recipients of the FARP-REQ ELS shall not issue a Service 1376 Reject (LS_RJT) if FARP is not supported 1378 4. If other ELS commands are received an LS_RJT may be sent. NOP 1379 is not required by this specification, and shall not be used 1380 as a mechanism to terminate exchanges. 1382 5. Required for FL_Ports 1384 7.8 Login Parameters 1386 Unless explicitly noted here, a compliant implementation shall use 1387 the login parameters as described in [4]. 1389 7.8.1 Common Service Parameters - FLOGI 1391 - FC-PH Version, lowest version may be 0x09 to indicate 1392 'minimum 4.3'. 1393 - Can't use BB_Credit=0 for N_Port on a switched Fabric 1394 (F_Port). 1396 7.8.2 Common Service Parameters - PLOGI 1398 - FC-PH Version, lowest version may be 0x09 to indicate 1399 'minimum 4.3'. 1400 - Can't use BB_Credit=0 for N_Port in a Point-to-Point 1401 configuration 1403 - Random Relative Offset is optional. 1405 - Note that the 'Receive Data Field Size' fields specified in 1406 the PLOGI represent both optional headers and payload. 1408 - The MAC Address can therefore be extracted from the 6 lower 1409 bytes of the WW_PN field (when the IEEE 48-bit Identifier 1410 format is chosen as the NAA) during PLOGI or ACC payload 1411 exchanged during Fibre Channel Login [2]. 1413 - The MAC Address can also be extracted from the WW_PN field in 1414 the Network_Header during ADISC (and ADISC ACC), or PDISC 1415 (and PDISC ACC). 1417 7.8.3 Class Service Parameters - PLOGI 1419 - Discard error policy only. 1421 8. Security Considerations 1423 FC frames are CRC protected for the header and payload using ANSI 1424 X3.139 specified 32-polynomial used with FDDI. Manipulation of header 1425 information without regenerating a new one will be easily detected. 1426 Independent of IP and ARP, Fibre Channel protocols do have special 1427 issues with security. Use of IP or ARP over FC does not introduce 1428 new security threats and is for most part transparent. 1430 The mappings MUST be valid at all times. There are 1431 many events that can invalidate this mapping. Appendix D discusses 1432 conditions when a validation is required. This type of validation is 1433 normally performed in FC and does not require special consideration 1434 in this document. 1436 9. Acknowledgement 1438 This specification is based on FCA IP Profile, Version 3.3. The FCA 1439 IP Profile was a joint work of the Fibre Channel Association (FCA) 1440 vendor community. The following organizations or individuals have 1441 contributed to the creation of the FCA IP Profile: Adaptec, Ancor, 1442 Brocade, Clariion, Crossroads, emf Associates, Emulex, Finisar, 1443 Gadzoox, Hewlett Packard, Interphase, Jaycor, McData, Migration 1444 Associates, Orca Systems, Prisa, Q-Logic, Symbios, Systran, 1445 Tektronix, Univ. of Minnesota, Univ. of New Hamshire. Jon Infante 1446 from Emulex deserves special mention for his contributions to the 1447 FARP Protocol. The authors extend their thanks to all who provided 1448 comments and especially to Lansing Sloan from LLNL for his detailed 1449 and valuable comments. 1451 10. References 1453 [1] FCA IP Profile, Revision 3.3, May 15, 1997 1455 [2] Fibre Channel Physical and Signaling Interface (FC-PH) , ANSI 1456 X3.230-1994 1458 [3] Fibre Channel Link Encapsulation (FC-LE), Revision 1.1, June 26, 1459 1996 1461 [4] Fibre Channel Fabric Loop Attachment (FC-FLA), Rev. 2.7, August 1462 12, 1997 1464 [5] Fibre Channel Private Loop SCSI Direct Attach (FC-PLDA), 1465 Rev. 2.1, September 22, 1997 1467 [6] Fibre Channel Physical and Signaling Interface-2 (FC-PH-2), 1468 Rev. 7.4, ANSI X3.297-1996 1470 [7] Fibre Channel Arbitrated Loop (FC-AL), ANSI X3.272-1996 1472 [8] Postel, J. and Reynolds, J., "A standard for the Transmission of 1473 IP Datagrams over IEEE 802 Networks". RFC 1042, ISI, Feb, 1988 1475 [9] Plummer, D. "An Ethernet Address Resolution Protocol -or- 1476 Converting Network Addresses to 48-bit Ethernet Address for 1477 Transmission on Ethernet Hardware", STD 37, RFC 826, MIT, Nov 1478 1982. 1480 [10] FCSI IP Profile, FCSI-202, Revision 2.1, September 8, 1995 1482 [11] Fibre Channel Physical and Signaling Interface -3 (FC-PH-3), 1483 Rev. 9.3, ANSI X3.xxx-199x 1485 [12] Fibre Channel-The Basics, "Gary R. Stephens and Jan V. Dedek", 1486 Ancot Corporation 1488 [13] Fibre Channel -Gigabit Communications and I/O for Computers 1489 Networks "Alan Benner", McGraw-Hill, 1996, ISBN 0-07-005669-2 1491 [14] Fibre Channel Generic Services -2 (FC-GS-2), Rev. 5.2 1492 X3.288-199x 1494 [15] RFC 1293: Inverse Address Resolution Protocol. 1495 T. Bradley, C. Brown. Jan. 1992, PROPOSED STD, 1496 Obsoleted by RFC 2390 1498 [16] RFC 2390: Inverse Address Resolution Protocol. 1499 T. Bradley, C. Brown, A. Malis Aug. 1992, DRAFT STD 1501 [17] RFC 791: Internet Protocol. J. Postel. Sep 01-1981. 1502 STANDRAD 1504 [18] The Fibre Channel Consultant: A Comprehensive Introduction, 1505 "Robert W. Kembel", Northwest Learning Associates, 1998 1507 [19] RFC 2119: Key Words for use in RFCs to Indicate Requirement 1508 Levels, S. Bradner. March 1997. 1510 [20] Fibre Channel Physical and Signaling Interface (FC-PH3) , ANSI 1511 X3.303-1996 1513 11. Authors' Addresses 1515 Murali Rajagopal 1516 Gadzoox Networks, Inc. 1517 711 Kimberly Avenue, Suite 100 1518 Placentia, CA 92870 1520 Phone: +1 714 577 6805 1521 Fax: +1 714 524 8508 1522 Email: murali@gadzoox.com 1524 Raj Bhagwat 1525 Gadzoox Networks, Inc. 1526 711 Kimberly Avenue, Suite 100 1527 Placentia, CA 92870 1529 Phone: +1 714 577 6806 1530 Fax: +1 714 524 8508 1531 Email: raj@gadzoox.com 1533 Wayne Rickard 1534 Gadzoox Networks, Inc. 1535 711 Kimberly Avenue, Suite 100 1536 Placentia, CA 92870 1538 Phone: +1 714 577 6803 1539 Fax: +1 714 524 8508 1540 Email: wayne@gadzoox.com 1541 Appendix A: Additional Matching Mechanisms in FARP 1543 Section 5 described the FC Layer mapping between the WW_PN and the 1544 Port_ID using the FARP Protocol. This appendix describes other 1545 optional criteria for address matching and includes: 1547 - WW_NN 1549 - WW_PN & WW_NN at the same time 1551 - IPv4 1553 - IPv4 & WW_PN at the same time 1555 - IPv4 & WW_NN at the same time 1557 - IPv4 & WW_PN & WW_NN at the same time 1559 Depending on the Match Address Code Points, the FARP protocol 1560 fundamentally resolves three main types of addresses to Port_IDs and 1561 is described in table below. 1563 - For Match Address Code Point b'001': 1564 WW_PN Names fields are used to resolve the WW_PN names to 1565 Port_IDs. 1566 WW_NN and IP address fields are not used with these Code Points 1567 and SHALL be set to either '0' or valid addresses by Requester 1568 or Requester and Responder. 1570 - For Match Address Code Point b'010': 1571 WW_NN Names fields are used to resolve the WW_NN names to 1572 Port_IDs. 1573 WW_PN and IP address fields are not used with these Code Points 1574 and SHALL be set to either '0' or valid addresses by Requester 1575 or Requester and Responder. 1577 - For Match Address Code Point b'100': 1578 IPv4 fields are used to resolve the IPv4 addresses to Port_IDs. 1579 WW_PN and WW_NN fields are not used with these Code Points and 1580 SHALL be set to either '0' or valid addresses by Requester or 1581 Requester and Responder. 1583 - For all other Match Address Code Points b'011', b'101',b'110', 1584 b'111', depending on set bits one or more addresses are jointly 1585 resolved to a Port_ID. See table below. If fields are not used, 1586 then they are set either to '0' or valid addresses. 1588 The Responder Flags remain the same as before. Note that there can be 1589 utmost one FARP-REPLY per FARP-REQ. 1591 Tables showing FARP-REQ and FARP-REPLY and address fields setting are 1592 given below: 1594 +--------------------------------------------------------------------+ 1595 | Match Address Code Points | 1596 +--------------------------------------------------------------------+ 1597 | LSBits| Bit name | Action | 1598 +-------+--------------------+---------------------------------------+ 1599 | 000 | Reserved | | 1600 +-------+--------------------+---------------------------------------+ 1601 | 001 | MATCH_WW_PN | If 'WW_PN of Responder' = | 1602 | | | Node's WW_PN then respond | 1603 +-------+--------------------+---------------------------------------+ 1604 | 010 | MATCH_WW_NN | If 'WW_NN of Responder' = | 1605 | | | Node's WW_NN then respond | 1606 +-------+--------------------+---------------------------------------+ 1607 | 011 | MATCH_WW_PN_NN | If both 'WW_PN of Responder' & | 1608 | | | 'WW_NN of Responder' = | 1609 | | | Node's WW_PN & WW_NN then respond | 1610 +-------+--------------------+---------------------------------------+ 1611 | 100 | MATCH_IPv4 | If 'IPv4 Address of Responder' = | 1612 | | | Node's IPv4 Address then respond | 1613 +-------+--------------------+---------------------------------------+ 1614 | 101 | MATCH_WW_PN_IPv4 | If 'WW_PN & IPv4 of Responder' = | 1615 | | | Node's WW_PN and IPv4 then respond | 1616 +-------+--------------------+---------------------------------------+ 1617 | 110 | MATCH_WW_NN_IPv4 | If both 'WW_NN of Responder' & | 1618 | | | 'IPv4 Address of Responder' = | 1619 | | | Node's WW_NN & IPv4 then respond | 1620 +-------+--------------------+---------------------------------------+ 1621 | 111 |MATCH_WW_PN_NN_IPv4 | If 'WW_PN of Responder' & | 1622 | | | 'WW_NN of Responder' & | 1623 | | | 'IPv4 Address of Responder' = | 1624 | | | Nodes' WW_PN & WW_NN & IPv4 | 1625 | | | then respond | 1626 +-------+--------------------+---------------------------------------+ 1628 +---------------------------------------------------------------------+ 1629 | FARP-REQ Command | 1630 +-------------------------------+---------+---------------------------+ 1631 | Field | Size | Remarks | 1632 | | (Bytes) | | 1633 +-------------------------------+---------+---------------------------+ 1634 | 0x54-00-00-00 | 4 | Request Command Code | 1635 +-------------------------------+---------+---------------------------+ 1636 | Match Address Code Points | 1 | Indicates Address | 1637 | | | Matching Mechanism | 1638 +-------------------------------+---------+---------------------------+ 1639 | Port_ID of Requester | 3 |Supplied by Requester | 1640 +-------------------------------+---------+---------------------------+ 1641 | Responder Flags | 1 |Response Action to be taken| 1642 +-------------------------------+---------+---------------------------+ 1643 | Port_ID of Responder | 3 | Set to 0x00-00-00 | 1644 +-------------------------------+---------+---------------------------+ 1645 |WW_PN of Requester | 8 | Supplied by Requester | 1646 +-------------------------------+---------+---------------------------+ 1647 |WW_NN of Requester | 8 |OPTIONAL; | 1648 | | |Supplied by Requester | 1649 +-------------------------------+---------+---------------------------+ 1650 |WW_PN of Responder | 8 |Supplied by Requester | 1651 +-------------------------------+---------+---------------------------+ 1652 |WW_NN of Responder | 8 |OPTIONAL ;Supplied by | 1653 | | |Requester or Responder | 1654 +-------------------------------+---------+---------------------------+ 1655 |IP Add. of Requester | 16 |OPTIONAL; Supplied by | 1656 | | |Requester | 1657 | | |IPv4 Add.=low 32 bits | 1658 +-------------------------------+---------+---------------------------+ 1659 |IP Address of Responder | 16 |OPTIONAL; Supplied by | 1660 | | |Requester or Responder | 1661 | | |IPv4 Add.=low 32 bits | 1662 +-------------------------------+---------+---------------------------+ 1664 +---------------------------------------------------------------------+ 1665 | FARP-REPLY Command | 1666 +-------------------------------+---------+---------------------------+ 1667 | Field | Size | Remarks | 1668 | | (Bytes) | | 1669 +-------------------------------+---------+---------------------------+ 1670 | 0x55-00-00-00 | 4 |Reply Command Code | 1671 +-------------------------------+---------+---------------------------+ 1672 | Match Address Code Points | 1 | Not Used and unchanged | 1673 | | |from the FARP-REQ | 1674 +-------------------------------+---------+---------------------------+ 1675 | Port_ID of Requester | 3 |Supplied by Requester | 1676 +-------------------------------+---------+---------------------------+ 1677 | Responder Flags | 1 | Not Used and unchanged | 1678 | | |from the FARP-REQ | 1679 +-------------------------------+---------+---------------------------+ 1680 | Port_ID of Responder | 3 |Supplied by Responder | 1681 +-------------------------------+---------+---------------------------+ 1682 |WW_PN of Requester | 8 |Supplied by Requester | 1683 +-------------------------------+---------+---------------------------+ 1684 |WW_NN of Requester | 8 |OPTIONAL; Supplied by | 1685 | | |Requester | 1686 +-------------------------------+---------+---------------------------+ 1687 |WW_PN of Responder | 8 |Supplied by Requester | 1688 +-------------------------------+---------+---------------------------+ 1689 |WW_NN of Responder | 8 |OPTIONAL; Supplied by | 1690 | | |Requester or Responder | 1691 +-------------------------------+---------+---------------------------+ 1692 |IP Add. of Requester | 16 |OPTIONAL; Supplied by | 1693 | | |Requester | 1694 | | |IPv4 Add.=low 32 bits | 1695 +-------------------------------+---------+---------------------------+ 1696 |IP Address of Responder | 16 |OPTIONAL; Supplied by | 1697 | | |Requester or Responder | 1698 | | |IPv4 Add.=low 32 bits | 1699 +-------------------------------+---------+---------------------------+ 1700 Appendix B: InARP 1702 B.1 General Discussion 1704 Inverse ARP (InARP) is a mechanism described in RFC 1293/2390 [15, 1705 16], which is useful when a node desires to know the protocol address 1706 of a target node whose hardware address is known. Situations where 1707 this could occur are described in [15, 16]. The motivation for using 1708 InARP in FC is to allow a node to learn the IP address of another 1709 node with which it has performed a Port Login (PLOGI). PLOGI is a 1710 normal FC process that happens between nodes, independent of this 1711 standard. PLOGI makes it possible for a node to discover the WW_PN 1712 and the Port_ID of the other node but not its IP address. A node in 1713 this way may potentially obtain the IP address of all nodes with 1714 which it can PLOGI. 1716 Note that the use of the InARP mechanism can result in resolving all 1717 WW_PN to IP addresses and ARP may no longer be required. This can be 1718 beneficially applied in cases where a particular FC topology makes it 1719 inefficient to send out an ARP broadcast. 1721 B.2 InARP Protocol Operation 1723 InARP uses the same ARP Packet format but with different 'Op Codes', 1724 one for InARP Request and another for InARP Reply. 1726 The InARP protocol operation is very simple. The requesting node 1727 fills the hardware address (WW_PN) of the target device and sets the 1728 protocol address to 0x00-00-00-00. Because, the request is sent to a 1729 node whose WW_PN and Port_ID are known, there is no need for a 1730 broadcast. The target node fills in its Protocol address (IP address 1731 in this case) and sends an InARP Reply back to the sender. A node 1732 may collect, all such WW_PN and IP addresses pairs in a similar way. 1734 B.3 InARP Packet Format 1736 Since the InARP protocol uses the same packet format as the ARP 1737 protocol, much of the discussion on ARP formats given in Section 4 1738 applies here. 1740 The InARP is 28-bytes long in this application and uses two messages: 1741 Request and Reply. Like ARP, the InARP Packet fields are common to 1742 both InARP Requests and InARP Replies. 1744 InARP Request and Reply Packets are encapsulated in a single frame FC 1745 Sequence much like ARP. Compliant InARP Request and Reply FC 1746 Sequences SHALL include Network_Headers. 1748 The 'HW Type' field SHALL be set to 0x00-01. 1750 The 'Protocol' field SHALL be set to 0x08-00 indicating IP protocol. 1752 The 'HW Addr Length' field SHALL be set to 0x06 indicating 6-bytes of 1753 HW address. 1755 The 'Protocol Addr Length' field SHALL be set to 0x04 indicating 1756 4-bytes of IP address. 1758 The 'Operation' Code field SHALL be set as follows: 1760 0x00-08 for InARP Request 1761 0x00-09 for InARP Reply 1763 The 'HW Addr of Sender' field SHALL be the 6-byte IEEE MAC address of 1764 the Requester (InARP Request) or Responder (InARP Reply). 1766 The 'Protocol Addr of Sender' field SHALL be the 4-byte IP address of 1767 the Requester (InARP Request) or Responder (InARP Reply). 1769 The 'HW Addr of Target' field SHALL be set to the 6-byte MAC address 1770 of the Responder in an InARP Request and to the 6-byte MAC address of 1771 the Requester in an InARP Reply. 1773 The 'Protocol Addr of Target' field SHALL be set to 0x00-00-00-00 in 1774 an InARP Request and to the 4-byte IP address of the Requester in an 1775 InARP Reply. 1777 B.4 InARP Support Requirements 1779 Support for InARP is OPTIONAL. If a node does not support InARP and 1780 it receives an InARP Request message then a silent behavior is 1781 specified. 1783 APPENDIX C: Some Informal Mechanisms for FC Layer Mappings 1785 Each method SHALL have some check to ensure PLOGI has completed 1786 successfully before data is sent. A related concern in large networks 1787 is limiting concurrent logins to only those ports with active IP 1788 traffic. 1790 C.1 Login on Cached Mapping Information 1792 This method insulates the level performing Login from the level 1793 interpreting ARP. It is more accommodating of non-ARP mechanisms for 1794 building the FC-layer mapping table. 1796 1. Broadcast messages that carry a Network_Header contain 1797 the S_ID on the FC-header and WW_PN in the Network-Header. 1798 Caching this information provides a correlation of Port_ID to 1799 WW_PN. If the received Broadcast message is compliant with 1800 this specification, the WW_PN will contain the MAC Address. 1802 2. The WW_PN is "available" if Login has been performed to the 1803 Port_ID and flagged. If Login has not been performed, the 1804 WW_PN is "unavailable". 1806 3. If an outbound packet is destined for a port that is 1807 "unavailable", the cached information (from broadcast) is used 1808 to look up the Port_ID. 1810 4. After sending an ELS PLOGI command (Port Login) to the Port 1811 (from a higher level entity at the host), waiting for an 1812 outbound packet before sending this Port Login conserves 1813 resources for only those ports which wish to establish 1814 communication. 1816 5. After Port Login completes (ACC received), the outbound packet 1817 can be forwarded. At this point in time, both ends have the 1818 necessary information to complete their association. 1821 C.2 Login on ARP Parsing 1823 This method performs Login sooner by parsing ARP before passing it up 1824 to higher levels for IP/MAC Address correlation. It requires a low- 1825 level awareness of the IP address, and is therefore protocol- 1826 specific. 1828 1. When an ARP Broadcast Message is received, the S_ID is 1829 extracted from the FC-header and the corresponding 1830 Network_Source_Address from the Network_Header. 1832 2. The ARP payload is parsed to determine if 1833 (a) this host is the target of the ARP request (Target IP 1834 Address match), and 1835 (b) if this host is currently logged in with the port 1836 (Port_ID = S_ID) originating the ARP broadcast. 1838 3. The ARP is passed to a higher level for ARP Response 1839 generation. 1841 4. If a Port Login is required, an ELS PLOGI command (Port Login) 1842 is sent immediately to the Port originating the ARP Broadcast. 1844 5. After Port Login completes, an ARP response can be forwarded. 1845 Note that there are two possible scenarios: 1847 - The ACC to PLOGI returns before the ARP reply is processed 1848 and the ARP Reply is immediately forwarded. 1849 - The ARP reply is delayed, waiting for ACC (successful 1850 Login). 1852 6. At this point in time, both ends have the necessary 1853 information to complete their 1854 association. 1856 C.3 Login to Everyone 1858 In Fibre Channel topologies with a limited number of ports, it may be 1859 efficient to unconditionally Login to each port. This method is 1860 discouraged in fabric and public loop environments. 1862 After Port Login completes, the MAC Address to Port_ID Address tables 1863 can be constructed. 1865 C.4 Static Table 1867 In some loop environments with a limited number of ports, a static 1868 mapping from a MAC Address to Port_ID (D_ID or AL_PA) may be 1869 maintained. The FC layer will always know the destination Port_ID 1870 based on the table. The table is typically downloaded into the driver 1871 at configuration time. This method scales poorly, and is therefore 1872 not recommended. 1874 Appendix D: FC Layer Address Validation 1876 D.1 General Discussion 1878 At all times, the mapping MUST be valid before use. 1879 There are many events that can invalidate this mapping. The 1880 following discussion addresses conditions when such a validation is 1881 required. 1883 After a FC link interruption occurs, the Port_ID of a port may 1884 change. After the interruption, the Port_IDs of all other ports that 1885 have previously performed PLOGI (N_Port Login) with this port may 1886 have changed, and its own Port_ID may have changed. 1888 Because of this, address validation is required after a LIP in a loop 1889 topology [7] or after NOS/OLS in a point-to-point topology [6]. 1891 Port_IDs will not change as a result of Link Reset (LR),thus address 1892 validation is not required. 1894 In addition to actively validating devices after a link interruption, 1895 if a port receives any FC-4 data frames (other than broadcast 1896 frames), from a port that is not currently logged in, then it shall 1897 send an explicit Extended Link Service (ELS) Request logout (LOGO) 1898 command to that port. 1900 ELS commands (Requests and Replies) are used by an N_Port to solicit 1901 a destination port (F_Port or N_Port) to perform some link-level 1902 function or service.) The LOGO Request is used to request 1903 invalidation of the service parameters and Port_ID of the recipient 1904 N_Port. 1906 The level of initialization and subsequent validation and recovery 1907 reported to the upper (FC-4) layers is implementation-specific. 1909 In general, an explicit Logout (LOGO) SHALL be sent whenever the FC- 1910 Layer mapping between the Port_ID and WW_PN of a remote port is 1911 removed. 1913 The effect of power-up or re-boot on the mapping tables is outside 1914 the scope of this specification. 1916 D.2 FC Layer Address Validation in a Point-to-Point Topology 1918 No validation is required after LR. In a point-to-point topology, 1919 NOS/OLS causes implicit Logout of each port and after a NOS/OLS, each 1920 port must perform a PLOGI [2]. 1922 D.3 FC Layer Address Validation in a Private Loop Topology 1924 After a LIP, a port SHALL not transmit any link data to another port 1925 until the address of the other port has been validated. The 1926 validation consists of completing either ADISC or PDISC. (See 1927 Appendix G.) 1928 ADISC (Address Discovery) is an ELS command for discovering the hard 1929 addresses - the 24-bit identifier- of NL_Ports [5], [6]. 1931 PDISC (Discover Port) is an ELS command for exchanging service 1932 parameters without affecting Login state [5], [6]. 1934 As a requester, this specification prohibits PDISC and requires 1935 ADISC. 1937 As a responder, an implementation may need to respond to both ADISC 1938 and PDISC for compatibility with other FC specifications. 1940 If the three addresses, Port_ID, WW_PN, WW_NN, exactly match the 1941 values prior to the LIP, then any active exchanges may continue. 1943 If any of the three addresses have changed, then the node must be 1944 explicitly Logged out [4], [5]. 1946 If a port's N_Port ID changes after a LIP, then all active Port-ID to 1947 WW_PN mappings at this port must be explicitly Logged out. 1949 D.4 FC Layer Address Validation in a Public Loop Topology 1951 A FAN (Fabric Address Notification) ELS command is sent by the fabric 1952 to all known previously logged in ports following an initialization 1953 event. Therefore, after a LIP, hosts may wait for this notification 1954 to arrive or they may perform a FLOGI. 1956 If the WW_PN and WW_NN of the fabric FL_Port contained in the FAN ELS 1957 or FLOGI response exactly match the values before the LIP, and if the 1958 AL_PA obtained by the port is the same as the one before the LIP, 1959 then the port may resume all exchanges. If not, then FLOGI (Fabric 1960 Login) must be performed with the fabric and all nodes must be 1961 explicitly Logged out. 1963 A public loop device will have to perform the private loop 1964 authentication to any nodes on the local loop which have an Area + 1965 Domain Address == 0x00-00-XX 1967 D.5 FC Layer Address Validation in a Fabric Topology 1969 No validation is required after LR (link reset). 1971 After NOS/OLS, a port must perform FLOGI. If, after FLOGI, the S_ID 1972 of the port, the WW_PN of the fabric, and the WW_NN of the fabric are 1973 the same as before the NOS/OLS, then the port may resume all 1974 exchanges. If not, all nodes must be explicitly, Logged out [2]. 1976 APPENDIX E: Fibre Channel Overview 1978 E.1 Brief Tutorial 1980 The FC Standard [2] defines 5 "levels" (not layers) for its protocol 1981 description: FC-0, FC-1, FC-2, FC-3, and FC-4. The first three levels 1982 (FC-0, FC-1, FC-2) are largely concerned with the physical formatting 1983 and control aspects of the protocol. FC-3 has been architected to 1984 provide a place holder for functions that might need to be performed 1985 after the upper layer protocol has requested the transmission of an 1986 information unit, but before FC-2 is asked to deliver that piece of 1987 information by using a sequence of frames [19]. At this time, no FC-3 1988 functions have been defined. FC-4 is meant for supporting profiles 1989 of Upper Layer Protocols (ULP) such as IP and Small Computer System 1990 Interface (SCSI), and supports a relatively small set compared to LAN 1991 protocols such as IEEE 802.3. 1993 FC devices are called "Nodes", each of which has at least one "Port" 1994 to connect to other ports. A Node may be a workstation, a disk drive 1995 or disk array, a camera, a display unit, etc. A "Link" is two 1996 unidirectional paths flowing in opposite directions and connecting 1997 two Ports within adjacent Nodes. 1999 FC Nodes communicate using higher layer protocols such as SCSI and IP 2000 and are configured to operate using Point-to-Point, Private Loop, 2001 Public Loop (attachment to a Fabric), or Fabric network topologies. 2003 The point-to-point is the simplest of the four topologies, where only 2004 two nodes communicate with each other. The private loop may connect a 2005 number of devices (max 126) in a logical ring much like Token Ring, 2006 and is distinguished from a public loop by the absence of a Fabric 2007 Node participating in the loop. The Fabric topology is a switched 2008 network where any attached node can communicate with any other. For a 2009 detail description of FC topologies refer to [18]. 2011 Table below summarizes the usage of port types depending on its 2012 location [12]. Note that E-Port is not relevant to any discussion in 2013 this specification but is included below for completeness. 2015 +-----------+-------------+-----------------------------------------+ 2016 | Port Type | Location | Topology Associated with | 2017 +-----------+-------------+-----------------------------------------+ 2018 | N_Port | Node | Point-to-Point or Fabric | 2019 +-----------+-------------+-----------------------------------------+ 2020 | NL_Port | Node |In N_Port mode -Point-to-Point or Fabric | 2021 | | |In NL_Port mode - Arbitrated Loop | 2022 +-----------+-------------+-----------------------------------------+ 2023 | F_Port | Fabric | Fabric | 2024 +-----------+-------------+-----------------------------------------+ 2025 | FL_Port | Fabric | In F_Port mode - Fabric | 2026 | | | In FL_Port mode - Arbitrated Loop | 2027 +-----------+-------------+-----------------------------------------+ 2028 | E_Port | Fabric | Internal Fabric Expansion | 2029 +-----------+-------------+-----------------------------------------+ 2031 E.2 Exchange, Information Unit, Sequence, and Frame 2033 The FC 'Exchange' is a mechanism used by two FC ports to identify and 2034 manage an operation between them [18]. An Exchange is opened whenever 2035 an operation is started between two ports. The Exchange is closed 2036 when this operation ends. 2038 The FC-4 Level specifies data units for each type of application 2039 level payload called 'Information Unit' (IU). Each protocol carried 2040 by FC has a defined size for the IU. Every operation must have at 2041 least one IU. Lower FC levels map this to a FC Sequence. 2043 Typically, a Sequence consists of more than one frame. Larger user 2044 data is segmented and reassembled using two methods: Sequence Count 2045 and Relative Offset [18]. With the use of Sequence Count, data blocks 2046 are sent using frames with increasing sequence counts (modulo 65536) 2047 and it is quite straightforward to detect the first frame that 2048 contains the Network_Header. When Relative Offset is used, as frames 2049 arrive, some computation is required to detect the first frame that 2050 contains the Network_Header. Sequence Count and Relative Offset field 2051 control information, is carried in the FC Header. 2053 The FC-4 Level makes a request to FC-3 Level when it wishes it to be 2054 delivered. Currently, there are no FC-3 level defined functions, and 2055 this level simply converts the Information Unit delivery request into 2056 a 'Sequence' delivery request and passes it on to the FC-2 Level. 2057 Therefore, each FC-4 Information Unit corresponds to a FC-2 Level 2058 Sequence. 2060 The maximum data carried by a FC frame cannot exceed 2112-bytes [2]. 2061 Whenever, the Information Unit exceeds this value, the FC-2 breaks it 2062 into multiple frames and sends it in a sequence. 2064 There can be multiple Sequences within an Exchange. Sequences within 2065 an Exchange are processed sequentially. Only one Sequence is active 2066 at a time. Within an Exchange information may flow in one direction 2067 only or both. If bi-directional then one of the ports has the 2068 initiative to send the next Sequence for that Exchange. Sequence 2069 Initiative can be passed between the ports on the last frame of 2070 Sequence when control is transferred. This amounts to half-duplex 2071 behavior. 2073 Ports may have more than one Exchange open at a time. Ports can 2074 multiplex between Exchanges. Exchanges are uniquely identified by 2075 Exchange IDs (X_ID). An Originator OX_ID and a Responder RX_ID 2076 uniquely identify an Exchange. 2078 E.3 Fibre Channel Header Fields 2080 The FC header as shown in the diagrams below contains routing and 2081 other control information to manage Frames, Sequences, and Exchanges. 2082 The Frame-header is sent as 6 transmission words immediately 2083 following an SOF delimiter and before the Data Field. 2085 D_ID and S_ID: 2087 FC uses destination address routing [12], [13]. Frame routing in 2088 a point-to-point topology is trivial. 2090 For the Arbitrated Loop topology, with the destination NL_Port on 2091 the same AL, the source port must pick the destination port, 2092 determine its AL Physical Address, and "Open" the destination 2093 port. The frames must pass through other NL_Ports or the FL_Port 2094 on the loop between the source and destination, but these ports 2095 do not capture the frames. They simply repeat and transmit the 2096 frame. Either communicating port may "Close" the circuit. 2098 When the destination port is not on the same AL, the source 2099 NL_Port must open the FL_Port attached to a Fabric. Once in the 2100 Fabric, the Fabric routes the frames again to the destination. 2102 In a Fabric topology, the Fabric looks into the Frame-header, 2103 extracts the destination address (D_ID), searches its own routing 2104 tables, and sends the frame to the destination port along the 2105 path chosen. The process of choosing a path may be performed at 2106 each fabric element or switch until the F_Port attached to the 2107 destination N_Port is reached. 2109 Fibre Channel Frame Header, Network_Header, and Payload carrying IP Packet 2110 +---+----------------+----------------+----------------+--------------+ 2111 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2112 +---+----------------+----------------+----------------+--------------+ 2113 |0 | R_CTL | D_ID | 2114 +---+----------------+----------------+----------------+--------------+ 2115 |1 | CS_CTL | S_ID | 2116 +---+----------------+----------------+----------------+--------------+ 2117 |2 | TYPE | F_CTL | 2118 +---+----------------+----------------+----------------+--------------+ 2119 |3 | SEQ_ID | DF_CTL | SEQ_CNT | 2120 +---+----------------+----------------+----------------+--------------+ 2121 |4 | OX_ID | RX_ID | 2122 +---+--------+-------+----------------+----------------+--------------+ 2123 |5 | Parameter (Control or Relative Offset for Data ) | 2124 +---+-----------------------------------------------------------------+ 2125 |6 | NAA | Network_Dest_Address (Hi order bits) | 2126 +---+--------+-------+----------------+----------------+--------------+ 2127 |7 | Network_Dest_Address (Lo order bits) | 2128 +---+--------+-------+----------------+----------------+--------------+ 2129 |8 | NAA | Network_Src_Address (Hi order bits) | 2130 +---+--------+-------+----------------+----------------+--------------+ 2131 |9 | Network_Src_Address (Lo order bits) | 2132 +---+----------------+----------------+----------------+--------------+ 2133 |10 | DSAP | SSAP | CTRL | OUI | 2134 +---+----------------+----------------+----------------+--------------+ 2135 |11 | OUI | PID | 2136 +---+----------------+----------------+----------------+--------------+ 2137 |12 | IP Packet Data ... | 2138 +---+----------------+----------------+----------------+--------------+ 2139 R_CTL (Routing Control) and TYPE(data structure): 2141 Frames for each FC-4 can be easily distinguished from the others 2142 at the receiving port using the R_CTL (Routing Control) and TYPE 2143 (data structure) fields in the Frame-header. 2145 The R_CTL has two sub-fields: Routing bits and Information 2146 category. The Routing bits sub-field has specific values that 2147 mean FC-4 data follows and the Information Category tells the 2148 receiver the "Type" of data contained in the frame. The R_CTL 2149 and TYPE code points are shown in the diagrams. 2151 Other Header fields: 2153 F_CTL (Frame Control) and SEQ_ID (Sequence Identification), 2154 SEQ_CNT (Sequence Count), OX_ID (Originator exchange Identifier), 2155 RX_ID (Responder exchange Identifier), and Parameter fields are 2156 used to manage the contents of a frame, and mark information 2157 exchange boundaries for the destination port. 2159 F_CTL(Frame Control): 2161 The FC_CTL field is a 3-byte field that contains information 2162 relating to the frame content. Most of the other Frame-header 2163 fields are used for frame identification. Among other things, 2164 bits in this field indicate the First Sequence, Last Sequence, or 2165 End Sequence. Sequence Initiative bit is used to pass control of 2166 the next Sequence in the Exchange to the recipient. 2168 SEQ_ID (Sequence Identifier) and SEQ_CNT (Sequence Count): 2170 This is used to uniquely identify sequences within an Exchange. 2171 The uniquely identifies any active Sequence. 2172 SEQ_CNT is used to uniquely identify frames within a Sequence to 2173 assure sequentiality of frame reception, and to allow unique 2174 correlation of link control frames with their related data 2175 frames. 2177 Originator Exchange Identifier (OX_ID) and Responder Exchange 2178 Identifier (RX_ID): 2180 The OX_ID value provides association of frames with specific 2181 Exchanges originating at a particular N_Port. The RX_ID field 2182 provides the same function that the OX_ID provides for the 2183 Exchange Originator. The OX_ID is meaningful on the Exchange 2184 Originator, and the RX_ID is meaningful on the Responder. 2186 DF_CTL (Data Field Control): 2188 The DF_CTL field specifies the presence or absence of optional 2189 headers between the Frame-header and Frame Payload 2191 PARAMETER: 2193 The Parameter field has two meanings, depending on Frame type. 2194 For Link Control Frames, the Parameter field indicates the 2195 specific type of Link Control frame. For Data frames, this 2196 field contains the Relative Offset value. This specifies an 2197 offset from an Upper Layer Protocol buffer from a base address. 2199 E.4 Code Points for FC Frame 2201 E.4.1 Code Point with IP and ARP Packets 2203 The Code Points for FC Frames with IP and ARP Packets are very 2204 similar with the exception of PID value in Word 11 which is set to 2205 0x08-00 for IP and 0x08-06 for ARP. Also, the Network_Header appears 2206 only in the first logical frame of a FC Sequence carrying IP. In the 2207 case, where FC frames carry ARP packets it is always present because 2208 these are single frame Sequences. 2210 Code Points for FC Frame with IP packet Data 2211 +---+----------------+----------------+----------------+------------+ 2212 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2213 +---+----------------+----------------+----------------+------------+ 2214 | 0 | 0x04 | D_ID | 2215 +---+----------------+----------------+----------------+------------+ 2216 | 1 | 0x00 | S_ID | 2217 +---+----------------+----------------+----------------+------------+ 2218 | 2 | 0x05 | F_CTL | 2219 +---+----------------+----------------+----------------+------------+ 2220 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2221 +---+----------------+----------------+----------------+------------+ 2222 | 4 | OX_ID | RX_ID | 2223 +---+----------------+----------------+----------------+------------+ 2224 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2225 +---+------+--------------------------------------------------------+ 2226 | 6 | 0001 | 0x000 | Dest. MAC (Hi order bits) | 2227 +---+------+---------+----------------+----------------+------------+ 2228 | 7 | Dest. MAC (Lo order bits) | 2229 +---+------+----------+----------------+----------------------------+ 2230 | 8 | 0001 | 0x000 | Src. MAC (Hi order bits) | 2231 +---+------+---------+----------------+----------------+------------+ 2232 | 9 | Src. MAC (Lo order bits) | 2233 +---+----------------+----------------+----------------+------------+ 2234 |10 | 0xAA | 0xAA | 0x03 | 0x00 | 2235 +---+----------------+----------------+----------------+------------+ 2236 |11 | 0x00-00 | 0x08-00 | 2237 +---+----------------+----------------+----------------+------------+ 2238 |12 | IP Packet Data | 2239 +---+----------------+----------------+----------------+------------+ 2240 |13 | ... | 2241 +---+----------------+----------------+----------------+------------+ 2242 Code Points for FC Frame with ARP packet Data 2243 +---+----------------+----------------+----------------+------------+ 2244 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2245 +---+----------------+----------------+----------------+------------+ 2246 | 0 | 0x04 | D_ID | 2247 +---+----------------+----------------+----------------+------------+ 2248 | 1 | 0x00 | S_ID | 2249 +---+----------------+----------------+----------------+------------+ 2250 | 2 | 0x05 | F_CTL | 2251 +---+----------------+----------------+----------------+------------+ 2252 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2253 +---+----------------+----------------+----------------+------------+ 2254 | 4 | OX_ID | RX_ID | 2255 +---+----------------+----------------+----------------+------------+ 2256 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2257 +---+------+--------------------------------------------------------+ 2258 | 6 | 0001 | 0x000 | Dest. MAC (Hi order bits) | 2259 +---+------+---------+----------------+----------------+------------+ 2260 | 7 | Dest. MAC (Lo order bits) | 2261 +---+------+----------+----------------+----------------------------+ 2262 | 8 | 0001 | 0x000 | Src. MAC (Hi order bits) | 2263 +---+------+---------+----------------+----------------+------------+ 2264 | 9 | Src. MAC (Lo order bits) | 2265 +---+----------------+----------------+----------------+------------+ 2266 |10 | 0xAA | 0xAA | 0x03 | 0x00 | 2267 +---+----------------+----------------+----------------+------------+ 2268 |11 | 0x00-00 | 0x08-06 | 2269 +---+----------------+----------------+----------------+------------+ 2270 |12 | ARP Packet Data | 2271 +---+----------------+----------------+----------------+------------+ 2272 |13| ... | 2273 +---+----------------+----------------+----------------+------------+ 2275 The Code Points for a FARP-REQ for a specific Match Address Code 2276 Point MATCH_WW_PN_NN ( b'011') is shown below. In particular, note 2277 the IP addresses field of the Requester set to a valid address and 2278 that of the responder set to '0'. Note also the setting of the D_ID 2279 address and the Port_ID of the Responder. 2281 The corresponding code point for a FARP-REPLY is also shown below. 2282 In particular, note that the setting of the Port_ID of Responder and 2283 the IP address setting of the Responder. 2285 E.4.2 Code Points with FARP Command 2287 Code Points for FC Frame with FARP-REQ Command for MATCH_WW_PN_NN 2288 +---+----------------+----------------+----------------+------------+ 2289 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2290 +---+----------------+----------------+----------------+------------+ 2291 | 0 | 0x04 | D_ID = | 2292 | | | 0xFF 0xFF 0xFF | 2293 +---+----------------+----------------+----------------+------------+ 2294 | 1 | 0x00 | S_ID | 2295 +---+----------------+----------------+----------------+------------+ 2296 | 2 | 0x05 | F_CTL | 2297 +---+----------------+----------------+----------------+------------+ 2298 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2299 +---+----------------+----------------+----------------+------------+ 2300 | 4 | OX_ID | RX_ID | 2301 +---+----------------+----------------+----------------+------------+ 2302 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2303 +---+----------------+----------------+----------------+------------+ 2304 | 6 | 0x54 | 0x00 | 0x00 | 0x00 | 2305 +---+----------------+----------------+----------------+------------+ 2306 | 7 | Port_ID of Requester = S_ID |Match Addr. | 2307 | | |Code Points | 2308 | | | xxxxx011 | 2309 +---+----------------+----------------+----------------+------------+ 2310 | 8 | Port_ID of Responder = |Responder | 2311 | | 0x00 0x00 0x00 |Flags | 2312 +---+----------------+----------------+----------------+------------+ 2313 | 9 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2314 +---+------+---------+----------------+----------------+------------+ 2315 |10 | WW_PN Src. MAC (Lo order bits) | 2316 +---+------+----------+---------------+-----------------------------+ 2317 |11 | 0001 | 0x000 |WW_NN Src. MAC(Hi order bits)| 2318 +---+------+---------+----------------+----------------+------------+ 2319 |12 | WW_NN Src. MAC (Lo order bits) | 2320 +---+----------------+----------------+----------------+------------+ 2321 |13 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2322 +---+------+---------+----------------+----------------+------------+ 2323 |14 | WW_PN Dest. MAC (Lo order bits) | 2324 +---+------+----------+---------------+-----------------------------+ 2325 |15 | 0001 | 0x000 |WW_NN Dest.MAC(Hi order bits)| 2326 +---+------+---------+----------------+----------------+------------+ 2327 |16 | WW_NN Dest. MAC (Lo order bits) | 2328 +---+----------------+----------------+----------------+------------+ 2329 |17 | 0x00-00-00-00 | 2330 +--------------------+----------------+---------+-------------------+ 2331 |18 | 0x00-00-00-00 | 2332 +--------------------+----------------+---------+-------------------+ 2333 |19 | 0x00-00-00-00 | 2334 +--------------------+----------------+---------+-------------------+ 2335 |20 | set to a valid IPv4 Address by Requester | 2336 +--------------------+----------------+---------+-------------------+ 2337 |21 | 0x00-00-00-00 | 2338 +--------------------+----------------+---------+-------------------+ 2339 |22 | 0x00-00-00-00 | 2340 +--------------------+----------------+---------+-------------------+ 2341 |23 | 0x00-00-00-00 | 2342 +--------------------+----------------+---------+-------------------+ 2343 | | 0x00-00-00-00 | 2344 |24 | set to a valid IPv4 Address of Responder if available | 2345 +--------------------+----------------+---------+-------------------+ 2346 Code Points for FC Frame with FARP-REPLY Command 2347 +---+----------------+----------------+----------------+------------+ 2348 |Wrd| <31:24> | <23:16> | <15:08> | <07:00> | 2349 +---+----------------+----------------+----------------+------------+ 2350 | 0 | 0x04 | D_ID | 2351 +---+----------------+----------------+----------------+------------+ 2352 | 1 | 0x00 | S_ID | 2353 +---+----------------+----------------+----------------+------------+ 2354 | 2 | 0x05 | F_CTL | 2355 +---+----------------+----------------+----------------+------------+ 2356 | 3 | SEQ_ID | 0x20 | SEQ_CNT | 2357 +---+----------------+----------------+----------------+------------+ 2358 | 4 | OX_ID | RX_ID | 2359 +---+----------------+----------------+----------------+------------+ 2360 | 5 | 0xXX-XX-XX-XX Parameter Relative Offset | 2361 +---+----------------+----------------+----------------+------------+ 2362 | 6 | 0x55 | 0x00 | 0x00 | 0x00 | 2363 +---+----------------+----------------+----------------+------------+ 2364 | 7 | Port_ID of Requester = D_ID | xxxxx011 | 2365 +---+----------------+----------------+----------------+------------+ 2366 | 8 | Port_ID of Responder = S_ID |Resp. Flag | 2367 +---+----------------+----------------+----------------+------------+ 2368 | 9 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2369 +---+------+---------+----------------+----------------+------------+ 2370 |10 | WW_PN Src. MAC (Lo order bits) | 2371 +---+------+----------+---------------+-----------------------------+ 2372 |11 | 0001 | 0x000 |WW_NN Src. MAC(Hi order bits)| 2373 +---+------+---------+----------------+----------------+------------+ 2374 |12 | WW_NN Src. MAC (Lo order bits) | 2375 +---+----------------+----------------+----------------+------------+ 2376 |13 | 0001 | 0x000 |WW_PN Src. MAC(Hi order bits)| 2377 +---+------+---------+----------------+----------------+------------+ 2378 |14 | WW_PN Dest. MAC (Lo order bits) | 2379 +---+------+----------+---------------+-----------------------------+ 2380 |15 | 0001 | 0x000 |WW_NN Dest.MAC(Hi order bits)| 2381 +---+------+---------+----------------+----------------+------------+ 2382 |16 | WW_NN Dest. MAC (Lo order bits) | 2383 +---+----------------+----------------+----------------+------------+ 2384 |17 | 0x00-00-00-00 | 2385 +--------------------+----------------+---------+-------------------+ 2386 |18 | 0x00-00-00-00 | 2387 +--------------------+----------------+---------+-------------------+ 2388 |19 | 0x00-00-00-00 | 2389 +--------------------+----------------+---------+-------------------+ 2390 |20 | set to a valid IPv4 Address by Requester | 2391 +--------------------+----------------+---------+-------------------+ 2392 |21 | 0x00-00-00-00 | 2393 +--------------------+----------------+---------+-------------------+ 2394 |22 | 0x00-00-00-00 | 2395 +--------------------+----------------+---------+-------------------+ 2396 |23 | 0x00-00-00-00 | 2397 +--------------------+----------------+---------+-------------------+ 2398 |24 | set to a valid IPv4 Address by Responder | 2399 +--------------------+----------------+---------+-------------------+ 2400 APPENDIX F: Fibre Channel Protocol Considerations 2402 F.1 RELIABILITY IN CLASS 3 2404 Problem: Sequence ID reuse in Class 3 can conceivably result in 2405 missing frame aliasing, which could result in delivery of corrupted 2406 (incorrectly- assembled) data, with no corresponding detection at the 2407 FC level. 2409 Prevention: This specification requires one of the following methods 2410 if Class 3 is used. 2412 - Continuously increasing Sequence Count (new Login Bit) - both 2413 sides must set When an N_Port sets the PLOGI login bit for 2414 continuously increasing SEQ_CNT, it is guaranteeing that it 2415 will transmit all frames within an Exchange using a 2416 continuously increasing SEQ_CNT (see description in Section 2417 B.1 below). 2418 - After using all SEQ_IDs (0-255) once, must start a new 2419 Exchange. It is recommended that a minimum of 4 Exchanges be 2420 used before an OX_ID can be reused. 2421 - Note: If an implementation is not checking the OX_ID when 2422 reassembling Sequences, the problem can still occur. Cycling 2423 through some number of SEQ_IDs, then jumping to a new Exchange 2424 does not solve the problem. SEQ_IDs must still be unique 2425 between two N_Ports, even across Exchanges. 2426 - Use only single-frame Sequences. 2428 F.2 CONTINUOUSLY INCREASING SEQ_CNT 2430 This method allows the recipient to check incoming frames, knowing 2431 exactly what SEQ_CNT value to expect next. Since the SEQ_CNT will not 2432 repeat for 65,536 frames, the aliasing problem is significantly 2433 reduced. 2435 A Login bit (PLOGI) is used to indicate that a device always uses a 2436 continuously increasing SEQ_CNT, even across transfers of Sequence 2437 Initiative. This bit is necessary for interoperability with some 2438 devices, and it provides other benefits as well. 2440 In the FC-PH-3 [11], the following is supported: 2442 Word 1, bit 17 - SEQ_CNT (S) 2443 0 = Normal FC-PH rules apply 2444 1 = Continuously increasing SEQ_CNT 2446 Any N_Port that sets Word 1, Bit 17 = 1, is guaranteeing that it will 2447 transmit all frames within an Exchange using a continuously 2448 increasing SEQ_CNT. Each Exchange SHALL start with SEQ_CNT = 0 in the 2449 first frame, and every frame transmitted after that SHALL increment 2450 the previous SEQ_CNT by one, even across transfers of Sequence 2451 Initiative. Any frames received from the other N_Port in the Exchange 2452 shall have no effect on the transmitted SEQ_CNT. 2454 Appendix G: Acronyms and Glossary of FC Terms 2456 It is assumed that the reader is familiar with the terms and acronyms 2457 used in the FC protocol specification [2]. The following is provided 2458 for easy reference. 2460 First Frame: The frame that contains the SOFi field. This means a 2461 logical first and may not necessarily be the first frame temporally 2462 received in a sequence. 2464 Code Point: The coded bit pattern associated with control fields in 2465 frames or packets. 2467 PDU: Protocol Data Unit 2469 ABTS_LS: Abort Sequence Protocol - Last Sequence. A protocol for 2470 aborting an exchange based on the ABTS recipient setting the 2471 Last_Sequence bit in the BA_ACC ELS to the ABTS 2473 ADISC: Discover Address. An ELS for discovering the Hard Addresses 2474 (the 24 bit NL_Port Identifier) of N_Ports 2476 D_ID: Destination ID 2478 ES: End sequence. This FCTL bit in the FC header indicates this frame 2479 is the last frame of the sequence. 2481 FAN: Fabric Address Notification. An ELS sent by the fabric to all 2482 known previously Logged in ports following an initialization event. 2484 FLOGI: Fabric Login. 2486 LIP: Loop Initialization. A primitive Sequence used by a port to 2487 detect if it is part of a loop or to recover from certain loop 2488 errors. 2490 Link: Two unidirectional paths flowing in opposite directions and 2491 connecting two Ports within adjacent Nodes. 2493 LOGO: Logout. 2495 LR: Link reset. A primitive sequence transmitted by a port to 2496 initiate the link reset protocol or to recover from a link timeout. 2498 LS: Last Sequence of Exchange. This FCTL bit in the FC header 2499 indicates the Sequence is the Last Sequence of the Exchange. 2501 Network Address Authority: A 4-bit field specified in Network_Headers 2502 that distinguishes between various name registration authorities that 2503 may be used to identify the WW_PN and the WW_NN. NAA=b'0001' 2504 indicates IEEE-48-bit MAC addresses 2506 Node: A collection of one or more Ports identified by a unique World 2507 Wide Node Name (WW_NN). 2509 NOS: Not Operational. A primitive Sequence transmitted to indicate 2510 that the port transmitting this Sequence has detected a link failure 2511 or is offline, waiting for OLS to be received. 2513 OLS: Off line. A primitive Sequence transmitted to indicate that the 2514 port transmitting this Sequence is either initiating the link 2515 initialization protocol, receiving and recognizing NOS, or entering 2516 the offline state. 2518 PDISC: Discover Port. An ELS for exchanging Service Parameters 2519 without affecting Login state. 2521 Primitive Sequence: A primitive Sequence is an Ordered Set that is 2522 transmitted repeatedly and continuously. 2524 Private Loop Device: A device that does not attempt Fabric Login 2525 (FLOGI) and usually adheres to PLDA. The Area and Domain components 2526 of the NL_Port ID must be 0x0000. These devices cannot communicate 2527 with any port not in the local loop. 2529 Public Loop Device: A device whose Area and Domain components of the 2530 NL_Port ID cannot be 0x0000. Additionally, to be FLA compliant, the 2531 device must attempt to open AL_PA 0x00 and attempt FLOGI. These 2532 devices communicate with devices on the local loop as well as devices 2533 on the other side of a Fabric. 2535 Port: The transmitter, receiver and associated logic at either end of 2536 a link within a Node. There may be multiple Ports per Node. Each Port 2537 is identified by a unique Port_ID, which is volatile, and a unique 2538 World Wide Port Name (WW_PN), which is unchangeable. In this 2539 document, the term "port" may be used interchangeably with NL_Port or 2540 N_Port. 2542 Port_ID: Fibre Channel ports are addressed by unique 24-bit Port_IDs. 2543 In a Fibre Channel frame header, the Port_ID is referred to as S_ID 2544 (Source ID) to identify the port originating a frame, and D_ID to 2545 identify the destination port. The Port_ID of a given port is 2546 volatile (changeable). 2548 PLOGI: Port Login. 2550 SI: Sequence Initiative 2552 World Wide Port_Name (WW_PN): Fibre Channel requires each Port to 2553 have an unchangeable WW_PN. Fibre Channel specifies a Network Address 2554 Authority (NAA) to distinguish between the various name registration 2555 authorities that may be used to identify the WW_PN. A 4-bit NAA 2556 identifier, 12-bit field set to 0x0 and an IEEE 48-bit MAC address 2557 together make this a 64-bit field. 2559 World Wide Node_Name (WW_NN): Fibre Channel identifies each Node with 2560 a unchangeable WW_NN. In a single port Node, the WW_NN and the WW_PN 2561 may be identical. 2563 [draft-ietf-ipfc-fibre-channel-05.txt] [This INTERNET DRAFT expires 2564 on August 15, 1999]