IPFIX Working Group                                          B. Trammell
Internet-Draft                                                CERT/NetSA
Updates: XXXX (if approved)                                    E. Boschi
Intended status: Standards Track                          Hitachi Europe
Expires: February 2, 2008                                 August 1, 2007


   IP Flow Information Export (IPFIX) SCTP Stream Restriction Change
                draft-trammell-ipfix-sctp-change-01.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of 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 February 2, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   The IPFIX protocol mandates the use of PR-SCTP as transport protocol.
   The document specifies the transmission of Templates over SCTP stream
   zero with reliable delivery and the transmission of Data Records over
   separate streams.  This constraint is unnecessary.  This document
   relaxes all restrictions on the use of SCTP streams within IPFIX,
   allowing IPFIX implementations to use SCTP streams as most
   appropriate for their respective applications.



Trammell & Boschi       Expires February 2, 2008                [Page 1]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.  Usage of Streams in PR-SCTP for IPFIX export . . . . . . . . .  4
   4.  Changes to IPFIX Protocol Specification  . . . . . . . . . . .  5
     4.1.  Stream Restriction Changes . . . . . . . . . . . . . . . .  5
     4.2.  SCTP Reliability . . . . . . . . . . . . . . . . . . . . .  6
     4.3.  SCTP References  . . . . . . . . . . . . . . . . . . . . .  6
     4.4.  IPFIX Implementation Guidelines changes  . . . . . . . . .  7
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . .  7
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  7
   7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  8
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  8
     8.1.  Normative References . . . . . . . . . . . . . . . . . . .  8
     8.2.  Informative References . . . . . . . . . . . . . . . . . .  8
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .  8
   Intellectual Property and Copyright Statements . . . . . . . . . . 10

































Trammell & Boschi       Expires February 2, 2008                [Page 2]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


1.  Introduction

   The specification of the IPFIX Protocol [I-D.ietf-ipfix-protocol]
   mandates the use of PR-SCTP as transport protocol for IPFIX.  SCTP as
   specified in RFC 2960 [RFC2960] and RFC 3309 [RFC3309] using the PR-
   SCTP extension defined in RFC 3758 [RFC3758] MUST be implemented by
   all compliant implementations.

   Section 10.2.4.3 of the IPFIX Protocol specification
   [I-D.ietf-ipfix-protocol] requires that

   "An Exporting Process MUST request at least two outbound streams per
   association.  The first stream (referred to as stream zero in the
   rest of this document), is used to send the Template Set and the
   Options Template Set. Data Sets MUST NOT be sent on stream zero."

   This is an unnecessary constraint, derived in part from a
   misunderstanding during the IPFIX Protocol development process of the
   nature of SCTP streams and the per-message nature of the SCTP partial
   reliability extension.  This document updates the specification of
   the use of SCTP and PR-SCTP as transport protocol for IPFIX, allowing
   Data Sets, Template Sets and Option Template Sets to be sent over any
   SCTP stream.  No limit is given on the number of Streams an Exporting
   Process must request (e.g., one outbound stream sending all templates
   and data is perfectly acceptable).

   The motivation behind this change is to allow different IPFIX
   implementations to make the most appropriate use of SCTP streams,
   which are used to isolate different logical groups of messages in
   order to avoid the head-of-line blocking issue that can reduce total
   throughput in fully-reliable single-stream transport protocols such
   as TCP.  For example, one IPFIX implementation could isolate
   information from each separate Observation Domain into its own
   stream, a second could export inbound and outbound flow data in
   separate streams, and a third, simpler implementation could use a
   single stream for all templates and data.  None of these arrangements
   are possible with the IPFIX Protocol as presently specified.

   This change does require one minor note on the handling of Template
   Withdrawals.  In the protocol as presently specified, since all
   Template Sets (including Template Sets within Template Withdrawal
   Messages) SHOULD appear on stream zero, there exists no case in which
   a reused Template ID may be received and processed before the
   Template Withdrawal Message making the ID available for reuse.  With
   the removal of this restriction, we recommend that guidelines on the
   use of Template Withdrawals on any stream be added to the IPFIX
   Implementation Guidelines.




Trammell & Boschi       Expires February 2, 2008                [Page 3]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


   In addition, there are a two other very minor issues with the IPFIX
   Protocol Specification's handling of SCTP.  First, it refers to
   "unreliable" delivery over PR-SCTP, a service which PR-SCTP does not
   provide, and fails to reference RFC 3309, which corrects a problem
   with SCTP's checksum mechanism.  As this document corrects issues
   with the interaction between IPFIX and SCTP, these issues are also
   corrected in sections 4.2 and 4.3.


2.  Terminology

   Terms used in this document that are defined in the Terminology
   section of the IPFIX Protocol [I-D.ietf-ipfix-protocol] document are
   to be interpreted as defined there.

   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 [RFC2119].


3.  Usage of Streams in PR-SCTP for IPFIX export

   This section updates and supersedes any language in the IPFIX
   Protocol Specification regarding stream selection.  The new stream
   selection rules are specified here in their entirety.  In case of any
   conflict with the IPFIX Protocol Specification, the following three
   paragraphs are normative.  Specific changes to the IPFIX Protocol
   Specification and IPFIX Implementation Guidelines appear in the
   following section.

   An Exporting Process may request any number of SCTP streams during
   SCTP association establishment.

   An Exporting Process may send Template Sets and Options Template Sets
   on any SCTP stream.  Template Sets and Options Template Sets MUST be
   sent reliably, and MUST be sent in order within a stream.  An
   Exporting Process may send Data Sets on any SCTP Stream, with full or
   partial reliability, with ordered or unordered delivery.

   A Collecting Process MUST accept Template Sets, Options Template
   Sets, Template Witdrawal Sets, and Data Sets on any SCTP stream.

   Additionally, an Exporting Process sending Template Withdrawal
   Messages SHOULD ensure to the extent possible that the Template
   Withdrawal Messages and subsequent Template Sets reusing the
   withdrawn Template IDs are received and processed at the Collecting
   Process in proper order.  The Exporting Process can achieve this by
   one of two possible methods: 1. by sending a Template Withdrawal



Trammell & Boschi       Expires February 2, 2008                [Page 4]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


   Message reliably, in order, and on the same stream as the subsequent
   Template Set reusing its ID; or 2. by waiting an appropriate amount
   of time (on the scale of one minute) after sending a Template
   Withdrawal Message before attempting to reuse the withdrawn Template
   ID.


4.  Changes to IPFIX Protocol Specification

   The following are the changes that would be made to the IPFIX
   Protocol Specification to modify it to use the unrestrictive stream
   selection rules in the previous section, and to clarify other issues
   regarding the interaction of IPFIX with SCTP.

4.1.  Stream Restriction Changes

   Paragraph 5 of Section 8 "Template Management" of the IPFIX Protocol
   Specification [I-D.ietf-ipfix-protocol] is replaced as follows:

   Template Sets and Options Template Sets may be sent on any SCTP
   stream.  Template Sets and Option Template Sets MUST be sent reliably
   and in order.  As such, the Collecting Process MUST store the
   Template Record information for the duration of the association so
   that it can interpret the corresponding Data Records that are
   received in subsequent Data Sets.

   Paragraph 14 of Section 8 "Template Management" of the IPFIX Protocol
   Specification [I-D.ietf-ipfix-protocol] is replaced as follows:

   The Template Withdraw Message may be sent on any SCTP stream.  The
   Template Withdraw Message MUST be sent reliably and in order.

   Paragraph 2 of Section 9 "The Collecting Process's Side" of the IPFIX
   Protocol Specification [I-D.ietf-ipfix-protocol] is replaced as
   follows:

   The Collecting Process SHOULD listen for a new association request
   from the Exporting Process.  The Exporting Process will request a
   number of streams to use for export.  An Exporting Process MAY ask
   for and support more than one SCTP stream.

   Section 10.2.4.3 "Stream" of the IPFIX Protocol Specification
   [I-D.ietf-ipfix-protocol] is replaced in full as follows.  Note that
   these changes also modify text on the reliability of IPFIX Message
   transmission within streams, as noted in the following section:

   An Exporting Process may request any number of outbound SCTP streams
   per association.  Each of these streams may be used for the



Trammell & Boschi       Expires February 2, 2008                [Page 5]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


   transmission of IPFIX Messages containing Data Sets, Template Sets,
   and/or Options Template Sets.

   Depending on the requirements of the application, the Exporting
   Process may send Data Sets with full or partial reliability, using
   ordered or out-of-order delivery, over any SCTP stream established
   during SCTP Association setup.

   When IPFIX Messages containing Data Sets are exported partially
   reliably, they SHOULD be marked for retransmission as long as there
   is room in the SCTP send queues.  However, if the queue overflows
   during times of congestion or other retransmission events, the oldest
   IPFIX Message that has been transmitted and marked as partially
   reliable should be freed and marked to be skipped per the PR-SCTP
   [RFC3758] specification.  The freed buffer space should then be re-
   used for the new Data Sets being exported.

4.2.  SCTP Reliability

   PR-SCTP [RFC3758] provides partially reliable transport with a
   variety of levels of partial reliability as defined by a variety of
   partial reliability policies, as noted in the IPFIX Implementation
   Guidelines [I-D.ietf-ipfix-implementation-guidelines].  However,
   there is no such thing as "unreliable" SCTP transport.  One such
   reference in section 10.2.4.3 was replaced in the previous section.
   In addition paragraph 1 of section 10.2.2 "Reliability" of the IPFIX
   Protocol Specification [I-D.ietf-ipfix-protocol] is replaced as
   follows:

   The SCTP transport protocol is by default reliable, but has the
   capability to deliver messages with partial reliability [RFC3758].

4.3.  SCTP References

   Note also that references to the SCTP documents in the IPFIX Protocol
   Specification are incomplete.  References to SCTP as specified in RFC
   2960 [RFC2960] should also reference RFC 3309 [RFC3309], which
   updates SCTP to use CRC32 for checksums as opposed to the originally
   specified Adler-32.  This is an oversight, and is not intended to
   imply that SCTP with Adler-32 checksums should be used as a transport
   protocol for IPFIX.

   Consequently, paragraph 2 of section 10.1 "Transport Compliance and
   Transport Usage" of the IPFIX Protocol Specification
   [I-D.ietf-ipfix-protocol] is replaced as follows:

   SCTP as specified in [RFC 2960] and [RFC 3309] using the PR-SCTP
   extension defined in [RFC 3758] MUST be implemented by all compliant



Trammell & Boschi       Expires February 2, 2008                [Page 6]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


   implementations.  UDP [UDP] MAY also be implemented by compliant
   implementations.  TCP [TCP] MAY also be implemented by compliant
   implementations.

   Paragraph 1 of section 10.2 "SCTP" of the IPFIX Protocol
   Specification [I-D.ietf-ipfix-protocol] is replaced as follows:

   This section describes how IPFIX can be transported over SCTP as
   specified in [RFC 2960] and [RFC 3309] using the PR-SCTP extension
   defined in [RFC 3758].

4.4.  IPFIX Implementation Guidelines changes

   The following text is added to Section 6.1 "SCTP" of the IPFIX
   Implementation Guidelines [I-D.ietf-ipfix-implementation-guidelines].
   (Note that as the text of the Implementation Guidelines is still
   subject to change, the absolute position of the text is not specified
   here):

   Since Template Sets and Template Withdrawal Messages may be sent on
   any SCTP stream, a Template Withdrawal Message may withdraw a
   template sent on a different stream, and a Template Set may reuse a
   Template ID withdrawn by a Template Withdrawal Message sent on a
   different stream.  Therefore, an Exporting Process sending Template
   Withdrawal Messages SHOULD ensure to the extent possible that the
   Template Withdrawal Messages and subsequent Template Sets reusing the
   withdrawn Template IDs are received and processed at the Collecting
   Process in proper order.  The Exporting Process can achieve this by
   one of two possible methods: 1. by sending a Template Withdrawal
   Message reliably, in order, and on the same stream as the subsequent
   Template Set reusing its ID; or 2. by waiting an appropriate amount
   of time (on the scale of one minute) after sending a Template
   Withdrawal Message before attempting to reuse the withdrawn Template
   ID.


5.  Security Considerations

   The same security considerations as for the IPFIX Protocol
   [I-D.ietf-ipfix-protocol] apply.


6.  IANA Considerations

   This document has no actions for IANA.






Trammell & Boschi       Expires February 2, 2008                [Page 7]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


7.  Acknowledgements

   Thanks to Randall Stewart, Michael Tuexen, and Peter Lei for
   technical assistance with PR-SCTP.  Thanks to Benoit Claise and Paul
   Aitken for refining the new stream restriction rules in this draft.


8.  References

8.1.  Normative References

   [I-D.ietf-ipfix-protocol]
              Claise, B., "Specification of the IPFIX Protocol for the
              Exchange", draft-ietf-ipfix-protocol-24 (work in
              progress), November 2006.

   [I-D.ietf-ipfix-implementation-guidelines]
              Boschi, E., "IPFIX Implementation Guidelines",
              draft-ietf-ipfix-implementation-guidelines-06 (work in
              progress), June 2007.

   [RFC2960]  Stewart, R., Xie, Q., Morneault, K., Sharp, C.,
              Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M.,
              Zhang, L., and V. Paxson, "Stream Control Transmission
              Protocol", RFC 2960, October 2000.

   [RFC3309]  Stone, J., Stewart, R., and D. Otis, "Stream Control
              Transmission Protocol (SCTP) Checksum Change", RFC 3309,
              September 2002.

   [RFC3758]  Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P.
              Conrad, "Stream Control Transmission Protocol (SCTP)
              Partial Reliability Extension", RFC 3758, May 2004.

8.2.  Informative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.













Trammell & Boschi       Expires February 2, 2008                [Page 8]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


Authors' Addresses

   Brian H. Trammell
   CERT Network Situational Awareness
   Software Engineering Institute
   4500 Fifth Avenue
   Pittsburgh, Pennsylvania  15213
   United States

   Phone: +1 412 268 9748
   Email: bht@cert.org


   Elisa Boschi
   Hitachi Europe SAS
   Immeuble Le Theleme
   1503 Route les Dolines
   06560 Valbonne
   France

   Phone: +33 4 89874100
   Email: elisa.boschi@hitachi-eu.com





























Trammell & Boschi       Expires February 2, 2008                [Page 9]


Internet-Draft          IPFIX SCTP Stream Change             August 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Trammell & Boschi       Expires February 2, 2008               [Page 10]