Network Working Group                                        M. Blanchet
Internet-Draft                                              R. Desmeules
Expires: November 30, 2001                                    A. Cormier
                                                            Viagenie inc.
                                                                June 2001


                       Tunnel Setup Protocol (TSP)
                         draft-vg-ngtrans-tsp-00

Status of this Memo

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

    Internet-Drafts are working documents of the Internet Engineering
    Task Force (IETF), its areas, and its working groups.  Note that
    other groups may also distribute working documents as Internet-
    Drafts.

    Internet-Drafts are draft documents valid for a maximum of six months
    and may be updated, replaced, or obsoleted by other documents at any
    time.  It is inappropriate to use Internet-Drafts as reference
    material or to cite them other than as "work in progress."

    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 November 30, 2001.

Copyright Notice

    Copyright (C) The Internet Society (2001).  All Rights Reserved.

Abstract

    This document proposes a control protocol to setup tunnels between a
    client and a tunnel server or broker.  It provides a framework for
    the negociation of tunnel parameters between the two entities.  It is
    a generic TCP protocol based on simple XML messaging.  This framework
    protocol enables the negociation of any kind of tunnel, and is
    extensible to support new parameters or extensions.  The first target
    application is to setup IPv6 over IPv4 tunnels which is one of the
    transition mechanism identified by the ngtrans and ipv6 working
    groups.  This IPv6 over IPv4 tunnel setup application of the generic
    TSP protocol is defined by a profile of the TSP protocol, in a



Blanchet, et. al.       Expires November 30, 2001               [Page 1]


Internet-Draft                     TSP                         June 2001


    companion document.

Table of Contents

    1.  Rationale for a tunnel setup protocol  . . . . . . . . . . . .  3
    2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
    3.  Protocol Description . . . . . . . . . . . . . . . . . . . . .  4
    3.1 Topology . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
    3.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
    3.3 Authentication phase . . . . . . . . . . . . . . . . . . . . .  5
    3.4 Command phase  . . . . . . . . . . . . . . . . . . . . . . . .  7
    4.  Error codes  . . . . . . . . . . . . . . . . . . . . . . . . .  8
    5.  Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9
    6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  9
    7.  Security considerations  . . . . . . . . . . . . . . . . . . .  9
    8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  9
        References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
        Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10
    A.  DTD  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
        Full Copyright Statement . . . . . . . . . . . . . . . . . . . 12































Blanchet, et. al.       Expires November 30, 2001               [Page 2]


Internet-Draft                     TSP                         June 2001


1. Rationale for a tunnel setup protocol

    Tunnelling techniques are often used to enable new networking
    functions while still preserving the underlying network as is.
    Configuring tunnels means handling many static parameters (IP address
    of the end-points, address or overlay network info), which is a
    tedious task for a network manager for a large number of tunnels.
    Some of those parameters may change over time, like the IPv4 address
    of a client node, which means changing the configuration on the other
    end.

    A tunnel broker model (RFC3053) [1] has been defined in the context
    of IPv6 over IPv4 tunnels, where the tunnel broker enables the use of
    tunnels from a client using a web interface to tunnel servers.
    Attempts have been made to generalize the idea using a MIME-type [8],
    but still no protocol has been defined to enable the negociation of
    parameters over time for a given tunnel.  This draft generalize the
    concept of the tunnel broker model by having a control protocol
    between the broker and the client.  It enables negociation between
    the two parties: for example, a client might request a feature that
    the server can not provide.  In this context, the client may decide
    to continue anyway without using that feature or the server could
    send a list of other servers who might offer the service to the
    client.  The control protocol can optionaly be used to verify the
    sustainability of the underlying network: similar to the PPP control
    protocols who verify the link and close the connection when the link
    is down.  It also enables the concept of the degenerated case where
    the broker and the server are together.

    This framework protocol enables any kind of current and future tunnel
    techniques to be defined by a profile of this protocol.

2. Terminology

    Tunnel Broker (TB) In a Tunnel Broker model, the broker is taking
       charge of all communication between Tunnel Servers (TS) and Tunnel
       Clients (TC).  Tunnel clients query brokers for a tunnel and the
       broker find a suitable tunnel server, ask the Tunnel server to
       setup the tunnel and send the tunnel information to the Tunnel
       Client.

    Tunnel Server (TS) Tunnel Servers are providing the specific tunnel
       service to a Tunnel Client.  It can reveive the tunnel request
       from a Tunnel Broker (as in the Tunnel Broker model) or directly
       from the Tunnel Client as in the Tunnel Setup Protocol option.

    Tunnel Client (TC) The Tunnel Client is the entity that need a tunnel
       for a particular service or connectivity.  A Tunnel Client can be



Blanchet, et. al.       Expires November 30, 2001               [Page 3]


Internet-Draft                     TSP                         June 2001


       either a host or a router.


3. Protocol Description

3.1 Topology

    The following diagrams describe typical TSP scenarios.  The goal is
    to establish a tunnel between Tunnel client and Tunnel server.

    Tunnel Setup Protocol used on Tunnel Broker model

                               _______________
                              | TUNNEL BROKER |--> Databases (dns, whois)
                              |               |
                              |  TSP    TSP   |
                              | SERVER CLIENT |
                              |_______________|
                                  |     |
             __________           |     |          ________
            |           |         |     |         |  TSP   |
            |   TSP     |--[TSP]--      +--[TSP]--| SERVER |
            |  CLIENT   |                         |        |--[NETWORK]--
    [HOST]--|           |<==[CONFIGURED TUNNEL]==>| TUNNEL |
            |___________|                         | SERVER |
                                                  |________|

    Tunnel Setup Protocol used on Tunnel Server model

             ___________                           ________
            |           |                         |  TSP   |
            |   TSP     |-----------[TSP]---------| SERVER |
            |  CLIENT   |                         |        |--[NETWORK]--
    [HOST]--|           |<==[CONFIGURED TUNNEL]==>| TUNNEL |
            |___________|                         | SERVER |
                                                  |________|


3.2 Overview

    The Tunnel Setup Protocol has three phases:

    Authentication phase: The Authentication phase is when the Tunnel
       Brokers/Servers advertises their capability to Tunnel Clients and
       when Tunnel clients authenticate to the server.

    Command phase: The command phase is where the client requests or
       updates a tunnel.



Blanchet, et. al.       Expires November 30, 2001               [Page 4]


Internet-Draft                     TSP                         June 2001


    For each command sent by a Tunnel Client their is an expected
    response by the server.

3.3 Authentication phase

    The authentication phase has 3 steps :

    o  Client's protocol version identification

    o  Server's capability advertisement

    o  Client authentication

    When a TCP session is established to a Tunnel Server, the Tunnel
    Client sends the current protocol version it is supporting.  The
    version number syntax is:

       VERSION=1.0 CR LF

    Version 1.0 is the version number of this specification.

    If the server doesn't support the protocol version it sends an error
    message and closes the session.  The server can optionally send a
    server list that may support the protocol version of the client.

    Example of a Version not supported (without a server list)

          -- Successful TCP Connection --
          C:VERSION=0.1 CR LF
          S:302 Unsupported client version CR LF
          -- Connection closed --




















Blanchet, et. al.       Expires November 30, 2001               [Page 5]


Internet-Draft                     TSP                         June 2001


    Example of a Version not supported (with a server list)

          -- Successful TCP Connection --
          C:VERSION=1.1 CR LF
          S:1302 Unsupported client version CR LF
            <tunnel action="list" type="broker">
               <broker>
                  <address type="ipv4">1.2.3.4</address>
           </broker>
           <broker>
              <address type="dn">ts1.isp1.com</address>
           </broker>
            </tunnel>
          -- Connection closed --

     If the server supports the version sent by the client, then the
    server sends a list of the capabilities supported for authentication
    and tunnels.

       CAPABILITY TUNNEL=V6V4 AUTH=DIGEST-MD5 AUTH=ANONYMOUS CR LF

    Tunnel types must be registered with IANA and their profiles are
    defined in other documents.  Authentication is done using SASL
    (RFC2222) [3].  Each authentication mechanism must be a registered
    SASL mechanism.  Description of such mechanism is not in the scope of
    this document.

    The Tunnel Client can then choose to close the session if none of the
    capabilities fits its needs.  If the Tunnel Client chooses to
    continue, it must authenticate itself to the server using one of the
    adevertised mechanism.  If the authentication fails the server sends
    an error message and closes the session.

    Example of failed authentication

          -- Successful TCP Connection --
          C:VERSION=0.1 CR LF
          S:CAPABILITY TUNNEL=V6V4 AUTH=DIGEST-MD5 CR LF
          C:AUTHENTICATE ANONYMOUS CR LF
          S:300 Authentication failed CR LF

     If the authentication succeed, the server sends a success return
    code and the protocol enter the Command phase.








Blanchet, et. al.       Expires November 30, 2001               [Page 6]


Internet-Draft                     TSP                         June 2001


    Successful authentication

          -- Successful TCP Connection --
          C:VERSION=0.1 CR LF
          S:CAPABILITY TUNNEL=V6V4 AUTH=DIGEST-MD5 AUTH=ANONYMOUS CR LF
          C:AUTHENTICATE ANONYMOUS CR LF
          S:200 Authentication successful CR LF

     Upon successful authentication the protocol enters the command phase
    as described in the next section.

3.4 Command phase

    The Command phase is where the Tunnel Client send a tunnel request or
    a tunnel update to the server.  In this phase, commands are sent as
    XML messages.  The first line is a "Content-length" directive that
    tells the size of the following XML message.  This makes it easier
    for protocol implementation to tell when they got the whole XML
    message.  When the server sends a response, the first line is the
    "Content-length" directive, the second is the return code and third
    one is the XML message if any.  The size of the response for the
    "Content-length" directive is the first character of the return code
    line to the last character of the XML message.

    Spaces can be inserted freely.


























Blanchet, et. al.       Expires November 30, 2001               [Page 7]


Internet-Draft                     TSP                         June 2001


    Example of a command/response sequence

          -- Successful TCP Connection --
          C:VERSION=0.1 CR LF
          S:CAPABILITY TUNNEL=V6V4 AUTH=DIGEST-MD5 AUTH=ANONYMOUS CR LF
          C:AUTHENTICATE ANONYMOUS CR LF
          S:200 Authentication successful CR LF
          C: Content-length: 123 CR LF
            <tunnel action="create" type="v6v4">
              <client>
                <address type="ipv4">1.1.1.1</address>
              </client>
            </tunnel> CR LF

          S: Content-length: 234 CR LF
             200 OK CR LF
             <tunnel action="info" type="v6v4" lifetime="1440">
              <server>
               <address type="ipv4">206.123.31.114</address>
               <address
type="ipv6">3ffe:b00:c18:ffff:0000:0000:0000:0000</address>
              </server>
              <client>
               <address type="ipv4">1.1.1.1</address>
               <address
type="ipv6">3ffe:b00:c18:ffff::0000:0000:0000:0001</address>
               <address type="dn">userid.domain</address>
              </client>
             </tunnel> CR LF
          -- TCP Connection closed --


4. Error codes

    Error codes are sent as a numeric value followed by a text message
    describing the code.  The Tunnel Setup Protocol defines error code
    numbers 1 through 499 and 1000 through 1499.  Profile dependant error
    codes are defined within the 500 through 999 and 1500 through 1999
    range.

    The predifined values are :


     200 Success

       Successful operation

     300 Authentication failed

       Invalid userid, password or authentication mechanism.



Blanchet, et. al.       Expires November 30, 2001               [Page 8]


Internet-Draft                     TSP                         June 2001


     301 No more tunnels available

       The server as reach its capacity limit.

     302 Unsupported client version

       The client version is not supported by the server.

     303 Unsupported tunnel type

       The server does not provide the requested tunnel type.

    if a list of tunnel servers is following the error code as a referal
    service, then 1000 is added to the error code.

5. Issues

    This protocol could be extended to use the Blocks Extensible Exchange
    Protocol (RFC3080) [5].

6. IANA Considerations

    Tunnel types should be assigned by IANA based on a published RFC
    document.

    A port number must be assigned for that protocol.

7. Security considerations

    This protocol does not have encryption.  When authenticating clients,
    SASL provides the necessary mechanism for negociating the
    authentication mechanism.  As stated in SASL, the PLAIN
    authentication must not be used.  The suggested method is DIGEST-MD5
    (RFC2831) [4].

    Tunnels generate routing entries that may be abused [7], while this
    is not specific to this TSP protocol

8. Acknowledgements

    Alain Durand was the author of the seminal idea of tunnel brokers.
    While researching a way to enhance the function, we were convinced
    about the need of a control protocol and worked on it.  At the same
    time, Peter Tattam published a proposal on an IETF IPv6 mailing list.
    This work is a merge between the Tattam's proposal and our own
    proposal.

    Jun-Ichiro Itojun Hagino was, as usual, a great helper in refining



Blanchet, et. al.       Expires November 30, 2001               [Page 9]


Internet-Draft                     TSP                         June 2001


    and commenting this work.

    This work has been done on a team basis so all people here
    contributed to the original work: Andre Cormier, Regis Desmeules,
    Florent Parent, Jocelyn Picard, Guy Turcotte.

References

    [1]  Durand, A., Fasano, P., Guardini, I. and D. Lento, "IPv6 Tunnel
         Broker", RFC 3053, January 2001.

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

    [3]  Myers, J., "Simple Authentication and Security Layer (SASL)",
         RFC 2222, October 1997.

    [4]  Leach, P. and C. Newman, "Using Digest Authentication as a SASL
         Mechanism", RFC 2831, May 2000.

    [5]  Rose, M., "The Blocks Extensible Exchange Protocol Core", RFC
         3080, March 2001.

    [6]  Durand, A., "IPv6 over IPv4 tunnels for home to Internet access
         method", July 2000.

    [7]  Hagino, J., "Possible abuse against IPv6 transition
         technologies", July 2000.

    [8]  "MIME-type extension for IPv6 configured tunnels".


Authors' Addresses

    Marc Blanchet
    Viagenie inc.
    2875 boul. Laurier, bureau 300
    Sainte-Foy, QC  G1V 2M2
    Canada

    Phone: +1 418 656 9254
    EMail: Marc.Blanchet@viagenie.qc.ca
    URI:   http://www.viagenie.qc.ca/








Blanchet, et. al.       Expires November 30, 2001              [Page 10]


Internet-Draft                     TSP                         June 2001


    Regis Desmeules
    Viagenie inc.
    2875 boul. Laurier, bureau 300
    Sainte-Foy, QC  G1V 2M2
    Canada

    Phone: +1 418 656 9254
    EMail: Regis.Desmeules@viagenie.qc.ca
    URI:   http://www.viagenie.qc.ca/


    Andre Cormier
    Viagenie inc.
    2875 boul. Laurier, bureau 300
    Sainte-Foy, QC  G1V 2M2
    Canada

    Phone: +1 418 656 9254
    EMail: Andre.Cormier@viagenie.qc.ca
    URI:   http://www.viagenie.qc.ca/

Appendix A. DTD

    A DTD should be placed here for the protocol.



























Blanchet, et. al.       Expires November 30, 2001              [Page 11]

Internet-Draft                     TSP                         June 2001


Full Copyright Statement

    Copyright (C) The Internet Society (2001).  All Rights Reserved.

    This document and translations of it may be copied and furnished to
    others, and derivative works that comment on or otherwise explain it
    or assist in its implementation may be prepared, copied, published
    and distributed, in whole or in part, without restriction of any
    kind, provided that the above copyright notice and this paragraph are
    included on all such copies and derivative works.  However, this
    document itself may not be modified in any way, such as by removing
    the copyright notice or references to the Internet Society or other
    Internet organizations, except as needed for the purpose of
    developing Internet standards in which case the procedures for
    copyrights defined in the Internet Standards process must be
    followed, or as required to translate it into languages other than
    English.

    The limited permissions granted above are perpetual and will not be
    revoked by the Internet Society or its successors or assigns.

    This document and the information contained herein is provided on an
    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
    TASK FORCE DISCLAIMS 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.

Acknowledgement

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