Network Working Group                 Bellovin, Buchsbaum, Muthukrishnan
Internet Draft                                       AT&T Labs--Research

Expiration Date: April 2000                                 October 1999

                              TCP Filters

                     draft-bellovin-tcpfilt-00.txt

1. Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   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."

   This draft document will be submitted to the RFC Editor as an
   Experimental RFC. Distribution of this document is unlimited.

   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.

2. Abstract

   We propose a method to specify general-purpose filters between TCP
   and the application layer.  The method is incrementally deployable,
   as neither party will use a filter layer without the other's consent.

Bellovin                                                FORMFEED[Page 1]


Internet Draft        draft-bellovin-tcpfilt-00.txt         October 1999

3. Introduction

   TCP [RFC793] provides applications with a simple reliable byte
   stream.  While this is a powerful primitive, some applications
   require more.  For example, many applications require delimited
   records.  Others benefit from compression or encryption.  While these
   services can be implemented by individual applications, it is
   sometimes desirable to provide a common mechanism.  This is
   especially useful for administratively decreed options that are
   intended to be used by unchanged applications.  For example, an
   administrator can configure a pair of systems so that all FTP traffic
   between the two is compressed, without modifying either the clients
   or the servers.

   We describe a simple mechanism based on TCP options.  During the
   exchange of SYN packets, one side initiates a filter negotiation by
   announcing what filters it is prepared to employ.  The other responds
   in the next ACK packet by listing the subset of those filters that it
   is prepared to accept.  Thence, each side applies the agreed upon
   filters to the payload in each subsequent packet.

   For the sake of simplicity, there is no negotiation after the initial
   three-way handshake.  Furthermore, both directions use the same set
   of filters.

3.1. Specification of Requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC-2119].

4. Option Format

   Each filter uses one TCP option, of type TFI (to be assigned by
   IANA).  SYN packets contain a list of filter options; these represent
   the types of filter the sender wishes to receive.

   A filter option has the following format:

   +--------+--------+--------+
   |  TFI   |   len  | parm...|
   +--------+--------+--------+

   A filter option announcement can have parameters; parameters are
   option-dependent and are described in the appropriate documents.

Bellovin                                                FORMFEED[Page 2]


Internet Draft        draft-bellovin-tcpfilt-00.txt         October 1999

   Each side includes the agreed upon options until it is guaranteed
   that the other side has received an ACK with those options.  (Cf.,
   Protocol.)  Thence no filter options are included in subsequent
   packets.

5. Protocol

   By "initiator," we indicate the party that first includes filter
   options in its SYN packet.  By "respondent," we indicate the other
   party.

   The initiator includes a list of filters it is prepared to employ in
   its SYN packet.  The respondent includes a (possibly empty) subset of
   those options in its first ACK packet.  Both sides are then committed
   to applying precisely the filters indicated by the respondent to the
   payload in each subsequent packet.  (Cf., Behavior.)

   In the event of a simultaneous open, both sides will use the filters
   that form the intersection of the filter requests in the two SYN
   packets.  This is confirmed by the two SYN+ACK packets.

   Both initiator and respondent MUST NOT include payload data in any
   SYN packet that includes filter options.  Similarly, the contacted
   party MUST NOT act as an initiator if the initial SYN packet includes
   payload data.

   Because TCP options do not consume sequence number space, and hence
   are not acknowledged, each party MUST include precisely the options
   indicated by the respondent in all packets until it receives an ACK
   for a packet that contained at least one data byte, i.e., until it is
   guaranteed that the other party has acknowledged those options.
   Thereafter, the party does not include filter options in any
   subsequent packet.

Bellovin                                                FORMFEED[Page 3]


Internet Draft        draft-bellovin-tcpfilt-00.txt         October 1999

6. Behavior

   If the respondent has indicated that it can accept a filter, a sender
   MUST use it.  If multiple filters apply to a packet (cf., Protocol),
   it indicates that all of those filters were applied to the packet.
   Filters are applied by the receiving system in the order in which the
   options were specified by the respondent (cf., Protocol).  Thus, if
   the options following the base TCP header denote "ENCRYPTION" and
   "COMPRESSION", the receiving system must first decrypt the packet and
   then uncompress it.  Obviously, the sender must apply the filters in
   the opposite order, first compressing the packet and then encrypting
   it.

   Filters are strictly layered.  There should not be interactions
   between different layers, though it is perfectly proper for one layer
   to assume the standard behavior provided by another.  In particular,
   while it is perfectly proper for a filter to assume that TCP provides
   a reliable byte stream, it is not proper for it to assume any
   particular packet construction.  If nothing else -- and there are
   many other reasons -- TCP's window size management, retransmission,
   and the coalescence of different segments into one during
   retransmission would wreak havoc on any filter that did make such
   assumptions.

6.1. Filter Selection

   Again, because of the unpredictability of TCP's actual packetization,
   the filters to be used MUST be constant during a connection.  The
   first packet sent after the initial SYN for each side MUST include
   the filter options that will be used during all transmissions for
   that connection.  This specifically includes the ACK packet that
   finishes the three-way handshake.

   Because filter options appear only so far as to acknowledge
   respondent's final choices, parameters in a given filter option are
   fixed by the SYN negotiation for the duration of a connection.  They
   may be changed only by in-band communication, i.e., by the filter
   itself interpreting the payload data.

6.2. Header Compression

   Packets with filter options may be subject to header compression
   [RFC1144].  There is no problem in doing so.  Changes to the TCP
   options field can have a negative effect on header compression; this
   should not present a serious problem, however, since the options

Bellovin                                                FORMFEED[Page 4]


Internet Draft        draft-bellovin-tcpfilt-00.txt         October 1999

   occur only in the initial packets of a connection.

6.3. TCP URGENT Markings

   Since TCP proper is unaware of the behavior (or even the existence)
   of any filter modules, it will simply note the URGENT pointer as
   usual.  It is the responsibility of filter modules to handle this
   properly, including notifying the application (or any higher layers)
   as needed.  Filters that change the length of the application-
   supplied data stream, such as compression modules, MUST make the
   corresponding adjustments to the effective URGENT pointer that is
   passed up.

7. Open Issues

   The exact option syntax proposed here may not be ideal.  To conserve
   option space, it may be useful to make all filters suboptions to a
   single TCP filter option.

   It may also be useful to use separate options for request and
   transmission.  That would avoid possible race conditions in the event
   of complex retransmissions of SYN+ACK packets or simultaneous opens,
   or to permit different filters to be used in each direction.  In the
   simultaneous open case, separate options would also permit proper
   acquiescence to a filter request by a host that supports the option
   but had not requested it.

   We considered allowing packet-level filter specification, by
   including appropriate filter options in each data-carrying packet.
   This would allow out-of-band modulation of the filter behavior during
   the connection.  While such packet-level specification is
   theoretically possible, we anticipate that making the protocol
   robust, in particular vis-a-vis packet retransmission and
   coalescence, will be hard enough to make it impractical.

Bellovin                                                FORMFEED[Page 5]


Internet Draft        draft-bellovin-tcpfilt-00.txt         October 1999

8. Security Considerations

   Filtering data above the TCP layer should not have any negative
   impact on security.  In particular, port numbers are not affected.
   Some firewalls and intrusion detection systems examine TCP payload
   data, however, and they may be confused by some filters.  The former
   may wish to delete filter options; if the latter are used,
   administrators may wish to disable such options.  Particular filter
   options, such as encryption, may have their own security
   considerations.

9. Acknowledgements

10. References

11. Author Information

Steven M. Bellovin
smb@research.att.com
+1 973-360-8656

Adam L. Buchsbaum
alb@research.att.com
+1 973-360-8674

S. Muthukrishnan
muthu@research.att.com
+1 973-360-7212

AT&T Labs--Research
Shannon Laboratory
180 Park Avenue
Florham Park, NJ 07974

Bellovin                                                FORMFEED[Page 6]