


Internet Draft                                             Grant Edwards
<draft-edwards-telnet-xon-xoff-state-control-00.txt>        Comtrol Corp
Intended status: Experimental                             March 23, 2010
Expires September 23, 2010


       Xon/Xoff State Control for Telnet Com Port Control Option
          <draft-edwards-telnet-xon-xoff-state-control-00.txt>


Status of this Memo

   Distribution of this memo is unlimited.

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   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
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on September 23, 2010.

   Comments are solicited and should be addressed to the author.

Copyright Notice

   Copyright (c) 2010 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.






Edwards                Expires September 23, 2010               [Page 1]

Internet Draft     Telnet Xon/Xoff Flow State Control     March 23, 2010


Abstract

   This document defines new values for use with the telnet com port
   control option's SET-CONTROL sub-command defined in RFC2217.  These
   new values provide a mechanism for the telnet client to control and
   query the outbound Xon/Xoff flow control state of the telnet server's
   physical serial port.  This capability is exposed in the serial port
   API on some operating systems and is needed by telnet clients that
   implement a port-redirector service which provides applications local
   to the redirector/telnet-client with transparent access to the remote
   serial port on the telnet server.

1.  Introduction

   When a telnet server acting as a serial device server (as shown in
   the figure below and also described in [RFC2217]) is configured to
   use Xon/Xoff outbound flow control, it maintains an internal state
   variable that reflects whether or not it is currently allowed to
   transmit data via the physical serial port.  When the telnet server
   receives an XOFF character via the physical serial port, the server
   will stop transmitting data via the physical serial port until an XON
   character is received via the physical serial port.


        +-----------+   telnet/RFC2217
        |  telnet   |   connection          physical
        |  client   +----+                / serial port
        |           |    |               /
        +-----------+    |              /
                         |             /
                    +----+----------+ /
                    |               |/    RS-232      +----------+
                    |   telnet     ++      with       |  serial  |
                    |   server     |+-----------------+  device  |
                    |              ++    Xon/Xoff     |          |
                    |               |      flow       +----------+
                    +---------------+     control


   This memo extends that behavior by defining new telnet com port
   control option [RFC2217] SET-CONTROL subcommand values that allow the
   telnet client to force the server to behave as if an XOFF or XON
   character has been received via the physical serial port.

   This extension is needed by telnet clients that implement a port-
   redirection service in order to provide other local applications
   access to the remote serial port (physically located on the telnet
   server) via the same serial port API that is used to access local
   serial ports.  Since some operating systems provide in the serial
   port API a mechanism to control the state of the outbound Xon/Xoff
   flow control, the telnet com port control option is extended to



Edwards                Expires September 23, 2010               [Page 2]

Internet Draft     Telnet Xon/Xoff Flow State Control     March 23, 2010


   provide a corresponding mechanism.

   This ability to control the internal state of the Xon/Xoff flow
   control feature is not provided by [RFC1372] "Telnet Remote Flow
   Control Option" which provides a way to enable and disable the
   Xon/Xoff flow control feature itself rather than to control the state
   of the feature after it has been enabled.

2.  Sub-command Value Definition

   New values are defined for use in the SET_CONTROL sub-command which
   is defined in section 3 of RFC2217 and reproduced here for
   convenience:

      IAC SB COM-PORT-OPTION SET-CONTROL <value> IAC SE

   This document defines new values for the <value> field as follows:

           Value      Command

             20       REQUEST-Xon/Xoff-STATE
             21       SET-XOFF-STATE
             22       SET-XON-STATE

   If Xon/Xoff outbound flow control is not enabled, then the sub-
   commands defined above will not affect data transmission in any way,
   and the flow state returned by the server is undefined.

3.  General Discussion

   The Xon/Xoff flow state is defined to have two states: "XON" and
   "XOFF".

   The server will only transmit data via the physical serial port when
   the flow state is XON. Transmission of data via the physical serial
   port by the server is disabled when in the XOFF state.

   The flow state is initially XON when a session is initiated.

   During normal operation the state is set to XOFF when the server
   receives an XOFF character via the physical serial port (tx data is
   halted).  Conversely, when an XON character is received, the state is
   set to XON (tx data resumes).

   When the telnet client sends the SET-XOFF-STATE command, the telnet
   server will set the state to XOFF and stop sending data via the
   physical serial port until either an XON character is received via
   the physical serial port or the SET-XON-STATE command is received
   from the telnet client.

   Likewise, if the server has received an XOFF character via the



Edwards                Expires September 23, 2010               [Page 3]

Internet Draft     Telnet Xon/Xoff Flow State Control     March 23, 2010


   physical serial port, data transmission via the physical serial port
   will be halted until either an XON character is received via the
   physical serial port or the SET-XON-STATE command is received from
   the telnet client.

   This is summarized in the table below:

               Event             Flow State     Tx Data
            --------------       ----------     ------------

            rx XOFF char            XOFF        Halted

            SET-XOFF-STATE cmd      XOFF        Halted

            rx XON char             XON         Allowed

            SET-XON-STATE cmd       XON         Allowed

   This document describes only the server internal state that governs
   transmission of data via the physical serial port by the telnet
   server.  It does not address the operation of the flow control
   mechanism that governs the stream of data being received on the
   physical serial port by the server.

   The responses to all three of the newly defined sub-command values
   will reflect the flow control state after execution of the command.
   Examples are shown below (byte values are in decimal).  "Cmd" is
   client->server and "Rsp" is server->client:

   Query Xon/Xoff State:

   Cmd: IAC SB COM-PORT-OPTION SET-CONTROL REQUEST-Xon/Xoff-STATE IAC SE
        255 250      44            5                 20          255 240

   Rsp: IAC SB COM-PORT-OPTION SET-CONTROL SET-X[ON|OFF]-STATE IAC SE
        255 250      44           105             [21/22]*     255 240

         *Value in response is 21 if state is XOFF (tx suspended)
          and is 22 if state is XON (tx allowed).


   Set XOFF state (stops tx data):

   Cmd: IAC SB COM-PORT-OPTION SET-CONTROL SET-XOFF-STATE IAC SE
        255 250      44            5             21       255 240

   Rsp: IAC SB COM-PORT-OPTION SET-CONTROL SET-XOFF-STATE IAC SE
        255 250      44           105            21       255 240


   Set XON state (starts tx data):



Edwards                Expires September 23, 2010               [Page 4]

Internet Draft     Telnet Xon/Xoff Flow State Control     March 23, 2010


   Cmd: IAC SB COM-PORT-OPTION SET-CONTROL SET-XON-STATE IAC SE
        255 250      44            5            22       255 240

   Rsp: IAC SB COM-PORT-OPTION SET-CONTROL SET-XON-STATE IAC SE
        255 250      44           105           22       255 240

4.  Usage by Redirectors

   It is intended that MS Windows com-port redirector software will
   issue a SET-XOFF-STATE command to the telnet device server when the
   user application calls EscapeCommFunction(handle,SETXOFF) on the
   virtual COM port, and will issue a SET-XON-STATE command to the
   server when the user application calls
   EscapeCommFunction(handle,SETXON) on the virtual COM port.

   The two EscapeCommFunction() calls shown above do not directly affect
   flow of data between the redirector (telnet client) and the device
   server (telnet server).

   The control of data flow between the telnet client and telnet server
   is defined by section 5 of RFC2217.  Xon/Xoff flow control and the
   corresponding EscapeCommFunction() calls affect flow of data between
   physical serial port on the device server and the external serial
   device to which it is attached.

   However, the Xon/Xoff flow state may indirectly affect data flow
   between client and server if Xon/Xoff flow state changes cause
   internal buffers to fill/drain to a point that triggers flow control
   actions as defined in RFC2217 section 5.

   Likewise, the flow-control commands defined in section 5 of RFC2217
   have no direct effect on flow of data between the device server's
   physical serial port and the external serial device to which it is
   connected.

5.  Security Considerations

   There are no security considerations relevant to this document.

6.  IANA Considerations

   No actions are required from IANA as result of the publication of
   this document.

7.  References

7.1.  Normative References

   [RFC2217]  Clark, G., "Telnet Com Port Control Option", RFC 2217,
              October 1997.




Edwards                Expires September 23, 2010               [Page 5]

Internet Draft     Telnet Xon/Xoff Flow State Control     March 23, 2010


7.2.  Informative References

   [RFC1372]  Hedrick, C. and D. Borman, "Telnet Remote Flow Control
              Option", RFC 1372, October 1992.

Author's Address

   Grant Edwards
   Comtrol Corporation
   Minneapolis, Minnesota USA

   Email:  grant.edwards@comtrol.com
   URL:    www.comtrol.com









































Edwards                Expires September 23, 2010               [Page 6]

