home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-rfced-info-bryant-00.txt < prev    next >
Text File  |  1997-03-10  |  70KB  |  1,421 lines

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