Internet Engineering Task Force                                 J. Palet
Internet-Draft                                                   M. Diaz
Expires: July 22, 2006                                       Consulintel
                                                        January 18, 2006


                Automatic Tunneling Setup for/with IPv6
                   draft-palet-softwires-ats6-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 July 22, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   This document presents the basis for a procedure that enables a host
   or router to automatically setup an IPvX in IPvY tunnel.  Basically,
   the document considers several scenarios, from the most common today
   "dominant IPv4" networks to new "dominant IPv6" networks, which can
   even support the use of multicast.

   A basic requirement is that the host or router is a dual stack node
   and it will have either native IPv4-only access (dominant IPv4



Palet & Diaz              Expires July 22, 2006                 [Page 1]


Internet-Draft                    ATS6                      January 2006


   network) or native IPv6-only access (dominant IPv6 network).
   Consequently, either IPv6 will be transported in the existing IPv4-
   only infrastructure, or IPv4 will be transported in the existing
   IPv6-only infrastructure.  Other combinations are possible, such as
   IPv6 in IPv6 (for example to support IPv6 multicast in an IPv6-
   unicast-only infrastructure).

   The procedure follows the work from [1], [2], [3], [4] and mainly
   [5], trying to be compliant with the requirements enumerated in those
   documents.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Requirements . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.  Assumptions  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  Scenarios  . . . . . . . . . . . . . . . . . . . . . . . . . .  6
   5.  Protocol Description . . . . . . . . . . . . . . . . . . . . .  7
     5.1.  Start State  . . . . . . . . . . . . . . . . . . . . . . .  7
     5.2.  Sofwire Concentrator Discovery state . . . . . . . . . . .  8
     5.3.  Tunnel Setup Request state . . . . . . . . . . . . . . . .  8
     5.4.  Authenticated (Basic Tunnel) state . . . . . . . . . . . .  8
     5.5.  Authentication and Handshake state . . . . . . . . . . . .  9
     5.6.  Authenticated (Extended Tunnel) state  . . . . . . . . . . 10
     5.7.  End state  . . . . . . . . . . . . . . . . . . . . . . . . 10
   6.  Authentication and Handshake Options . . . . . . . . . . . . . 10
     6.1.  IPv6 Prefix  . . . . . . . . . . . . . . . . . . . . . . . 10
     6.2.  Dynamic/Static Prefix  . . . . . . . . . . . . . . . . . . 11
     6.3.  Keep-Alive Periodicity . . . . . . . . . . . . . . . . . . 11
     6.4.  NAT Type . . . . . . . . . . . . . . . . . . . . . . . . . 11
     6.5.  Cyphering Type . . . . . . . . . . . . . . . . . . . . . . 11
     6.6.  Encapsulation Type . . . . . . . . . . . . . . . . . . . . 11
   7.  Protocol Behavior in IPv4-only Infrastructures . . . . . . . . 12
     7.1.  Link-local Addresses . . . . . . . . . . . . . . . . . . . 12
     7.2.  Global IPv6 Address  . . . . . . . . . . . . . . . . . . . 13
       7.2.1.  Pre-Auth Realms  . . . . . . . . . . . . . . . . . . . 13
       7.2.2.  Non-Auth Realms  . . . . . . . . . . . . . . . . . . . 16
     7.3.  Handshake  . . . . . . . . . . . . . . . . . . . . . . . . 17
     7.4.  Extended Tunnel  . . . . . . . . . . . . . . . . . . . . . 19
     7.5.  Keep-Alive Packets . . . . . . . . . . . . . . . . . . . . 20
   8.  Protocol Behavior in IPv6-only Infrastructures . . . . . . . . 20
     8.1.  Pre-Auth Realms  . . . . . . . . . . . . . . . . . . . . . 21
       8.1.1.  Use of IPv4 addresses derived from the IPv6 one
               (Basic Tunnel) . . . . . . . . . . . . . . . . . . . . 21
       8.1.2.  Use of DHCP (Extended Tunnel)  . . . . . . . . . . . . 24
     8.2.  Non-Auth Realms  . . . . . . . . . . . . . . . . . . . . . 25
       8.2.1.  Use of IPv4 addresses derived from the IPv6 one



Palet & Diaz              Expires July 22, 2006                 [Page 2]


Internet-Draft                    ATS6                      January 2006


               (Basic Tunnel) . . . . . . . . . . . . . . . . . . . . 25
       8.2.2.  Use of DHCP (Extended Tunnel)  . . . . . . . . . . . . 25
     8.3.  The IPv6-in-IPv6 Case  . . . . . . . . . . . . . . . . . . 25
     8.4.  Keep-Alive Packets . . . . . . . . . . . . . . . . . . . . 26
       8.4.1.  IPv4 tunnel in IPv6-only infrastructures . . . . . . . 26
       8.4.2.  IPv6 tunnel in IPv6-only infrastructures . . . . . . . 26
   9.  Signaling Packets  . . . . . . . . . . . . . . . . . . . . . . 26
     9.1.  A&H Packet . . . . . . . . . . . . . . . . . . . . . . . . 26
     9.2.  ACK Packet . . . . . . . . . . . . . . . . . . . . . . . . 29
     9.3.  NO_ACK Packet  . . . . . . . . . . . . . . . . . . . . . . 31
   10. Signaling Encapsulation  . . . . . . . . . . . . . . . . . . . 33
   11. Peer-to-Peer Optimization  . . . . . . . . . . . . . . . . . . 34
   12. Security Considerations  . . . . . . . . . . . . . . . . . . . 34
   13. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 35
   14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 35
   15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35
     15.1. Normative References . . . . . . . . . . . . . . . . . . . 35
     15.2. Informative References . . . . . . . . . . . . . . . . . . 35
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37
   Intellectual Property and Copyright Statements . . . . . . . . . . 38































Palet & Diaz              Expires July 22, 2006                 [Page 3]


Internet-Draft                    ATS6                      January 2006


1.  Introduction

   Today, new IPv6 deployment scenarios, which initially were not
   considered, are emerging.  The deployment of IPv6 is already
   requiring the usage of an automatic tunneling setup, not only in
   existing IPv4-only infrastructures, but also of IPv4 tunneling in
   existing IPv6-only infrastructures.

   The case for IPv6-only infrastructures is a fact, and consequently
   IPv4-in-IPv6 tunnels are necessary to support communications of old
   applications not yet ported to IPv6, in those infrastructures.

   Such scenarios could be classified basically as:

   o  Pre-authenticated user realms: Those where the user is typically
      already a customer of the network infrastructure (ISPs, enterprise
      networks, etc.).  This could apply to broadband and narrowband
      networks where the user has somehow "subscribed" or "registered"
      for the service before using it, by means of other procedures out
      of the scope of this document.  Possibly they can only use the
      network because it is authenticated by means of the physical
      attachment to that network (typically DSL, Cable, PLC, 3GPP,
      etc.).  In this case, the user will have, typically, a given
      profile in the network, which may have specific configuration
      parameters for that user.

   o  Non-authenticated user realms: Those where the user is not a pre-
      authenticated customer of the network, but apply for a (temporary)
      service, may be even free of charge, such as hot spots, transition
      services in third party networks, guest in an enterprise network,
      etc.  This is often the case for nomadic users, which change their
      network attachment point when traveling.  In this case, the user
      will not have, a given profile in the network, so specific
      configuration parameters for that user will not be available.

   Some of the scenarios have their own requirements as stated in [1],
   [2], [3], [4] and [5], which include among other few packet exchanges
   to setup the tunnel, low overhead, etc.  These requirements make
   necessary a new procedure or protocol to setup a tunnel in an
   automated fashion.  This document presents the basis for such
   protocol, in order to make possible to a host/router the automatic
   setup of an IPvX-in-IPvY tunnel.


2.  Requirements

   The protocol described in this document is based on the requirements
   described in [1], [2], [3], [4] and [5], but especially in:



Palet & Diaz              Expires July 22, 2006                 [Page 4]


Internet-Draft                    ATS6                      January 2006


   o  To obtain an IPv6 address in IPv4-only infrastructures or an IPv4
      address in IPv6-only infrastructures.

   o  To automatically setup an IPv6-in-IPv4, IPv4-in-IPv6 tunnel, or
      IPv6-in-IPv6 tunnel, depending on the user scenario.

   o  To automatically setup and activate the tunnel.

   o  Low overhead on communications.

   o  Low overload on the user device.

   o  Lightweight deployment (minimal infrastructure changes and
      overhead).

   o  NAT/PAT and Firewall traversing.

   o  To authenticate the user.

   In addition, allows several optimizations and enhancements, such as
   the possibility to assign to the user a stable addresses or prefixes
   (by means of the embedded signaling protocol, or external protocols
   such as DHCP/DHCPv6/DHCP-PD), rebuilding the tunnel if the IP address
   changes, renumbering of the tunnel to match the delegated prefix,
   NAT/PAT auto-detection, and the support for alternative
   encapsulations.


3.  Assumptions

   The solution proposed is based on the following assumptions:

   o  The SC (Softwire Concentrator, according to the softwire
      terminology) is discovered by other means before starting the
      tunnel setup, or it is manually configured.

   o  The user host/router (SI, Softwire Initiator, client) is pre-
      registered within the domain by any valid mean.  Note that a
      registered user is not the same as an authenticated user.

   o  Registered user means, in this context, that this user has some
      kind of identifier (which is assigned during the registration
      process) in order to access the network, and may be other
      associated profile information (name, authentication method,
      etc...).  It could be an anonymous user, in such case the
      identifier could be just "anonymous".





Palet & Diaz              Expires July 22, 2006                 [Page 5]


Internet-Draft                    ATS6                      January 2006


   o  The SC, either intra or inter networks, will be reachable by at
      least one of the available encapsulation mechanisms.  This for
      example, ensures the support of NAT/PAT traversal regardless of
      the type of NAT (symmetric, full-conned, etc).


4.  Scenarios

   The following scenarios are considered candidate targets to take
   advantage of the procedure described in this document.

   1.  Pre-authenticated user realms (from now on, Pre-Auth).  Those
       realms where the user is already authenticated, typically being
       "customer" of the network infrastructure (ISPs, enterprise
       networks, etc.).  This could apply to broadband and narrowband
       networks where the user has somehow "signed on" before using the
       service, by means of other procedures, which are out of the scope
       of this document.  Possibly can only use the network because it
       is authenticated by means of the physical attachment to the
       network.  Examples of this could be:

       *  Cellular networks such as 3GPP, were IPv4-only or IPv6-only
          infrastructure is available.

       *  ISP networks (xDSL, Cable, PLC, PSTN, ISDN, etc.).

       *  Enterprise or similar "closed" networks (could be almost
          equivalent to the ISP case), even if they are connected to
          Internet via upstream providers.

   2.  Non-authenticated user realms (from now on, Non-Auth): Realms
       where the user is registered but not authenticated yet.  This may
       be the case for users that apply for a temporary service, may be
       free of charge, such as a hot spot, transition services in third
       party networks, guest visitors in an enterprise network, etc.
       This is often the case for nomadic users, which change their
       network attachment point when traveling.  A concrete example of
       this scenario could be:

       *  Users with IPv4 connectivity from a hot spot or ISP (via an
          hotel network), which does not offer IPv6 support, neither a
          transition service.  The user however could use a transition
          mechanism by means of a SC located in a third party (nearby)
          ISP or domain.







Palet & Diaz              Expires July 22, 2006                 [Page 6]


Internet-Draft                    ATS6                      January 2006


5.  Protocol Description

   The solution is based on the following state diagram:


                     +--------------+     Pre-Auth
           +-------->| Tunnel Setup |----------------------+
           |         |    Request   |                      |
     +-----------+   +--------------+                      |
     |    SC     |          |                              |
     | Discovery |          | Non-Auth                     |
     +-----------+          |                              |
           ^                |       More capabilities      |
           |                |      +-----------------+     |
           |                |      |                 |     |
           |                v      v                 |     v
      +---------+   +----------------+            +----------------+
      |  Start  |   | Authentication |            | Authenticated  |
      +---------+   |       &        |            | (Basic Tunnel) |
                    |   Handshake    |            +----------------+
                    +----------------+               ^     |
                           |   |   |     NOT OK      |     |
                    NOT OK |   |   | (only Pre-Auth) |     |
                           |   |   +-----------------+     |
                           |   |                           |
                           |   |           OK              |
                           |   |(both Pre-Auth & Non-Auth) |
                           |   +------------+              |
                           |                |              |
                           |                v              |
                           |       +-----------------+     |
                           |       |  Authenticated  |     |
                           |       |(Extended Tunnel)|     |
                           |       +-----------------+     |
                           |                |              |
                           v                |              |
                      +---------+           v              |
                      |   End   |<-------------------------+
                      +---------+      Tunnel DOWN




   Figure 1: ATS6 State Diagram

5.1.  Start State

   This state only represents the initial state.  The initiating device



Palet & Diaz              Expires July 22, 2006                 [Page 7]


Internet-Draft                    ATS6                      January 2006


   (SI) is ready to start the activation of the tunnel.

5.2.  Sofwire Concentrator Discovery state

   Discovery of the SC is out the scope of this specification.  It is
   assumed that the SC is discovered by other external means, or somehow
   manually configured.  However, the discovery mechanism could also be
   integrated as part in the ATS6 protocol.

   The document [6] has already analyzed this issue and [7] might be
   taken into account to be used as the SC discovery mechanism.  With
   regards to those documents, the SC is equivalent to the TEP (Tunnel-
   End-Point).

5.3.  Tunnel Setup Request state

   Once the SC has been discovered, the initiating device (SI) sends a
   request for the automatic tunnel setup.

   The request will be done slightly different depending on the
   available infrastructure and the kind of required tunnel, as
   described in the next sections.

   If the device is already authenticated (Pre-Auth), then the tunnel
   request is automatically accepted and a transition to the
   Authenticated state is done.  On the other hand, if the device is not
   yet authenticated (Non-Auth), an Authentication and Handshake
   procedure is required before accepting the tunnel request.

5.4.  Authenticated (Basic Tunnel) state

   This state represents the status on which the SI is already
   authenticated from the perspective of this protocol, coming from
   either the Tunnel Setup Request state (Pre-Auth users) or the
   Authentication and Handshake state (Non-Auth users).  In this state,
   the tunnel is kept active (up) on both ends (softwire concentrator
   and initiator sides).  The SI is ready to send/receive data.

   The SI could send periodically to the SC some kind of keep-alive
   packets in order to:

   o  Be sure that the tunnel continues up.

   o  Refresh possible timeout in NAT/PAT/Firewall tables.

   o  Allow the SC to do garbage collection.

   The periodicity of the keep-alive packets could be negotiated between



Palet & Diaz              Expires July 22, 2006                 [Page 8]


Internet-Draft                    ATS6                      January 2006


   the SC and the SI.  This is especially relevant in some cases, such
   as 3GPP, PSTN, ISDN, typically narrowband links, where the period of
   these packets could be infinite or a very long value, so that network
   resources are not wasted (transmitted/received packets, radio
   spectrum, battery-life, etc.).

   When the SI does not needs the tunnel anymore, it can transit to the
   "End" state.

   If there is a change on the IP address of the SI, then a "Tunnel
   DOWN" must be forced, implying a transit to the "End" state, in order
   to keep the SC informed about the new IP address by means of the full
   ATS6 protocol re-execution, as it may happen also that the SC is a
   different one.

5.5.  Authentication and Handshake state

   This state represents the state where the authentication and
   handshake process is done.

   In Non-Auth realms the user may need to be authenticated before
   setting-up the basic or Extended Tunnel (but it may be an "anonymous"
   authentication) and the transition to the Authenticated state.

   In Pre-Auth realms this state implies that the tunnel is already up
   and ready to send/receive data, but the SI might require extending
   the tunnel features (type of tunnel different to the one
   automatically setup, prefix delegation, etc.).  To do that the SC
   could require extra authentication in order to ensure that the SI has
   the right to obtain the solicited extra-features, to match the user
   against its pre-defined profile, etc.

   The actions to be done are:

   o  Only in Non-Auth realms:

      *  Getting the IP address for the SI side to be used with the
         tunnel.

      *  Setting-up the tunnel on both the SC and SI sides.

   o  Both in Pre-Auth and Non-Auth realms:

      *  User authentication.

      *  Handshake to obtain extra-features on the tunnel.

   If the negotiation succeeds, the transition is done towards either



Palet & Diaz              Expires July 22, 2006                 [Page 9]


Internet-Draft                    ATS6                      January 2006


   the Authenticated (Basic Tunnel) state or the Authenticated (Extended
   Tunnel) state for Non-Auth realms, or towards Authenticated (Extended
   Tunnel) for Pre-Auth realms.

5.6.  Authenticated (Extended Tunnel) state

   This state represents the status on which the SI was successfully
   authenticated and authorized to set-up a tunnel with extended
   features, which are not available at the Authenticated (Basic Tunnel)
   state.  The device is ready to send/receive data through the tunnel
   according to such extended features.

   The initially available extended features are described in the
   following sections.

5.7.  End state

   This state represents the status on which the SI wants to shut down
   the tunnel.

   No messages to the SC are required because the tunnel is discarded
   when it time-out and no more NS (or similar) have been received.
   However one END message could be sent to the SC if a change in the IP
   address is detected in order to speed up the process of discarding
   the current tunnel, doing garbage collection and setting up a new
   tunnel.


6.  Authentication and Handshake Options

   During the Authentication and Handshake state, the following options
   are defined by the protocol (other options may be further specified):

6.1.  IPv6 Prefix

   The SI could require a specific prefix length (typically /48 or
   longer) for sub-netting purposes (such as for example the case where
   the SI is an xDSL CPE).  The choices are:

   o  Using DHCPv6 once the Basic Tunnel has been configured.  This
      option assumes that a DHCPv6 client is running on the SI and a
      DHCPv6 server at the SC.

   o  Using ATS6 built-in capability to delegate the requested prefix to
      the SI.  This simplifies the implementation in the device
      requiring the tunnel, because DHCPv6 client is not required,
      saving resources such as memory, additional packet exchanges and
      so on.



Palet & Diaz              Expires July 22, 2006                [Page 10]


Internet-Draft                    ATS6                      January 2006


   This option may be requested by the SI, which also could specify the
   desired prefix length.  The SC could also specify it, regardless of
   the SI request.

6.2.  Dynamic/Static Prefix

   The SI could require that the prefix is a static one instead of
   dynamic.  A static prefix will be delegated only if the user profile
   has the capability to associate it.

6.3.  Keep-Alive Periodicity

   As stated above, the keep-alive packets are useful to find out if the
   tunnel is up or down (for example in case the IPv4 address has
   changed), garbage collection and also to refresh the NAT/PAT tables.
   However, there can be network environments where there is a need to
   minimize the traffic exchange in order to save cost or resources
   (example cost of radio resources in 3GPP networks, dial-up or ISDN
   networks, etc.).  In such networks, the periodicity of the keep-alive
   packets can be set to infinite, which in practice means that no keep-
   alive packets are delivered at all.  Otherwise the period of such
   packets is assumed to be defined by the SC, but may be also requested
   by the SI.

6.4.  NAT Type

   In some situations the NAT is at the SC side, so the type is well
   know and the same for all the devices; this is typically the case for
   3GPP, dial-up, ISDN, among others.  In other cases, the NAT type may
   depend on the device(s) at the SI side.  In the first case, there is
   no need to start a NAT auto-detection procedure, but in both cases
   the SC should provide the information about if there is a NAT and
   what type is it.

6.5.  Cyphering Type

   All the handshake packets have to be signed in order to guarantee the
   identity of both, the SC and the SI.  This option specify the hash
   function that need to be used (MD5, SHA1, ...).

6.6.  Encapsulation Type

   Different encapsulations are possible (IPv6-in-IPv4, IPv6-in-UDP-
   IPv4, IPv4-in-IPv6, etc.).  The one to be actually used will be
   defined by the SC (it may depend on the existence of NAT).






Palet & Diaz              Expires July 22, 2006                [Page 11]


Internet-Draft                    ATS6                      January 2006


7.  Protocol Behavior in IPv4-only Infrastructures

7.1.  Link-local Addresses

   The SI is willing to obtain an IPv6 address, so it makes a link-local
   address which has embedded both its public IPv4 address and the MAC
   address, as follows:


                     16 bits      64 bits        32 bits
                     <----> <----------------> <-------->
             +------+------+------------------+----------+
             | FE80 | 0000 | YYYYYYYYYYYYYYYY | XXXXXXXX |
             +------+------+------------------+----------+

   Figure 2: IPv6 Link-local Address Format for the SI

   XXXXXXXX and YYYYYYYYYYYYYYYY are, respectively, the hexadecimal
   notation of the IPv4 public address (the one being used by the SI for
   the interface where the tunnel is required) and the Interface
   Identifier based on the MAC address, as generated by stateless auto-
   configuration.

   If a NAT box is used, the public IPv4 address can be discovered by
   using STUN [8], which should be available at the SC.  At this way the
   NAT type is also detected, as it will be required in the next steps.

   Embedding the public IPv4 address into the IPv6 link-local address
   has the advantage of allowing the SC to know where the IPv6 tunnel
   should be terminated, without needing to check other internal tables,
   and consequently there is no need to maintain any new table relating
   the IPv6 tunnels with the IPv4 addresses, and save the related
   resources.

   On the other hand, embedding the MAC address into the link-local has
   the advantage of allowing identifying each specific node behind a NAT
   box when each of them is a SI.

   The SC will also create its own IPv6 link-local address, which will
   be assumed by the SI to be already setup.  The SC link-local is built
   by embedding the IPv4 address of the SC, which is the only data known
   by the SI, as follows:









Palet & Diaz              Expires July 22, 2006                [Page 12]


Internet-Draft                    ATS6                      January 2006


                              80 bits         32 bits
                     <--------------------> <-------->
             +------+----------------------+----------+
             | FE80 | 00000000000000000000 | XXXXXXXX |
             +------+----------------------+----------+

   Figure 3: IPv6 Link-local Address Format for the SC

7.2.  Global IPv6 Address

   The basic IPv6 tunnel that the SI builds is automatic in the sense
   that it does not require manual configuration and it is built by
   using only a link-local address at each end of the tunnel.  On the
   other hand the global IPv6 address is obtained by means of stateless
   auto-configuration, once the link-local address of the SI is already
   setup.

   Then the SI sends an IPv6-in-IPv4 Router Solicitation (RS) packet [9]
   to the SC by using the link-local address just made.  The RS message
   is sent as payload, properly encapsulated so it can reach the SC
   link-local address.

   From now on, the process follows depending on the type of user's
   realm.

7.2.1.  Pre-Auth Realms

   In this case, the user is already authenticated, so there is no need
   to handshake for a Basic Tunnel.  Once the SC receives the IPv4-
   encapsulated RS from the SI, a transition to the Authenticated (Basic
   Tunnel) state is done and it replies with a single IPv4-encapsulated
   Router Advertisement (RA) packet [9] to the querying device and setup
   the tunnel.  A transition to the "Authenticated" state is done.

   The SI builds the global IPv6 address with the received prefix plus
   an Interface Identifier, which is taken from the 64 low-order bits of
   the link-local address, which have embedded its public IPv4 address.
   In this way, by observing the global IPv6 address, the SC knows where
   it has to forward the packets sent to such global IPv6 address.  The
   management of the routing table is hence simplified.

   If the IPv6 address changes, the global IPv6 address has to be
   changed also, which is not a problem because the IPv6 tunnel will
   transition to a down state.

   Note: Alternatively to this approach, it could be also possible to
   build the global IPv6 address by means of the stateless auto-
   configuration, by making the Interface Identifier based on the MAC



Palet & Diaz              Expires July 22, 2006                [Page 13]


Internet-Draft                    ATS6                      January 2006


   address of the interface being used.  In this way, the IPv4 address
   will not be embedded into the global IPv6 address, so if there is a
   change in the IPv4 address, only the link-local address corresponding
   to the IPv6 tunnel would change, but not the global one.  However
   this approach has the drawback that more routing management has to be
   used on the SC to update the routing table.

   Once the RA is received, the SI knows that there is no NAT or that
   the existing one supports 6in4 or "proto-41" forwarding [11].
   Furthermore this fact means that the tunnel has been setup on the SC
   side.

   At this point the SI is ready to send/receive data by using its IPv6
   global address on the Basic Tunnel.  If extended capabilities are
   required, a transition to the Authenticated (Extended Tunnel) state
   is required, as described in the following sections.

   If the RA is not received before timing out, the SI will send a new
   RS and even a third one if required.  This will avoid preventing the
   tunnel creation because either or both RS/RA are lost, for example
   because bad network conditions.

   After the third RS, if no RA is returned, the SI understands that
   some network elements prevent the use of IPv6-in-IPv4 tunneling from
   the SI to the SC.  In this case, the SI starts the detection of the
   NAT type and public IPv4 address, by means of STUN [8] and repeats
   the process by using UDP-in-IPv4 encapsulation (i.e., RS_ICMPv6-IPv6-
   UDP-IPv4).  The port number for receiving the packets at the SC needs
   to be defined, while the port number for receiving packets at the SI
   is taken from the received packets at the SC.  The tunnel setup
   process is the same, but packets are encapsulated as payload of UDP/
   IPv4.

   Note: It may be explored using the same UDP port as Teredo [10], for
   certain compatibility.  Also other possibilities may be explored
   here, such as GRE, PPTP, L2TP, etc. priority needs to be fixed.

   On the other hand, if the SC detects that there is already another
   tunnel associated to the same public IPv4 address, it means that
   several SIs are located behind a NAT, and should force an alternative
   encapsulation to IPv6-in-IPv4 (i.e., IPv6-UDP-IPv4), as this one will
   be only valid for the first user behind the NAT.

   This is done, as showed in Figure 7, by forcing the transition to the
   Authentication and Handshake state.  To do that, the SC sends one
   IPv4-encapsulated RA with the M bit set and it does not include the
   "Prefix Information" option on the RA.  The complete handshake
   procedure is explained in section 7.3.



Palet & Diaz              Expires July 22, 2006                [Page 14]


Internet-Draft                    ATS6                      January 2006


   Below some timing charts depict the packet exchanges in order to
   clarify the tunnel creation in Pre-Auth realms under different
   situations.


             SI                      SC
                         RS
              | -------------------> |   (Tunnel Request state)
              |                      |
              |    RA with prefix    |
              | <------------------- |   (Authenticated Basic Tunnel state)
              |                      |

   Figure 4: Basic Tunnel request in Pre-Auth realms with IPv6-in-IPv4
   support


             SI                      SC
                         RS
         ^    | -------------------> | \
      T1 |    |                      | |
         |    |                      | |
         v    |          RS          | |
         ^    | -------------------> | |  (Tunnel Request state)
      T2 |    |                      | |
         |    |                      | |
         v    |          RS          | |
              | -------------------> | |
              |                      | /
              |    RA with prefix    |
              | <------------------- |   (Authenticated Basic Tunnel state)
              |                      |

   Figure 5: Basic Tunnel request in Pre-Auth realms with IPv6-in-IPv4
   support (RAs lost)

   Tx: Timeout for waiting the RA once the RS has been sent.  This may
   be variable and configurable by the implementation.  Good values seem
   to be 1 second for the first and second timeouts (T1 and T2) and 3
   seconds for the last one (T3).











Palet & Diaz              Expires July 22, 2006                [Page 15]


Internet-Draft                    ATS6                      January 2006


             SI                      SC
                         RS
         ^    | -------------------> | \
      T1 |    |                      | |
         |    |                      | |
         v    |          RS          | |
         ^    | -------------------> | |
      T2 |    |                      | |
         |    |                      | |  (Tunnel Request state)
         v    |          RS          | |
         ^    | -------------------> | |
         |    |                      | |
         |    |                      | |
      T3 |    |                      | |
         |    |                      | |
         |    |                      | |
         v    |  RS (IPv6-UPD-IPv4)  | |
              | -------------------> | |
              |                      | /
              |    RA with prefix    |
              |    (IPv6-UPD-IPv4)   |
              | <------------------- |   (Authenticated Basic Tunnel state)
              |                      |

   Figure 6: Basic Tunnel request in Pre-Auth realms with no IPv6-in-
   IPv4 support


             SI                      SC
                         RS*
              | -------------------> |   (Tunnel Request state)
              |                      |
              |   RA, M=1, no prefix |
              | <------------------- |   (A&H state)
              |                      |

   Figure 7: Basic Tunnel request in Pre-Auth realms with more than one
   SI behind the same NAT

   (*) This RS can be IPv6-in-IPv4 or IPv6-UDP-IPv4, according to the
   type of IPv6-in-IPv4 support or not, as in previous figures.

7.2.2.  Non-Auth Realms

   In this case, the users have to be authenticated before being
   authorized to use the SC, so the SC sends one IPv4-encapsulated RA
   with the M bit set.  Furthermore it does not include the "Prefix
   Information" option on the RA and a transition to the "Authentication



Palet & Diaz              Expires July 22, 2006                [Page 16]


Internet-Draft                    ATS6                      January 2006


   and Handshake" state is done as shown in Figure 7.  The complete
   handshake procedure is explained in section 7.3.

   If there are more than one SI behind the same NAT, it is mandatory to
   build the IPv6 tunnel by means of UDP encapsulation, as far the Pre-
   Auth case above.  This negotiation is also done during the A&H state.

   If the RA is received by the SI, it knows that the there is not NAT,
   or the existing one supports proto-41 forwarding [11], but user
   authentication is required to continue.  This means the device needs
   to transit to the Authentication and Handshake state.

   If the RA is not received before timing out, the SI send again the RS
   a second and a third time if required.  This will prevent that the
   tunnel is not created because either or both lost RS/RA due to bad
   network conditions.  As for the Pre-Auth case, timeouts may be
   variable and configurable by the implementation.  Good values seem to
   be 1 second for the first and second timeouts (T1 and T2), and 3
   seconds for the last one (T3).  After the third RS, if no RA is
   received back, the SI understands that IPv6-in-IPv4 is not supported
   on the path to the SC.  In this case, the SI starts the detection of
   the NAT type and public IPv4 address, by means of STUN [8] and
   repeats the process by using UDP encapsulation (i.e., RS_ICMPv6-IPv6-
   UDP-IPv4).  The port number for receiving the packets at the SC needs
   to be defined, while the port number for receiving packets at the SI
   is taken from the received packets at the SC.

   Note: It may be explored using the same UDP port as Teredo [10], for
   certain compatibility.  Also other possibilities may be explored
   here, such as GRE, PPTP, L2TP, etc. priority needs to be fixed.

   During the handshake, the SI can request for extending the tunnel
   capabilities, so a transition to the Authenticated (Extended Tunnel)
   can be done already, if the authentication succeeds.  The transit to
   the Authenticated (Basic Tunnel) state is only done in case the SI
   does not request for extended features.

7.3.  Handshake

   In this case the desired tunnel will be IPv6-in-IPv4, so the
   "Authentication and Handshake" packet (A&H) (defined below) could be
   made by means of sending new ICMPv6 packet/s (unspecified yet) to the
   SC.  The packet/s will contain user identification, authentication
   and parameter information.  The packet exchange between SC and SI
   will be short in time to keep the process as simple as possible.

   In Non-Auth realms the SI starts the A&H process but after the SC
   indicate it is required in "Tunnel Setup Request" state, by means of



Palet & Diaz              Expires July 22, 2006                [Page 17]


Internet-Draft                    ATS6                      January 2006


   the M bit in the RA (without Prefix Information), as depicted in
   Figure 7.

   In Pre-Auth realms the SI also starts the A&H process at any time
   from "Authenticated" state.  Also it might be possible for the SC to
   force the A&H from the Tunnel Request state if it detects more than
   one device behind the same NAT, when it receives the first IPv4-
   encapsulated RS from a new SI.  The A&H process is indicated by means
   of the M bit being set in the RA (without "Prefix Information"), as
   shown in Figure 7 above.  In this case the SI is not forced to
   include user's login information because he is already authenticated
   within the realm.

   The A&H packet sent by the SI indicates the options that the SI
   wishes for setting-up the tunnel (i.e., IPv6 tunnel in an IPv4-only
   infrastructure, IPv4 tunnel in an IPv6-only infrastructure, etc.).

   Once the SC receives the "A&H Packet", it checks the right or policy
   of the user at the SC or associated database.  If the data match the
   required policy, the tunnel is activated, modified, or extended with
   the new requested features.  Then the SC sends to the SI an
   acknowledge (ACK) packet with the setup that is granted (i.e., IPv6-
   in-IPv4 tunnel, IPv6-UDP-IPv4 tunnel with DHCPv6-PD, etc.).  When
   needed, the SC also sends the RA in order to communicate to the SI
   the IPv6 prefix needed to build the global IPv6 address (Basic
   Tunnel) as explained before.

   If the authentication data is wrong or does not match the necessary
   credentials, rights, policy, etc., the SC replies with information
   about what is wrong by means of a NO_ACK packet, in the Packet Type
   Field (such as authentication, type of query, etc.).  Then a
   transition to the "End" state is done in the Non-Auth case or to the
   "Authenticated" state in the Pre-Auth case.  In the later one, the
   tunnel continues up but the required extended features are not
   provided.

   The following diagram summarized the steps during the Authentication
   & Handshake phase:













Palet & Diaz              Expires July 22, 2006                [Page 18]


Internet-Draft                    ATS6                      January 2006


             SI                      SC
                        RS*
              | -------------------> |  (Tunnel Request state)
              |                      |
              |   RA, M=1, no prefix |
              | <------------------- |  (A&H state)
              |                      |
              |      A&H packet      |
              | -------------------> |
              |                      |
              |          ACK         | \
              | <------------------- | |
              |                      | | Handshake succeeded
              |    RA (if needed)    | |
              | <------------------- | /
              |                      |
              |       NO_ACK         |
              | <------------------- | => Handshake failed

   Figure 8: Handshake for Non-Auth realms and Pre-Auth realms with more
   than one SI behind a NAT

   (*) This RS can be IPv6-in-IPv4 or IPv6-UDP-IPv4, according to the
   type of NAT as depicted in Figures 5 and 6.

   The following diagram summarizes the steps during the Authentication
   & Handshake phase for authenticated users (Pre-Auth or Non-Auth after
   authentication) willing to extend the Basic Tunnel:


          SI                      SC
                  A&H packet
           | -------------------> |
           |                      |
           |          ACK         |
           | <------------------- | ==> Handshake succeeded
           |                      |
           |       NO_ACK         |
           | <------------------- | ==> Handshake failed

   Figure 9: Handshake for Authenticated users requesting for Extended
   Tunnel

7.4.  Extended Tunnel

   The Basic Tunnel might not be enough for the SI because might need to
   arrange sub-nets or even might require a predefined prefix.  For this
   reason, the SI could initiate the handshake for extending the tunnel



Palet & Diaz              Expires July 22, 2006                [Page 19]


Internet-Draft                    ATS6                      January 2006


   capabilities at any time according to the figure 9.

   One important option available for Extended Tunnels is the prefix
   delegation.  Towards this, during the handshake stage, the SI request
   a delegated prefix (shorter than 64 bits, typically a /48 one) and
   the way how it expects to receive it (DHCPv6 or ACK packet which is
   simpler).

   Also the SI can request for a dynamic prefix or a static one,
   according to its needs.  If the user has rights to ask for such a
   feature the SC replies with an ACK packet.  Otherwise the SC sends a
   NO_ACK packet and the process stops.

   Once the new prefix is received by the SI, the Basic Tunnel which is
   based on the link-local addresses is renumbered.  The tunnel will use
   the first /64 from the delegated prefix in order to simplify the
   routing table (I-D.palet-v6ops-point2point) at the SC.

7.5.  Keep-Alive Packets

   Once the tunnel is up and running, in IPv4-only infrastructures, the
   keep-alive packet will be the ICMPv6 Neighbor Solicitation packets
   [9], being the SC IPv6 link-local address the target and the SI IPv6
   link-local address the source.  The SC must reply with the proper
   ICMPv6 Neighbor Advertisement packet [9] in order to let know to the
   SI that the tunnel is still up and also to refresh a possible NAT/PAT
   table.

   The default keep-alive periodicity will be 60 seconds.  If not keep-
   alive packets are received at the SC within the configured keep-alive
   period, the SC will bring down the tunnel and do garbage collection.


8.  Protocol Behavior in IPv6-only Infrastructures

   Being the infrastructure IPv6-ready, the "A&H Packet" below described
   is already directly usable, as it is an IPv6 packet.  Consequently,
   it can be used as described before to establish any kind of tunnels,
   such as IPv4-in-IPv6, IPv6-in-IPv6, etc., modify them, activate new
   features, etc.

   Following a similar philosophy as in the case of IPv4-only
   infrastructure, the SI that requires IPv4 access, will obtain the
   IPv4 address in the tunnel itself.  There are at least two candidate
   choices (to be fixed in a new release):

   o  IPv4 address derived from the IPv6 one: By using the global IPv6
      address used in this communication by the SI, a hash or similar



Palet & Diaz              Expires July 22, 2006                [Page 20]


Internet-Draft                    ATS6                      January 2006


      algorithm could be used to create an IPv4 address, probably in the
      network 10/8.  Even if the combination of using the IPv6 global
      address and the network 10/8 provides a lower probability of
      address duplication, However it might occur that Duplicate
      Addresses are generated, it may be necessary/convenient to run a
      Duplicate Address Detection algorithm at the SC.

   o  DHCP: The SC should either be the DHCP (IPv4) server or relay/
      proxy for an external one.  DHCPv6 could also be considered, as it
      could make the process much simpler, but in general DHCPv6 support
      is weaker.  This option is preferred over the previous one,
      because it avoids the existence of Duplicate Addresses.

   The procedure in IPv4-only infrastructures is simpler because the
   native IPv6 infrastructure is already available at the SI, so there
   is no need to built artificial link-local address like in the case of
   IPv4-only infrastructure (as they will be already available at every
   interface).

   The Basic Tunnel for this case is considered as an IPv4 tunnel where
   the IPv4 address is derived from the global IPv4 one.  If the SI is
   willing to use and address provided by the SC (either via DHCP or ACK
   packet), then it will use an IPv4 link-local address [12] to start
   the Tunnel Request and then will transition to the A&H state to
   request an address by means of DHCP, as explained below.

   All the handshake process is done by using the ATS6-ICMPv6 packets
   because native IPv6 support is available, so there is no need for
   looking for other protocols in this case.  However, it is possible to
   use other protocols like UDP, TCP, PPP, etc. rather than ICMPv6 to
   perform the handshake process.

8.1.  Pre-Auth Realms

8.1.1.  Use of IPv4 addresses derived from the IPv6 one (Basic Tunnel)

   The IPv4 address should be generated by an algorithm (to be defined)
   from the global IPv6 address used in the communication with the SC.
   This could be done by means of a hash function.

   In order to simplify several network considerations, such as routing,
   seems a better approach the use of a 10.0.0.0/8 address.  The SC will
   behave as the default gateway and also NAT for that SI, being the
   first IPv4 address of the pool (10.0.0.1) the one assigned to the SC.

   The Tunnel Request is indicated to the SC as a sequence of three
   predefined-length ICMPv4 ping request packets (6 bytes for the first
   ping request packet, 7 bytes for the second one and 8 bytes for the



Palet & Diaz              Expires July 22, 2006                [Page 21]


Internet-Draft                    ATS6                      January 2006


   third one) as shown in Figure 10.  Such ping request packets have as
   source the IPv4 address extracted from the global IPv6 one (hashing
   function) and they are directly encapsulated into IPv6 packets (with
   IPv6 global address as source).

   Because the user is already authenticated, after receiving the tunnel
   request, the SC will reply with one ICMPv4 ping reply packet to every
   ping request, indicating with the last one that the tunnel is already
   up in the SC side.  The SC will extract the SI IPv4 address from the
   received ICMPv4 ping request packets.  When receiving the third
   ICMPv4 ping reply, the SI understands that the tunnel is ready to
   send/receive packets and a transition to the Authenticated (Basic
   Tunnel) state is done.


             SI                      SC
                ICMPv4 ping req. seq.
              | ------------------->  |   (Tunnel Request state)
              |                       |
              | ICMPv4 ping rep. seq. |
              | <-------------------  |   (Authenticated Basic Tunnel state)
              |                       |

   Figure 10: Basic Tunnel request in Pre-Auth realms for IPv6-only
   infrastructures

   If three ICMPv4 ping replies are not received, either because any of
   them has been lost or not send, the SI will send again the complete
   sequence of ICMPv4 ping requests, up to two more times, in a similar
   fashion as for the tunnel request for the IPv4-only infrastructure.
   The timeouts for the whole ICMPv4 ping reply sequence may be variable
   and configurable by the implementation.  Good values seem to be 1
   second for the first and second sequence timeouts (T1 and T2) and 3
   seconds for the last one (T3).

















Palet & Diaz              Expires July 22, 2006                [Page 22]


Internet-Draft                    ATS6                      January 2006


             SI                      SC
                ICMPv4 ping req. seq.
         ^    | --------------------> | \
      T1 |    |                       | |
         |    |                       | |
         v    | ICMPv4 ping req. seq. | |
         ^    | --------------------> | |  (Tunnel Request state)
      T2 |    |                       | |
         |    |                       | |
         v    | ICMPv4 ping req. seq. | |
              | --------------------> | |
              |                       | /
              | ICMPv4 ping rep. seq. |
              | <-------------------- |   (Authenticated Basic Tunnel state)
              |                       |

   Figure 11: Basic Tunnel request in Pre-Auth realms for IPv6-only
   infrastructures with lost ping replies

   If the SC detects that the IPv4 address used by the SI is already
   used by another one, it will not send any ICMPv4 ping reply.  After
   the third ICMPv4 ping request sequence that has not been replied, the
   SI understands that there is some trouble with the tunnel request
   (i.e., duplicate IPv4 address) and it transitions to the A&H state to
   request a tunnel as shown in Figure 12 below.


























Palet & Diaz              Expires July 22, 2006                [Page 23]


Internet-Draft                    ATS6                      January 2006


             SI                      SC
                ICMPv4 ping req. seq.
         ^    | --------------------> | \
      T1 |    |                       | |
         |    |                       | |
         v    | ICMPv4 ping req. seq. | |
         ^    | --------------------> | |
      T2 |    |                       | |
         |    |                       | |  (Tunnel Request state)
         v    | ICMPv4 ping req. seq. | |
         ^    | --------------------> | |
         |    |                       | |
         |    |                       | |
      T3 |    |                       | |
         |    |                       | |
         |    |                       | |
         v    |          A&H          | /
              | --------------------> | \
              |                       | |  (A&H state)
              |           ACK         | |
              | <-------------------- | | Handshake successful
              |                       | |
              |                       | |
              |          NO_ACK       | |
              | <-------------------- | | Handshake unsuccessful
              |                       | /

   Figure 12: Basic Tunnel request in Pre-Auth realms for IPv6-only
   infrastructures with duplicate IPv4 address

   With the ACK packet the SC communicates to the SI how the IPv4
   address is provided (DHCP or ACK packet).

8.1.2.  Use of DHCP (Extended Tunnel)

   If the SI is willing to use an IPv4 address provided from the SC pool
   rather than using the one derived from the IPv6 global address, the
   tunnel request process is done by using an IPv4 link-local address
   (169.254.0.0/16) [12].  After receiving the first ICMPv4 ping request
   packet, the SC will realize that it has not to send ping replies and
   a transition to the A&H state is done as shown in Figure 12.

   Because the user is already authenticated in the network, there is no
   need to include in the A&H packet information about the user's login,
   but optionally it could be included.

   Once the ACK packet coming from the SC is received, the SI which is
   requesting an IPv6-in-IPv4 tunnel, need to construct a DHCP request



Palet & Diaz              Expires July 22, 2006                [Page 24]


Internet-Draft                    ATS6                      January 2006


   packet, as it would be done in a LAN.  The packet will be
   encapsulated in an IPv6 packet, which is sent to the SC.  The SC will
   then de-capsulate the packet and reply to the DHCP request (either by
   a built-in DHCP server or proxing/relaying it).

   As the user is already authenticated, the SC delivers an IPv4 address
   to the SI, following a pre-defined policy in the DHCP server.  The
   response DHCP packet will need to be encapsulated in an IPv6 one and
   sent to the SI, which will de-capsulate it for configuring its IPv4
   address.

   This provides a better solution (for example public IPv4 addresses
   could be used as the DHCP address pool), but requires DHCP client
   support at the SI and DHCP server a the SC side.

   Once the process of having a pre-defined IPv4 address if completed, a
   transition to the Authenticated (Extended Tunnel) state is done.

8.2.  Non-Auth Realms

8.2.1.  Use of IPv4 addresses derived from the IPv6 one (Basic Tunnel)

   In this case, the SI needs to be authenticated, so a transition to
   the A&H state is done by not replying to any ICMPv4 ping request
   packet as shown in Figure 12.

   Once the ACK is received, the authentication succeeded, and the
   tunnel can be considered as activated in both, the SC and the SI
   sides, so there is no need for further ICMPv4 reply packets from the
   SC.  In this case, the IPv4 address is not provided neither via DHCP
   nor the ACK packet.

8.2.2.  Use of DHCP (Extended Tunnel)

   In this case, the SI uses one IPv4 link-local address to initiate the
   tunnel request as explained for the IPv4-DCHP/Pre-Auth case.  However
   it needs to be authenticated, so a transition to the A&H state is
   done by not replying to any ICMPv4 ping request packet as shown in
   Figure 12.

   Once the authentication succeeded, the SC will reply with an ACK
   packet indicating that it is ready to receive the a DHCP IPv6-
   encapsulated packet from the SI and the process is then continued the
   same way as in the Pre-Auth realms case.

8.3.  The IPv6-in-IPv6 Case

   In IPv6-only infrastructures, it could be needed and IPv6-in-IPv6



Palet & Diaz              Expires July 22, 2006                [Page 25]


Internet-Draft                    ATS6                      January 2006


   tunnel, for example when the infrastructure does not natively support
   IPv6 multicast.

   In this case the procedure would be as explained in the case of IPv4-
   only infrastructures, with the only difference being in the no need
   to build the link-local address of the tunnel, as this is already
   natively available in this case.  Figures 4, 7 and 8 show details
   about the tunnel request procedure.

8.4.  Keep-Alive Packets

   Once the tunnel is up and running in IPv6-only infrastructures, the
   type of keep-alive packet will depend on the type of tunnel.

   The default keep-alive periodicity will be 60 seconds.  If no keep-
   alive packets are received at the SC within the configured keep-alive
   period, the SC will shut down the tunnel and will do garbage
   collection.

8.4.1.  IPv4 tunnel in IPv6-only infrastructures

   In this type of tunnels the keep-alive will be ICMPv4 ping request
   packets, being the destination the SC IPv4 address and the source the
   SI IPv4 address configured with the tunnel.  The SC must reply in
   order to let know the SI that the tunnel is still up.

8.4.2.  IPv6 tunnel in IPv6-only infrastructures

   In this type of tunnels the keep-alive will be ICMPv6 Neighbor
   Solicitation packets [9], being the SC IPv6 link-local address the
   target and the SI IPv6 link-local address the source one.  The SC
   must reply with the ICMPv6 Neighbor Advertisement packet [9] in order
   to let know to the SI that the tunnel is still up.


9.  Signaling Packets

   For signaling the authentication and tunnel setup process, three
   types of packets are defined: A&H packet, ACK packet and NO_ACK
   packet.  These packets are described in the following sections.

9.1.  A&H Packet

   This IPv6 packet is used to communicate the SC that the user is
   willing to build a tunnel (Non-Auth case) or modify/extend the one
   already configured with extra-features.  The format of such a packet
   is as follows:




Palet & Diaz              Expires July 22, 2006                [Page 26]


Internet-Draft                    ATS6                      January 2006


   0                                    16                                31
   +-----------------------------------+-----------------------------------+
   |            ID Length              |           Signature Length        |
   +--------+-------------+------------+-----------------+--------+--------+
   | Packet |   Tunnel    |                              | Signat.| Encaps.|
   | Type   |    Type     |           Reserved           |  Type  |  Type  |
   +--------+-------------+------------------------------+--------+--------+
   |                               USER_ID                                 |
   +-----------------------------------------------------------------------+
   |                                Random                                 |
   +-----------------------------------------------------------------------+
   |                               Signature                               |
   +-----------------------------------------------------------------------+

   Figure 13: ATS6 A&H Packet

   The Parameters are used to define the authentication method, what
   extra-features are required, etc. and their meanings are as follows:

   o  ID Length (16 bits): The length of the USER_ID field.

   o  Signature Length (16 bits): The length of Signature field.

   o  Packet Type (4 bits): Information about the packet type (A&H, ACK
      or NO_ACK).

   o  Tunnel Type (5 bits): The required tunnel type is indicated by
      setting-up every flag in this field, as follows (from most
      significant to least significant bits):

      *  I: Type of native infrastructure (set for IPv4, unset for
         IPv6).

      *  O: Type of overlay infrastructure (set for IPv4, unset for
         IPv6).

      *  T: Type of tunnel (set for Basic, unset for Extended).

      *  D: Type of desired IPv6/IPv4 prefix/address (set for Dynamic,
         unset for Static).

      *  P: Type of IPv6/IPv4 prefix/address provision (set for DHCP,
         unset ACK packet).

      *  Some examples provided below:

      *  I O T D P




Palet & Diaz              Expires July 22, 2006                [Page 27]


Internet-Draft                    ATS6                      January 2006


      *  1 0 1 x x -> Basic IPv6 tunnel in IPv4-only infrastructure

      *  1 0 0 0 1 -> Extended IPv6 tunnel in IPv4-only infrastructure,
         with DHCPv6-PD

      *  0 1 1 x x -> Basic IPv4 tunnel in IPv6-only infrastructure

      *  0 0 1 x x -> Basic IPv6 tunnel in IPv6-only infrastructure

      *  0 0 0 0 0 -> Tunnel is down, either because the SI does not
         need any more the tunnel, or the native infrastructure IP
         address has changed.  In any case, a transition to the END
         state is forced in both, the SI and SC.

   o  Reserved (13 bits): Reserved bits for future use.

   o  Signature Type (4 bits): The type of signature to be used in the
      handshake process.

   o  Encapsulation Type (6 bits): The required encapsulation type is
      indicated by setting-up every flag in this field.  The meaning of
      the flags (from most significant to least significant bits) are as
      follow (set for required, unset not required):

      *  G: GRE

      *  I: IP

      *  L: L2TP

      *  P: PPP

      *  T: PPTP

      *  U: UDP

      *  Some examples provided below (Type of Tunnel indicated by the
         Tunnel Type field above):

      *  G I L P T U

      *  0 1 1 0 1 1 -> Tunnel using L2TP/PPTP/UDP (example, IPv6/L2TP/
         PPTP/UDP/IPv4)

      *  0 1 0 0 0 0 -> Tunnel using only IP-in-IP (example, IPv6/IPv4)

      *  0 1 0 0 0 1 -> Tunnel using UDP (example IPv6-UDP-IPv4)




Palet & Diaz              Expires July 22, 2006                [Page 28]


Internet-Draft                    ATS6                      January 2006


   o  USER_ID: The user login.  It can be an ASCII text, coded or
      whatever.  It is assigned during the registration process.  To be
      further defined.

   o  Random data: Data used to be included on the packet to prevent
      duplicate signatures.  Either a random number, date, etc.  To be
      further defined.

   o  Signature: It is the field that actually authenticates the user.
      It is the result of ciphering with the private key the result of
      hashing the packet with a hash function (MD5, SHA1, ...).  To be
      further defined.

   If no authentication is needed to request for extra-features on the
   tunnel, then USER_ID, Random and Signature fields are not required.

9.2.  ACK Packet

   This packet acknowledges the SI request and indicates the options
   that have been accepted.  Also the SC can inform by means of this
   packet, about some parameters to the SI.  The format is as follows:


      0                                    16                                31
      +-----------------------------------+-----------------------------------+
      |            ID Length              |           Signature Length        |
      +--------+-------------+------------------+-----+-----+--------+--------+
      | Packet |   Tunnel    |      Prefix      |Keep.| NAT | Signat.| Encaps.|
      | Type   |    Type     |      Length      |Peri.| Typ.|  Type  |  Type  |
      +--------+-------------+------------------+-----+-----+--------+--------+
      |                           Prefix/IPv4 Address                         |
      +-----------------------------------------------------------------------+
      |                                 USER_ID                               |
      +-----------------------------------------------------------------------+
      |                                 Random                                |
      +-----------------------------------------------------------------------+
      |                                Signature                              |
      +-----------------------------------------------------------------------+

   Figure 14: ATS6 ACK packet

   o  ID Length (16 bits): The length of the USER_ID field.

   o  Signature Length (16 bits): The length of Signature field.

   o  Packet Type (4 bits): Information about the packet type (ACK in
      this case).




Palet & Diaz              Expires July 22, 2006                [Page 29]


Internet-Draft                    ATS6                      January 2006


   o  Tunnel Type (5 bits): The tunnel type that has been accepted.
      Same meaning for the flags as above for the A&H packet.

   o  Prefix Length (7 bits): If the SI request for a prefix delegation,
      indicates the desired prefix length.  If the SC responds,
      indicates the delegated prefix length.

   o  Keep-Alive Periodicity (3 bits): The periodicity defined by the SC
      for the keep-alive packets.  Possible values as follows:

      *  000: One every minute

      *  001: One every 3 minutes

      *  010: One every 10 minutes

      *  011: One every 20 minutes

      *  100: One every 30 minutes

      *  101: One every 60 minutes

      *  110: One every 240 minutes

      *  111: No keep-alive packets are required at all

      *  Note: It may be considered as convenient to random the keep-
         alive packets delivery, within the maximum periodicity
         indicated by this field, in order to statistically lower the
         simultaneous number of packets from the SIs to the SC (and SC
         to SIs), increasing the scalability of the system (do be
         further analyzed).

   o  NAT Type (3 bits): The SC confirms to the SI if a NAT has been
      detected and the type:

      *  000 - no NAT or proto-41 compliant.

      *  001 - full-conned NAT.

      *  010 - symmetric NAT.

      *  011 - asymmetric NAT.

      *  1xx - Reserved for future use.






Palet & Diaz              Expires July 22, 2006                [Page 30]


Internet-Draft                    ATS6                      January 2006


   o  Signature Type (4 bits): The type of signature that has been
      accepted.

   o  Encapsulation Type (6 bits): The type of encapsulation that has
      been accepted.  Same meaning for the flags as above for the A&H
      packet.

   o  Prefix/IPv4 address (64 bits): If the prefix or IPv4 address is
      provided by means of the ACK package, this field contains such
      parameter.  The field is zero-left-padded.

   o  USER_ID: The user login.  It can be an ASCII text, coded or
      whatever.  It is assigned during the registration process, and
      should match the one sent in the A&H packet.

   o  Random data: Data used to be included on the packet to prevent
      duplicate signatures.  Either a random number, date, etc.  To be
      further defined.

   o  Signature: It is the field that actually authenticates the user.
      It is the result of ciphering with the private key the result of
      hashing the packet with a hash function (MD5, SHA1, ...).  To be
      further defined.

   If no authentication is needed to request for extra-features on the
   tunnel, then USER_ID, Random and Signature fields are not required.

9.3.  NO_ACK Packet

   This packet does not acknowledge the SI request and indicates the
   failure of the requested options.  The format is as follows:




















Palet & Diaz              Expires July 22, 2006                [Page 31]


Internet-Draft                    ATS6                      January 2006


      0                                    16                                31
      +-----------------------------------+-----------------------------------+
      |            ID Length              |           Signature Length        |
      +--------+-------------+------------+-----------------+--------+--------+
      | Packet |   Tunnel    |  Reserved  |      Error      | Signat.| Encaps.|
      | Type   |    Type     |            |      Code       |  Type  |  Type  |
      +--------+-------------+------------+-----------------+--------+--------+
      |                                USER_ID                                |
      +-----------------------------------------------------------------------+
      |                                 Random                                |
      +-----------------------------------------------------------------------+
      |                                Signature                              |
      +-----------------------------------------------------------------------+

   Figure 15: ATS6 NO_ACK packet

   o  ID Length (16 bits): The length of the USER_ID field.

   o  Signature Length (16 bits): The length of Signature field.

   o  Packet Type (4 bits): Information about the packet type (NO_ACK in
      this case).

   o  Tunnel Type (6 bits): The tunnel type that has been requested.

   o  Reserved (6 bits): Bits reserved for future use.

   o  Error Code (8 bits): The reason of the "no acknowledgment".

   o  Signature Type (4 bits): The type of signature requested by the
      SI.

   o  Encapsulation Type (4 bits): The type of encapsulation requested
      by the SI.

   o  USER_ID: The user login.  It can be an ASCII text, coded or
      whatever.  It is assigned during the registration process.

   o  Random data: Data used to be included on the packet to prevent
      duplicate signatures.  Either a random number, date, etc.  To be
      further defined.

   o  Signature: It is the field that actually authenticates the user.
      It is the result of ciphering with the private key the result of
      hashing the packet with a hash function (MD5, SHA1, ...).  To be
      further defined.

   If no authentication is needed to request for extra-features on the



Palet & Diaz              Expires July 22, 2006                [Page 32]


Internet-Draft                    ATS6                      January 2006


   tunnel, then USER_ID, Random and Signature fields are not required.


10.  Signaling Encapsulation

   It is important to note that at the time being, the signaling packets
   are chosen to be encapsulated as ICMPv6 ones (type to be
   standardized), assuming that the networks will tend to have, over the
   time, more native IPv6 support, so this will allow a more simpler
   support of IPv4-in-IPv6 encapsulation.  Furthermore, using ICMPv6
   packets simplifies both the resources and the implementation of ATS6
   capable SCs and SIs.

   However, other choices are also possible, such as ICMPv6 packets
   encapsulated in UDP ones, UDP packets with the same format as the
   ICMPv6 here described, TCP, etc.  The way how the signaling packets
   are encapsulated is not as important as the signaling itself.  It
   will be also possible to support several of them, in order to ensure
   the success of the tunnel setup under any infrastructure conditions.

   The following are examples showing some of these alternatives:


        +-----------------------------------------------+
        |               SIGNALING PACKET                |
        +-----------------------------------------------+
        |                 ICMPv6 HEADER                 |
        |                 (to be defined)               |
        +-----------------------------------------------+
        |                  IP  HEADER                   |
        +-----------------------------------------------+

   Figure 16: ATS6 Signaling packets in ICMPv6 packets


        +-----------------------------------------------+
        |               SIGNALING PACKET                |
        +-----------------------------------------------+
        |                 ICMPv6 HEADER                 |
        |                 (to be defined)               |
        +-----------------------------------------------+
        |                   UDP HEADER                  |
        +-----------------------------------------------+
        |                   IP HEADER                   |
        +-----------------------------------------------+

   Figure 17: ATS6 Signaling packets in ICMPv6-UDP packets




Palet & Diaz              Expires July 22, 2006                [Page 33]


Internet-Draft                    ATS6                      January 2006


        +-----------------------------------------------+
        |               SIGNALING PACKET                |
        +-----------------------------------------------+
        |                   UDP HEADER                  |
        +-----------------------------------------------+
        |                   IP HEADER                   |
        +-----------------------------------------------+

   Figure 18: ATS6 Signaling packets as payload of UDP packets


11.  Peer-to-Peer Optimization

   In case direct peer-to-peer among SIs is wanted, when they are
   connected in the same IPv4-only infrastructure, ATS6 provides a way
   to avoid all the encapsulated traffic being handled by the SC.

   An specific IPv6 prefix could be reserved for that purpose, so SIs
   would have one additional IPv6 address, which is built by appending
   to such prefix the same Interface Identifier used for the global IPv6
   address in the Basic Tunnel case described before.

   In this way, communication packets between peers do not need to be
   forwarded to the SC and then back to the peer, but instead, they can
   travel directly from one peer to the other one and vice-versa.

   Lots of resources (network, memory, CPU load, etc.) are saved at the
   SC by this means, in addition to the lower RTT, which improves the
   scalability of the protocol.

   Given the fact that SIs could be most probably behind a NAT box when
   trying to use this peer-to-peer optimization, all them will use UDP
   packets for building the tunnel, so in order to use the peer-to-peer
   optimization, the encapsulation should be IPv6-in-UDP-in-IPv4.  It
   could be explored using the same prefix as Teredo [10] in order to
   allow also compatibility with that protocol and consequently allow
   peer-to-peer among Teredo [10] and ATS6 nodes.

   This optimization needs further detailed analysis.


12.  Security Considerations

   Threats on the tunnel data can be minimized by doing address-ingress
   filtering at the SC of both outer IPvX and inner IPvY protocols (i.e.
   in the IPv6-in-IPv4 tunnel case, the outer protocol is IPv6 and the
   inner one is IPv4).  In this way spoofed address attacks are
   prevented not only for the inner address but also for the outer ones.



Palet & Diaz              Expires July 22, 2006                [Page 34]


Internet-Draft                    ATS6                      January 2006


   If more security is required, the guidelines pointed by [13] to
   secure the tunnels should be followed.


13.  IANA Considerations

   TBD.


14.  Acknowledgements

   The author would like to acknowledge the inputs from ...


15.  References

15.1.  Normative References

15.2.  Informative References

   [1]   Nielsen, k., "Goals for Zero-Configuration Tunneling in 3GPP",
         draft-nielsen-v6ops-3GPP-zeroconf-goals-00 (work in progress),
         October 2004.

   [2]   Suryanarayanan, R., "Zero-Configuration Tunneling
         Requirements", draft-suryanarayanan-v6ops-zeroconf-reqs-00
         (work in progress), October 2004.

   [3]   Parent, F., "Goals for Registered Assisted Tunneling",
         draft-ietf-v6ops-assisted-tunneling-requirements-01 (work in
         progress), October 2004.

   [4]   Palet, J., "Goals for Tunneling Configuration",
         draft-palet-v6tc-goals-tunneling-00 (work in progress),
         February 2005.

   [5]   Li, X., "Softwire Problem Statement",
         draft-ietf-softwire-problem-statement-00 (work in progress),
         December 2005.

   [6]   Palet, J. and M. Diaz, "Analysis of IPv6 Tunnel End-point
         Discovery Mechanisms", draft-palet-v6ops-tun-auto-disc-03 (work
         in progress), January 2005.

   [7]   Palet, J., "IPv6 Tunnel End-point Automatic Discovery
         Mechanism", draft-palet-v6ops-solution-tun-auto-disc-01 (work
         in progress), October 2004.




Palet & Diaz              Expires July 22, 2006                [Page 35]


Internet-Draft                    ATS6                      January 2006


   [8]   Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy, "STUN
         - Simple Traversal of User Datagram Protocol (UDP) Through
         Network Address Translators (NATs)", RFC 3489, March 2003.

   [9]   Narten, T., Nordmark, E., and W. Simpson, "Neighbor Discovery
         for IP Version 6 (IPv6)", RFC 2461, December 1998.

   [10]  Huitema, C., "Teredo: Tunneling IPv6 over UDP through NATs",
         draft-huitema-v6ops-teredo-05 (work in progress), April 2005.

   [11]  Palet, J., "Forwarding Protocol 41 in NAT Boxes",
         draft-palet-v6ops-proto41-nat-03 (work in progress),
         October 2003.

   [12]  Cheshire, S., Aboba, B., and E. Guttman, "Dynamic Configuration
         of IPv4 Link-Local Addresses", RFC 3927, May 2005.

   [13]  Savola, P., "Using IPsec to Secure IPv6-in-IPv4 Tunnels",
         draft-ietf-v6ops-ipsec-tunnels-01 (work in progress),
         August 2005.































Palet & Diaz              Expires July 22, 2006                [Page 36]


Internet-Draft                    ATS6                      January 2006


Authors' Addresses

   Jordi Palet Martinez
   Consulintel
   Molino de la Navata, 75
   La Navata - Galapagar - Madrid
   E-28420 - Spain

   Phone: +34 91 151 81 99
   Fax:   +34 91 151 81 98
   Email: jordi.palet@consulintel.es


   Miguel Angel Diaz Fernandez
   Consulintel
   Molino de la Navata, 75
   La Navata - Galapagar - Madrid
   E-28420 - Spain

   Phone: +34 91 151 81 99
   Fax:   +34 91 151 81 98
   Email: miguelangel.diaz@consulintel.es





























Palet & Diaz              Expires July 22, 2006                [Page 37]


Internet-Draft                    ATS6                      January 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.




Palet & Diaz              Expires July 22, 2006                [Page 38]