datatracker.ietf.org
Sign in
Version 5.6.2.p2, 2014-07-24
Report a bug

TCP alternate checksum options
RFC 1146

Document type: RFC - Historic (March 1990; No errata)
Obsoleted by RFC 6247
Obsoletes RFC 1145
Document stream: Legacy
Last updated: 2013-03-02
Other versions: plain text, pdf, html

Legacy State: (None)
Document shepherd: No shepherd assigned

IESG State: RFC 1146 (Historic)
Responsible AD: (None)
Send notices to: No addresses provided

Network Working Group                                          J. Zweig
Request for Comments: 1146                                         UIUC
Obsoletes: RFC 1145                                        C. Partridge
                                                                    BBN
                                                             March 1990

                     TCP Alternate Checksum Options

Status of This Memo

   This memo suggests a pair of TCP options to allow use of alternate
   data checksum algorithms in the TCP header.  The use of these options
   is experimental, and not recommended for production use.

   Note:  This RFC corrects errors introduced in the editing process in
   RFC 1145.

   Distribution of this memo is unlimited.

Introduction

   Some members of the networking community have expressed interest in
   using checksum-algorithms with different error detection and
   correction properties than the standard TCP checksum.  The option
   described in this memo provides a mechanism to negotiate the use of
   an alternate checksum at connection-establishment time, as well as a
   mechanism to carry additional checksum information for algorithms
   that utilize checksums that are longer than 16 bits.

Definition of the Options

   The TCP Alternate Checksum Request Option may be sent in a SYN
   segment by a TCP to indicate that the TCP is prepared to both
   generate and receive checksums based on an alternate algorithm.
   During communication, the alternate checksum replaces the regular TCP
   checksum in the checksum field of the TCP header.  Should the
   alternate checksum require more than 2 octets to transmit, the
   checksum may either be moved into a TCP Alternate Checksum Data
   Option and the checksum field of the TCP header be sent as 0, or the
   data may be split between the header field and the option.  Alternate
   checksums are computed over the same data as the regular TCP checksum
   (see TCP Alternate Checksum Data Option discussion below).

TCP Alternate Checksum Request Option

   The format of the TCP Alternate Checksum Request Option is:

Zweig & Partridge                                               [Page 1]
RFC 1146             TCP Alternate Checksum Options           March 1990

                 +----------+----------+----------+
                 |  Kind=14 | Length=3 |  chksum  |
                 +----------+----------+----------+

   Here chksum is a number identifying the type of checksum to be used.

   The currently defined values of chksum are:

                   0  -- TCP checksum
                   1  -- 8-bit  Fletcher's algorithm (see Appendix I)
                   2  -- 16-bit Fletcher's algorithm (see Appendix II)

   Note that the 8-bit Fletcher algorithm gives a 16-bit checksum and
   the 16-bit algorithm gives a 32-bit checksum.

   Alternate checksum negotiation proceeds as follows:

      A SYN segment used to originate a connection may contain the
      Alternate Checksum Request Option, which specifies an alternate
      checksum-calculation algorithm to be used for the connection.  The
      acknowledging SYN-ACK segment may also carry the option.

      If both SYN segments carry the Alternate Checksum Request option,
      and both specify the same algorithm, that algorithm must be used
      for the remainder of the connection.  Otherwise, the standard TCP
      checksum algorithm must be used for the entire connection.  Thus,
      for example, if one TCP specifies type 1 checksums, and the other
      specifies type 2 checksums, then they will use type 0 (the regular
      TCP checksum).  Note that in practice, one TCP will typically be
      responding to the other's SYN, and thus either accepting or
      rejecting the proposed alternate checksum algorithm.

      Any segment with the SYN bit set must always use the standard TCP
      checksum algorithm.  Thus the SYN segment will always be
      understood by the receiving TCP.  The alternate checksum must not
      be used until the first non-SYN segment.  In addition, because RST
      segments may also be received or sent without complete state
      information, any segment with the RST bit set must use the
      standard TCP checksum.

      The option may not be sent in any segment that does not have the
      SYN bit set.

      An implementation of TCP which does not support the option should
      silently ignore it (as RFC 1122 requires).  Ignoring the option
      will force any TCP attempting to use an alternate checksum to use
      the standard TCP checksum algorithm, thus ensuring
      interoperability.

Zweig & Partridge                                               [Page 2]
RFC 1146             TCP Alternate Checksum Options           March 1990

TCP Alternate Checksum Data Option

   The format of the TCP Alternate Checksum Data Option is:

[include full document text]