Internet DRAFT - draft-ietf-telnet-mpx-option

draft-ietf-telnet-mpx-option





INTERNET DRAFT                             Jean-Philippe Caradec, Author 
					        Marjo F. Mercado, Editor
                                                 Hewlett-Packard Company
                                                               July 1993

                           TELNET MPX option

     Status of this Memo

     This document is an Internet Draft.  Internet Drafts are
     working documents of the Internet Engineering Task Force
     (IETF), its Areas, and its Working Groups.  Note that other
     groups may also distribute working documents as Internet
     Drafts.

     Internet Drafts are draft documents valid for a maximum of six
     months.  Internet Drafts may be updated, replaced, or obsoleted
     by other documents at any time.  It is not appropriate to use
     Internet Drafts as reference material or to cite them other
     than as a ``working draft'' or ``work in progress.''
     Please check the 1id-abstracts.txt listing contained in the
     internet-drafts Shadow Directories on nic.ddn.mil,
     nnsc.nsf.net, nic.nordu.net, ftp.nisc.sri.com, or munnari.oz.au
     to learn the current status of any Internet Draft.

     Abstract

     This Internet Draft specifies a multiplexing protocol for TELNET
     hosts and devices using the Internet TCP/IP protocol stack. Hosts
     that exchange TELNET Multiplexing (MPX) information within the
     TELNET protocol are expected to adopt and implement this
     protocol.

     By negotiating the MPX option, both client and server agree to
     use the specified multiplexing protocol. This negotiation is on a
     per transport link basis. The goal of this option is to use a
     single TCP connection to link device servers and remote hosts.
     This link is then used to carry out multiple session traffic.  

     The MPX protocol will be responsible for establishing sessions
     between TELNET client ports and TELNET server hosts. The protocol
     will also be responsible for doing session flow control. To
     handle these two functions, a  header will be added to the TELNET
     data path specifying the session, the data-length, the flow
     control process and the session packet type.  

     Document expiration date

     The expiration date for this Internet Draft is December 31, 1993.







                                  1

   1.  Command Name and Code

       MPX    XX

   2.  Command meanings

       IAC WILL MPX

       Sender is willing to send TELNET data using the session
       multiplexing process on the TCP connection. 

       IAC WON'T MPX

       Sender refuses to use the session multiplexing process.

       IAC DO MPX

       Sender is willing to receive TELNET data using the session
       multiplexing process on the TCP connection. 

       IAC DON'T MPX

       Sender refuses to receive TELNET data with session multiplexing
       encapsulation. 
 
   3.  Default

       WON'T MPX

       The session multiplexing encapsulation is not used to send
       TELNET data. 

       DON'T MPX

       The session multiplexing encapsulation is not used to receive
       TELNET data. 

   4.  Motivation for the option.

       On most of the UNIX (R) machines implementing the ARPA
       protocol stack, the application traffic is character mode
       oriented. This implies a large number of packets containing a
       limited number of characters to handle either on client and
       server side. TELNET clients are supporting more and more
       sessions to a single TELNET server. Moreover, TELNET traffic
       can use an asynchronous link as a physical link with limited
       bandwidth, i.e. SLIP or PPP. 
 
       To avoid an escalation in terms of performance requirements
       either on the client or the server side, the session
       multiplexing TELNET option has been defined to limit the amount
       of exchanged packets using a single TCP connection to carry out
       multiple session traffic. 



                                  2

   5.  Description of the TELNET option.
 
       By negotiating the MPX option, both client and server agree to 
       use the specified multiplexing protocol. This negotiation is on
       a per transport link basis. The goal of this option is to use a
       single TCP connection to link device servers and remote hosts.
       This link is then used to carry out multiple session traffic.   

       The MPX protocol will be responsible for establishing sessions
       between TELNET client ports and TELNET server hosts. The protocol
       will also be responsible for doing session flow control. To
       handle these two functions, a  header will be added to the
       TELNET data path specifying the session, the data-length, the
       flow control process and the session packet type. 

   5.1  MPX header format
  
                    | 7 | 6 | 5 | 4 | 3 | 2 | 1| 0  | 
                    +++++++++++++++++++++++++++++++++
                    +pkt type   | credit    |High L.|     
                    +++++++++++++++++++++++++++++++++
                    +     Low data length           +
                    +++++++++++++++++++++++++++++++++
                    +      local session number     +
                    +++++++++++++++++++++++++++++++++
                    +    reserved for future usage  +
                    +++++++++++++++++++++++++++++++++ 

     WHERE:
         
      --> The packet type can take the following values:

               0 : TELNET data end session packet.
               1 : TELNET data continue session packet.
               2 : TELNET non-flow controlled data end session packet.
               3 : start request session packet.
               4 : start confirm session packet.
               5 : close session packet.
               6 : echo request/reply session packet.

      --> the credit can take values from 0 to 7.

      --> the (High L./Low) data length can take values from 0 to 1023.

      --> the session number can take values from 0 to 255.

      --> The reserved byte must be set to zero.









                                   3

   5.2  Session number
 
        The session number identifies the session on both sides.
        Both sides of the connection should have the same session
        number. During the start session process, this field is
        filled in by the caller. The session number is linked to a
        dedicated TCP connection to a remote host.

        To avoid collision on the allocated session number, the
        TELNET client will use the first available session number
        starting from 0 going to 255 whereas the TELNET server will
        use the first available session number starting from 255
        going to 0. If a start session collision occurs   
        on the same session number, the TELNET client will refuse
        the TELNET server session open whereas the TELNET server has
        to accept the start session from the TELNET client. This
        gives priority to the client start session over the server
        start session.  

   5.3  Data length field

        The data length specifies the user data size that can be 
        found after the protocol header for that specific session
        packet. If larger packets have to be sent, the "data
        continue/data end" mechanism can be used to reassemble the
        large packet. This data length does not include the MPX
        header size. 
          
   5.4  Credit field

        The credit field can take values from 0 to 7.

        At session opening, both entities advertise the amount of
        data (the absolute credit) they can receive. The absolute
        credit is defined in units. A unit can be a session data
        packet or a subset of a session data packet if the session
        data packet size is larger than the unit size.

        Suppose that the unit size is equal to 10 bytes, a session
        data packet of one byte represents one unit but a session
        data packet of 40 bytes represents 4 units. The absolute
        credit represents the number of units that the entity can
        receive. 

        The absolute credit is defined in the start packets. The
        following credits proposed in the credit field represents an 
        incremental number of units.

        Credit increment can be delayed to avoid sending data packet
        with length equal to 0 just to increment credit. A credit
        increment timer can be started to favor piggy-backing of
        credit incremental information with data packet to send. 




                                  4

   5.5  Packet type field.
       
   5.5.1  TELNET data end session packet.

          This packet type will contain TELNET data including either
          user data or TELNET command. All the TELNET commands are 
          supported over this mechanism. The credit increment packets
          have to be sent using a data end packet with data-length
          equal to zero.

   5.5.2  TELNET data continue session packet
        
          This packet type will contain TELNET data including either
          user data or TELNET command. The "data continue" packet type
          is used when the notion of "fragment" sent over session
          packet is required to reassemble large reads or writes on
          the remote site. In that case, multiple data continue
          packets can be sent followed by a data end packet. 

   5.5.3  Start session packet.

          The start session packet is used to establish a session 
          over the transport link. The start session packet contains
          the absolute credit value, unit size and information linked
          to the caller identification. 
	   
	  The start session can be accepted or refused by the called 
	  entity.  

                    | 7 | 6 | 5 | 4 | 3 | 2 | 1| 0  | 
                    +++++++++++++++++++++++++++++++++
                    +pkt type   | credit    |High L.|     
                    +++++++++++++++++++++++++++++++++
                    +     Low data length           +
                    +++++++++++++++++++++++++++++++++
                    +      local session number     +
                    +++++++++++++++++++++++++++++++++
                    +    reserved for future usage  +
                    +++++++++++++++++++++++++++++++++ 
                    +      MPX data length          +
                    +++++++++++++++++++++++++++++++++
                    +   Credit unit size (higher b.)+
                    +++++++++++++++++++++++++++++++++ 
                    +   Credit unit size (low  b.)  +
                    +++++++++++++++++++++++++++++++++ 
                    +     2 bytes reserved          +
                    +++++++++++++++++++++++++++++++++ 
                    +    upper layer data lgth (h)  +
                    +++++++++++++++++++++++++++++++++ 
                    +    upper layer data lgth (l)  +
                    +++++++++++++++++++++++++++++++++ 
                    +       Upperlayer info         +
                    +++++++++++++++++++++++++++++++++ 



                                  5

        The MPX data length represents the data length of the MPX
        parameters in the start session packet. Currently, that length
        is set to 4 (credit parameter + 2 bytes reserved).

        The upper layer information follows the MPX parameter fields.
        The upper layer data length field has to be calculated by
        adding the fixed header size plus one byte for the MPX data
        length field plus the MPX data length itself. 
         
   5.5.4  Start confirm session packet.

          The start confirm session packet is sent by the called
          TELNET device to accept the session opening. No session data
          must be sent between the start session and the start
          confirm. 
          

                    | 7 | 6 | 5 | 4 | 3 | 2 | 1| 0  | 
                    +++++++++++++++++++++++++++++++++
                    +pkt type   | credit    |High L.|     
                    +++++++++++++++++++++++++++++++++
                    +     Low data length           +
                    +++++++++++++++++++++++++++++++++
                    +      local session number     +
                    +++++++++++++++++++++++++++++++++
                    +    reserved for future usage  +
                    +++++++++++++++++++++++++++++++++ 
                    +      MPX data length          +
                    +++++++++++++++++++++++++++++++++
                    +   Credit unit size (higher b.)+
                    +++++++++++++++++++++++++++++++++ 
                    +   Credit unit size (low  b.)  +
                    +++++++++++++++++++++++++++++++++ 
                    +     2 bytes reserved          +
                    +++++++++++++++++++++++++++++++++ 
                    +      local session number     +
                    +++++++++++++++++++++++++++++++++
                    +    upper layer data lgth (h)  +
                    +++++++++++++++++++++++++++++++++ 
                    +    upper layer data lgth (l)  +
                    +++++++++++++++++++++++++++++++++ 
                    +       Upperlayer info         +
                    +++++++++++++++++++++++++++++++++ 
                    
         The same convention as start session packet is used for start
         confirm packet fields.










                                   6

   5.5.5  Close session packet.

          The close session packet is sent for two reasons. The called
          entity specifies that the session is refused or the session
          is ended by one of the entities.


                    | 7 | 6 | 5 | 4 | 3 | 2 | 1| 0  | 
                    +++++++++++++++++++++++++++++++++
                    +pkt type   | credit    |High L.|     
                    +++++++++++++++++++++++++++++++++
                    +     Low data length           +
                    +++++++++++++++++++++++++++++++++
                    +      local session number     +
                    +++++++++++++++++++++++++++++++++
                    +    reserved for future usage  +
                    +++++++++++++++++++++++++++++++++ 
                    +      MPX data length          +
                    +++++++++++++++++++++++++++++++++
                    +      MPX close reason         +
                    +++++++++++++++++++++++++++++++++


          When all sessions are closed on a TCP link, the link must
          be disconnected. The MPX data length value is currently one
          because the only MPX field is the close reason.

          The close reason can take multiple values:
          
                        1    : session closed by user.
                        2    : session closed on modem down.
                        3    : session closed on reset.
                        4    : session closed by upper layer.
                        5    : session closed by TELNET server.
                        
   5.5.6  Non-flow controlled data session packet.
       
          The non-flow controlled data packet is used to bypass normal
          data path for urgent delivery. There is no non-flow
          controlled data continue session packet. 
       
   5.5.7  Echo request/reply.
       
          The echo request/reply packet is used to determine the
          network delay between the TELNET client and the TELNET
          server. After the link is established, an echo packet is
          sent requesting from the server an immediate reply. The time
          measurement between the request and the reply is then
          computed to optimize the multiplexing timer (see next
          sections). 

          The data length is null and the echo request/reply packet is
          not subject to flow-control (no credit unit is consumed to
          send the echo request/reply session packet).


                                   7

   5.6  Multiplexing session over a transport connection.

        The multiplexing algorithm is based on a multiplexing timer
        which concatenates the traffic of multiple TELNET sessions.
        The multiplexing timer can take values from 10 to 120 ms.
        The recommended value on client side is 80 ms and on server
        side 10/20 ms. These values are appropriate for interactive
        traffic. 

        When the multiplexing timer pops, TELNET data is collected
        from multiple sessions. Before each session user data, the 4
        byte protocol header is added. The data length field of each
        session data permits the demultiplexing process to occur.

   6.  Implementation issues.
         
       The MPX protocol implies an encapsulation of the user data
       within a session packet. This new mode is enabled once 
       the TELNET MPX option is negotiated between the two
       entities. 

       To avoid mixing TELNET packets with and without headers, we
       expect that any TELNET device implementing MPX option will 
       start its TELNET negotiation with the MPX option negotiation.
       Further TELNET negotiation occurs once the session is
       established.

       The multiplexing timer value needs to be dynamically adapted
       to any echo delay modification to favor echo response time.
       The echo request packet should be sent every 10 seconds to
       test response time depending on IP network routes. If
       traffic is rerouted because of router failure, the timer
       should be automatically updated to offer the best echo
       delay/performance compromise.






















                                   8
                      
   7.  Example

           users            client                            server


           user1 "connect"   ------ TCP SYN ------------->
                             <--    TCP SYN/ACK  ---------
                             -------TCP ACK      -------->

                            <--  IAC WILL/DO MPX ____________  
                             --  IAC WILL/DO MPX ____________>
                             
                             ------- start session         -->
                             <-------start confirm ----------- 
                             <------ [ TELNET neg ] ----------
                             
                             ------- [ TELNET neg  ] --------->


           user2 "connect"
                             ------- start session  --------->
                             <-------start confirm ----------- 
                             <------ [ TELNET neg ] ----------
                             
                             ------- [ TELNET neg  ] --------->


           user1 data  |
                       |
           user2 data  |->  -----<header1>data1<header2>data2 -->


   8.  Reference

       [1] Postel, J., and J. Reynolds, "TELNET PROTOCOL
           SPECIFICATION", RFC 854, USC Information Science
           Institute, May 1983  



















                                   9


   9. Author's Address

      Jean-Philippe Caradec
      Grenoble Networks Division
      Hewlett Packard France
      5, Rue Raymond Chanas
      38320 Eybens 
      France

      Phone:  +33 76625518

      Email:  caradec@gnlab030.grenoble.hp.com

      Marjo F. Mercado
      Grenoble Networks Division - Cupertino
      Hewlett Packard Company
      19420 Homestead Road, MS 43 LH
      Cupertino, CA 95014
      U.S.A.

      Phone:  (408) 447-2826

      Email:  marjo@cup.hp.com
    
     Document expiration date

     The expiration date for this Internet Draft is December 31, 1993.




























                                   10