SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    FCIP Last Call technical comments



    [T] Technical comments only.  Editorial comments have been sent directly
    to the document editor.
    
    ----- FC over TCP/IP -09 -----
    
    -- Section 6.6 - FCIP Data Engine (FCIP_DE)
    
       Table 2 shows the SOF and EOF code values that are legal in FCIP
       Frames. This list may be a subset of the SOF and EOF codes listed in
       the FC Frame Encapsulation [27].
    
    [T] This is a problem because these codes are being specified in more
    than one place.  I think the FC Frame Encapsulation document is the right
    place for the normative specification of these codes (and see my comments
    against it on the need to get IANA involved).  This would be ok as a list
    of codes that are currently valid, but the specification authority needs
    to be in one place.
    
    -- Section 6.6.2.2 - Errors in FCIP Headers and Discarding FCIP Frames
    
       In addition to the tests above, the validity and positioning of the
       following FCIP Frame information SHOULD be used to detect
       encapsulation errors that may or may not affect synchronization:
     
       a)  Protocol # field and its ones complement (2 tests);
       b)  Version field and its ones complement (2 tests);
    [... list continues, snipped ...]
    
    [T] I think at least these two are MUSTs.  At a minimum, the Protocol#
    and Version field must be checked against expected values - I might accept
    the checks against their ones complements being SHOULDs.  Same comment
    applies to the Flags field and SOF.  Someone MUST check the FC frame CRC
    before forwarding the frame, but that responsibility could be assigned
    to the FC Entity.
    
       At least 5 of the 18 tests listed above SHALL be performed. Failure
       of any of the above tests actually performed SHALL indicate an
       encapsulation error and the frame SHALL NOT be forwarded on to the
       FC Entity. Further, such errors SHOULD be considered carefully,
       since some may be synchronization errors.
    
    [T] There aren't 18 tests, and I think some of the individual tests (or
    subsets) are MUSTs (see previous comment).  This needs to be gone over
    carefully - in essence a MUST is only appropriate where failure to apply
    the test carries a non-negligible risk of forwarding a bad frame to FC.
    The authors are the experts on this and need to do this analysis.  I
    don't understand the last "SHOULD" - what is the (testable) requirement
    on an implementation?
    
    -- Section 6.6.2.3 - Synchronization Failures
    
       If the FCIP_DE attempts to recover synchronization, the
       resynchronization algorithm used SHALL meet the following
       requirements:
    
    [T] One requirement is missing, which may be part of b):
    
       b)  return to sending valid FC Frames only after synchronization has
           been verified; and
    
    [T] Verification of synchronization MUST exclude any possibility of
    forwarding an FC frame that was not sent by the transmitting FCIP Entity.
    This includes the scenario in which a valid encapsulated
    FCIP frame occurs in the payload of an FC frame that is encapsulated
    and sent over FCIP; excluding this scenario is necessary but not
    sufficient to meet the requirement.
    
       An example algorithm meeting these requirements can be found in
       annex C.
    
    [T] That doesn't meet the missing requirement that my
    above comment wants to add.  The problem is at step 2 of the algorithm
    description.
    
       2)  Use multiple strong candidate headers to locate a verified
           candidate header:
     
           The Frame Length in one strong candidate header is used to skip
           incoming bytes until the expected location of the next strong
           candidate header is reached. Then the tests described in step 1)
           are applied to see if another strong candidate header has
           successfully been located.
    
    The "skip incoming bytes" step makes it possible that a set of valid
    FC headers is interlaced in the payloads of FC frames in a fashion
    that causes all the real headers to be skipped.  This is a rather
    unlikely, but not impossible scenario.  This could be dealt with by
    searching for headers instead of skipping data and aborting if a
    header is found where data should have been or carrying on and
    aborting if an interlaced header chain scenario arises.  The algorithm
    in Annex C does address the scenario of FCIP frames occurring in
    FC frame payloads, but it doesn't meet the "can't be fooled"
    requirement that I think should be added.
    
    Unfortunately, this issue appears to not be resolvable within the WG.
    I have had heated and lengthy offline discussions with the FCIP Authors
    in which they have made clear their strong opposition to the "missing
    requirement" and resulting scan rather than skip of data, and have
    argued that the algorithm in Annex C produces a long enough chain of
    headers that the odds of having followed a chain that is interlaced
    through frame payloads is small enough to be ignored.  I will have to
    consult the Area Directors.
    
    -- Section 7 - Checking FC Frame Transit Times in the IP Network
     
    [T] I don't believe that this paragraph meets the requirements in the
    FC Frame Encapsulation specification for processing transit time
    information.  Punting this up to the FC Entity is problematic -
    the minimum functional requirements on the FC Entity to meet the
    FC Frame Encapsulation requirements will need to be spelled out here
    in detail (i.e., a single sentence saying "must meet requirements in
    Section 4 of the FC Frame Encapsulation document" is probably not
    going to fly).  Mallikarjun caught some issues in this area also.
    
    -- Section 8 - The FCIP Special Frame
    
    [T] How is the FCIP Special Frame payload protected?  I don't see the
    equivalent
    of an FC Frame CRC.
    
       The Connection Usage Code field contains Fibre Channel defined
       information regarding the intended usage of the connection as
       specified in FC-BB-2 [4].
    
    [T] The authors need to talk to me about this, so that I can understand
    what's going on here, and whether we need another IANA registry, as is
    the case for the SOF and EOF values.
    
    [T] This section needs to describe the usage of the FCIP Special Frame,
    including the structure of the interaction between the two FCIP Entities,
    and how that establishes the security and connection usage properties
    that are desired.  The descriptions in Section 9 contain a great deal
    of detail that mixes several mechanisms together - a high level guide
    to what's going on is necessary to understand them.
    
    -- Section 9.1.2.1 - Non-Dynamic Creation of New TCP Connections
    
       If the TCP connect request is rejected, the FCIP Entity SHALL act to
       limit unnecessary repetition of attempts to establish similar
       connections.
    
    [T] That's a little vague.  How about specifying a minimum time period
    that MUST elapse before retry?
    
       It is recommended that an FCIP Entity not initiate TCP connect
       requests to another FCIP Entity if incoming TCP connect requests
       from that FCIP Entity have already been accepted.
    
    [T] Needs an upper case "SHOULD" or "RECOMMENDED".  This also needs
    a MUST or SHOULD on the configuration mechanism to indicate in which
    direction connections are to be established between a pair of FCIP
    Entities in order to deal with a problem that turns up near the end
    of Section 9.1.3.  This is related to Mallikarjun's issue about
    handling of simultaneous opens.
    
    -- Section 9.1.2.3 - Connection Setup After a Successful TCP Connect Request
    
    [T] This dives into the details of FCIP Special Frame handling without
    explaining
    the overall structure and goals of the use, and is unclear as a result.  For
    example, For example, on p. 29, after constructing the FCIP Special Frame,
    the
    text says:
    
       After the FCIP Special Frame bytes are sent on the newly formed
       connection, the FCIP Entity SHALL wait for the FCIP Special Frame to
       be echoed as the first bytes received on the newly formed connection.
    
    But one has to wade all the way down to p.33 towards the end of Section
    9.1.3
    to discover that the other FCIP Entity is expected to perform validation
    actions
    before echoing the frame.  The structural outline of the usage of the FCIP
    Special Frame (without the blow by blow details) needs to be described in
    Section 8.
    
       The remaining steps in this section SHALL be performed only if the
       echoed FCIP Special Frame bytes exactly match the FCIP Special Frame
       bytes sent (words 7 through 17 inclusive).
    
    -- Section 9.1.3 - Processing Incoming TCP Connect Requests
    
       If the requested connection is
       allowed, the FC Entity SHALL ensure that required IP security
       features are enabled and accept the TCP connect request.
    
    [T] As written, this appears to require a dynamic interrogation of the IPsec
    Security Association Database, and possibly the IPsec Security Policy
    Database.
    I suspect that this is in excess of what was intended, and suspect a longer
    description is needed.
    
       If the Destination FC Fabric Entity World Wide Name contains 0, the
       FCIP Entity SHALL take one of the following three actions:
     
       1)  Leave the Destination FC Fabric Entity World Wide Name field and
           Ch bit both 0;
       2)  Change the Destination FC Fabric Entity World Wide Name field to
           match FC Fabric Entity World Wide Name associated with the FCIP
           Entity that received the TCP connect request and change the Ch
           bit to 1; or
       3)  Close the TCP Connection without sending any response.
     
       The choice between the above actions depends on the anticipated
       usage of the FCIP Entity and is outside the scope of this
       specification.  The FCIP Entity may consult the "shared" database
       when choosing between the above actions.
    
    [T] I'm not buying the "outside the scope" disclaimer.  Some more
    description
    of why the three choices are available is in order even if the normative
    criteria for choosing among them are specified in FC-BB-2.  If my assumption
    about FC-BB-2 is correct, the last sentence is almost certainly too weak -
    it needs to refer to consulting the FC Entity to determine what to do.
    
       If:
       a)  The Destination FC Fabric Entity World Wide Name contains a non-
           zero value that does not match the FC Fabric Entity World Wide
           Name associated with the FCIP Entity that received the TCP
           connect request, or
       b)  The contents of the Connection Usage Flags, and Connection Usage
           Code fields is not acceptable to the FCIP Entity that received
           the TCP connect request,
       then the FCIP Entity SHALL take one of the following two actions:
       1)  Change the contents of the unacceptable fields to correct/
           acceptable values and set the Ch bit to 1; or
       2)  Close the TCP Connection without sending any response.
    
    [T] 1) looks like a security hole that discloses information an attacker
    may find useful in establishing an undesired connection to FCIP.  What's
    the motivation/purpose for this?
    
       If the Source FC Fabric Entity World Wide Name and Source FC/FCIP
       Entity Identifier field values in the FCIP Special Frame match the
       Source FC Fabric Entity World Wide Name and Source FC/FCIP Entity
       Identifier associated with an existing FCIP_LEP, the FCIP Entity
       SHALL:
     
       1)  Request that the FC Entity authenticate the source of TCP
           connect request, providing the following information to the FC
           Entity for authentication purposes:
    
    [T] Need to say more about what the FC Entity MUST do to "authenticate the
    source".
    I realize that the details are specified in FC-BB-2, but the functional
    requirements on the FC Entity can be specified here.
    
           The FCIP Entity SHALL wait indefinitely for the FC Entity to
           authenticate source of the TCP connect request and SHALL not use
           the new TCP Connection for any purpose until the FC Entity
           completes the authentication.
    
    [T] "wait indefinitely" creates an obvious denial of service attack
    vulnerability.  Try something else.
    
       Note that the originator of TCP connect requests uses IP Address and
       TCP Port to identify which TCP Connections belong to which FCIP_LEPs
       while the recipient of TCP connect requests uses the Source FC
       Fabric Entity World Wide Name, Source FC/FCIP Entity Identifier
       fields from the FCIP Special Frame to identify which TCP Connection
       belong to which FCIP_LEPs.  For this reason, an FCIP Entity that both
       originates and receives TCP connect requests is unable to match the
       FCIP_LEPs associated with originated TCP connect requests to the
       FCIP_LEPs associated with received TCP connect requests.
    
    [T] That's a problem.  See comment against Section 9.1.2.1 for one
    suggestion
    for how to fix this, but some sort of fix appears necessary to me.
    
    -- Section 9.3.4 TCP_NODELAY Option
     
       FCIP Entities SHALL set the TCP_NODELAY option to one. This will
       disable the Nagle Algorithm that is designed for usage in a telnet
       environment.
    
    [T] I believe that "SHALL" should be a lower case "should".  This is a local
    performance optimization that has no other effects.
    
    -- Section 9.5 - Flow Control Mapping between TCP and FC
    
       Coordination of these flow control mechanisms one of which is credit
       based and the other of which is window based depends on painstaking
       design that is outside the scope of this specification.
    
    [T] This is content-free.  At least warn about some of the things that
    can go wrong, in particular BB-credit starvation and the potential to
    really screw up a Fibre Channel fabric if this is long-lived.
    
    -- Section 10 Security
    
    [T] Need to get this whole section aligned with the latest (currently -11)
    version of the IPS Security draft.
    
    -- Section 10.3.1 - IPSec ESP Authentication and Confidentiality
     
       FCIP Entities MUST implement IPSec ESP [16] in Tunnel Mode for
       providing Data Integrity and Confidentiality. FCIP Entities MAY
       implement IPSec ESP in Transport Mode, if deployment considerations
       require use of Transport Mode.
    
    [T] Those deployment considerations include RFC 2401 requirement for
    Transport mode because the IPsec implementation is a host implementation
    rather than a security gateway.  I thought this was understood by the FCIP
    authors, and it needs to be explicit here including an appropriate reference
    to RFC 2401.  I expect to be able to double-check this requirement with the
    IETF Security Area in the next few days.
    
    -- Section 10.3.2 - Key Management
    
       When pre-shared keys are used, IKE Aggressive Mode SHOULD be used
       and Main Mode SHOULD NOT be used.
    
    [T] I think this is too strong and will cause problems.  Pre-Shared keys
    are a "MUST", Aggressive Mode is a "MAY", so this "SHOULD" is inconsistent.
    The issue with Main Mode arises when dynamically assigned IP addresses are
    used (and hence Main Mode can't figure out which pre-shared key to use).
    The escape from this box appears to be that Aggressive Mode is a MUST
    (SHOULD?) when dynamic assignment of IP addresses to FCIP implementations
    is used, but support for dynamic assignment of IP addresses is NOT REQUIRED.
    
    The problem with this approach is that one gets into trouble on one end
    of an FCIP Link when the *other* end has its IP address dynamically
    assigned.  The obvious solutions to this issue are to forbid (MUST NOT)
    dynamic IP address assignment (which has no chance of making it through
    the IESG) or to REQUIRE Aggressive Mode.  In addition, the IPS Security
    draft appears to need some editing to allow Aggressive Mode to be a "MAY"
    for FCIP (and iFCP).  Darn - I thought we had this issue closed in
    Huntington
    Beach -- I didn't pay enough attention to the details of what we did at
    the very end of the security session.
    
    	Support for IKE Oakley Groups is not required.
    
    [T] What does this refer to?  At a minimum, it needs a reference.
    
       For the purposes of establishing a secure FCIP Link, the two
       participating FCIP Entities consult a Security Policy Database
       (SPD).
    
    -- Section 10.4.2 - TCP Connection Security Associations (SAs)
     
       For a TCP Connection establishment, IKE Phase 2 is employed,
       resulting in an SA, identified by an SPI. All IP datagrams of the
       TCP Connection MUST carry an ESP header with a valid SPI and
       Sequence Number to be accepted as valid by the receiving peer.
    
    [T] The requirement for a phase 2 SA per TCP connection has been removed.
    This text (and possibly the rest of this section) need some editing to
    reflect that.
    
    -- Section 10.4.3 - Handling data integrity and confidentiality violations
     
       Confidentiality checks MUST be performed if Confidentiality is
       enabled.
    
    [T] And what would those be, please?  Replace this with a prohibition on
    use of Confidentiality without Integrity.
    
    -- Section 10.4.4 - Handling SA parameter mismatches
     
       When SA parameters do not match, the TCP Connection may reach a
       point where no traffic moves, or there are excessive TCP
       retransmissions. In such a case, either side MAY take one of the
       following actions:
       a)  Reestablish another set of SA parameters; or
       b)  Close the TCP Connection and notify the FC Entity with the
           reason for the closure.
    
    [T/E] Needs some more explanation, including an example of the sort of
    mismatch that could cause this problem.  Recall that IKE negotiates SA
    parameters, and this fact needs to be included in the explanation and
    example.
    
    -- Section 11.2 - IP Quality of Service (QoS) Support
    
       If diffserv/PHB QoS is NOT implemented, the DSCP field for all IP
       packets SHALL be set to '000000'.
    
    [T] Not a good idea.  That's not consistent with RFC 2474.  Best
    bet is to drop this sentence, but if the authors want to say something
    here, they should contact me directly to discuss/vet appropriate text
    
    -- Section 12 - Normative References
    
    [E] This needs to be carefully checked to minimize normative references.
    [7] is definitely non-normative.  Most of the QoS references are or can
    be non-normative, specifically [11], [22], [23], [24]).  [22] is
    an Informational RFC and hence has to be referenced in a non-normative
    fashion, and I really want to see [23] and [24] be non-normative (else
    any FCIP implementation will have to implement both EF and AF, which
    is surely not what was intended).  Need to add a non-normative MPLS
    reference.
    
    -- Section 14 - Acknowledgments
     
    [E] This is a good place to thank everyone who's reviewed the document,
    commented on ideas in it, or helped in other ways.
     
    -- Section 15 - Contributors' Addresses
     
    We'll try this structure of not separating the folks listed on p.1 from
    the other contributors and see if there are any procedural objections.
    It's unusual to say the least.
    
    -- Annex A - IANA Considerations
    
    [T] Instruct IANA to change the authority for those port allocations to
    reference
    this RFC when it is approved.  Add a sentence forbidding the use of UDP with
    FCIP even though IANA has allocated a port.
    
    [T] Will need to reference the SOF/EOF registry that the FC Frame
    Encapsulation
    Draft will need to set up.  Point to the Protocol# allocation done by that
    draft also.  If a connection usage registry is needed (see comment against
    Section 8, details of that will have to go here).
    
    [E] Should the ANNEXes be APPENDIXes instead?
    
    -- Annex C - Example of synchronization recovery algorithm
    
    [T] See comment on this Annex under Section 6.6.2.3 above.
    
    -- Annexes E, F, and G
    
    I skipped reviewing these three annexes based on the assumption that they
    correctly reproduce information specified elsewhere, and the amount of time
    I've already spent on this review.
    
    
    ---------------------------------------------------
    David L. Black, Senior Technologist
    EMC Corporation, 42 South St., Hopkinton, MA  01748
    +1 (508) 249-6449 *NEW*      FAX: +1 (508) 497-8500
    black_david@emc.com         Cell: +1 (978) 394-7754
    ---------------------------------------------------
    


Home

Last updated: Wed Mar 20 02:18:22 2002
9207 messages in chronological order