home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc2166 < prev    next >
Text File  |  1997-06-19  |  76KB  |  1,908 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                     D. Bryant
  8. Request for Comments: 2166                                3Com Corp
  9. Category: Informational                                 P. Brittain
  10.                                                Data Connection Ltd.
  11.                                                           June 1997
  12.  
  13.                       APPN Implementer's Workshop
  14.                          Closed Pages Document
  15.  
  16.                          DLSw v2.0 Enhancements
  17.  
  18. Status of this Memo
  19.  
  20. This memo provides information for the Internet community.  This memo
  21. does not specify an Internet standard of any kind.  Distribution of
  22. this memo is unlimited.
  23.  
  24. Abstract
  25.  
  26.    This document specifies
  27.  
  28.    - a set of extensions to RFC 1795 designed to improve the scalability
  29.      of DLSw
  30.    - clarifications to RFC 1795 in the light of the implementation
  31.      experience to-date.
  32.  
  33.    It is assumed that the reader is familiar with DLSw and RFC 1795.  No
  34.    effort has been made to explain these existing protocols or
  35.    associated terminology.
  36.  
  37.    This document was developed in the DLSw Related Interest Group (RIG)
  38.    of the APPN Implementers Workshop (AIW). If you would like to
  39.    participate in future DLSw discussions, please subscribe to the DLSw
  40.    RIG mailing lists by sending a mail to majordomo@raleigh.ibm.com
  41.    specifying 'subscribe aiw-dlsw' as the body of the message.
  42.  
  43. Table of Contents
  44.  
  45.    1. INTRODUCTION ................................................    3
  46.    2. HALT REASON CODES............................................    3
  47.    3. SCOPE OF SCALABILITY ENHANCEMENTS............................    4
  48.    4. OVERVIEW OF SCALABILITY ENHANCEMENTS.........................    6
  49.    5. MULTICAST GROUPS AND ADDRESSING..............................    7
  50.    5.1 USING MULTICAST GROUPS......................................    8
  51.    5.2 DLSW MULTICAST ADDRESSES....................................    8
  52.    6. DLSW MESSAGE TRANSPORTS......................................    8
  53.    6.1 TCP/IP CONNECTIONS ON DEMAND................................    9
  54.     6.1.1 TCP CONNECTIONS ON DEMAND RACE CONDITIONS................    9
  55.  
  56.  
  57.  
  58. Bryant & Brittain            Informational                      [Page 1]
  59.  
  60. RFC 2166              APPN Implementer's Workshop             June 1997
  61.  
  62.  
  63.    6.2 SINGLE SESSION TCP/IP CONNECTIONS...........................    9
  64.     6.2.1 EXPEDITED SINGLE SESSION TCP/IP CONNECTIONS..............   10
  65.      6.2.1.1 TCP PORT NUMBERS......................................   10
  66.      6.2.1.2 TCP CONNECTION SETUP..................................   10
  67.      6.2.1.3 SINGLE SESSION SETUP RACE CONDITIONS..................   10
  68.      6.2.1.4 TCP CONNECTIONS WITH NON-MULTICAST CAPABLE DLSW PEERS.   11
  69.    6.3 UDP DATAGRAMS...............................................   12
  70.     6.3.1 VENDOR SPECIFIC FUNCTIONS OVER UDP.......................   12
  71.     6.3.2 UNICAST UDP DATAGRAMS....................................   12
  72.     6.3.3 MULTICAST UDP DATAGRAMS..................................   13
  73.    6.4 UNICAST UDP DATAGRAMS IN LIEU OF IP MULTICAST...............   13
  74.    6.5 TCP TRANSPORT...............................................   14
  75.    7. MIGRATION SUPPORT............................................   14
  76.    7.1 CAPABILITIES EXCHANGE.......................................   14
  77.    7.2 CONNECTING TO NON-MULTICAST CAPABLE NODES...................   15
  78.    7.3 COMMUNICATING WITH MULTICAST CAPABLE NODES..................   15
  79.    8. SNA SUPPORT..................................................   16
  80.    8.1 ADDRESS RESOLUTION..........................................   16
  81.    8.2 EXPLORER FRAMES.............................................   16
  82.    8.3 CIRCUIT SETUP...............................................   17
  83.    8.4 EXAMPLE SNA SSP MESSAGE SEQUENCE............................   17
  84.    8.5 UDP RELIABILITY.............................................   19
  85.     8.5.1 RETRIES..................................................   19
  86.    9. NETBIOS......................................................   20
  87.    9.1 ADDRESS RESOLUTION..........................................   21
  88.    9.2 EXPLORER FRAMES.............................................   21
  89.    9.3 CIRCUIT SETUP...............................................   21
  90.    9.4 EXAMPLE NETBIOS SSP MESSAGE SEQUENCE........................   22
  91.    9.5 MULTICAST RELIABILITY AND RETRIES...........................   24
  92.    10. SEQUENCING..................................................   24
  93.    11. FRAME FORMATS...............................................   25
  94.    11.1 MULTICAST CAPABILITIES CONTROL VECTOR......................   25
  95.     11.1.1 DLSW CAPABILITIES NEGATIVE RESPONSE.....................   26
  96.    11.2 UDP PACKETS................................................   26
  97.    11.3 VENDOR SPECIFIC UDP PACKETS................................   27
  98.    12. COMPLIANCE STATEMENT........................................   28
  99.    13. SECURITY CONSIDERATIONS.....................................   29
  100.    14. ACKNOWLEDGEMENTS............................................   29
  101.    15. AUTHORS' ADDRESSES..........................................   30
  102.    16. APPENDIX - CLARIFICATIONS TO RFC 1795.......................   31
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Bryant & Brittain            Informational                      [Page 2]
  115.  
  116. RFC 2166              APPN Implementer's Workshop             June 1997
  117.  
  118.  
  119.    1. Introduction
  120.  
  121.    This document defines v2.0 of Data Link Switching (DLSw) in the form
  122.    of a set of enhancements to RFC 1795. These enhancements are designed
  123.    to be fully backward compatible with existing RFC 1795
  124.    implementations. As a compatible set of enhancements to RFC 1795,
  125.    this document does not replace or supersede RFC 1795.
  126.  
  127.    The bulk of these enhancements address scalability issues in DLSw
  128.    v1.0.  Reason codes have also been added to the HALT_DL and
  129.    HALT_DL_NOACK SSP messages in order to improve the diagnostic
  130.    information available.
  131.  
  132.    Finally, the appendix to this document lists a number of
  133.    clarifications to RFC 1795 where the implementation experience to-
  134.    date has shown that the original RFC was ambiguous or unclear. These
  135.    clarifications should be read alongside RFC 1795 to obtain a full
  136.    specification of the base v1.0 DLSw standard.
  137.  
  138. 2. HALT Reason codes
  139.  
  140.    RFC 1795 provides no mechanism for a DLSw to communicate to its peer
  141.    the reason for dropping a circuit.  DLSw v2.0 adds reason code fields
  142.    to the HALT_DL and HALT_DL_NOACK SSP messages to carry this
  143.    information.
  144.  
  145.    The reason code is carried as 6 bytes of data after the existing SSP
  146.    header.  The format of these bytes is as shown below.
  147.  
  148.    Byte       Description
  149.    0-1        Generic HALT reason code in byte normal format
  150.  
  151.    2-5        Vendor-specific detailed reason code
  152.  
  153.    The generic HALT reason code takes one of the following decimal
  154.    values (which are chosen to match the disconnect reason codes
  155.    specified in the DLSw MIB).
  156.  
  157.    1 - Unknown error
  158.    2 - Received DISC from end-station
  159.    3 - Detected DLC error with end-station
  160.    4 - Circuit-level protocol error (e.g., pacing)
  161.    5 - Operator-initiated (mgt station or local console)
  162.  
  163.    The vendor-specific detailed reason code may take any value.
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Bryant & Brittain            Informational                      [Page 3]
  171.  
  172. RFC 2166              APPN Implementer's Workshop             June 1997
  173.  
  174.  
  175.    All V2.0 DLSws must include this information on all HALT_DL and
  176.    HALT_DL_NOACK messages sent to v2.0 DLSw peers.  For backwards
  177.    compatibility with RFC 1795, DLSw V2.0 implementations must also
  178.    accept a HALT_DL or HALT_DL_NOACK message received from a DLSw peer
  179.    that does not carry this information (i.e. RFC 1795 format for these
  180.    SSP messages).
  181.  
  182. 3. Scope of Scalability Enhancements
  183.  
  184.    The DLSw Scalability group of the AIW identified a number of
  185.    scalability issues associated with existing DLSw protocols as defined
  186.    in RFC 1795:
  187.  
  188.    - Administration
  189.  
  190.      RFC 1795 implies the need to define the transport address of all
  191.      DLSw peers at each DLSw.  In highly meshed situations (such as
  192.      those often found in NetBIOS networks), the resultant
  193.      administrative burden is undesirable.
  194.  
  195.    - Address Resolution
  196.  
  197.      RFC 1795 defines point to point TCP (or other reliable transport
  198.      protocol) connections between DLSw peers.  When attempting to
  199.      discover the location of an unknown resource, a DLSw sends an
  200.      address resolution packet to each DLSw peer over these connections.
  201.      In highly meshed configurations, this can result in a very large
  202.      number of packets in the transport network.  Although each packet
  203.      is sent individually to each DLSw peer, they are each identical in
  204.      nature.  Thus the transport network is burdened with excessive
  205.      numbers of identical packets.  Since the transport network is most
  206.      commonly a wide area network, where bandwidth is considered a
  207.      precious resource, this packet duplication is undesirable.
  208.  
  209.    - Broadcast Packets
  210.  
  211.      In addition to the address resolution packets described above, RFC
  212.      1795 also propagates NetBIOS broadcast packets into the transport
  213.      network.  The UI frames of NetBIOS are sent as LAN broadcast
  214.      packets.  RFC 1795 propagates these packets over the point to point
  215.      transport connections to each DLSw peer.  In the same manner as
  216.      above, this creates a large number of identical packets in the
  217.      transport network, and hence is undesirable.  Since NetBIOS UI
  218.      frames can be sent by applications, it is difficult to predict or
  219.      control the rate and quantity of such traffic.  This compounds the
  220.      undesirability of the existing RFC 1795 propagation method for
  221.      these packets.
  222.  
  223.  
  224.  
  225.  
  226. Bryant & Brittain            Informational                      [Page 4]
  227.  
  228. RFC 2166              APPN Implementer's Workshop             June 1997
  229.  
  230.  
  231.    - TCP (transport connection) Overhead
  232.  
  233.      As defined in RFC 1795, each DLSw maintains a transport connection
  234.      to its DLSw peers.  Each transport connection guarantees in order
  235.      packet delivery.   This is accomplished using acknowledgment and
  236.      sequencing algorithms which require both CPU and memory at the DLSw
  237.      endpoints in direct proportion to the number transport connections.
  238.      The DLSw Scalability group has identified two scenarios where the
  239.      number of transport connections can become significant resulting in
  240.      excessive overhead and corresponding equipment costs (memory and
  241.      CPU).   The first scenario is found in highly meshed DLSw
  242.      configurations where the number of transport connections
  243.      approximates n2 (where n is the number of DLSw peers).  This is
  244.      typically found in DLSw networks supporting NetBIOS.  The second
  245.      scenario is found  in networks  where many remote locations
  246.      communicate to few central sites.  In this case, the central sites
  247.      must support n transport connections  (where n is the number of
  248.      remote sites).    In both scenarios the resultant transport
  249.      connection overhead is considered undesirable depending upon the
  250.      value of n.
  251.  
  252.    - LLC2 overhead
  253.  
  254.      RFC 1795 specifies that each DLSw provides local termination for
  255.      the LLC2 (SDLC or other SNA reliable data link  protocol) sessions
  256.      traversing the SSP.   Because these reliable data links provide
  257.      guaranteed in order packet delivery, the memory and CPU overhead of
  258.      maintaining these connections can also become significant.   This
  259.      is particularly undesirable in the second scenario described above,
  260.      because the number of reliable connections maintained at the
  261.      central site is the aggregate of the connections maintained at each
  262.      remote site.
  263.  
  264.    It is not the intent of this document to address all the undesirable
  265.    scalability issues associated with RFC 1795.  This paper identifies
  266.    protocol enhancements to RFC 1795 using the inherent multicast
  267.    capabilities of the underlying transport network to improve the
  268.    scalability of RFC 1795.  It is believed that the enhancements
  269.    defined, herein, address many of the issues identified above, such as
  270.    administration, address resolution, broadcast packets, and, to a
  271.    lesser extent, transport overhead.  This paper does not address LLC2
  272.    overhead.  Subsequent efforts by the AIW and/or DLSw Scalability
  273.    group may address the unresolved scalability issues.
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Bryant & Brittain            Informational                      [Page 5]
  283.  
  284. RFC 2166              APPN Implementer's Workshop             June 1997
  285.  
  286.  
  287.    While it is the intent of this paper to accommodate all transport
  288.    protocols as best as is possible, it is recognized that the multicast
  289.    capabilities of many protocols is not yet well defined, understood,
  290.    or implemented. Since TCP is the most prevalent DLSw transport
  291.    protocol in use today, the DLSw Scalability group has chosen to focus
  292.    its definition around IP based multicast services. This document only
  293.    addresses the implementation detail of IP based multicast services.
  294.  
  295.    This proposal does not consider the impacts of IPv6 as this was
  296.    considered too far from widespread use at the time of writing.
  297.  
  298. 4. Overview of Scalability Enhancements
  299.  
  300.    This paper describes the use of multicast services within the
  301.    transport network to improve the scalability of DLSw based
  302.    networking.  There are only a few main components of this proposal:
  303.  
  304.    - Single session TCP connections
  305.  
  306.      RFC 1795 defines a negotiation protocol for DLSw peers to choose
  307.      either two unidirectional or one bi-directional TCP connection.
  308.      DLSws implementing the enhancements described in this document must
  309.      support and use(whenever required and possible)a single bi-
  310.      directional TCP connection between DLSw peers. That is to say that
  311.      the single tunnel negotiation support of RFC 1795 is a prerequisite
  312.      function to this set of enhancements. Use of two unidirectional TCP
  313.      connections is only allowed (and required)for migration purposes
  314.      when communicating with DLSw peers that do not implement these
  315.      enhancements.
  316.  
  317.      This document also specifies a faster method for bringing up a
  318.      single TCP connection between two DLSw peers than the negotiation
  319.      used in RFC 1795.  This faster method, detailed in section 6.2.1,
  320.      must be used where both peers are known to support DLSw v2.0.
  321.  
  322.    - TCP connections on demand
  323.  
  324.      Two DLSw peers using these enhancements will only establish a TCP
  325.      connection when necessary.  SSP connections to DLSw peers which do
  326.      not implement these enhancements are assumed to be established by
  327.      the means defined in RFC 1795.  DLSws implementing v2.0 utilize UDP
  328.      based transport services to send address resolution packets
  329.      (CANUREACH_ex, NETBIOS_NQ_ex, etc.).  If a positive response is
  330.      received, then a TCP connection is only established to the
  331.      associated DLSw peer if one does not already exist.
  332.      Correspondingly, TCP connections are brought down when there are no
  333.      circuits to a DLSw peer for an implementation defined period of
  334.      time.
  335.  
  336.  
  337.  
  338. Bryant & Brittain            Informational                      [Page 6]
  339.  
  340. RFC 2166              APPN Implementer's Workshop             June 1997
  341.  
  342.  
  343.    - Address resolution through UDP
  344.  
  345.      The main thrust of this paper is to utilize non-reliable transport
  346.      and the inherent efficiencies of multicast protocols whenever
  347.      possible and applicable to reduce network overhead.  Accordingly,
  348.      the address resolution protocols of SNA and NetBIOS are sent over
  349.      the non-reliable transport of IP, namely UDP.  In addition, IP
  350.      multicast/unicast services are used whenever address resolution
  351.      packets must be sent to multiple destinations. This avoids the need
  352.      to maintain TCP SSP connections between two DLSw peers when no
  353.      circuits are active.  CANUREACH_ex and ICANREACH_ex packets can be
  354.      sent to all the appropriate DLSw peers without the need for pre-
  355.      configured peers or pre-established TCP/IP connections.  In
  356.      addition, most multicast services (including TCP's MOSPF, DVMRP,
  357.      MIP, etc.) replicate and propagate messages only as necessary to
  358.      deliver to all multicast members.   This avoids duplication and
  359.      excessive bandwidth consumption in the transport network.
  360.  
  361.      To further optimize the use of WAN resources, address resolution
  362.      responses are sent in a directed fashion (i.e., unicast) via UDP
  363.      transport whenever possible.   This avoids the need to setup or
  364.      maintain TCP connections when they are not required.  It also
  365.      avoids the bandwidth costs associated with broadcasting.
  366.  
  367.      Note: It is also permitted to send some address resolution traffic
  368.      over existing TCP connections.  The conditions under which this is
  369.      permitted are detailed in section 7.
  370.  
  371.    - NetBIOS broadcasts over UDP
  372.  
  373.      In the same manner as above, NetBIOS broadcast packets are sent via
  374.      UDP (unicast and multicast) whenever possible and appropriate. This
  375.      avoids the need to establish TCP connections between DLSw peers
  376.      when there are no circuits required.   In addition, bandwidth in
  377.      the transport network is conserved by utilizing the efficiencies
  378.      inherent to multicast service implementation.  Details covering
  379.      identification of these packets and proper propagation methods are
  380.      described in section 10.
  381.  
  382. 5. Multicast Groups and Addressing
  383.  
  384.    IP multicast services provides an unreliable datagram oriented
  385.    delivery service to multiple parties. Communication is accomplished
  386.    by sending and/or listening to specific 'multicast' addresses.  When
  387.    a given node sends a packet to a specific address (defined to be
  388.    within the multicast address range), the IP network (unreliably)
  389.    delivers the packet to every node listening on that address.
  390.  
  391.  
  392.  
  393.  
  394. Bryant & Brittain            Informational                      [Page 7]
  395.  
  396. RFC 2166              APPN Implementer's Workshop             June 1997
  397.  
  398.  
  399.    Thus, DLSws can make use of this service by simply sending and
  400.    receiving (i.e., listening for) packets on the appropriate multicast
  401.    addresses. With careful planning and implementation, networks can be
  402.    effectively partitioned and network overhead controlled by sending
  403.    and listening on different addresses groups.  It is not the intent of
  404.    this paper to define or describe the techniques by which this can be
  405.    accomplished.  It is expected that the networking industry (vendors
  406.    and end users alike) will determine the most appropriate ways to make
  407.    use of the functions provided by use of DLSw multicast transport
  408.    services.
  409.  
  410. 5.1 Using Multicast Groups
  411.  
  412.    The multicast addressing as described above can be effectively used
  413.    to limit the amount of broadcast/multicast traffic in the network.
  414.    It is not the intent of this document to describe how individual
  415.    DLSw/SSP implementations would assign or choose group addresses.  The
  416.    specifics of how this is done and exposed to the end user is an issue
  417.    for the specific implementor.  In order to provide for multivendor
  418.    interoperability and simplicity of configuration, however, this paper
  419.    defines a single IP multicast address, 224.0.10.000, to be used as a
  420.    default DLSw multicast address.  If a given implementation chooses to
  421.    provide a default multicast address, it is recommended this address
  422.    be used.  In addition, this address should be used for both
  423.    transmitting and receiving of multicast SSP messages.  Implementation
  424.    of a default multicast address is not, however, required.
  425.  
  426. 5.2 DLSw Multicast Addresses
  427.  
  428.    For the purpose of long term interoperability, the AIW has secured a
  429.    block of IP multicast addresses to be used with DLSw.  These
  430.    addresses are listed below:
  431.  
  432.    Address Range        Purpose
  433.    --------------------------------------------------------------------
  434.    224.0.10.000         Default multicast address
  435.    224.0.10.001-191     User defined DLSw multicast groups
  436.    224.0.10.192-255     Reserved for future use by the DLSw RIG in DLSw
  437.                         enhancements
  438.  
  439. 6. DLSw Message Transports
  440.  
  441.    With the introduction of DLSw Multicast Protocols, SSP messages are
  442.    now sent over two distinct transport mechanisms: TCP/IP connections
  443.    and UDP services.  Furthermore, the UDP datagrams can be sent to two
  444.    different kinds of IP addresses: unique IP addresses (generally
  445.    associated with a specific DLSw), and multicast IP addresses
  446.    (generally associated with a group of DLSw peers).
  447.  
  448.  
  449.  
  450. Bryant & Brittain            Informational                      [Page 8]
  451.  
  452. RFC 2166              APPN Implementer's Workshop             June 1997
  453.  
  454.  
  455. 6.1 TCP/IP Connections on Demand
  456.  
  457.    As is the case in RFC 1795, TCP/IP connections are established
  458.    between DLSw peers.  Unlike RFC 1795, however, TCP/IP connections are
  459.    only established to carry reliable circuit data (i.e., LLC2 based
  460.    circuits).  Accordingly, a TCP/IP connection is only established to a
  461.    given DLSw peer when the first circuit to that DLSw is required
  462.    (i.e., the origin DLSw must send a CANUREACH_CS to a target DLSw peer
  463.    and there is no existing TCP connection between the two).  In
  464.    addition, the TCP/IP connection is brought down an implementation
  465.    defined amount of time after the last active (not pending) circuit
  466.    has terminated.  In this way, the overhead associated with
  467.    maintaining TCP connections is minimized.
  468.  
  469.    With the advent of TCP connections on demand, the activation and
  470.    deactivation of TCP connections becomes a normal occurrence as
  471.    opposed to the exception event it constitutes in RFC 1795.  For this
  472.    reason, it is recommended that implementations carefully consider the
  473.    value of SNMP traps for this condition.
  474.  
  475. 6.1.1 TCP Connections on Demand Race Conditions
  476.  
  477.    Non-circuit based SSP packetsn (e.g.,CANUREACH_ex, etc.) may still be
  478.    sent/received over TCP connections after all circuits have been
  479.    terminated.  Taking this into account implementations should still
  480.    gracefully terminate these TCP connections once the connection is no
  481.    longer supporting circuits.  This may require an implementation to
  482.    retransmit request frames over UDP when no response to a TCP based
  483.    unicast request is received and the TCP connection is brought down.
  484.    This is not required in the case of multicast requests as these are
  485.    received over the multicast transport mechanism.
  486.  
  487. 6.2 Single Session TCP/IP Connections
  488.  
  489.    RFC 1795 defines the use of two unidirectional TCP/IP sessions
  490.    between any pair of DLSw peers using read port number 2065 and write
  491.    port number 2067.  Additionally, RFC 1795 allows for implementations
  492.    to optionally use only one bi-directional TCP/IP session.  Using one
  493.    TCP/IP session between DLSw peers is believed to significantly
  494.    improve the performance and scalability of DLSw protocols.
  495.    Performance is improved because TCP/IP acknowledgments are much more
  496.    likely to be piggy-backed on real data when TCP/IP sessions are used
  497.    bi-directionally.  Scalability is improved because fewer TCP control
  498.    blocks, state machines, and associated message buffers are required.
  499.    For these reasons, the DLSw enhancements defined in this paper
  500.    REQUIRE the use of single session TCP/IP sessions.
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Bryant & Brittain            Informational                      [Page 9]
  507.  
  508. RFC 2166              APPN Implementer's Workshop             June 1997
  509.  
  510.  
  511.    Accordingly, DLSws implementing these enhancements must carry the TCP
  512.    Connections Control Vector in their Capabilities Exchange.  In
  513.    addition, the TCP Connections Control Vector must indicate support
  514.    for 1 connection.
  515.  
  516. 6.2.1 Expedited Single Session TCP/IP Connections
  517.  
  518.    In RFC 1795, single session TCP/IP connections are accomplished by
  519.    first establishing two uni-directional TCP connections, exchanging
  520.    capabilities, and then bringing down one of the connections.  In
  521.    order to avoid the unnecessary flows and time delays associated with
  522.    this process, a new single session bi-directional TCP/IP connection
  523.    establishment algorithm is defined.
  524.  
  525. 6.2.1.1 TCP Port Numbers
  526.  
  527.    DLSws implementing these enhancements will use a TCP destination port
  528.    of 2067 (as opposed to RFC 1795 which uses 2065) for single session
  529.    TCP connections.  The source port will be a random port number using
  530.    the established TCP norms which exclude the possibility of either
  531.    2065 or 2067.
  532.  
  533. 6.2.1.2 TCP Connection Setup
  534.  
  535.    DLSw peers implementing these enhancements will establish a single
  536.    session TCP connection whenever the associated peer is known to
  537.    support this capability.  To do this, the initiating DLSw simply
  538.    sends a TCP setup request to destination port 2067.  The receiving
  539.    DLSw responds accordingly and the TCP three way handshake ensues.
  540.    Once this handshake has completed, each DLSw is notified and the DLSw
  541.    capabilities exchange ensues.  As in RFC 1795, no flows may take
  542.    place until the capabilities exchange completes.
  543.  
  544. 6.2.1.3 Single Session Setup Race Conditions
  545.  
  546.    The new expedited single session setup procedure described above
  547.    opens up the possibility of a race condition that occurs when two
  548.    DLSw peers attempt to setup single session TCP connections to each
  549.    other at the same time.  To avoid the establishment of two TCP
  550.    connections, the following rules are applied when establishing
  551.    expedited single session TCP connections:
  552.  
  553.    1.If an inbound TCP connect indication is received on port 2067 while
  554.      an outbound TCP connect request (on port 2067) to the same DLSw (IP
  555.      address) is in process or outstanding, the DLSw with the higher IP
  556.      address will close or reject the connection from the DLSw with the
  557.      lower IP address.
  558.  
  559.  
  560.  
  561.  
  562. Bryant & Brittain            Informational                     [Page 10]
  563.  
  564. RFC 2166              APPN Implementer's Workshop             June 1997
  565.  
  566.  
  567.    2.To further expedite the process, the DLSw with the lower IP address
  568.      may choose (implementation option) to close its connection request
  569.      to the DLSw with the higher address when this condition is
  570.      detected.
  571.    3.If the DLSw with the lower IP address has already sent its
  572.      capabilities exchange request on its connection to the DLSw with
  573.      the higher IP address, it must resend its capabilities exchange
  574.      request over the remaining TCP connection from its DLSw peer (with
  575.      the higher IP address).
  576.    4.The DLSw with the higher IP address must ignore any capabilities
  577.      exchange request received over the TCP connection to be terminated
  578.      (the one from the DLSw with the lower IP address).
  579.  
  580. 6.2.1.4 TCP Connections with Non-Multicast Capable DLSw peers
  581.  
  582.    During periods of migration, it is possible that TCP connections
  583.    between multicast capable and non-multicast capable DLSw peers will
  584.    occur.  It is also possible that multicast capable DLSws may attempt
  585.    to establish TCP connections with partners of unknown capabilities
  586.    (e.g., statically defined peers).  To handle these conditions the
  587.    following additional rules apply to expedited single session TCP
  588.    connection setup:
  589.  
  590.    1.If the capability of a DLSw peer is not known, an implementation
  591.      may choose to send the initial TCP connect request to either port
  592.      2067 (expedited single session setup) or port 2065 (standard RFC
  593.      1795 TCP setup).
  594.    2.If a multicast capable DLSw receives an inbound TCP connect request
  595.      on port 2065 while processing an outbound request on 2067 to the
  596.      same DLSw, the sending DLSw will terminate its 2067 request and
  597.      respond as defined in RFC 1795 with an outbound 2065 request
  598.      (standard RFC 1795 TCP setup).
  599.    3.If a multicast capable DLSw receives an indication that the DLSw
  600.      peer is not multicast capable (the port 2067 setup request times
  601.      out or a port not recognized rejection is received), it will send
  602.      another connection request using port 2065 and the standard RFC
  603.      1795 session setup protocol.
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Bryant & Brittain            Informational                     [Page 11]
  619.  
  620. RFC 2166              APPN Implementer's Workshop             June 1997
  621.  
  622.  
  623. 6.3 UDP Datagrams
  624.  
  625.    As mentioned above, UDP datagrams can be sent two different ways:
  626.    unicast (e.g., sent to a single unique IP address) or multicast
  627.    (i.e., sent to an IP multicast address).  Throughout this document,
  628.    the term UDP datagram will be used to refer to SSP messages sent over
  629.    UDP, while unicast and multicast SSP messages will refer to the
  630.    specific type/method of UDP packet transport.  In either case,
  631.    standard UDP services are used to transport these packets.  In order
  632.    to properly parse the inbound UDP packets and deliver them to the SSP
  633.    state machines, all DLSw UDP packets will use the destination port of
  634.    2067.
  635.  
  636.    In addition, the checksum function of UDP remains optional for DLSw
  637.    SSP messages.  It is believed that the inherent CRC capabilities of
  638.    all data link transports will adequately protect SSP packets during
  639.    transmission.  And the incremental exposure to intermediate nodal
  640.    data corruption is negligible.  For further information on UDP packet
  641.    formats see the ôFrame Formatsö section.
  642.  
  643. 6.3.1 Vendor Specific Functions over UDP
  644.  
  645.    In order to accommodate vendor specific capabilities over UDP
  646.    transport, a new SSP packet format has been defined.  This new packet
  647.    format is required because message traffic of this type is not
  648.    necessarily preceded by a capabilities exchange.  Accordingly, DLSw's
  649.    wishing to invoke a vendor specific function may send out this new
  650.    SSP packet format over UDP.
  651.  
  652.    Because this packet can be sent over TCP connections and non-
  653.    multicast capable nodes may not be able to recognize it,
  654.    implementations may only send this packet over TCP to DLSw peers
  655.    known to understand this packet format (i.e., multicast capable).  To
  656.    avoid this situation in the future, DLSws implementing these
  657.    enhancements must ignore SSP packets with an unrecognized DLSw
  658.    version number in the range of x'31' to x'3F'.  Further information
  659.    and the precise format for this new packet type is described below in
  660.    the ôFrame Formatsö section.
  661.  
  662. 6.3.2 Unicast UDP Datagrams
  663.  
  664.    Generically speaking, a unicast UDP datagram is utilized whenever an
  665.    SSP message (not requiring reliable transport) must be sent to a
  666.    unique set (not all) of DLSw peers.  This avoids the overhead of
  667.    having to establish and maintain TCP connections when they are not
  668.    required for reliable data transport.
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Bryant & Brittain            Informational                     [Page 12]
  675.  
  676. RFC 2166              APPN Implementer's Workshop             June 1997
  677.  
  678.  
  679.    A typical example of when unicast UDP might be used would be an
  680.    ICANREACH_ex response from a peer DLSw (with which no TCP connection
  681.    currently exists).  In this case, the sending DLSw knows the IP
  682.    address of the intended receiver and can simply send the response via
  683.    unicast UDP.  In addition, there are a number of NetBIOS cases where
  684.    unicast UDP is used to handle UI frames directed to a specific DLSw
  685.    (e.g., NetBIOS STATUS_RESPONSE).  Further detail is provided in the
  686.    NetBIOS section of this document.
  687.  
  688. 6.3.3 Multicast UDP Datagrams
  689.  
  690.    In a broad sense, multicast UDP datagrams are used whenever a given
  691.    SSP message must be sent to multiple DLSw peers.  In the case of SNA,
  692.    this is primarily the CANUREACH_ex packets.  In the case of NetBIOS,
  693.    multicast datagrams are used to send broadcast UI frames such as
  694.    NetBIOS user datagrams and broadcast datagrams.
  695.  
  696.    Note, however, it is sometimes possible to avoid broadcasting certain
  697.    NetBIOS frames that would otherwise be broadcast in the LAN
  698.    environment.  This is typically accomplished using name caching
  699.    techniques not described in this paper.  In cases of this type when a
  700.    single destination DLSw can be determined, unicast transport can be
  701.    used to send the 'broadcast' NetBIOS frame to a single destination.
  702.    A more detailed listing of NetBIOS SSP packets and transport methods
  703.    can be found in the NetBIOS section of this document.
  704.  
  705. 6.4 Unicast UDP Datagrams in Lieu of IP Multicast
  706.  
  707.    Because the use of IP multicast services is actually a function of IP
  708.    itself and not DLSw proper, it is possible for implementations to
  709.    simply make use of the UDP transport mechanisms described in this
  710.    paper without making direct use of the IP multicast function.  While
  711.    this is not considered to be as efficient as using multicast
  712.    transport mechanisms, this practice is not explicitly prohibited.
  713.  
  714.    Implementations which choose to make use of UDP transport in this
  715.    manner must first know the IP address of all the potential target
  716.    DLSw peers and send individual unicast packets to each.  How this
  717.    information is obtained and/or maintained is outside the scope of
  718.    this paper.
  719.  
  720.    As a matter of compliance, implementers need not send SSP packets
  721.    outbound over UDP as there are some conditions where this may not be
  722.    necessary or desirable.  It is, however, required that implementers
  723.    provide an option to receive SSP packets over UDP.
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Bryant & Brittain            Informational                     [Page 13]
  731.  
  732. RFC 2166              APPN Implementer's Workshop             June 1997
  733.  
  734.  
  735. 6.5 TCP Transport
  736.  
  737.    Despite the addition of UDP based packet transport, TCP remains the
  738.    fundamental form of communications between DLSw peers.  In
  739.    particular, TCP is still used to carry all LLC2 based circuit data.
  740.  
  741.    Throughout this document wherever UDP unicast (not multicast) is
  742.    discussed, the reader should be aware that TCP may be used instead.
  743.    Moreover, it is strongly recommended that TCP be used in preference
  744.    to UDP whenever a TCP connection to the destination already exists.
  745.    Implementations, however, should be prepared to receive SSP packets
  746.    from either transport (TCP or UDP).
  747.  
  748. 7. Migration Support
  749.  
  750.    It is anticipated that some networks will experience a transition
  751.    stage where both RFC 1795 (referred to as 'non-multicast' DLSws) and
  752.    It will be important for these two DLSw node types to interoperate
  753.    and thus the following accommodations for non-multicast DLSws are
  754.    required:
  755.  
  756. 7.1 Capabilities Exchange
  757.  
  758.    In order to guarantee both backward and forward capability, DLSws
  759.    which implement these multicast enhancements will carry a ôMulticast
  760.    Capabilitiesö Control Vector in their capabilities exchange (see RFC
  761.    1795 for an explanation of capabilities exchange protocols).
  762.    Presence of the Multicast Capabilities control vector indicates
  763.    support for the protocols defined in this document on a per DLSw peer
  764.    basis.  Conversely, lack of the Multicast Capabilities control vector
  765.    indicates no support for these extensions on a per DLSw peer basis.
  766.  
  767.    Additionally, nodes implementing these enhancement will carry a
  768.    modified DLSw Version control vector (x'82') indicating support for
  769.    version 2 release 0.
  770.  
  771.    Lastly, presence of these control vectors mandates a TCP Connections
  772.    Control Vector indicating support for 1 TCP connection in the same
  773.    Capabilities exchange.
  774.  
  775.    If a multicast capable DLSw receives a Capabilities Exchange CV that
  776.    includes the Multicast Capabilites CV but does not meet the above
  777.    criteria, it must reject the capabilities exchange by sending a
  778.    negative response as described in section 11.1.1.
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Bryant & Brittain            Informational                     [Page 14]
  787.  
  788. RFC 2166              APPN Implementer's Workshop             June 1997
  789.  
  790.  
  791. 7.2 Connecting to Non-Multicast Capable Nodes
  792.  
  793.    It is assumed that TCP connections to DLSw peers which do not support
  794.    multicast services are established by some means outside the scope of
  795.    this paper (i.e., non-multicast partner addresses are configured by
  796.    the customer).  TCP connections must be established and maintained to
  797.    down level nodes in the exact same manner as RFC 1795 requires,
  798.    establishes, and maintains them.  And because non-multicast DLSw
  799.    peers will not indicate support for multicast services in their
  800.    capabilities exchange, a multicast capable DLSw will know all its
  801.    non-multicast peers.
  802.  
  803. 7.3 Communicating with Multicast Capable Nodes
  804.  
  805.    Because non-multicast nodes will not receive SSP frames via UDP
  806.    (unicast or multicast) transmission, SSP messages to these DLSw peers
  807.    must be sent over TCP connections.  Therefore, nodes which implement
  808.    the multicast protocol enhancements must keep track of which DLSw
  809.    peers do not support multicast extensions (as indicated in the
  810.    capabilities exchange).  When a given packet is sent out via
  811.    multicast services, it must also be sent over multicast UDP(to reach
  812.    other multicast capable DLSw peers) and over the TCP connection to
  813.    each non-multicast node.  And although the multicast service requires
  814.    periodic retransmissions (for reliability reasons), this is not the
  815.    case with TCP connections to non-multicast nodes. Therefore,
  816.    multicast capable DLSws should not resend SSP packets over TCP
  817.    transport connection but rather, rely upon TCP to recover any lost
  818.    packets. Furthermore, communications with non-multicast nodes should
  819.    be in exact compliance with RFC 1795 protocols.
  820.  
  821.    When sending a unicast UDP message, it is important to know that the
  822.    destination DLSw supports multicast services.  This knowledge can be
  823.    obtained from previous TCP connections/capabilities exchanges or
  824.    inferred from a previously received UDP message, but how this
  825.    information is obtained is outside the scope of this paper.  In the
  826.    latter case, if the DLSw is non-multicast, then there would be a TCP
  827.    connection to it and it would be known to be non-multicast.  If it is
  828.    multicast capable and a TCP connection is in existence, then its
  829.    level is known (via the prior capabilities exchange).  If its
  830.    capabilities are not known and there is not an existing TCP
  831.    connection, then it can be implied to be multicast capable by virtue
  832.    of a cached entry but no active TCP connection (e.g., TCP peer on
  833.    demand support).  This inference, however, could be erroneous in
  834.    cases where the TCP connection (to a non-multicast DLSw) has failed
  835.    for some reason. But normal UDP based unicast verification mechanisms
  836.    will detect no active path to the destination and circuit setup will
  837.    proceed correctly (i.e., succeed or fail in accordance with true
  838.    connectivity).
  839.  
  840.  
  841.  
  842. Bryant & Brittain            Informational                     [Page 15]
  843.  
  844. RFC 2166              APPN Implementer's Workshop             June 1997
  845.  
  846.  
  847. 8. SNA Support
  848.  
  849.    Note: This paper does not attempt to address the unique issues
  850.    presented by SNA/HPR and its non-ERP data links
  851.  
  852.    In SNA protocols the generalized packet sequence of interest is a
  853.    test frame exchange followed by an XID exchange.  In all cases, DLSw
  854.    uses the CANUREACH_ex and ICANREACH_ex SSP packets to complete
  855.    address resolution and circuit establishment.  The following table
  856.    describes how these packets are transported via UDP between two
  857.    multicast capable DLSw peers.
  858.  
  859.                                               Transport
  860.      Message Event          Action            Mechanism         Retry
  861.    --------------------------------------------------------------------
  862.    TEST                 SEND CANUREACH_ex    Multicast/Unicast   Yes
  863.    TEST RESPONSE        SEND ICANREACH_ex       Unicast          No
  864.  
  865.  
  866.    The following paragraphs provide more detail on how UDP transport and
  867.    multicast protocol enhancements are used to establish SNA data links.
  868.  
  869. 8.1 Address Resolution
  870.  
  871.    When a DLSw receives an incoming test frame from an attached data
  872.    link, the assumption is that this is an exploratory frame in
  873.    preparation for an XID exchange and link activation.  The DLSw must
  874.    determine a correlation between the destination LSAP (mac and sap
  875.    pairing) and some other DLSw in the transport network.  This paper
  876.    generically refers to this process as ôaddress resolutionö.
  877.  
  878. 8.2 Explorer frames
  879.  
  880.    Address resolution messages may be sent over a TCP connection to a
  881.    multicast capable DLSw peer if such a connection already exists in
  882.    order that they take advantage of the guaranteed delivery of TCP.
  883.    This is particularly recommended for ICANREACH_ex frames.
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Bryant & Brittain            Informational                     [Page 16]
  899.  
  900. RFC 2166              APPN Implementer's Workshop             June 1997
  901.  
  902.  
  903. 8.3 Circuit Setup
  904.  
  905.    Circuit setup is accomplished in the same manner as described in RFC
  906.    1795.  More specifically, CANUREACH_cs, ICANREACH_cs, REACH_ACK,
  907.    XIDFRAME, etc.  are all sent over the TCP connection to the
  908.    appropriate DLSw.  This, of course, assumes the existence of a TCP
  909.    connection between the DLSw peers.  If the sending DLSw (sending a
  910.    CANUREACH_cs ) detects no active TCP connection to the DLSw peer,
  911.    then a TCP connection setup is initiated and the packet sent.  All
  912.    other circuit setup (and takedown) related sequences are now passed
  913.    over the TCP connection.
  914.  
  915. 8.4 Example SNA SSP Message Sequence
  916.  
  917.    The following diagram provides an example sequence of flows
  918.    associated with an SNA LLC circuit setup.  All flows and states
  919.    described below correspond precisely with those defined in RFC 1795.
  920.    The only exception is the addition of a TCP connection setup and DLSw
  921.    capabilities exchange that occurs when the origin DLSw must send a
  922.    CANUREACH_CS and no TCP connection yet exists to the target DLSw
  923.    peer.
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Bryant & Brittain            Informational                     [Page 17]
  955.  
  956. RFC 2166              APPN Implementer's Workshop             June 1997
  957.  
  958.  
  959.  ======                            ___                           ======
  960.  |    |        ---------        __/   \__       ---------        |    |
  961.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  962.  ======        |   |   |      <  Network  >     |   |   |        ======
  963. /______\       ---------       \__     __/      ---------       /______\
  964.  Origin       Origin DLSw         \___/        Target DLSw      Target
  965.  Station        partner                          partner        Station
  966.  
  967.               disconnected                    disconnected
  968.  
  969. TEST_cmd      DLC_RESOLVE_C    CANUREACH_ex               TEST_cmd
  970. ----------->  ----------->     ----------->               ---------->
  971.    TEST_rsp   DLC_RESOLVE_R    ICANREACH_ex                 TEST_rsp
  972.  <---------    <-----------   <-----------                <----------
  973. null XID      DLC_XID
  974. ----------->  ----------->
  975.               circuit_start
  976.  
  977.                            TCP Connection Setup
  978.                              <------------->
  979.                             Capabilities Exch.
  980.                              <------------->
  981.  
  982.                              CANUREACH_cs    DLC_START_DL
  983.                              ----------->    ----------->
  984.                                               resolve_pending
  985.                              ICANREACH_cs    DLC_DL_STARTED
  986.                              <-----------    <-------------
  987.            circuit_established                circuit_pending
  988.                               REACH_ACK
  989.                               ----------->  circuit_established
  990.  
  991.                                XIDFRAME         DLC_XID       null XID
  992.                                ----------->     --------->    -------->
  993.         XID        DLC_XID      XIDFRAME         DLC_XID          XID
  994.   <--------   <-----------   <-----------    <-----------    <--------
  995.     XIDs         DLC_XIDs      XIDFRAMEs        DLC_XIDs         XIDs
  996. <---------->  <---------->   <------------>  <------------>  <--------->
  997. SABME         DLC_CONTACTED   CONTACT         DLC_CONTACT     SABME
  998. ----------->  ----------->     ----------->    ----------->    -------->
  999.               connect_pending                 contact_pending
  1000.  
  1001.           UA     DLC_CONTACT     CONTACTED    DLC_CONTACTED          UA
  1002.   <---------   <-----------  <-----------    <-----------    <--------
  1003.                   connected                      connected
  1004. IFRAMEs       DLC_INFOs        IFRAMEs        DLC_INFOs       IFRAMEs
  1005. <---------->  <----------->  <------------>  <------------>  <-------->
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Bryant & Brittain            Informational                     [Page 18]
  1011.  
  1012. RFC 2166              APPN Implementer's Workshop             June 1997
  1013.  
  1014.  
  1015. 8.5 UDP Reliability
  1016.  
  1017.    It is important to note, that UDP (unicast and multicast)transport
  1018.    services do not provide a reliable means of delivery.  Existing RFC
  1019.    1795 protocols guarantee the delivery (or failure notification) of
  1020.    CANUREACH_ex and ICANREACH_ex messages.  UDP will not provide the
  1021.    same level of reliability.  It is, therefore, possible that these
  1022.    messages may be lost in the network and (CANUREACH_ex) retries will
  1023.    be necessary.
  1024.  
  1025. 8.5.1 Retries
  1026.  
  1027.    Test Frames are generally initiated by end stations every few
  1028.    seconds.  Many existing RFC 1795 DLSw implementations take advantage
  1029.    of the reliable SSP TCP connections and filter out end station Test
  1030.    frame retries when a CANUREACH_ex is outstanding.  Given the
  1031.    unreliable nature of UDP transport for these messages, however, this
  1032.    filtering technique may not be advisable.  Neither RFC 1795 nor this
  1033.    paper address this issue specifically.  It is simply noted that the
  1034.    UDP transport mechanism is unreliable and implementations should take
  1035.    this into account when determining a scheme for Test frame filtering
  1036.    and explorer retries.  Accordingly, the ôRetryö section in the table
  1037.    above only serves as an indicator of situations where retries may be
  1038.    desirable and/or necessary, but does not imply any requirement to
  1039.    implement retries. Also note, that retry logic only applies to non-
  1040.    response type packets.  It is not appropriate to retry response type
  1041.    SSP packets (i.e., ICANREACH_ex) as there is no way of knowing if the
  1042.    original response was ever received (and whether retry is necessary).
  1043.    So in the case of SNA, CANUREACH_ex messages may need retry logic and
  1044.    ICANREACH_ex messages do not.
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Bryant & Brittain            Informational                     [Page 19]
  1067.  
  1068. RFC 2166              APPN Implementer's Workshop             June 1997
  1069.  
  1070.  
  1071. 9. NetBIOS
  1072.  
  1073.    With the introduction of DLSw Multicast transport, all multicast
  1074.    NetBIOS UI frames are carried outside the TCP connections between
  1075.    DLSw peers (i.e., via UDP datagrams).  The following table defines
  1076.    the various NetBIOS UI frames and how they are transported via UDP
  1077.    between multicast capable DLSw peers:
  1078.  
  1079.                                               Transport
  1080. Message Event            Action               Mechanism           Retry
  1081. ---------------------------------------------------------------------------
  1082. ADD_GROUP_NAME_QUERY     SEND DATAFRAME       Multicast            Yes
  1083. ADD_NAME_QUERY           SEND NETBIOS_ANQ     Multicast            Yes
  1084. ADD_NAME_RESPONSE        SEND NETBIOS_ANR     Unicast1             No
  1085. NAME_IN_CONFLICT         SEND DATAFRAME       Multicast            No
  1086. STATUS_QUERY             SEND DATAFRAME       Unicast/Multicast(2) Yes
  1087. STATUS_RESPONSE          SEND DATAFRAME       Multicast(5)         No
  1088. TERMINATE_TRACE (x'07')  SEND DATAFRAME       Multicast            No
  1089. TERMINATE_TRACE (X'13')  SEND DATAFRAME       Multicast            No
  1090. DATAGRAM                 SEND DATAFRAME(3)    Unicast/Multicast(2) No
  1091. DATAGRAM_BROADCAST       SEND DATAFRAME       Multicast            No
  1092. NAME_QUERY               SEND NETBIOS_NQ_ex   Unicast/Multicast(2) Yes
  1093. NAME_RECOGNIZED          SEND NETBIOS_NR_ex   Unicast(4)           No
  1094.  
  1095.    Note 1:
  1096.    Upon receipt of an ADD_NAME_RESPONSE frame, a NETBIOS_ANR SSP message
  1097.    is returned via unicast UDP to the originator of the NETBIOS_ANQ
  1098.    message.
  1099.  
  1100.    Note 2:
  1101.    These frames may be sent either Unicast or Multicast UDP.  If the
  1102.    implementation has sufficient cached information to resolve the
  1103.    NetBIOS datagram destination to a single DLSw peer, then the SSP
  1104.    message can and should be sent via unicast.  If the cache does not
  1105.    contain such information then the resultant SSP message must be sent
  1106.    via multicast UDP.
  1107.  
  1108.    Note 3:
  1109.    Note that this frame is sent as either a DATAFRAME or DGRMFRAME
  1110.    according to the rules as specified in RFC 1795.
  1111.  
  1112.    Note 4:
  1113.    Upon receipt of a NAME_RECOGNIZED frame, a NETBIOS_NR_ex SSP message
  1114.    is returned via unicast UDP to the originator of the NETBIOS_NQ_ex
  1115.    frame.  Notice that although the NAME_RECOGNIZED frame is sent as an
  1116.    All Routes Explorer (source routing LANs only) frame, the resultant
  1117.    NETBIOS_NR_ex is sent as a unicast UDP directed response to the DLSw
  1118.    originating the NETBIOS_NQ_ex.  This is because there is no value in
  1119.  
  1120.  
  1121.  
  1122. Bryant & Brittain            Informational                     [Page 20]
  1123.  
  1124. RFC 2166              APPN Implementer's Workshop             June 1997
  1125.  
  1126.  
  1127.    sending NETBIOS_NR_ex as a multicast packet in the transport network.
  1128.    The use of ARE transmission in the LAN environment is to accomplish
  1129.    some form of load sharing in the source routed LAN environment.
  1130.    Since no analogous capability exists in the (TCP) transport network,
  1131.    it is not necessary to emulate this function there.  It is important
  1132.    to note, however, that when converting a received NETBIOS_NR_ex to a
  1133.    NAME_RECOGNIZED frame, the DLSw sends the NAME_RECOGNIZED frame onto
  1134.    the LAN as an ARE (source routing LANs only) frame.  This preserves
  1135.    the source route load sharing in the LAN environments on either side
  1136.    of the DLSw transport network.
  1137.  
  1138.    Note 5:
  1139.    Although RFC 1795 does not attempt to optimize STATUS_RESPONSE
  1140.    processing, it is possible to send a STATUS_RESPONSE as a unicast UDP
  1141.    response.  To do this, DLSws receiving an incoming SSP DATAFRAME
  1142.    containing a STATUS_QUERY must remember the originating DLSw's
  1143.    address and STATUS_QUERY correlator.  Then upon receipt of the
  1144.    corresponding STATUS_RESPONSE, the DLSw responds via unicast UDP to
  1145.    the originating DLSw(using the remembered originating DLSw address).
  1146.    Note, however, that in order to determine whether a frame is a
  1147.    STATUS_QUERY, all multicast capable DLSw implementations will need to
  1148.    parse the contents of frames that would normally be sent as DATAFRAME
  1149.    SSP messages.
  1150.  
  1151.    All other multicast frames are sent into the transport network using
  1152.    the appropriate multicast group address.
  1153.  
  1154. 9.1 Address Resolution
  1155.  
  1156.    Typical NetBIOS circuit setup using multicast services is essentially
  1157.    the same as specified in RFC 1795.  The only significant difference
  1158.    is that NETBIOS_NQ_ex messages are sent via UDP to the appropriate
  1159.    unicast/multicast IP address and the NETBIOS_NR_ex is sent via
  1160.    unicast UDP to the DLSw originating the NETBIOS_NQ_ex.
  1161.  
  1162. 9.2 Explorer Frames
  1163.  
  1164.    Address resolution messages may be sent over a TCP connection to a
  1165.    multicast capable partner if such a connection already exists in
  1166.    order that they take advantage of the guaranteed delivery of TCP.
  1167.    This is particularly recommended for NETBIOS_NR_ex frames.
  1168.  
  1169. 9.3 Circuit Setup
  1170.  
  1171.    Following successful address resolution, a NetBIOS end station
  1172.    typically sends a SABME frame to initiate a formal LLC2 connection.
  1173.    Receipt of this message results in normal circuit setup as described
  1174.    in RFC 1795 (and the SNA case described above).  That is to say that
  1175.  
  1176.  
  1177.  
  1178. Bryant & Brittain            Informational                     [Page 21]
  1179.  
  1180. RFC 2166              APPN Implementer's Workshop             June 1997
  1181.  
  1182.  
  1183.    the CANUREACH_cs messages etc. are sent on a TCP connection to the
  1184.    appropriate DLSw peer.  If no such TCP connection exists, one is
  1185.    brought up.
  1186.  
  1187. 9.4 Example NetBIOS SSP Message Sequence
  1188.  
  1189.    The following diagram provides an example sequence of flows
  1190.    associated with a NetBIOS circuit setup.  All flows and states
  1191.    described below correspond precisely with those defined in RFC 1795.
  1192.    The only exception is the addition of a TCP connection setup and DLSw
  1193.    capabilities exchange that occurs when the origin DLSw must send a
  1194.    CANUREACH_cs and no TCP connection yet exists to the target DLSw
  1195.    peer.
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Bryant & Brittain            Informational                     [Page 22]
  1235.  
  1236. RFC 2166              APPN Implementer's Workshop             June 1997
  1237.  
  1238.  
  1239.  ======                            ___                           ======
  1240.  |    |        ---------        __/   \__       ---------        |    |
  1241.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  1242.  ======        |   |   |      <  Network  >     |   |   |        ======
  1243. /______\       ---------       \__     __/      ---------       /______\
  1244.  Origin       Origin DLSw         \___/        Target DLSw      Target
  1245.  Station        partner                          partner        Station
  1246.  
  1247.               disconnected                     disconnected
  1248.  
  1249. NAME_QUERY    DLC_DGRM        NETBIOS_NQ_ex   DLC_DGRM       NAME_QUERY
  1250. ----------->  ----------->    ----------->    ----------->   --------->
  1251.  
  1252.   NAME_RECOG    DLC_DGRM      NETBIOS_NR_ex     DLC_DGRM    NAME_RECOG
  1253. <-----------  <------------   <-----------    <-----------  <---------
  1254.  
  1255. SABME         DLC_CONTACTED
  1256. ----------->  ----------->
  1257.                circuit_start
  1258.  
  1259.                             TCP Connection Setup
  1260.                               <------------->
  1261.                             Capabilities Exch.
  1262.                               <------------->
  1263.  
  1264.                               CANUREACH_cs    DLC_START_DL
  1265.                               ----------->    ----------->
  1266.                                              resolve_pending
  1267.  
  1268.  
  1269.                               ICANREACH_cs    DLC_DL_STARTED
  1270.                               <-----------    <-----------
  1271.             circuit_established                circuit_pending
  1272.                               REACH_ACK
  1273.                               ----------->   circuit_established
  1274.  
  1275.                               CONTACT         DLC_CONTACT     SABME
  1276.                               ----------->    ----------->    --------->
  1277.              connect_pending                   contact_pending
  1278.  
  1279.           UA   DLC_CONTACT       CONTACTED    DLC_CONTACTED           UA
  1280.   <---------   <-----------   <-----------    <-----------    <---------
  1281.                 connected                        connected
  1282.  
  1283.    IFRAMEs       DLC_INFOs       IFRAMEs        DLC_INFOs       IFRAMEs
  1284. <------------> <------------> <------------>  <------------>  <-------->
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Bryant & Brittain            Informational                     [Page 23]
  1291.  
  1292. RFC 2166              APPN Implementer's Workshop             June 1997
  1293.  
  1294.  
  1295. 9.5 Multicast Reliability and Retries
  1296.  
  1297.    In the case of NetBIOS, many more packets are being sent via UDP than
  1298.    in the SNA case.  Therefore, the exposure to the unreliability of
  1299.    these services is greater than that of SNA. For address resolution
  1300.    frames, such as NAME_QUERY, etc., successful message delivery is an
  1301.    issue.  In addition, the retry interval for these types of frames is
  1302.    considerably shorter than SNA with the defaults being: retry interval
  1303.    = 0.5 seconds and retry count = 6.  Once again, neither RFC 1795 nor
  1304.    this paper attempt to address the issue of LAN frame filtering
  1305.    optimizations. This issue is outside the scope of this paper.  But it
  1306.    is important for implementers to recognize the inherent unreliable
  1307.    nature of UDP transport services for frames of this type and to
  1308.    implement retry schemes that are appropriate to successful operation.
  1309.    Again, it is only appropriate to consider retry of non-response type
  1310.    packets.  Specific NetBIOS messages where successful message delivery
  1311.    is considered important (and retries possibly necessary) are
  1312.    indicated in the table above with an ôYesö in the ôRetryö column.
  1313.  
  1314. 10. Sequencing
  1315.  
  1316.    It is important to note that UDP transport services do not provide
  1317.    guaranteed packet sequencing like TCP does for RFC 1795.  In a steady
  1318.    state network, in order packet delivery can be generally assumed.
  1319.    But in the presence of network outages and topology changes, packets
  1320.    may take alternate routes to the destination and arrive out of
  1321.    sequence with respect to their original transmission order.  For SNA
  1322.    address resolution this should not be a problem given that there is
  1323.    no inherent significance to the order of packets being transmitted
  1324.    via UDP.
  1325.  
  1326.    In the case of NetBIOS, in order delivery is not guaranteed in the
  1327.    normal case (e.g., LANs).  This is because LAN broadcasting
  1328.    mechanisms suffer the same problems of packet sequencing as do WAN
  1329.    multicast mechanisms.  But one might argue the greater likelihood of
  1330.    topology related changes in the WAN environment and thus a greater
  1331.    level of concern.  The vast majority of NetBIOS UI frames (being
  1332.    handled via UDP and Multicast) have correlator values and do not rely
  1333.    upon packet sequencing.
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Bryant & Brittain            Informational                     [Page 24]
  1347.  
  1348. RFC 2166              APPN Implementer's Workshop             June 1997
  1349.  
  1350.  
  1351.    The only NetBIOS frames of special note would be: DATAGRAM,
  1352.    DATAGRAM_BROADCAST, and STATUS_RESPONSE.  In the case of DATAGRAM and
  1353.    DATAGRAM_BROADCAST it is generally assumed that datagrams do not
  1354.    provide any guarantee of in order packet delivery.  Thus applications
  1355.    utilizing this NetBIOS service are assumed to have no dependency on
  1356.    in order packet delivery.  STATUS_RESPONSE can actually be sent as a
  1357.    sequence of STATUS_RESPONSE messages.  In cases where this occurs,
  1358.    the STATUS_RESPONSE will be exposed to potential out of sequence
  1359.    delivery.
  1360.  
  1361. 11. Frame Formats
  1362.  
  1363. 11.1 Multicast Capabilities Control Vector
  1364.  
  1365.    This control vector is carried in the Capabilities Exchange Request.
  1366.    When present, it must be accompanied by a TCP Connections Control
  1367.    Vector indicating support for 1 TCP/IP connection and a DLSw version
  1368.    CV indicating support for version 2 release 0.  Like all control
  1369.    vectors in this SSP message, it is an LT structure.  LT structures
  1370.    consist of a 1 byte length field followed by a 1 byte type field.
  1371.    The length field includes itself as well as the type and data fields.
  1372.  
  1373.    Byte Bit    Description
  1374.    0   0-7    Length, in binary, of the Multicast Capabilities control
  1375.    vector (inclusive of this byte, always 3)
  1376.  
  1377.    1   0-7    Type:  x'8C'
  1378.  
  1379.    2   0-7    Multicast Version Number:
  1380.                A binary numerical representation of the level of
  1381.                multicast services provided.  The protocols as identified
  1382.                in this document constitute version one.   Accordingly,
  1383.                x'01' is encoded in this field.  Any subsequent version
  1384.                must provide the services of all previous versions.
  1385.  
  1386.    The intended use of this CV for Multicast support is to detect when
  1387.    the multicast CANUREACH_ex flows will suffice between partners.  If
  1388.    this CV is present in a CAPEX from a partner, that partner is also
  1389.    multicast capable and therefore does not need to receive CANUREACH_ex
  1390.    messages over the TCP link that exists between them (and there must
  1391.    be one or else the CAPEX would not have flowed) because it will
  1392.    receive the multicast copies.
  1393.  
  1394.    A DLSw includes this control vector on a peer-wise basis.  That is to
  1395.    say, that a DLSw implementation may support multicast services but
  1396.    choose not to indicate this in its capabilities exchange to all
  1397.    partners. Therefore, a DLSw may include this capabilities CV with
  1398.    some DLSw peers and not with others.  Not including this vector can
  1399.  
  1400.  
  1401.  
  1402. Bryant & Brittain            Informational                     [Page 25]
  1403.  
  1404. RFC 2166              APPN Implementer's Workshop             June 1997
  1405.  
  1406.  
  1407.    be used to force TCP connections with other multicast capable nodes
  1408.    and degrade to normal RFC 1795 operations.  This capability is
  1409.    allowed to provide greater network design flexibility.
  1410.  
  1411.    When sending this capabilities exchange control vector, the following
  1412.    rules apply:
  1413.  
  1414.          Required                       Allowed @
  1415.     ID   @ Startup  Length  Repeatable* Runtime  Order  Content
  1416.    ====  =========  ======  ==========  =======  =====  ===============
  1417.    0x8C     Y        0x03        N         N       5+    Multicast
  1418.                                                          Capabilities
  1419.  
  1420. *Note: "Repeatable" means a Control Vector is repeatable within a single
  1421.    message.
  1422.  
  1423. 11.1.1 DLSw Capabilities Negative Response
  1424.  
  1425.    DLSws that implement these enhancements must provide support for both
  1426.    multicast version 1 and single TCP connections.  This means that the
  1427.    capabilities exchange request must contain a DLSw Version ID control
  1428.    vector (x'82') indicating support for version 2 release 0, a
  1429.    Multicast Capabilities control vector, and the TCP Connections
  1430.    control vector indicating support for 1 TCP connection within a given
  1431.    capabilities exchange. If a multicast capable DLSw receives a
  1432.    capabilities exchange with a Multicast Capabilities, but either a
  1433.    missing or inappropriate TCP Connections CV (i.e., connections not
  1434.    equal to one)or DLSw Version control vector, then the inbound
  1435.    capabilities exchange should be rejected with a DLSw capabilities
  1436.    exchange negative response (see RFC 1795) using the following new
  1437.    reason code:
  1438.  
  1439.    x'000D'Inconsistent DLSw Version,  Multicast Capabilities, and TCP
  1440.    Connections CV received on the inbound Capabilities exchange
  1441.  
  1442. 11.2 UDP Packets
  1443.  
  1444.    SSP frame formats are defined in RFC 1795.  Multicast protocol
  1445.    enhancements do not change these formats in any way.  The multicast
  1446.    protocol enhancements, however, do introduce the notion of SSP packet
  1447.    transport via UDP.  In this case, standard UDP services and headers
  1448.    are used to transport SSP packets.
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Bryant & Brittain            Informational                     [Page 26]
  1459.  
  1460. RFC 2166              APPN Implementer's Workshop             June 1997
  1461.  
  1462.  
  1463.    The following section describes the proper UDP header for DLSw SSP
  1464.    packets.
  1465.  
  1466.    Byte       Description
  1467.    0-1        Source Port address
  1468.                In DLSw multicast protocols, this particular field is not
  1469.                relevant.  It may be set to any value.
  1470.  
  1471.    2-3        Destination Port address
  1472.                Always set to 2067
  1473.  
  1474.    4-5        Length
  1475.  
  1476.    6-7        Checksum
  1477.                The standard UDP checksum value.  Use of the UDP checksum
  1478.                function is optional.
  1479.  
  1480. 11.3 Vendor Specific UDP Packets
  1481.  
  1482.    In order to accommodate the addition of vendor specific functions
  1483.    over UDP transport, a new SSP packet header has been defined. As
  1484.    described above, it is possible to receive these packets over both
  1485.    UDP and TCP (when a TCP connection already exists).
  1486.  
  1487.    It is important to note that the first 4 bytes of this packet match
  1488.    the format of existing RFC 1795 SSP packets.  This is done so that
  1489.    implementations in the future can expect that the DLSw ôVersion
  1490.    Numberö is found in byte one and that the following bytes describe
  1491.    the packet header and message length.
  1492.  
  1493.    Furthermore, to assist DLSws in detecting 'out-of-sync' conditions
  1494.    whereby packet or parsing errors lead to improper length
  1495.    interpretations in the TCP datastream, valid DLSw version numbers
  1496.    will be restricted to the range of x'31' through x'3F' inclusive.
  1497.  
  1498.    DLSw multicast Vendor Specific frame format differs from existing RFC
  1499.    1795 packets in the following ways:
  1500.  
  1501.    1) The ôVersion Numberö field is set to x'32' (ASCII '2') and now
  1502.    represents a packet type more than a DLSw version number.  More
  1503.    precisely, it is permitted and expected that DLSw may send packets of
  1504.    both types (x'31' and x'32').
  1505.  
  1506.    2) The message length field is followed by a new 3 byte field that
  1507.    contains the specific vendor's IEEE Organizationally Unique
  1508.    Identifier (OUI).
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Bryant & Brittain            Informational                     [Page 27]
  1515.  
  1516. RFC 2166              APPN Implementer's Workshop             June 1997
  1517.  
  1518.  
  1519.    3) All fields following the new OUI field are arbitrary and defined
  1520.    by implementers.
  1521.  
  1522.    The following section defines this new packet format:
  1523.  
  1524.    Byte       Description
  1525.    0          DLSw packet type, Always set to x'32'
  1526.  
  1527.    1          Header Length
  1528.                Always 7 or higher
  1529.  
  1530.    2-3        Message Length
  1531.                Number of bytes within the data field following the
  1532.                header.
  1533.  
  1534.  
  1535.    4-6        Vendor specific OUI
  1536.                The IEEE Organizationally Unique Identifier (OUI)
  1537.                associated with the vendor specific function in
  1538.                question.
  1539.  
  1540.    7-n        Defined by the OUI owner
  1541.  
  1542.  
  1543. 12. Compliance Statement
  1544.  
  1545.    All DLSw v2.0 implementations must support
  1546.  
  1547.    - Halt reason codes
  1548.    - the Multicast Capabilities control vector in the DLSw
  1549.      capabilities exchanges messages.
  1550.  
  1551.    The presence of the Multicast Capabilities control vector in a
  1552.    capabilities exchange message implies that the DLSw that issued the
  1553.    message supports all the scalability enhancements defined in this
  1554.    document.  These are:
  1555.  
  1556.    - use of multicast IP (if it is available in the underlying network)
  1557.    - use of 2067 as the destination port for UDP and TCP connections
  1558.    - single tunnel bring-up of TCP connections to DLSw peers
  1559.    - peer-on-demand
  1560.    - quiet ignore of all unrecognized vendor-specific UDP/TCP packets.
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Bryant & Brittain            Informational                     [Page 28]
  1571.  
  1572. RFC 2166              APPN Implementer's Workshop             June 1997
  1573.  
  1574.  
  1575. 13. Security Considerations
  1576.  
  1577.    This document addresses only scalability problems in RFC 1795.  No
  1578.    attempt is made to define any additional security mechanisms.  Note
  1579.    that, as in RFC 1795, a given implementation may still choose to
  1580.    refuse TCP connections from DLSw peers that have not been configured
  1581.    by the user.  The mechanism by which the user configures this
  1582.    behavior is not specified in this document.
  1583.  
  1584. 14. Acknowledgements
  1585.  
  1586.    This specification was developed in the DLSw Related Interest Group
  1587.    (RIG) of the APPN Implementers Workshop.  This RIG is chaired by
  1588.    Louise Herndon- Wells (lhwells@cup.portal.com) and edited by Paul
  1589.    Brittain (pjb@datcon.co.uk).
  1590.  
  1591.    Much of the work on the scalability enhancements for v2.0 was
  1592.    developed by Dave Bryant (3COM).
  1593.  
  1594.    Other significant contributors to this document include:
  1595.  
  1596.    Frank Bordonaro (Cisco)
  1597.    Jon Houghton (IBM)
  1598.    Steve Klein (IBM)
  1599.    Ravi Periasamy (Cisco)
  1600.    Mike Redden (Proteon)
  1601.    Doug Wolff (3COM)
  1602.  
  1603.    Many thanks also to all those who participated in the DLSw RIG
  1604.    sessions and mail exploder discussions.
  1605.  
  1606.    If you would like to participate in future DLSw discussions, please
  1607.    subscribe to the DLSw RIG mailing lists by sending a mail to
  1608.    majordomo@raleigh.ibm.com specifying 'subscribe aiw-dlsw' as the body
  1609.    of the message.
  1610.  
  1611.    If you would like further information on the activities of the AIW,
  1612.    please refer to the AIW web site at
  1613.    http://www.raleigh.ibm.com/app/aiwhome.htm.
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Bryant & Brittain            Informational                     [Page 29]
  1627.  
  1628. RFC 2166              APPN Implementer's Workshop             June 1997
  1629.  
  1630.  
  1631. 15. Authors' Addresses
  1632.  
  1633.    The editor of this document is:
  1634.  
  1635.          Paul Brittain
  1636.          Data Connection Ltd
  1637.          Windsor House
  1638.          Pepper Street
  1639.          Chester
  1640.          CH1 1DF
  1641.          UK
  1642.  
  1643.          tel:   +44 1244 313440
  1644.          email: pjb@datcon.co.uk
  1645.  
  1646.    Much of the work on this document was created by:
  1647.  
  1648.          David Bryant
  1649.          3Com Corporation
  1650.          5400 Bayfront Plaza MS 2418
  1651.          Santa Clara, CA 95052
  1652.  
  1653.          tel:   (408) 764-5272
  1654.          email: David_Bryant@3mail.3com.com
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. Bryant & Brittain            Informational                     [Page 30]
  1683.  
  1684. RFC 2166              APPN Implementer's Workshop             June 1997
  1685.  
  1686.  
  1687. 16. Appendix - Clarifications to RFC 1795
  1688.  
  1689.    This appendix attempts to clarify the areas of RFC 1795 that have
  1690.    proven to be ambiguous or hard to understand in the implementation
  1691.    experience to- date.  These clarifications should be read in
  1692.    conjunction with RFC 1795 as this document does not reproduce the
  1693.    complete text of that RFC.
  1694.  
  1695.    The clarifications are ordered by the section number in RFC 1795 to
  1696.    which they apply.  Where one point applies to more than one place in
  1697.    RFC 1795, it is listed below by the first relevant section.
  1698.  
  1699.    If any implementers encounter further difficulties in understanding
  1700.    RFC 1795 or these clarifications, they are encouraged to query the
  1701.    DLSw mail exploder (see section 1.1) for assistance.
  1702.  
  1703.    3. Send Port
  1704.  
  1705.    It is not permitted for a DLSw implementation to check that the send
  1706.    port used by a partner is 2067.  All implementations must accept
  1707.    connections from partners that do not use this port.
  1708.  
  1709.    3   TCP Tunnel bringup
  1710.  
  1711.    The paragraph below the figure should read as follows:
  1712.  
  1713.       Each Data Link Switch will maintain a list of DLSw capable routers
  1714.       and their status (active/inactive). Before Data Link Switching can
  1715.       occur between two routers, they must establish two TCP connections
  1716.       between them. These connections are treated as half duplex data
  1717.       pipes. A Data Link Switch will listen for incoming connections on
  1718.       its Read Port (2065), and initiate outgoing connections on its
  1719.       Write Port (2067).  Each Switch is responsible for initiating one
  1720.       of the two TCP connections.  After the TCP connections are
  1721.       established, SSP messages are exchanged to establish the
  1722.       capabilities of the two Data Link Switches.  Once the exchange is
  1723.       complete, the DLSw will employ SSP control messages to establish
  1724.       end-to-end circuits over the transport connection.  Within the
  1725.       transport connection, DLSw SSP messages are exchanged.  The
  1726.       message formats and types for these SSP messages are documented in
  1727.       the following sections.
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Bryant & Brittain            Informational                     [Page 31]
  1739.  
  1740. RFC 2166              APPN Implementer's Workshop             June 1997
  1741.  
  1742.  
  1743.    3.2 RII bit in SSP header MAC addresses
  1744.  
  1745.    The RII bit in MAC addresses received from the LAN must be set to
  1746.    zero before forwarding in the source or destination address field in
  1747.    a SSP message header.  This requirement aims to avoid ambiguity of
  1748.    circuit IDs.  It is also recommended that all implementations ignore
  1749.    this bit in received SSP message headers.
  1750.  
  1751.    3.3 Transport IDs
  1752.  
  1753.    All implementations must allow for the DLSw peer varying the
  1754.    Transport ID up to and including when the ICR_cs message flows, and
  1755.    at all times reflect the most recent TID received from the partner in
  1756.    any SSP messages sent.  The TID cannot vary once the ICR_cs message
  1757.    has flowed.
  1758.  
  1759.    3.4 LF bits
  1760.  
  1761.    LF-bits should be propagated from LAN to SSP to LAN (and back) as per
  1762.    a bridge (i.e. they can only be revised downwards at each step if
  1763.    required).
  1764.  
  1765.    3.5 KEEPALIVE messages
  1766.  
  1767.    The SSP KEEPALIVE message (x1D) uses the short ("infoframe") version
  1768.    of the SSP header.  All DLSw implementation must support receipt and
  1769.    quiet ignore of this message, but there is not requirement to send
  1770.    it.  There is no response to a KEEPALIVE message.
  1771.  
  1772.    3.5 MAC header for Netbios SSP frames
  1773.  
  1774.    The MAC header is included in forwarded SSP Netbios frames in the
  1775.    format described below:
  1776.         -    addresses are always in non-canonical format
  1777.         -    src/dest addresses are as per the LLC frame
  1778.         -    AC/FC bits may be reset and must be ignored
  1779.         -    SSAP, DSAP and command fields are included
  1780.         -    RII bit in src address is copied from the LLC frame
  1781.         -    the RIF length is not extended to include padding
  1782.         -    all RIFs are padded to 18 bytes so that the data is
  1783.              in a consistent place.
  1784.  
  1785.    3.5.7 Unrecognized control vectors
  1786.  
  1787.    All implementations should quietly ignore unrecognized control
  1788.    vectors in any SSP messages.  In particular, unrecognized SSP frames
  1789.    or unrecognized fields in a CAPEX message should be quietly ignored
  1790.    without dropping the TCP connection.
  1791.  
  1792.  
  1793.  
  1794. Bryant & Brittain            Informational                     [Page 32]
  1795.  
  1796. RFC 2166              APPN Implementer's Workshop             June 1997
  1797.  
  1798.  
  1799.    5.4 Use of CUR-cs/CUR-ex
  1800.  
  1801.    The SSAP and DSAP numbers in CUR_ex messages should reflect those
  1802.    actually used in the TEST (or equivalent) frame that caused the
  1803.    CUR_ex message to flow.  This would mean that the SAP numbers in a
  1804.    'typical' CUR_ex frame for SNA traffic switched from a LAN will be a
  1805.    source SAP of x04 and a destination SAP of x00.
  1806.  
  1807.    The CUR_cs frame should only be sent when the DSAP is known.
  1808.    Specifically, CUR_ex should be used when a NULL XID is received that
  1809.    is targeted at DSAP zero, and CUR_cs when a XID specifying the (non-
  1810.    zero) DSAP is received.
  1811.  
  1812.    Note that this does not mean that an implementation can assume that
  1813.    the DSAP on a CUR_ex will always be zero.  The ICR_ex must always
  1814.    reflect the SSAP and DSAP values sent on the CUR_ex.  This is still
  1815.    true even if an implementation always sends a TEST with DSAP = x00 on
  1816.    its local LAN(s) in response to a CUR_ex to any SAP.
  1817.  
  1818.    An example of a situation where the CUR_ex may flow with a non-zero
  1819.    DSAP is when there is an APPN stack local to the DLSw node.  The APPN
  1820.    stack may then issue a connection request specifying the DSAP as a
  1821.    non-zero value.  This would then be passed on the CUR_ex message.
  1822.  
  1823.    7.6.1 Vendor IDs
  1824.  
  1825.    The Vendor ID field in a CAPEX may be zero.  However, a zero Vendor
  1826.    Context ID is not permitted, which implies that an implementation
  1827.    that uses a zero ID cannot send any vendor-specific CVs (other than
  1828.    those specified by other vendors that do have a non-zero ID)
  1829.  
  1830.    7.6.3 Initial Pacing Window
  1831.  
  1832.    The initial pacing window may be 1.  There is no requirement on an
  1833.    implementation to use any minimum value for the initial pacing
  1834.    window.
  1835.  
  1836.    7.6.7 TCP Tunnel bringup
  1837.  
  1838.    The third paragraph should read:
  1839.  
  1840.       If TCP Connections CV values agree and the number of connections
  1841.       is one, then the DLSw with the higher IP address must tear down
  1842.       the TCP connections on its local port 2065. This connection is
  1843.       torn down after a CAPEX response has been both sent and received.
  1844.       After this point, the remaining TCP connection is used to exchange
  1845.       data in both directions.
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Bryant & Brittain            Informational                     [Page 33]
  1851.  
  1852. RFC 2166              APPN Implementer's Workshop             June 1997
  1853.  
  1854.  
  1855.    7.7 CAPEX negative responses
  1856.  
  1857.    If a DLSw does not support any of the options specified on a CAPEX
  1858.    received from a partner, or if it thinks the CAPEX is malformed, it
  1859.    must send a CAPEX negative response to the partner.  The receiver of
  1860.    a CAPEX negative response is then responsible for dropping the
  1861.    connection.  It is not permitted to drop the link instead of sending
  1862.    a CAPEX negative response.
  1863.  
  1864.    8.2 Flow Control ACKs
  1865.  
  1866.    The first flow-control ack (FCACK) does not have to be returned on
  1867.    the REACH_ACK even if the ICR_cs carried the FCIND bit.  However it
  1868.    should be returned on the first SSP frame flowing for that circuit
  1869.    after the REACH_ACK.
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Bryant & Brittain            Informational                     [Page 34]
  1907.  
  1908.