Network Working Group                                         R. R. Stewart
INTERNET-DRAFT
Internet-Draft                                       Cisco Systems Systems, Inc.
Expires: December 29, 2002                                        Q. Xie
                                                          Motorola, Inc.

expires in six months                                         May 2,
                                                             M. Stillman
                                                                   Nokia
                                                               M. Tuexen
                                                              Siemens AG
                                                           June 30, 2002

 Aggregate Server Access Protocol (ASAP) and Endpoint Name  Resolution
               Protocol
                         Common Parameters
              <draft-ietf-rserpool-common-param-00.txt> (ENRP) common parameters document
                draft-ietf-rserpool-common-param-01.txt

Status of This this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of [RFC2026]. 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.

   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 http://
   www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on December 29, 2002.

Copyright Notice

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

Abstract

   Aggregate Server Access Protocol (ASAP) [4] in conjunction with the
   Endpoint Name Resolution Protocol (ENRP) [ENRP] [5] provides a high
   availability data transfer mechanism over IP networks.

   Both protocols work together and so share many common parameters used
   in message formats.  This document details the common message
   parameters shared between the two protocols.  This document provides
   parameter formats only, for procedures and message composition please
   refer to the respective [ASAP] ASAP [4] and [ENRP] ENRP [5] documents.

Table Of of Contents

   1. Introduction...............................................2     Introduction . . . . . . . . . . . . . . . . . . . . . . .   3
   1.1 Conventions...............................................2    Conventions  . . . . . . . . . . . . . . . . . . . . . . .   3
   2.     Parameters in General......................................2 General  . . . . . . . . . . . . . . . . . .   4
   3.     ENRP-ASAP Common Parameters................................3 Parameters  . . . . . . . . . . . . . . .   5
   3.1    IPv4 Address Parameter....................................4 Parameter . . . . . . . . . . . . . . . . . .   6
   3.2    IPv6 Address Parameter ...................................5 . . . . . . . . . . . . . . . . . .   7
   3.3    SCTP Transport Parameter..................................5 Parameter . . . . . . . . . . . . . . . . .   7
   3.4    TCP Transport Parameter...................................6 Parameter  . . . . . . . . . . . . . . . . .   8
   3.5    UDP Transport Parameter...................................6
   3.6. Parameter  . . . . . . . . . . . . . . . . .   9
   3.6    Pool Member Selection Policy Parameter...................7 Parameter . . . . . . . . . .  10
   3.6.1  Round Robin Policy......................................8 Policy . . . . . . . . . . . . . . . . . . . .  11
   3.6.2  Least Used Policy.......................................8 Policy  . . . . . . . . . . . . . . . . . . . .  11
   3.6.3  Least Used with Degradation Policy......................8 Policy . . . . . . . . . . . .  11
   3.6.4  Weighted Round Robin Policy.............................9 Policy  . . . . . . . . . . . . . . .  12
   3.7    Pool Handle Parameter.....................................9 Parameter  . . . . . . . . . . . . . . . . . .  12
   3.8    Pool Element Parameter....................................9 Parameter . . . . . . . . . . . . . . . . . .  12
   3.9 Pool Element Handle Parameter.............................11
   3.10    Server Information Parameter.............................11
   3.11 Parameter . . . . . . . . . . . . . . .  14
   3.10   Operation Error Parameter................................12
   3.11.1 Parameter  . . . . . . . . . . . . . . . .  15
   3.10.1 Unrecognized Parameter Error...........................13
   3.11.2 Error . . . . . . . . . . . . . . .  16
   3.10.2 Unrecognized Message Error.............................14
   3.11.3 Authorization Failure Error............................14
   3.11.4 Invalid Values Error...................................14
   3.11.5 Non-unique Error . . . . . . . . . . . . . . . .  16
   3.11   Cookie Parameter . . . . . . . . . . . . . . . . . . . . .  16
   3.12   PE Identifier Error.........................15
   3.11.6 Pooling Policy Inconsistent Error......................15 Parameter  . . . . . . . . . . . . . . . . .  17
   4.     Common Message Formats.....................................15 Formats . . . . . . . . . . . . . . . . . .  18
   5.     Security Considerations....................................17
   6. References.................................................17
   7. Acknowledgments............................................17
   8. Considerations  . . . . . . . . . . . . . . . . .  20
          Normative References . . . . . . . . . . . . . . . . . . .  21
          Authors' Addresses.........................................17 Addresses . . . . . . . . . . . . . . . . . . . .  21
          Full Copyright Statement . . . . . . . . . . . . . . . . .  23

1. Introduction

   Aggregate Server Access Protocol (ASAP) [4] in conjunction with the
   Endpoint Name Resolution Protocol (ENRP) [ENRP] [5] provides a high
   availability data transfer mechanism over IP networks.

   Both protocols work together and so share many common parameters used
   in message formats.  This document details the common message
   parameters shared between the two protocols.  This document provides
   parameter formats only, for procedures and message composition please
   refer to the respective [ASAP] ASAP [4] and [ENRP] ENRP [5] documents.

1.1 Conventions

   The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
   SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL, when
   they appear in this document, are to be interpreted as described in
   [RFC2119].
   RFC2119 [2].

2. Parameters in General

   All parameters parameters described below MUST be in Network Byte
   Order (a.k.a.  Big Endian, i.e., the most significant byte first)
   during transmission.  For fields with a length bigger than 4 octets,
   a number in a pair of parentheses may follow the field name to
   indicate the length of the field in number of octets.

   Please note that messages in both ENRP and ASAP are often composed of
   multiple parameters.  These parameters may also be nested.  In such a
   case a nested parameter will include the length of the padding
   between the nested parameters but not the last padding.

3

3. ENRP-ASAP Common Parameters

   Parameters are defined in the following Type-length-value (TLV)
   format:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          Parameter Type       |       Parameter Length        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      :                                                               :
      :                       Parameter Value                         :
      :                                                               :
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Parameter Type:  16 bits (unsigned integer)

   The Type field is a 16 bit identifier of the type of parameter.  It
   takes a value of 0 to 65534.

   The value of 65535 is reserved for IETF-defined extensions.  Values
   other than those defined in specific ENRP parameter description are
   reserved for use by IETF.

   Parameter Length:  16 bits (unsigned integer)

   The Parameter Length field contains the size of the parameter in
   bytes, including the Parameter Type, Parameter Length, and Parameter
   Value fields.  Thus, a parameter with a zero-length Parameter Value
   field would have a Length field of 4.  The Parameter Length does not
   include any padding bytes that may appear at the end of this
   parameter.

   Parameter Value: variable-length.

   The Parameter Value field contains the actual information to be
   transferred in the parameter.

   The total length of a parameter (including Type, Parameter Length and
   Value fields) MUST be a multiple of 4 bytes.  If the length of the
   parameter is not a multiple of 4 bytes, the sender pads the Parameter
   at the end (i.e., after the Parameter Value field) with all zero
   bytes.  The length of this padding is not included in the parameter
   length field.  A sender SHOULD NOT pad with more than 3 bytes.  The
   receiver MUST ignore the padding bytes.

   (Editor's note: clarify further that any padding inside in the
   parameter, such as the padding in sub-param is included in the total
   length)

   The Parameter Types are encoded such that the highest-order two bits
   specify the action that must be taken if the processing endpoint does
   not recognize the Parameter Type.

   00 - Stop processing this ENRP or ASAP message and discard it, do not
      process any further parameters within it.

   01 - Stop processing this ENRP or ASAP message and discard it, do not
      process any further parameters within it, and report the
      unrecognized parameter in an 'Unrecognized Parameter' error. error (see
      Section 3.10).

   10 - Skip this parameter and continue processing.

   11 - Skip this parameter and continue processing, but report the
      unrecognized parameter in an 'Unrecognized Parameter' error (see
      Section 3.11?). 3.10).

   The values of parameter types are defined as follows:

      Value     Parameter Type
      -----     ----------
      0x0       - (reserved by IETF)
      0x1       - IPv4 Address
      0x2       - IPv6 Address
      0x3       - SCTP Transport
      0x4       - TCP Transport
      0x5       - UDP Transport
      0x6       - Pool Member Selection Policy
      0x7       - Pool Handle
      0x8       - Pool Element
      0x9       - Pool Element Handle
   0xa	     - Server Information
   0xb
      0xa       - Operation Error
      0xb       - Cookie
      0xc       - PE Identifier

      others    - (reserved by IETF)

3.1 IPv4 Address Parameter

   This parameter defines a TLV that carries an IPv4 address.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Type = 0x1             |      Length = 0x8             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        IPv4 Address                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   IPv4 Address: 32 bits (unsigned integer)

   Contains an IPv4 address.  It is binary encoded.

3.2 IPv6 Address Parameter

   This parameter defines a TLV that carries an IPv6 address.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            Type = 0x2         |          Length = 20 0x14        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                         IPv6 Address                          |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   IPv6 Address: 128 bit (unsigned integer)

   Contains an IPv6 address.  It is binary encoded.

3.3 SCTP Transport Parameter

   This parameter defines a TLV that describes a user transport using
   SCTP protocol.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Type = 0x3             |      Length = variable        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        SCTP port              |          (reserved)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                     IPv4 or IPv6 Address #1                   :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                              ...                              :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                     IPv4 or IPv6 Address #n                   :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, SCTP port, reserved fields, and all IP
   address parameters present.

   SCTP port: 16 bits (unsigned integer)

   The SCTP port number signed to this SCTP user transport.

   IPv4 or IPv6 Address #1 - #n:

   Each indicates an IPv4 or IPv6 address parameter (as defined above in sections
   Section 3.1 and Section 3.2) assigned to this SCTP user transport.
   At least one IP address parameter MUST be present in an SCTP
   transport parameter.

3.4 TCP Transport Parameter

   This parameter defines a TLV that describes a user transport using
   TCP protocol.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Type = 0x4             |      Length = variable        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         TCP port              |          (reserved)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                     IPv4 or IPv6 Address                      :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)
   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, TCP port, reserved fields, and IP address
   parameter.

   TCP port: 16 bits (unsigned integer)

   The TCP port number signed to this TCP user transport.

   IPv4 or IPv6 Address:

   Indicates an IPv4 or IPv6 address parameter (as defined above in
      sections
   Section 3.1 and Section 3.2) assigned to this TCP user transport.
   Unlike in an SCTP transport, only one IP address parameter can be
   present in a TCP transport parameter.

3.5 UDP Transport Parameter

   This parameter defines a TLV that describes a user transport using
   UDP protocol.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Type = 0x5             |      Length = variable        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         UDP port              |          (reserved)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                     IPv4 or IPv6 Address                      :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, UDP port, reserved fields, and IP address
   parameter.

   UDP port: 16 bits (unsigned integer)

   The UDP port number signed to this UDP user transport.

   IPv4 or IPv6 Address:

   Indicates an IPv4 or IPv6 address parameter (as defined above in
      sections
   Section 3.1 and Section 3.2) assigned to this UDP user transport.
   Unlike in an SCTP transport, only one IP address parameter can be
   present in a UDP transport parameter.

3.6.

3.6 Pool Member Selection Policy Parameter

   This parameter defines a pool member selection policy.  RSERPOOL
   supports multiple pool member selection polices and also allows
   definition of new selection polices in the future.

   The enforcement rules and handling procedures of all the policies are
   defined in Section xxxxx in [ASAP]. ASAP [4].

   All pool member selection policies, both present and future, MUST use
   the following general parameter format:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Type = 0x6             |      Length = variable        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Policy Type   |     Policy-specific Data....
   +-+-+-+-+-+-+-+-+------------------------------------------------

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, Policy Type fields, and the Policy-specific Policy-
   specific Data.

   Note, the value in Length field will NOT cover any padding at the end
   of the parameter, if there is one.

   Policy Type: 8 bits (unsigned integer)

   Specifies the type of selection policy.

   Currently defined policy types are:

     Value     Policy
     -----     ---------
     0x0       (reserved by IETF)
     0x1       Round Robin
     0x2       Least Used
     0x3       Least Used with Degradation (a.k.a. dog pile)
     0x4       Weighted Round Robin
     others    (reserved by IETF)

   Policy-specific Data:

   The structure and fields for each presently defined policy types are
   described in detail in the following subsections.  The enforcement
   rules and handling procedures of these policies are defined in
   Section xxxxx in [ASAP]. ASAP [4].

3.6.1 Round Robin Policy

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Param Type = 0x6           |      Length = 0x8             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Policy=0x1   |                (reserved)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------------------------+

   Reserved: 24 bits

   MUST be set to 0's by sender and ignored by the receiver.

3.6.2 Least Used Policy

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Param Type = 0x6           |      Length = 0x8             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Policy=0x2   |                 Load                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------------------------+

   Load: 24 bits (signed integer)

      [TBD]

   (TBD)

3.6.3 Least Used with Degradation Policy

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Param Type = 0x6           |      Length = 0x8             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Policy=0x3   |                 Load                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------------------------+

   Load: 24 bits (signed integer)

      [TBD]

   (TBD)

3.6.4 Weighted Round Robin Policy

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Param Type = 0x6           |      Length = 0x8             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Policy=0x4   |                 Weight                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------------------------+

   Weight:

   Load: 24 bits (signed integer)

      [TBD]

   (TBD)

3.7 Pool Handle Parameter

   This parameter holds a pool handle (i.e., a pool name).

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Type = 0x7            |       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                          Pool Handle string                       :
   :                          :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, and Pool Handle string.

   Note, the value in Length field will NOT cover any padding at the end
   of the parameter.

   Pool Handle:

      Defined

   defined as a NULL terminated ASCII string. sequence of (Length - 4) bytes.

3.8 Pool Element Parameter

   This parameter is used in multiple ENRP messages to represent an ASAP
   endpoint (i.e., a PE in a pool) and the associated information, such
   as its transport address(es), selection policy, and other operational
   or status information of the PE.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Type = 0x8            |       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         PE Identifier                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Home ENRP Server Identifier                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Registration Life                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                    User Transport param #1                    :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                    User Transport param #2                    :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                             .....                             :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                    User Transport param #k                    :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                 Member Selection Policy param                 :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets,
   including the Type, Length, PE Identifier, Registration Life, all
   User Transports, and Member Selection Policy parameters.

   Note, the value in Length field will NOT cover any padding at the end
   of this Pool Element parameter.

   PE Identifier: 32 bits (unsigned integer)

   Uniquely identifies the PE in the pool.  The PE picks its identifier
   when it starts up.  See Section ???? in [ASAP] for recommendations on
   PE identifier generation.

   Home ENRP Server Identifier: 32 bits (unsigned integer)

   Indicates the current home ENRP server of this PE.  Set to all 0's if
   the PE's home ENRP server is undetermined.

   Registration Life: 32 bits (signed integer)

   Indicates the life time of the registration in number of seconds.  A
   value of -1 indicates infinite life time.

   User Transport #1-#k:

   Each of the User Transport parameters in a PE parameter can be either
   an SCTP, TCP, or UDP type transport parameter (see
      sections Section 3.3,
   Section 3.4, Section 3.5).  A PE MUST have at least 1 User Transport
   and MAY have multiple User Transports.  When multiple transports are
   present, they MAY be of mixed types (i.e., SCTP, TCP, and UDP).

   Member Selection Policy:

   Contains one of the defined member selection policy parameters (see section
   Section 3.6).

3.9 Pool Element Handle Server Information Parameter

   This parameter is used in ENRP to encode a logical handler that points to pass basic information of an individual PE in a specific pool. ENRP
   server.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Type = 0x9            |       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                    Pool Handle Parameter                      :
   |                           Server ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |M|                        (reserved)                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                     PE's User                       Server Transport                        :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets.

   Note, the value in Length field will NOT cover any padding at the end
   of the parameter.

   Pool Handle:

      Specifies the pool to which

   Server ID: 32 bit (unsiged integer)

   This is the PE belongs.

   PE's User Transport:

      Indicates the user transport (or one of the user transports) of
      the PE. This can be either an SCTP, TCP, or UDP type transport.

3.10 Server Information Parameter

   This parameter is used in ENRP to pass basic information of an ENRP
   server.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Type = 0xa            |       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Server ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |M|                        (reserved)                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                       Server Transport                        :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   Length: 16 bits (unsigned integer)

      Indicates the entire length of the parameter in number of
      octets.

      Note, the value in Length field will NOT cover any padding at
      the end of the parameter.

   Server ID: 32 bit (unsiged integer)

      This is the ID of ID of the ENRP server, as defined in Section 4.2.1? xxxxxx in [ENRP].
   ENRP [5] .

   Multicast Flag (M): 1 bit

   If set to '1', indicates the ENRP server is allowed to use multicast
   for communications.  If set to '0', multicast is not used by the
   server.

   Reserved: 31 bits

   MUST be set to 0's by sender and ignored by the receiver.

   Server Transport:

   This is an SCTP Transport Parameter, as defined in Section 3.3?, 3.3 that
   contains the network access address(es), SCTP port number, etc.  of
   the ENRP server.

3.11

3.10 Operation Error Parameter

   This parameter is used in both ENPR and ASAP for a message sender to
   report an error(s) to a message receiver.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Type = 0xb 0xa           |       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                    one or more Error Causes                   :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Length: 16 bits (unsigned integer)

   Indicates the entire length of the parameter in number of octets.

   Note, the value in Length field will NOT cover any padding at the end
   of the parameter.

   Error causes are defined as variable-length parameters using the
   format described in 3.2.1, 3.2.1 of RFC2960 [3], i.e.:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Cause Code          |       Cause Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                    Cause-specific Information                 :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Cause Code: 16 bits (unsigned integer)

   Defines the type of error condition being reported.

         Cause Code
         Value           Cause Code
         ---------      ----------------
       0x0	      (reserved by IETF)
       0x1
          1              Unrecognized Parameter
       0x2
          2              Unrecognized Message
       0x3
          3              Authorization Failure
       0x4
          4              Invalid Values
       0x5
          5              Non-unique PE Identifier
       0x6
          6              Pooling Policy Inconsistent
         other values   (reserved    reserved by IETF) IETF

   Cause Length: 16 bits (unsigned integer)

   Set to the size of the parameter in bytes, including the Cause Code,
   Cause Length, and Cause-Specific Information fields, but not
   including any padding at the end of this error cause TLV.

   Cause-specific Information: variable length

   This field carries the details of the error condition.

   The following subsections (3.11.1 (Section 3.10.1 - 3.11.6) Section 3.10.2) define
   specific error causes.

3.11.1

3.10.1 Unrecognized Parameter Error

   (TBD)

3.10.2 Unrecognized Message Error

   (TBD)

3.11 Cookie Parameter

   This error cause is used by a receiver to report an unrecognized parameter found in defines a received message to the message sender. TLV that carries a Cookie.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code            Type = 0x1 0xb         |   Cause Length = variable       Length=variable         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                    Offending Parameter TLV                             Cookie                            :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   Offending Parameter TLV:

      The complete TLV

   Length: 16 bits (unsigned integer)
   Indicates the entire length of the parameter that the receiver in number of bytes,
   including the
      message fails to recognize.

3.11.2 Unrecognized Message Error

   This error cause Type, Length, and Cookie.

   Cookie: variable length

   The Cookie is used by a receiver to report an unrecognized
   message type to the message sender.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code = 0x2       |   Cause Length = variable     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                    Offending Message TLV                      :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Offending Message TLV:

      The complete TLV of the receive message whose type the receiver arbitrary byte string of the message fails to recognize.

3.11.3 Authorization Failure Error

   This error cause is used by a message receiver to report to the
   message sender that the received message has failed the
   authorization check.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code = 0x3       |   Cause Length = variable     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                            [TBD]
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.11.4 Invalid Values Error

   This error cause is used by a message receiver to report to the
   message sender that the received message has one or more fields
   that contains an invalid value.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code = 0x4       |   Cause Length = variable     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                            [TBD]
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.11.5 Non-unique (Length - 4) bytes.

3.12 PE Identifier Error Parameter

   This error cause is used by an ENRP server to report parameter defines a collission
   between two PE identifers (i.e., two PEs try to register with the
   same PE identifer).

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code = 0x5       |      Cause Length = 0x8       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Bad PE Identifer                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Bad PE Identifer:

      This is the value of the PE identifer which is found colliding
      with an existing PE identifer.

3.11.6 Pooling Policy Inconsistent Error

   This error cause is used by an ENRP server to report an
   inconsistancy between the selection policy of TLV that carries a registering PE and
   the current overall pool policy. Identifier.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Cause Code            Type = 0x2 0xc         |   Cause Length = variable         Length=0x8            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                     Offending Policy TLV                      :
   :                                                               :
   |                         PE Identifier                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Offending Policy TLV:

      The complete TLV of

   PE Identifier: 32 bits (unsigned integer)

   Uniquely identifies the selection policy parameter (see Section
      3.6?) that is found PE in conflict with the current pool policy. pool.  The PE picks its identifier
   when it starts up.  See Section ???? in [ASAP] for recommendations on
   PE identifier generation.

4. Common Message Formats

   The figure below illustrates the common format for all ASAP and ENRP
   messages.  Each message is formatted with a Message Type field, a
   message-specific Flag field, a Message Length field, and a Value
   field.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Message Type  |   Msg Flags   |        Message Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                                                               :
   :                        Message Value                          :
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Message Type: 8 bits (unsigned integer)

   This field identifies the type of information contained in the
   Message Value field.  It takes a value from 0 to 254.  The value of
   255 is reserved for future use as an extension field.

   Message Types are encoded such that the highest-order two bits
   specify the action that must be taken if the message receiver does
   not recognize the Message Type.

   00 - Stop processing this message and discard it.

   01 - Stop processing this message and discard it, and report the
      unrecognized message in an 'Unrecognized Message' error (see
      Section 3.11). Section 3.10.2).

   10 - reserved.

   11 - reserved.

   Message Flags: 8 bits

   The usage of these bits depends on the message type as given by the
   Message Type.  Unless otherwise specified, they are set to zero on
   transmit and are ignored on receipt.

   Message Length: 16 bits (unsigned integer)

   This value represents the size of the message in bytes including the
   Message Type, Message Flags, Message Length, and Message Value
   fields.  Therefore, if the Message Value field is zero-length, the
   Length field will be set to 4.  The Message Length field does not
   count any padding.

   Note, the value in Message Length field will NOT cover any padding at
   the end of this message.

   Message Value: variable length

   The Message Value field contains the actual information to be
   transferred in the message.  The usage and format of this field is
   dependent on the Message Type.

   The total length of a message (including Type, Length and Value
   fields) MUST be a multiple of 4 bytes.  If the length of the message
   is not a multiple of 4 bytes, the sender MUST pad the message with
   all zero bytes and this padding is not included in the message length
   field.  The sender should never pad with more than 3 bytes.  The
   receiver MUST ignore the padding bytes.

5. Security Considerations

   This document contains common parameter formats only.  As such it
   specifies no new security constraints on either ENRP or ASAP.
   Details on ENRP and ASAP security constraints are a addressed in [ENRP] ENRP
   [5] and [ASAP].

6. ASAP [4] .

Normative References

    [RFC2026]

   [1]  Bradner, S., "The Internet Standards Process -- Revision 3", BCP
        9, RFC 2026, October 1996.

    [RFC2119]

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

    [ENRP] Q.

   [3]  Stewart, R., Xie, R. R. Stewart "Endpoint Name Resolution Q., Morneault, K., Sharp, C., Schwarzbauer,
        H., Taylor, T., Rytina, I., Kalla, M., Zhang, L. and V. Paxson,
        "Stream Control Transmission Protocol",
            draft-ietf-rserpool-enrp-01.txt, work in progress.

    [ASAP] R. R. RFC 2960, October 2000.

   [4]  Stewart, R., Xie, Q. Xie: and M. Stillman, "Aggregate Server Access
        Protocol (ASAP)", <draft-ietf-rserpool-asap-00.txt>, work draft-ietf-rserpool-common-param-01 (work in progress.

7. Acknowledgments

   The authors wish to thank John Loughney, Lyndon Ong, and Maureen
   Stillman
        progress), May 2002.

   [5]  Xie, Q., Stewart, R. and many others for their invaluable comments.

8. M. Stillman, "Enpoint Name Resolution
        Protocol (ENRP)", draft-ietf-rserpool-enrp-04 (work in
        progress), May 2002.

Authors' Addresses

   Randall R. Stewart                      Tel: +1-815-477-2127
   Cisco Systems, Inc.                     EMail: rrs@cisco.com
   8725 West Higgins Road
   Suite 300
   Chicago, Ill IL  60631
   USA

   Phone: +1-815-477-2127
   EMail: rrs@cisco.com

   Qiaobing Xie                          Phone: +1-847-632-3028
   Motorola, Inc.                    EMail: qxie1@email.mot.com
   1501 W. Shure Drive, #2309
   Arlington Heights, IL  60004
   USA
             Expires

   Phone: +1-847-632-3028
   EMail: qxie1@email.mot.com
   Maureen Stillman
   Nokia
   127 W. State Street
   Ithaca, NY  14850
   USA

   Phone: +1-607-273-0724
   EMail: maureen.stillman@nokia.com

   Michael Tuexen
   Siemens AG
   ICN WN CC SE 7
   D-81359 Munich
   Germany

   Phone: +49 89 722 47210
   EMail: Michael.Tuexen@icn.siemens.de

Full Copyright Statement

   Copyright (C) The Internet Society (2002).  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 six months from May 2, 2002 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.