Internet DRAFT - draft-van-beijnum-shim6-suppress-header

draft-van-beijnum-shim6-suppress-header



Shim6 Working Group                                       I. van Beijnum
Internet-Draft                                             June 19, 2006
Expires: December 21, 2006


                      Suppressing the Shim6 Header
             draft-van-beijnum-shim6-suppress-header-00.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 December 21, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

The shim6 protocol defines a header that contains a "context tag" that
identifies packets as belonging to a certain shim6 context that exists
between two hosts. It has been suggested that this shim6 header is
inserted between the IPv6 header and the upper layer protocol such as
TCP in all packets where the shim layer has rewritten the source and/or
destination address. This document considers the suppression of this
header in situations where packets can be successfully demultiplexed by
the receiver without it.

1 Introduction

Including the shim6 header in all packets where one or both addresses
are rewritten has the advantage of simplicity and predictability. When


Van Beijnum             Expires December 21, 2006               [Page 1]
Internet-Draft         Suppressing the Shim6 Header            June 2006


addresses are only rewritten when there is a failure, only relatively
few packets will contain this header, so the impact of the additional
overhead introduced is quite limited. However, on more than one
occasion, the operational community has stressed the importance of
traffic engineering: the practice of using multihoming techniques to
obtain a more desirable distribution of incoming and outgoing traffic
over the external connections available to a multihomed site. Since the
initial source and destination address in any communication session are
chosen by the host initiating the session with no mechanisms available
to consider traffic engineering needs, and because traffic engineering
can't be very successful if it's only applied when sessions start, the
use of traffic engineering regularly requires moving traffic that is
flowing through external connection over to another external connection.
With shim6 as a multihoming solution, this means that the source and/or
destination address must be rewritten. As suggested until now, this
would require inserting the shim header in the affected packets,
increasing their size slightly.

As defined currently in [SHIMPROTO], the shim6 header in data packets is
8 bytes. This increases the typical overhead of TCP with a 1280 byte MTU
from 180 bytes for 2440 bytes of data (two full-size 1280 byte data
packets and one acknowledgment, all with 60 bytes of IPv4 and TCP
overhead) to 204 bytes for 2424 bytes (68 bytes overhead per packet: 40
bytes IPv6 header, 8 bytes shim6 header and 20 bytes TCP header). This
is an increase from 7.4% to 8.4% overhead in the best case. If the
average packet size is smaller (which is typically the case on the
internet), the overhead and the increase in overhead are larger.

The author is of the opinion that such an increase in overhead on top of
the increase in overhead incurred by IPv6 in general over IPv4, makes
the shim6 multihoming solution less attractive, so it's worthwhile to
try and suppress the shim6 header where possible.

2 Demultiplexing

The main issue with suppressing the shim6 header is how to demultiplex
packets that have one or both addresses rewritten by the shim layer. Two
ways are suggested for this:

1. Equivalent locators per ULID

2. Transport demultiplexing

In the first case, rather than having two or more addresses which may
all function as either ULIDs or locators, a host has an ULID in every
relevant prefix, and then separate locator addresses that are uniquely
tied to a specific ULID in all other prefixes. For instance, a host with
prefixes A and B could have ULIDs A::1 and B::2, where B::1 is a locator
for ULID A::1 and A::2 a locator for ULID B::2. This means that whenever


Van Beijnum             Expires December 21, 2006               [Page 2]
Internet-Draft         Suppressing the Shim6 Header            June 2006


a packet is received on a locator address, it's immediately obvious that
this is a packet with the destination address rewritten and the
destination address can be trivially rewritten. When the source address
was rewritten by a host using an equivalent locator, the source address
will match a locator address previously learned from a shim
correspondent, so this can be rewritten into the original ULID as well.

Alternatively, a host may be able to demultiplex a packet based on the
source and destination addresses (which may or may not have been
rewritten) along with upper layer multiplexing information such as the
TCP or UDP port number. However, this will only work when the sessions
between two hosts don't reuse upper layer demultiplexing information, so
the host sending packets must keep track of this information to make
sure this continues to be the case, and only suppress the shim header as
long as session uniqueness persists.

3 Capabilities exchange

In general, demultiplexing can only be successful when certain criteria
are met on both the originating and receiving host, so it's necessary to
communicate shim suppression capabilities between two hosts. For this
purpose, a modification to [SHIMPROTO] is suggested where each host
announces a group of at least eight flags to the remote host when
negotiating a shim context. Each flag is one bit, with the following
meaning:

Bit 0: Always suppress shim6 header

Bit 1: Equivalent locators per ULID supported

Bit 2: Transport demultiplexing supported

Bit 3 and higher: reserved for future use, MUST be 0 when sent
                  and ignored when received

When bit 0 is set, the host indicates that it knows how to demultiplex
packets belonging to the shim context being negotiated under all
circumstances, so the sender MUST NOT add a shim header to these
packets.

However, in most cases (as outlined earlier) the cooperation of the
sender is required to make sure that multiplexing can be done
successfully, so when bit 0 is set to zero, the shim6 header may only be
suppressed when the hosts involved have at least one capability in
common. If there is any doubt, the shim6 header MUST NOT be suppressed.

It has been suggested that the shim6 header suppression capability could
be added as an extension rather than include it from the start. The
author believes that would be a mistake, because it requires support for


Van Beijnum             Expires December 21, 2006               [Page 3]
Internet-Draft         Suppressing the Shim6 Header            June 2006


both the case where the suppression capability (or at least its
negotiation) is present and the case where the suppression capability
isn't present. Also, it's a lot harder to go back and add a feature than
it is to include it from the ground up. As such, it's unlikely that the
suppression capability will be present in enough hosts to warrant the
effort unless it's present from the start. The complexity of adding the
minimum support required functionality is extremely modest: the hosts
must exchange a set of flags, and a host must suppress the shim header
when bit 0 is set. All other capabilities are optional.

4 Security Considerations

Suppression of the shim header makes it easier for an attacker to inject
packets with rewritten source/destination addresses into the
communication between two hosts because this way, the attacker doesn't
have to guess the context tag. However, since an attacker could also
easily inject packets that don't have their addresses rewritten, either
in the presence of the absence of the shim protocol, this doesn't open
up previously non-existing attack vectors.

Firewalls and other middleboxes will have to implement the header
suppression capabilities as well if they want to track shim6 use
successfully.

5 IANA Considerations

When shim header suppression is rolled into the shim protocol document,
the IANA will be asked to open a registry for capabilities flags.

6 References

[SHIMPROTO]  E. Nordmark and M. Bagnulo, "Level 3 multihoming shim
             protocol", draft-ietf-shim6-proto-05 (work in progress),
             May 2006.

7 Document and Author Information

This document expires December, 2006. The latest version will always be
available at http://www.muada.com/drafts/. Please direct questions and
comments to the shim6 mailinglist or directly to the author:

    Iljitsch van Beijnum

    Email: iljitsch@muada.com







Van Beijnum             Expires December 21, 2006               [Page 4]
Internet-Draft         Suppressing the Shim6 Header            June 2006


Intellectual Property Statement

   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.


Disclaimer of Validity

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


Copyright Statement

   Copyright (C) The Internet Society (2006).  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.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.




Van Beijnum             Expires December 21, 2006               [Page 5]