Skip to main content

Network Service Header
draft-ietf-sfc-nsh-05

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 8300.
Authors Paul Quinn , Uri Elzur
Last updated 2016-05-26
Replaces draft-quinn-sfc-nsh
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state WG Document
Document shepherd (None)
IESG IESG state Became RFC 8300 (Proposed Standard)
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-sfc-nsh-05
IEN 148                                                        J. Postel
RFC 764                                                              ISI
                                                               June 1980

                     TELNET PROTOCOL SPECIFICATION

INTRODUCTION

   The purpose of the TELNET Protocol is to provide a fairly general,
   bi-directional, eight-bit byte oriented communications facility.  Its
   primary goal is to allow a standard method of interfacing terminal
   devices and terminal-oriented processes to each other.  It is
   envisioned that the protocol may also be used for terminal-terminal
   communication ("linking") and process-process communication
   (distributed computation).

GENERAL CONSIDERATIONS

   A TELNET connection is a Transmission Control Protocol (TCP)
   connection used to transmit data with interspersed TELNET control
   information.  TCP and the connection establishment procedure are
   documentented in the ARPA Internet Protocol Handbook.

   The TELNET Protocol is built upon three main ideas:  first, the
   concept of a "Network Virtual Terminal"; second, the principle of
   negotiated options; and third, a symmetric view of terminals and
   processes.

   1.  When a TELNET connection is first established, each end is
   assumed to originate and terminate at a "Network Virtual Terminal",
   or NVT.  An NVT is an imaginary device which provides a standard,
   network-wide, intermediate representation of a canonical terminal.
   This eliminates the need for "server" and "user" Hosts* to keep
   information about the characteristics of each other's terminals and
   terminal handling conventions.  All Hosts, both user and server, map
   their local device characteristics and conventions so as to appear to
   be dealing with an NVT over the network, and each can assume a
   similar mapping by the other party.  The NVT is intended to strike a
   balance between being overly restricted (not providing Hosts a rich
   enough vocabulary for mapping into their local character sets), and
   being overly inclusive (penalizing users with modest terminals).

      *NOTE:  The "user" Host is the Host to which the physical terminal
      is normally attached, and the "server" host is the Host which is
      normally providing some service.  As an alternate point of view,
      applicable even in terminal-to-terminal or process-to-process
      communications, the "user" Host is the Host which initiated the
      communication.

Postel                                                          [Page 1]


                                                                        
June 1980                                               RFC 764, IEN 148
Telnet Protocol Specification                                           

   2.  The principle of negotiated options takes cognizance of the fact
   that many sites will wish to provide additional services over and
   above those available within an NVT, and many users will have
   sophisticated terminals and would like to have elegant, rather than
   minimal, services.  Independent of, but structured within, the TELNET
   Protocol various "options" will be sanctioned which can be used with
   the "DO, DON'T, WILL, WON'T" structure (discussed below) to allow a
   user and server to agree to use a more elaborate (or perhaps just
   different) set of conventions for their TELNET connection.  Such
   options could include changing the character set, the echo mode, the
   line width, the page length, etc.

   The basic strategy for setting up the use of options is to have
   either party (or both) initiate a request that some option take
   effect.  The other party may then either accept or reject the
   request.  If the request is accepted the option immediately takes
   effect; if it is rejected the associated aspect of the connection
   remains as specified for an NVT.  Clearly, a party may always refuse
   a request to enable, and must never refuse a request to disable, some
   option since all parties must be prepared to support the NVT.

   The syntax of option negotiation has been set up so that if both
   parties request an option simultaneously, each will see the other's
   request as the positive acknowledgment of its own.

   3.  The symmetry of the negotiation syntax can potentially lead to
   nonterminating acknowledgment loops -- each party seeing the incoming
   commands not as acknowledgments but as new requests which must be
   acknowledged.  To prevent such loops, the following rules prevail:

      a.  Parties may only request a change in option status; i.e., a
          party may not send out a "request" merely to announce what
          mode it is in.

      b.  If a party receives what appears to be a request to enter some
          mode it is already in, the request should not be acknowledged.

      c.  Whenever one party sends an option command to a second party,
          whether as a request or an acknowledgment, and use of the
          option will have any effect on the processing of the data
          being sent from the first party to the second, then the
          command must be inserted in the data stream at the point where
          it is desired that it take effect.  (It should be noted that
          some time will elapse between the transmission of a request
          and the receipt of an acknowledgment, which may be negative.
          Thus, a site may wish to buffer data, after requesting an

[Page 2]                                                          Postel


                                                                        
RFC 764, IEN 148                                               June 1980
                                           Telnet Protocol Specification

          option, until it learns whether the request is accepted or
          rejected, in order to hide the "uncertainty period" from the
          user.)

   Option requests are likely to flurry back and forth when a TELNET
   connection is first established, as each party attempts to get the
   best possible service from the other party.  Beyond that, however,
   options can be used to dynamically modify the characteristics of the
   connection to suit changing local conditions.  For example, the NVT,
   as will be explained later, uses a transmission discipline well
   suited to the many "line at a time" applications such as BASIC, but
   poorly suited to the many "character at a time" applications such as
   NLS.  A server might elect to devote the extra processor overhead
   required for a "character at a time" discipline when it was suitable
   for the local process and would negotiate an appropriate option.
   However, rather than then being permanently burdened with the extra
   processing overhead, it could switch (i.e., negotiate) back to NVT
   when the more "taut" control was no longer necessary.

   It is possible for requests initiated by processes to stimulate a
   nonterminating request loop if the process responds to a rejection by
   merely re-requesting the option.  To prevent such loops from
   occurring, rejected requests should not be repeated until something
   changes.  Operationally, this can mean the process is running a
   different program, or the user has given another command, or whatever
   makes sense in the context of the given process and the given option.
   A good rule of thumb is that a re-request should only occur as a
   result of subsequent information from the other end of the connection
   or when demanded by local human intervention.

   Option designers should not feel constrained by the somewhat limited
   syntax available for option negotiation.  The intent of the simple
   syntax is to make it easy to have options--since it is
   correspondingly easy to profess ignorance about them.  If some
   particular option requires a richer negotiation structure than
   possible within "DO, DON'T, WILL, WON'T", the proper tack is to use
   "DO, DON'T, WILL, WON'T" to establish that both parties understand
   the option, and once this is accomplished a more exotic syntax can be
   used freely.  For example, a party might send a request to alter
   (establish) line length.  If it is accepted, then a different syntax
   can be used for actually negotiating the line length--such a
   "sub-negotiation" perhaps including fields for minimum allowable,
   maximum allowable and desired line lengths.  The important concept is
   that such expanded negotiations should never begin until some prior
   (standard) negotiation has established that both parties are capable
   of parsing the expanded syntax.

Postel                                                          [Page 3]


                                                                        
June 1980                                               RFC 764, IEN 148
Telnet Protocol Specification                                           

   In summary, WILL XXX is sent, by either party, to indicate that
   party's desire (offer) to begin performing option XXX, DO XXX and
   DON'T XXX being its positive and negative acknowledgments; similarly,
   DO XXX is sent to indicate a desire (request) that the other party
   (i.e., the recipient of the DO) begin performing option XXX, WILL XXX
   and WON'T XXX being the positive and negative acknowledgments.  Since
   the NVT is what is left when no options are enabled, the DON'T and
   WON>.

   [RFC1981]  McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery
              for IP version 6", RFC 1981, DOI 10.17487/RFC1981,
              August 1996, <http://www.rfc-editor.org/info/rfc1981>.

   [RFC2784]  Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
              Traina, "Generic Routing Encapsulation (GRE)", RFC 2784,
              DOI 10.17487/RFC2784, March 2000,
              <http://www.rfc-editor.org/info/rfc2784>.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              DOI 10.17487/RFC5226, May 2008,
              <http://www.rfc-editor.org/info/rfc5226>.

   [RFC6071]  Frankel, S. and S. Krishnan, "IP Security (IPsec) and
              Internet Key Exchange (IKE) Document Roadmap", RFC 6071,
              DOI 10.17487/RFC6071, February 2011,
              <http://www.rfc-editor.org/info/rfc6071>.

   [RFC6830]  Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The
              Locator/ID Separation Protocol (LISP)", RFC 6830,
              DOI 10.17487/RFC6830, January 2013,
              <http://www.rfc-editor.org/info/rfc6830>.

Quinn & Elzur           Expires November 27, 2016              [Page 36]
Internet-Draft           Network Service Header                 May 2016

   [VXLAN-gpe]
              Quinn, P., Manur, R., Agarwal, P., Kreeger, L., Lewis, D.,
              Maino, F., Smith, M., Yong, L., Xu, X., Elzur, U., Garg,
              P., and D. Melman, "Generic Protocol Extension for VXLAN",
              <https://datatracker.ietf.org/doc/
              draft-ietf-nvo3-vxlan-gpe/>.

   [broadalloc]
              Napper, J., Kumar, S., Muley, P., and W. Hendericks, "NSH
              Context Header Allocation -- Mobility", 2016, <https://
              datatracker.ietf.org/doc/
              draft-napper-sfc-nsh-broadband-allocation/>.

   [dcalloc]  Guichard, J., Smith, M., and et al., "Network Service
              Header (NSH) Context Header Allocation (Data Center)",
              2016, <https://datatracker.ietf.org/doc/
              draft-guichard-sfc-nsh-dc-allocation/>.

   [nsh-sec]  Reddy, T., Migault, D., Pignataro, C., Quinn, P., and C.
              Inacio, "NSH Security and Privacy requirements", 2016, <ht
              tps://datatracker.ietf.org/doc/
              draft-reddy-sfc-nsh-security-req/>.

Quinn & Elzur           Expires November 27, 2016              [Page 37]
Internet-Draft           Network Service Header                 May 2016

Authors' Addresses

   Paul Quinn (editor)
   Cisco Systems, Inc.

   Email: paulq@cisco.com

   Uri Elzur (editor)
   Intel

   Email: uri.elzur@intel.com

Quinn & Elzur           Expires November 27, 2016              [Page 38]