Subject: FCIP: NAPTs Solution Proposal (issue from Irvine, CA Interim meeting)

From: Ralph Weber <[email-masked]>
Date: Wed, 24 Oct 2001 16:43:35 -0500

The following is proposed as a solution to the NAPTs problem in FCIP.
This proposal is based on draft-ietf-ips-fcovertcpip-06.txt and should
contain sufficient detail for evaluation purposes.

This is not a detailed proposal for changes and it is assumed that
the FCIP editor will cleanup any loose ends. This proposal assumes
familiarity with FCIP and makes no attempt to explain existing FCIP
models, structures, or functionality.

Those who were at the Irvine Interim meeting will remember that
the problem with FCIP and NAPTS is a reliance on IP address in
the determination of which incoming TCP connections belong in a
given FCIP Link. This proposal solves that problem by requiring
that FC Entity World Wide Name be transmitted in the first bytes
sent by the FCIP Entity that initiates a TCP Connect request.
This allows the FCIP Entity that receives a TCP Connect request
to match it with any previously received TCP Connect requests
from the same source. Since the transmitted World Wide Name is
required to be unique within Fibre Channel, the FCIP Entity
that receives this information can correctly assign FCIP Link
relationships without relying on IP Addresses.

To allow a given FC Entity to have multiple distinct FC/FCIP
ports, the World Wide Name is qualified by a 32-bit FC/FCIP
Entity identifier.

Optional suggestions about how a TCP Connection should be used
are also provided in the first bytes send by the FCIP Entity
that initiates a TCP Connect request.

It is believed that the proposed changes will work even with
the manual discovery option provided for in the FCIP draft.
However, the most reliable end-to-end knowledge of who is
talking to whom is achieved if SLPv2 discovery is used and
each SLP service advertisement includes the advertiser's
World Wide Name and FC/FCIP Entity identifier.

A summary of the proposed changes follows.

[Change 1] Add a new section between 6 and 7. Note all other section
number have been adjusted to reflect this addition.

7. FCIP Short Frame

Figure x shows the FCIP Short Frame format.

   W|------------------------------Bit------------------------------|
   o|                                                               |
   r|3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1                    |
   d|1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0|
    +---------------+---------------+---------------+---------------+
   0|   Protocol#   |    Version    |  -Protocol#   |   -Version    |
    |    (0x01)     |    (0x01)     |     (0xFE)    |    (0xFE)     |
    +---------------+---------------+---------------+---------------+
   1|   Protocol#   |    Version    |  -Protocol#   |   -Version    |
    |    (0x01)     |    (0x01)     |     (0xFE)    |    (0xFE)     |
    +---------------+---------------+---------------+---------------+
   2|    pFlags     |    Reserved   |    -pFlags    |  -Reserved    |
    |    (0x01)     |     (0x00)    |     (0xFE)    |    (0xFF)     |
    +-----------+---+---------------+-----------+---+---------------+
   3|   Flags   |   Frame Length    |   -Flags  |   -Frame Length   |
    |   (0x00)  |    (0x00-0E)      |   (0x3F)  |     (0x03-F1)     |
    +-----------+-------------------+-----------+-------------------+
   4|                      Time Stamp [integer]                     |
    +---------------------------------------------------------------+
   5|                      Time Stamp [fraction]                    |
    +---------------------------------------------------------------+
   6|                     CRC (Reserved in FCIP)                    |
    |                        (0x00-00-00-00)                        |
    +-------------------------------+-------------------------------+
   7|           Reserved            |          -Reserved            |
    |           (0x00-00)           |          (0xFF-FF)            |
    +-------------------------------+-------------------------------+
   8|                                                               |
    +-----            FC Fabric Entity World Wide Name         -----+
   9|                                                               |
    +---------------------------------------------------------------+
  10|                    FC/FCIP Entity Identifier                  |
    +---------------+---------------+-------------------------------+
  11|   Connection  |    Reserved   |    Connection Usage Code      |
    |  Usage Flags  |     (0x00)    |     <defined in FC-BB-2>      |
    +---------------+---------------+-------------------------------+
  12|                            Reserved                           |
    |                        (0x00-00-00-00)                        |
    +---------------------------------------------------------------+
  13|           Reserved            |          -Reserved            |
    |           (0x00-00)           |          (0xFF-FF)            |
    +-------------------------------+-------------------------------+

       Fig. x  FCIP Short Frame Format

pFlags: The pFlags bits provide information about the protocol specific
usage of the FC Encapsulation Header as shown in figure y.

        |----------------Bit--------------------|
        |                                       |
        | 31   30   29   28   27   26   25   24 |
        +----------------------------------+----+
        |             Reserved             | SF |
        +----------------------------------+----+

           Fig. y -  pFlags Field Format

In the Short Frame, the SF (Short Frame) bit SHALL be one. FCIP
Encapsulated frames the SF bit SHALL be zero.

The FC Fabric Entity World Wide Name field SHALL contain the Fibre
Channel Name_Identifier [FC-FS] for the FC Fabric entity associated
with the FC Entity FCIP Entity pair that generated the Short Frame.
For example, if the FC Fabric entity is a FC Switch, the FC Fabric
Entity World Wide Name field SHALL contain the Switch_Name [FC-SW-2]
provided that name is world  wide unique. The FC Fabric Entity World
Wide Name SHALL be world wide unique.

The FC/FCIP Entity Identifier field SHALL contain a unique identifier
for the FC Entity FCIP Entity pair that generated the Short Frame that
is assigned by the FC Fabric entity whose world wide name appears in
the FC Fabric Entity World Wide Name field. The FC/FCIP Entity
Identifier is statically assigned to represent the configuration
relationship of the FC Entity FCIP Entity pair to the FC Fabric entity.

Note: The combination of the FC Entity World Wide Name and FCIP
Entity Identifier fields uniquely identifies every FC Entity FCIP
Entity pair in the IP Network.

An FCIP Entity that receives a TCP Connect request SHALL use the
contents of the FC Fabric Entity World Wide Name and FC/FCIP
Identifier fields to determine the FCIP_LEP to which the FCIP_DE
associated with the TCP connection is assigned. This may be an
existing FCIP_LEP or a new FCIP_LEP, depending on whether the
FCIP Entity has received the same FC Fabric Entity World Wide Name
and FC/FCIP Identifier field values before. If an FCIP Short Frame
is received on a TCP connection that has already been assigned to
an FCIP_LEP, the FC Fabric Entity World Wide Name and FC/FCIP
Identifier fields SHALL be ignored.

The Connection Usage Flags field identifies the types of SOF values
[FC Encapsulation] to be carried on the connection as shown in
figure z.

|------------------------------Bit------------------------------|
|                                                               |
|   31      30      29      28      27      26      25      24  |
+---------------------------------------------------------------+
|  SOFf | SOF?2 | SOF?3 |                Reserved               |
+---------------------------------------------------------------+

   Fig. z -  Connection Usage Flags Field Format

If the SOFf bit is one, then frames containing SOFf are intended
to be carried on the connection.

If the SOF?2 bit is one, then frames containing SOFi2 and SOFn2 are
intended to be carried on the connection.

If the SOF?3 bit is one, then frames containing SOFi3 and SOFn3 are
intended to be carried on the connection.

All or none of the SOFf, SOF?2, and SOF?3 bits MAY be set to one.
If all of the SOFf, SOF?2, and SOF?3 bits are zero, then the types
of FC Frames intended to be carried on the connection has no
specific relationship to SOF code.

The FCIP Entity SHALL NOT enforce the SOF usage described by
the Connection Usage Flags field and SHALL only use the contents
of the field as described below.

The Connection Usage Code field contains Fibre Channel defined
information regarding the intended usage of the connection as
specified in FC-BB-2.

The FCIP Entity SHALL use the contents of the Connection Usage
Flags and Connection Usage Code fields to locate appropriate QoS
settings in the "shared" database of TCP connection information
(see 8.1.1) and apply those settings to a newly formed connection.
If an FCIP Short Frame is received after QOS settings have been
established, the Connection Usage Flags and Connection Usage Code
fields SHOULD be ignored.

For each new incoming TCP Connect request received, the FCIP Entity
SHALL send the contents of the FC Fabric Entity World Wide Name,
FC/FCIP Identifier, Connection Usage Flags and Connection Usage
Code fields to the FC Entity along with the other new connection
information.

[Change 2] In 5.6.1, add the pFlags field definition and require
all FCIP Encapsulated Frames except Short Frames to have SF equal
to zero.  Note: Some part of the pFlags description above will
go in 5.6.1 not in the new section but the description above is
structured for easier reading in this proposal.

[Change 3] Some place in 5.6 (the description of the FCIP_DE),
require the FCIP_DE to pass all FCIP Short Frames to the Control
& Services Module.

[Change 4] In 7.1.3 and 7.1.4 (the two sections where TCP Connect
requests are generated), require the FCIP Entity to:

  1) Acquire the Connection Usage and other information from the
     "shared" database (see section 7.1.1);
  2) Send a FCIP Short Frame as the first bytes passing through
     the Encapsulated Frame Transmitter Portal following establishment
     of a TCP connection;
  3) Compare the first bytes received through the Encapsulated Frame
     Receiver Portal to the FCIP Short Frame sent and close the TCP
     connection if the bytes are not an FCIP Short Frame whose
     contents (words 7 through 13 inclusive) exactly match the FCIP
     Short Frame passed through the Encapsulated Frame Transmitter
     Portal.

It is recommended that an FCIP Entity not initiate TCP Connect requests
to another FCIP Entity if incoming TCP Connects requests from that FCIP
Entity have  already been accepted.

[Change 5] In 7.1.5 (the section where TCP Connect requests are
accepted) change the requirements about binding the new connection
to an FCIP_LEP more or less as follows:

  1) Require the FCIP Entity to expect a FCIP Short Frame
     as the first bytes to pass through the Encapsulated Frame
     Receiver Portal following completion of an incoming TCP
     Connect request;
  2) Require the FCIP Entity to transmit the FCIP Short Frame contents
     received (words 7 through 13 inclusive) through the Encapsulated
     Frame Transmitter Portal immediately upon receipt with out
     alteration of any kind;
  3) Require use of the FC Entity WWN and FCIP Entity Identifier
     fields in the FCIP Short Frames to determine if there is an
     existing FCIP_LEP to bind to; and
  4) Recommend that the Connection Usage fields contents be used in
     conjunction with the "shared" database (see section 7.1.1) to
     determine the QOS settings for the newly created connection.

If the local FCIP Entity determines that the TCP Connect request
just received is for a remote FCIP Entity to which the local FCIP
Entity has already initiated TCP Connect requests and the
connection request is otherwise valid, the local FCIP
Entity SHALL accept TCP Connect request.  The FCIP Entity SHALL
notify the FC Entity of the reverse direction TCP Connect request
and the FC Entity SHALL determine whether both connections are
permitted and, if one is not permitted, request that the FCIP
Entity close the appropriate connection.

[Change 6] In 5.4, replace the following sentence:

 "An FC Fabric to IP Network interface product SHALL contain one
 FCIP Entity for each IP Address assigned to the product."

with:

 "An FC Fabric to IP Network interface product SHALL provide each
 FC Entity FCIP Entity pair contained in the product with a unique
 combination of FC Fabric Entity World Wide Identifier and FC/FCIP
 Entity Identifier values (see section 7)."

---

From: "Murali Rajagopal" <[email-masked]>
Date: Tue, 30 Oct 2001 16:21:25 -0800

Few minor comments regarding the write up. See embedded comments in the
snipped version of this email from Ralph:

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of Ralph
Weber
Sent: Wednesday, October 24, 2001 2:44 PM
To: IPS Reflector
Subject: FCIP: NAPTs Solution Proposal (issue from Irvine, CA Interim
meeting)

.....
The above last sentence needs some more elaboration as to how a SF can
arrive on an existing FCIP_LEP.

Use of Connection Usage Flags and Code Fields need some explanation

May be a good idea to describe the echo protocol a little more clearly
stating its purpose and capabilities and any possible future extensions.

 .....