Network Working Group                                        Ram Gopal.L
INTERNET DRAFT                                          Senthil Sengodan
                                                                   Nokia
Expires January, 2002                                      July 10, 2001


                 End Name Resolution Protocol Candidate (ENRP)
                  <draft-gopal-enrp-candidate-00.txt>



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.

Abstract

The goal is to develop a Reliable server pooling protocols for the
management and operation of server pools supporting highly reliable
applications,and for client access mechanisms to a server pool.

This document describes the ENRP protocol and details the how it is
used in conjunction with ASAP protocol.




Table of Contents


1.      Introduction..............................................3
1.1     Terminology...............................................4
1.2.    Architectural view .......................................5
2       Protocol Overview.........................................7
2.1     Name Server pool..........................................7
2.2     Choosing the Name Server address for registration.........7
2.2.1   ENRP Name server Registration............  ...............7
2.2.2   Name Server List download.................................8
2.2.2.1 Choosing  Name Server ID  ................................8

Ram & Senthil                                                 [Page   1]

Internet Draft        End Name Resolution Protocol            July 2001

2.2.2.2 Choosing Care Taker Name Server...........................8
2.2.2.3 Avoiding NS-ID Collision..................................9
2.3     ENRP Name Server and PE  list download ...................9
2.4     Name Server  Updates .....................................9
2.4.1   Name Server Status notification..........................10
2.4.2.  PE Status notification...................................10
2.5     NS deRegistration and NS update..........................10
2.6     ENRP Health check........................................10
3       Message Overview.........................................10
4       Request..................................................12
4.1     Request-Line.............................................12
4.2     Method...................................................12
4.2.1   NS-REGISTRATION..........................................13
4.2.2   HEARTBEAT................................................13
4.2.3   UPDATE...................................................13
4.2.4   NS-DOWNLOAD..............................................14
4.2.5   PE-DOWNLOAD..............................................14
5       Response Header..........................................14
5.1     Status-Line..............................................14
5.1.2   Status Codes and Reason Phrases..........................15
6       Header Field Definitions.................................16
6.1     Allow....................................................16
6.2     NS-Parameters ...........................................17
6.3     Policy...................................................17
6.4     Periodic-Update..........................................18
6.5     NS-ID....................................................18
6.6     Server-Type..............................................18
6.7     Transaction-ID...........................................19
6.8     Expires..................................................19
6.9     Security Related Headers.................................19
6.9.1   WWW-Authenticate ........................................19
6.9.2   Authorization............................................20
6.9.3   Authentication-Info......................................20
6.9.4   Encryption...............................................21
6.9.5   Require .................................................21
6.9.6   Response-Key.............................................21
7       Status Code Definitions..................................21
7.1     Successful 2xx...........................................21
7.1.1   200 OK...................................................21
7.2     Request Failure 4xx......................................22
7.2.1   400 Bad Request..........................................22
7.2.2   401 Unauthorized.........................................23
7.2.3   403 Method Not Allowed...................................22
7.2.4   404 Not Found............................................23
7.2.5   409 Request Entity Too Large.............................23
7.3     Server Failure 5xx.......................................23
7.3.1   500 Server Internal Error................................23
7.3.2   501 Not Implemented......................................23
7.3.3   502 Service Unavailable..................................23
7.3.5   503 Version Not Supported................................24
8.      Behavior of Name Server..................................24

Ram & Senthil                                                 [Page 2]


Internet Draft        End Name Resolution Protocol            July 2001

8.1     NS  - Startup and Shutdown interaction message ..........24
8.1.1   Registering Entity Resolves the Name Server with
        which to Register........................................24
8.1.2   Joining Name Server needs to be registered with an NS....25.
...................................................
8.1.3   Name ServerDe-Registering itself from the Pool.......... 25
8.1.4   Download of ASAP/ENRP pool element information on
        to NS..........................................          26
8.1.4.1 Name ServerRequests list of Name Servers in NS-pool......26
8.1.4.2 Response to ENRP-DOWNLOAD message requesting
        Name Server  list .......................................  26
8.1.4.3 NS requests PE list from caretaker NS................... 27
8.1.4.4 Response to NS-DOWNLOAD message requesting PE list.......27
8.2     Interaction between a pair of NS.........................28
8.2.1   NS Updates NS status to PEs and other NS in the NS-Pool..28
8.2.1.1 New NS Registration Notification ........................29
8.2.1.2 NS Registration Update...................................29
8.2.1.3 NS Heart beat Failure or NS de-Registration
        Notification Update .....................................29
8.2.2   Name Server updating an PE Status to all NS .............30
8.2.2.1 PE registration notification ............................30
8.2.2.2 PE registration update ..................................31
8.2.2.3 PE  de-registration or interface heartbeat
        failure notification ....................................31
8.2.3   Caretaker NS sends a Heartbeat Request to other NSs in
        to NS-pool...............................................32
8.2.4   NS sends Heartbeat Response to Care-Taker NS.............33
8.2.5   NS notifies all other NSs in NS-pool of a change in
        caretaker NS             ................................33
9       Security Considerations..................................34
9.1     Confidentiality and Privacy: Encryption..................34
9.1.1   Application-Level Encryption...............    ..........34
9.1.2   Lower-Layer Encryption...................................34
9.2     Message Integrity and Access Control: Authentication.....34
9.2.1   Illustration of Digest Scheme ...........................34
A.      Implementation Issues....................................35
B.      Summary of Augmented BNF........................ ........35
C.      Acknowledgements.........................................35
D       Author's Contact Address.................................36
E       Reference................................................36




1 Introduction

[Req] discusses requirements for the management and operation
of reliable server pools which may be needed for certain
applications, and for the client access mechanism to a server pool.
[Arch] describes an architecture for achieving such reliable server
pools.Two protocols - ASAP and ENRP - are proposed within this
architecture.In this document, we give a description of the ASAP
protocol.

Ram & Senthil                                                 [Page 3]


Internet Draft        End Name Resolution Protocol            July 2001

1.1.  Terminology

In addition to the terminology defined in [Req][Arch], the following
terms are defined here:

    Reliability: As stated in [Papoulis], the reliability of a
    system is defined as the probability that the system functions
    at a certain time 't'. In mathematical terms, we have

       R(t) = P{x>t}

       where    R(t)  = system reliability
          P{.}  = Probability of occurrence of the specified event
          x  = Random Variable (RV) denoting "time to failure" of a
          system
          t  = time

    A typical metric for determining  the reliability of
    a system is the mean time to failure. The larger this value, the
    more reliable the system is.

    Availability: As stated in [Mullender], the availability of a
    system is defined as the probability that the system provides
    correct service delivery at a certain time 't'. It is a measure
    of correct service delivery with respect to the alternation of
    correct and incorrect service, measured by the probability A(t)
    that the system is ready to provide the service at a point in
    time t.

    ENRP Server: Identical to Name Server [Arch][Req]

    Proxy PE (PPE): Proxy PE refers to a PE which acts on behalf of
    application servers, specifically legacy application servers.

    Proxy PU (PPU): Proxy PU refers to a PU which acts on behalf of a
    user of a server pool, specifically a legacy user of a server
    pool.

    Name Server Pool (NS-Pool) : Refers to ENRP Name Server pool

    Application Server Pool (AS-Pool): This term refers to "Pool" in
    [Arch], but is introduced here to distinguish from NS-Pool.

    Care Taker Name Server: Associated with each Name Server there is
    one care taker Name Server in the same pool and is responsible for
    health check.

    Name Server ID: A unique identifier assigned to each Name Server
    after registration in an NS-Pool.
    NS Handle: Refers to transport addresses) of a Name Server.

Ram & Senthil                                                 [Page  4]

Internet Draft        End Name Resolution Protocol            July 2001

1.2 Architectural view

Figure 1 represents the architectural view of ENRP in a Rserpool.
Communication of the different elements in this architecture is as
follows:

    - ENRP Name Server (say NS 1 and NS 2 )  communicates with each
    other using ENRP protocol. There may be more than one Name Server in
    a Rserpool.

    - ENRP Name server uses its ASAP layer to communicate to its PU or
    PE.

    - Name Server keeps information regarding legacy servers but does
    not communicate to them.

    +---------------------+       +-----------+  +-----------+
    |  Application Server |       |Legacy     |  |Legacy     |
    |        (A1)         |       |Server (S1)|  |Server (S2)|
    +---------------------+       +-----------+  +-----------+
    |        ASAP         |              ||          ||
    |                     |            +---------------------+
    +---------------------+            |    ASAP - PPE (A2)  |
    |  Transport Layer    |            +---------------------+
    |                     |            |    Transport Layer  |
    +---------------------+            +---------------------+
              ||                                 ||
              ||                                 ||
   =//===================//===============================//===
                                    ||
        +---------------------+     ||     +-------------------+
        |  Name Server (NS 1) |     ||     | Pool User  (P1)   |
        |                     |     ||     |                   |
        +----------+----------+     ||     |                   |
        |  ENRP    |   ASAP   |     //     +-------------------+
        +----------+----------+     ||     |                   |
        | Transport Layer     |     ||     |        ASAP       |
        +----------+----------+     ||     +-------------------+
                  ||                ||     |  Transport Layer  |
                  ||=====//=========||     +-------------------+
                                    ||            ||
                                    ||=====//=======
                                    ||
        +---------------------+     ||     +--------+  +--------+
        |  Name Server (NS 2) |     ||     |Legacy  |  |Legacy  |
        |                     |     ||     |Client  |  |Client  |
        +---------------------+     ||     |   (U1) |  | (U2)   |
        | ENRP     |  ASAP    |     //     +--------+  +--------+
        +----------+----------+     ||           ||         ||
        | Transport Layer     |     ||          ||         ||
        +---------------------+     ||      +-------------------+
                  ||                ||      |   ASAP - PPU (P2) |
                  ||=======//=======||      +-------------------+
                                    ||      |  Transport Layer  |
                                    ||      +-------------------+
Ram & Senthil                                                 [Page  5]

Internet Draft        End Name Resolution Protocol            July 2001

                                    ||             ||
                                    ||====//=========
                                    //

     Figure 2: Architectural view of ENRP Name servers


Based on the requirements in [Req], some of the functionality that is
provided within the protocol are:

    - The Name Server discovery mechanism does not rely on multicast
    technologies. Instead, a set of mechanisms are described, any of
    which may be used. (Refer 2.1)

    - The use of Expires header for initial registration, registration
    modification or deletion of PE with Name Server, permits
    automatic  cache invalidation at the PU. This implies that the PU
    does not   have to initiate queries to a PE to determine whether the
    PE is  active, if it already knows that the PE is not active because
    its registration has expired.

    - Separate Registration mechanism are provided for Name Server which
    is different from PE registration. This will form a pool of ENRP
    Name server in a RSerPool scope. Apart from this each Name Server
    discovers its care taker server just after  the registration
    process. (Refer Section 2.2.1 )


Some key characteristics of the architecture of Figure 1 are:

    - It does not assume any underlying transport protocols, and may
    use UDP, TCP, SCTP, RDP etc.

     - All communication between any two entities in the Rserpool is
    secured - it provides confidentiality, data origin authenticity
    and replay attack prevention.

    - The protocol does not rely on multicast, and works both in a
    unicast and multicast environment.

            - Each ENRP name server keeps all state information about
            each PE in the AS-Pool and about other Name Servers  and
            this information is always  synchronized between them with
            minimal message exchange.


    - Use of an ASCII based message exchange (similar to HTTP, SIP)
    makes the protocol simpler and easy to implement in low-
    processing device.

Ram & Senthil                                                 [Page 6]


Internet Draft        End Name Resolution Protocol            July 2001

    - Load balancing is provided at three levels:
        - Across Name Servers for PU Queries
        - Across PEs for PU Queries
        - Across Name Servers for PE heartbeat


2  Protocol Overview


2.1 Name Server Pool

A pool of ENRP Name servers cooperate (and are synchronized) with one
another using ENRP,  and are said to operate  within an operational
scope. There may be more than one Name server in an operation scope
to form Name server pool. i.e. this is needed for availability and
all the Name server cooperate  and synchronize themselves. The
reasons for  having a cooperating/synchronized Name Serverpool
include:

   o to handle the case of Name server failures

   o distribute load among the Name servers: Load sharing on
     heartbeat monitoring function (of PE) can be done.
        (a) When an existing Name Server leaves a pool, then the PEs
        that are handled by this Name Server need to be distributed
        among the other Name Servers in the pool. Similarly, when a new
        Name Server enters a pool, one may wish to redistribute the load
        among the various Name Servers.

        (b) It is uncertain if load sharing can be done for PU queries
        to Name servers. PUs cannot know the list of active Name servers
        in the operational scope. Their only source of info is from the
        DNS (which may not be up-to-date). A possibility is that the
        first time a PU contacts a Name server, that server could
        download a list of then currently active Name servers, so that
        the PU can use say a RR policy for subsequent queries to Name
        servers.


2.2  Choosing the Name server address for registration

The  Name Server that wants to be a part of a NS-pool obtains the list
of Name servers from the DNS, or possibly some local configuration
setting. This list may not be up-to-date, and some entries in the list
may not be in the NS-pool, while there may be other Name
servers in the pool that are not listed in this entry. The joining Name
Server  (Say A ) picks one Name  server (Say B) (could be arbitrary)
and sends its registration to this Name server B.


2.2.1  ENRP Name Server  Registration

The joining Name Server (say A) after choosing the Name server from the
list ( Refer Section 2.2 ) sends the NS-REGISTRATION message to the

Ram & Senthil                                                 [Page 7]


Internet Draft        End Name Resolution Protocol            July 2001

Name  server(say B). The Name server does the initial authentication
(depending upon the security protocol) and sends back the
NS-REGISTRATION response with the appropriate status code. A typical NS-
REGISTRATION request contains, Expire time, service policy and other
server specific information.

2.2.2 Name Server List download

After NS-REGISTRATION is completed successfully, the newly joined
Name Server (Say A) then requests for the Name server list by sending an
NS-DOWNLOAD Request to the Name server with which it completed its
registration (Say B) .


2.2.2.1 Choosing Name Server ID

Requesting Name server after receiving Name Server list, computes the
NS-ID  (Name Server ID) that it assigns itself, and  chooses its
Care taker Name Server.

The new Name server scans through  the all Name  server ID's in the list
and chooses the NS-ID  which is one greater than the highest value in
the list. i.e, for example if we have five Name Servers and their NS
id are 1,4,5,6 and 15, then the new Name Server that joins the pool
will assign itself an NS-ID of 16 and its care taker Name Server will
have an NS-ID 15.


Name Server   NS-ID
 Server-1         1     ;Care taker for Name Server 4
 Server-2         4     ;Care taker for Name Server 5
 Server-3         5     ;Care taker for Name Server 6
 Server-4         6     ;Care taker for Name Server 15
 Server-5         15    ;Care taker for Name Server 1

 Server-6         16        ; Comment Newly joined Name server

 Note: The gaps in the Name server ID represents that those servers
 have left the NS-pool either normally or abnormally.

   Figure    4 Name Server ID Selection.


2.2.2.2 Choosing Care Taker ENRP Name Server

After computing the Name server ID, the newly registered ENRP Name
server chooses its care taker ENRP Name server whose NS-ID is  one
lesser than its value. Refer Figure 4, the Care Taker Server for Name
Server 16 will be 15.

Name Server   NS-ID
 Server-1         1     ;Care taker for Name Server 4
 Server-2         4     ;Care taker for Name Server 5

Ram & Senthil                                                 [Page  8]

Internet Draft        End Name Resolution Protocol            July 2001

 Server-3         5     ;Care taker for Name Server 6
 Server-4         6     ;Care taker for Name Server 15
 Server-5         15    ;Care taker for Name Server 16

 Server-6         16        ; Comment Newly joined Name server
                            ; Care taker for Name Server1


 Figure    5 Name Server Care taker Selection/Reassignment.



2.2.2.3 Avoiding NS-ID Collision

One needs to avoid the case where two or more Name servers (say, A, B,
C) wishing to join a Name server pool at reasonably close points in
time, obtain identical Name server lists, thereby computing an identical
NS-ID (say, 16 as in Figure 5) for itself. When the first ENRP
server (A) contacts its caretaker Name server (with NS-ID 15, which is
say D), then a flag at D is set. When Name Server, say B, subsequently
contacts its caretaker Name server, which is again D, D responds with an
indication that the flag is set. This implies that Name server B needs
to retry its initialization after a certain random amount of time. The
same happens to Name server C.

After Name server A has successfully updated all other Name Servers in
the pool of its joining the pool, the flag at Name Server D is reset. A
timer associated with this flag resets the flag if the update does not
occur within a certain pre-specified amount of time.


2.3 ENRP Name Server and PE list download

After determining the name server ID  and Caretaker Name Server, the
newly registered Name Server requests its Caretaker Name Server for PE
list by sending PE-DOWNLOAD request.

2.4  Name Server  Updates

2.4.1 Name Server Status notification

Name Server sends the UPDATE message to other Name Servers in the NS-
Pool and other PEs in the AS-Pool. This  message is generated due to the
following reasons:

o After the Name Server registration, successful download of Name
Server list and PE data, new Name server sends the Name Server update
list to other Servers and to the list of PE in the pool. The Update
message contains the NS-Parameters of the newly joined Name Server.

o Care taker Name Server sends the ENRP update message due to Health
check failure  or normal shutdown of Name server. The update message
contains the NS-Parameter of the failed Name Server.

Ram & Senthil                                                 [Page  9]

Internet Draft        End Name Resolution Protocol            July 2001


o Name Server can extend/update its registration with the NS-pool by
sending UPDATE  message, the typical update could be as follows
    1. wants to extend the expiry time
    2. wants to change the policy and control parameters


2.4.2. PE Status notification

A Name Server sends PE updates only to other Name Servers in the NS-
Pool. These messages are generated due to the following reasons:


 o PE health check failure
 o PE added to the AS-pool
 o PE does a registration update


2.5 NS deRegistration and NS update


An NS can deRegister itself from the NS-pool, by sending
NS_REGISTRATION message with Expires header of value 0, to care taker
NS-server.  NS can also de-Register   one of its transport
addresses if it is multi homed by setting the corresponding expire
value to 0.

2.6 ENRP Health check

Care taker NS (Say A) will periodically check the heartbeat of each
transport address (in case of multi homing) of NS (say B) that it takes
care of.  NS B upon receiving this request, responds thereby indicating
to A that it is alive.


3  Message Overview

   ENRP is a text-based protocol and uses the ISO 10646 character set
   in  UTF-8 encoding (RFC 2279). Senders MUST terminate lines with a
   CRLF, but receivers MUST also interpret CR and LF by themselves as
   line terminators.

   An ENRP message is either a request from a client to a server, or
   a  response from a server to a client.


         ENRP-message  =  Request | Response


   Both Request (section 4) and Response (section  5) messages use
   the  generic-message format of RFC 822 [2] for transferring

Ram & Senthil                                                 [Page  10]

Internet Draft        End Name Resolution Protocol            July 2001

   entities   (the  body of the message). Both types of messages
   consist of a start-line, one or more header fields (also known as
   "headers"), an empty line (i.e., a line with nothing preceding the
   carriage-return line-feed  (CRLF)) indicating the end of the
   header fields, and an optional message-body.


        ENRP-message  =     start-line
                            *message-header
                            CRLF
                            [ message-body ]


        start-line       =  Request-Line |     ;Section 4.1
                            Status-Line        ;Section 5.1




       Table  2 provides a snapshot of the various headers within
       ENRP.

           message-header   =  Allow                ; Section 6.1
                            |  Expires              ; Section 6.8
                            |  NS-Parameter         ; Section 6.2
                            |  PE-Parameter         ; Refer ASAP Draft
                            |  Policy               ; Section 6.3
                            |  Periodic-Update      ; Section 6.4
                            |  Pool-Handle          ; Refer ASAP Draft
                            |  NS-ID                ; Section 6.5
                            |  Transaction-ID       ; Section 6.7
                            |  Server-Type          ; Section 6.6

                            |  WWW-Authenticate     ; Section 6.9.1
                            |  Authorization        ; Section 6.9.2
                            |  Authorization-Info   ; Section 6.9.3
                            |  Encryption           ; Section 6.9.4
                            |  Require              ; Section 6.9.5
                            |  Response-Key         ; Section 6.9.6


     Table  3: ENRP headers



   The message syntax proposed for ASAP/ENRP satisfies the following
   requirements:

   - The message structure is based on well-known structures that
     have been used in protocols that have widespread deployment.
   - Ease of extensibility of the message structures
   - Facilitate code reuse where possible, when other protocol

Ram & Senthil                                                 [Page  11]

Internet Draft        End Name Resolution Protocol            July 2001

     parsers use similar  message structures
   - Efficient parsing of the message structures
   - Limited processing power requirements, facilitating use of the
     protocol in small devices.




4    Request


  The syntax of request messages is as follows:

   Request =   Request-Line
               *message-header
               CRLF
               [message-body]



4.1  Request-Line

   The Request-Line contains a method token, followed by the
   protocol version, and ending with CRLF. The  elements are
   separated by SP characters.  No CR or LF are allowed  except in
   the final CRLF sequence.


        Request-Line  =  Method SP Protocol-Version CRLF


   When the ENRP protocol is being considered, the Request-Line is:


        Request-Line  =  Method SP ENRP-Version CRLF


   Implementations adhering to this document MUST use ENRP/1.0 for
   their ASAP-Version.



4.2 Method

   The methods are defined below. The Method token is case-sensitive.



        Method  =  "NS-REGISTRATION" | "PE-DOWNLOAD" |
            |"NS-DOWNLOAD" |"HEARTBEAT" |"UPDATE"

Ram & Senthil                                                 [Page  12]

Internet Draft        End Name Resolution Protocol            July 2001

4.2.1 NS-REGISTRAION

   The NS-REGISTRATION method is used within a Request message that is
   sent by a Name Server to another Name Server which is already a
   member of a pool to indicate one of the following:

   (a) Name Server wishes to join an NS-pool
   (b) Name Server, which has already registered itself with an ENRP
       server pool and is currently a member of an Name Server pool,
       extends/modifies the duration of registration.
   (c) Name Server, which has already registered itself with an
       Name Server pool deletes its registration.

   An NS cancels an existing registration by sending a NS-
   REGISTRATION  request with an expiration time (Expires header) of
   zero seconds for a NS handle or the wildcard Endpoint
   Addr designated by a "*" for    all registrations.  If a Name Server
   handle  is already  found to exist, then the NS-Parameters associated
   with it are  updated.

4.2.2  HEARTBEAT

   Heartbeat message are sent between an NS and its caretaker NS, in
   order to check whether the NS is alive.



4.2.3 UPDATE

   Name Server updates its database and sends the UPDATE to other
   servers. UPDATE message can be classified into two categories
   according to the type of updates.

   1) The following update messages are sent by Name Servers to
      (1) other Name Servers within the same Name Server pool, as
      well as (2) to PE that are registered with this ENRP  server
      pool: (Refer ASAP Draft for description
      of these messages)


   (a) New Registration: Name Server wishes to join the server pool

   (b) Registration Update: Name Server, which has already registered
       itself with an ENRP pool and is currently a member of the
       pool, wants to  extend/modify the registration attributes
       (such as duration,  policy etc.).

   (c) De-Registration: Name Server, which has already registered
       itself with an Name Server pool, deletes its registration.

   (c) Heartbeat Failure Notification: Name Server, which is
        currently a member of an ENRP pool, notifies to one/more ENRP
        servers within the pool of the heartbeat failure of another
        Name Server within the same pool.

Ram & Senthil                                                 [Page  13]

Internet Draft        End Name Resolution Protocol            July 2001

   2) The following update messages are sent by Name Servers to other
   Name Servers:

   (a) PE registration notification: Notifying a newly added
   PE to the AS-pool.

   (b) PE registration update: PE , which has already registered
   itself with an AS-pool and is  currently a member of the
   pool, wants to  extend/modify the  registration attributes (such
   as duration, policy etc.).

   (c) PE de-registration: PE, which has already  registered itself
   with an AS-pool, deletes its registration.

   (c) PE heartbeat failure notification: Name Server, detects the
   failure of a PE  during heartbeat check, and
   notifies the other  Name Servers within the NS-pool.

4.2.4 NS-DOWNLOAD

    An NS after joining (registering) with the NS-pool, request the Name
    Server list.

4.2.5 PE-DOWNLOAD

   An NS after computing its NS-ID and identifying the
   caretaker NS, requests PE-DOWNLOAD from its caretaker NS.



5  Response Header


   After receiving and interpreting a request message, the recipient
   responds with an ENRP response message. The response message
   format is  shown below:



        Response  =  Status-Line
                     *message-header
                      CRLF
                     [ message-body ]


5.1 Status-Line

   The first line of a Response message is the Status-Line,consisting
   of the protocol version (Section 8.1.2 ) followed by a numeric
   Status-Code and its associated textual phrase, with each element
   separated by SP characters. No CR or LF is allowed except in the
   final CRLF sequence.

Ram & Senthil                                                 [Page  14]

Internet Draft        End Name Resolution Protocol            July 2001

        Status-Line  =  Protocol-version SP Status-Code SP Reason-
        Phrase CRLF

   When ENRP is used, the Staus-Line is:

      Status-Line  =  ENRP-version SP Status-Code SP Reason-
        Phrase CRLF

   Implementations adhering to this document MUST use ENRP/1.0 for
   their ENRP-Version.

5.1.2  Status Codes and Reason Phrases


   The Status-Code is a 3-digit integer result code that indicates
   the outcome of the attempt to understand and satisfy the request.
   The Reason-Phrase is intended to give a short textual description
   of the Status-Code. The Status-Code is intended for use by
   automata, whereas the Reason-Phrase is intended for the human
   user. The client is not required to examine or display the Reason-
   Phrase.



        Status-Code     =  Success                 ;Fig. 3
                       |   Client-Error            ;Fig. 4
                       |   Server-Error            ;Fig. 5
                        |   extension-code
        extension-code  =  3DIGIT
        Reason-Phrase   =  *<TEXT-UTF8,  excluding CR, LF>


   We provide an overview of the Status-Code below, and provide full
   definitions in Section 7. The first digit of the Status-Code
   defines  the class of response. The last two digits do not have
   any categorization role. ASAP/ENRP/1.0 allows 4 values for the
   first digit:


   2xx: Success -- the action was successfully received, understood,
   and accepted;

   4xx: Client Error -- the request contains bad syntax or cannot be
        fulfilled at this server;

   5xx: Server Error -- the server failed to fulfill an apparently
   valid request;


Ram & Senthil                                                 [Page  15]

Internet Draft        End Name Resolution Protocol            July 2001


   Figures 3 through 5 present the individual values of the numeric
   response codes.


        Success        =  "200"  ;  OK


  Figure 3: Success status codes


       Client-Error  =    "400"  ;  Bad Request
                     |   "401"  ;  Unauthorized
                     |   "403"  ;  Method Not Allowed
                     |   "404"  ;  Not Found
                     |   "409"  ;  Request Entity Too Large


   Figure 4: Client error status codes


        Server-Error  =  "500"  ;  Internal Server Error
                     |   "501"  ;  Not Implemented
                     |   "503"  ;  ASAP/ENRP Version not supported


   Figure 5: Server error status codes



6  Header Field Definitions

   ENRP header fields are similar to SIP or HTTP header fields
   in both syntax and semantics. Some of these headers may be
   present in both request and response messages, while others
   may be present in only either a request or a response message.
   The subsections below describing each of the headers, also
   mentions their applicability within a request/response message.

6.1  Allow

   The Allow header field is used to indicate the list of methods
   that are supported by the responding server.


   Allow   = ("Allow" | "l") ":" *("NS-REGISTRATION" |
            "NS-HEARTBEAT" |"UPDATE" | "NS-DOWNLOAD"|"PE-DOWNLOAD"|
             | quoted-string)


   An example of the Allow header is as follows:

   Allow= "NS-REGISTRATION" "PE-DOWNLOAD"

Ram & Senthil                                                 [Page  16]

Internet Draft        End Name Resolution Protocol            July 2001


6.2 NS-Parameters

   The NS-Parameter header is defined as follows:


   NS-Parameter = ( "NS-Parameter" | "e" ) ":"  NS-ID; Handle

   NS-ID = ("NS-ID" | "i") ":" Digit
   Handle = 1*("(" transport-addr ")" [*(";"contact-params )] [comment
   ])

   transport-addr = IPv4|IPv6
   IPv4 = digit "." digit "." digit "." digit *(":" port-number)
   IPv6 = ( (digit ":" digit ":" digit ":" digit ":" digit ":" digit
             ":" digit ":" digit)
            |(":" digit ":" digit ":" digit ":" digit ":" digit ":"
              digit ":" digit)
            |(":" ":" digit ":" digit ":" digit ":" digit ":" digit ":"
              digit)
            |(":" ":" ":" digit ":" digit ":" digit ":" digit ":"
            digit))
          *(":" port-number)
   port-number = digit
   contact-params = "q"       "=" qvalue
                  | "Expires" "=" delta-seconds
                  | "Policy" "=" ("LRU"|"RR"|token)
   comment = quoted-string



The NS-Parameter has one or more transport addresses, each of which
may optionally have contact parameters and comments associated
with them.

q: The "qvalue" indicates the relative preference among the
      locations given. "qvalue" values are decimal numbers from 0 to
      1, with higher values indicating higher preference. This could
      be used for the case of a multi-homed host where the same service
      may be available at different transport addresses, and a
      preference exists for certain transport addresses.



6.3  Policy

   The Policy header field is used to indicate the preferred
   load policy  of the Name Server. It is used during registration of
   an NS-server, or when the policy associated with a registration
   needs to be  updated.

      Policy   = ("Policy" | "p") ":" ("LRU"|"RR"|token)

   Usually, when the policy header is specified, then an Expires
   header is  included as well. This indicates the expiration time
   associated with the policy.

Ram & Senthil                                                 [Page  17]

Internet Draft        End Name Resolution Protocol            July 2001


   An example of the Policy header is as follows:

   Policy="RR"


6.4  Periodic-Update

   The Periodic-Update header may be used within a HEARTBEAT Request as
   well as Response message. It is used within a HEARTBEAT request when
   an Name Server requests the NS for which it is a caretaker, to
   declare its presence to the it periodically. It is used within a
   response to a HEARTBEAT Request when the NS indicates whether it
   supports the periodic presence notification feature or not.

   For example, Care taker NS (Say A) requests a periodic-update
   heartbeat by generating the HEARTBEAT request message  and including
   the Periodic-Update header with a value "Yes" to  NS (Say B).   If
   the Name Server B can report its presence periodically
   without getting any further request from the care taker NS (A) , then
   the Name Server B    can respond to the HEARTBEAT Request
   by including a Periodic-Update header with value of "Yes".


   Periodic-Update = ("Periodic-Update" | "u") ":" "Yes" ";"


   An example of the Periodic-Update header is as follows:

   Periodic-Update="Yes"


6.5  NS-ID

The NS-ID header field is used to convey the unique identification (ID)
of an NS within an NS-pool.  The syntax is as follows:

   NS-ID = ("NS-ID" | "i") ":" Digit

  Example:

   NS-ID=2


6.6   Server-Type

The Server-Type header field is used to convey the type of server
that is being referred to. Currently defined server types are: NS and
PE.

  Server-Type = ("Server-Type" | "r") ":" ("NS"|"PE")

Ram & Senthil                                                 [Page  18]

Internet Draft        End Name Resolution Protocol            July 2001

  Example:

  Server-Type=NS

6.7   Transaction-ID

The Transaction-ID header field is used to associate a set of
messages to the same transaction. Initial request messages MUST carry
a locally unique transaction-ID. Responses and subsequent requests
that are related to this request, MUST use the same Transaction-ID.

  Transaction-ID = ("Transaction-ID" | "t") ":" UUID

Example:

Transaction-ID= "124F-AB12-874-2344-2344-1234-2345-9EDE"


6.8  Expires

The "Expires" parameter indicates how long the Name server handle is
valid. The parameter is a number indicating seconds. When not present,
the default value is taken to be the maximum, which is 2**32-1.
Implementations MAY treat values larger than 2**32-1 (4294967295 seconds
or 136 years) as equivalent to 2**32-1.

Expires =("Expires" | "x") ":"  delta-seconds

Example:

Expires = 1000


6.9 Security Related Headers

6.9.1 WWW-Authenticate

   The WWW-Authenticate header, typically included within a 401 Response
   message, is used to indicate that the Requesting entity needs to be
   authenticated.

      WWW-Authenticate  = "WWW-Authenticate" ":" 1#challenge

   Based on RFC2617, when Digest Authentication is used, the
   challenge is as follows:

      challenge        =  "Digest" digest-challenge

      digest-challenge  = 1#( realm | [ domain ] | nonce |
                          [ opaque ] |[ stale ] | [ algorithm ] |
                          [ qop-options ] | [auth-param] )

Ram & Senthil                                                 [Page  19]

Internet Draft        End Name Resolution Protocol            July 2001

      domain            = "domain" "=" <"> quoted-string <">
      nonce             = "nonce" "=" nonce-value
      nonce-value       = quoted-string
      opaque            = "opaque" "=" quoted-string
      stale             = "stale" "=" ( "true" | "false" )
      algorithm         = "algorithm" "=" ( "MD5" | "MD5-sess" |
                           token )
      qop-options       = "qop" "=" <"> 1#qop-value <">
      qop-value         = "auth" | "auth-int" | token


6.9.2 Authorization

   The Authorization header is included within a Request message, so
   that the Requesting entity may authenticate itself to the receiver.

          Authorization  = "Authorization" ":" credentials

   Based on RFC2617, when Digest authentication is used, the
   Authorization header is as follows:

       credentials      = "Digest" digest-response
       digest-response  = 1#( username | realm | nonce
                       | response | [ algorithm ] | [cnonce] |
                       [opaque] | [message-qop] |
                           [nonce-count]  | [auth-param] )

       username         = "username" "=" username-value
       username-value   = quoted-string
       message-qop      = "qop" "=" qop-value
       cnonce           = "cnonce" "=" cnonce-value
       cnonce-value     = nonce-value
       nonce-count      = "nc" "=" nc-value
       nc-value         = 8LHEX
       response         = "response" "=" request-digest
       request-digest = <"> 32LHEX <">
       LHEX             =  "0" | "1" | "2" | "3" |
                           "4" | "5" | "6" | "7" |
                           "8" | "9" | "a" | "b" |
                           "c" | "d" | "e" | "f"


6.9.3 Authentication-Info

   The Authentication-Info, typically included in a 200 Response
   message, conveys any optional information following successful
   authentication. The Authentication-Info based on RFC2617 is modified
   by appending a token field to carry the authorization token:

        AuthenticationInfo = "Authentication-Info" ":" auth-info
         auth-info          = 1#(nextnonce | [ message-qop ]
                               | [ response-auth ] | [ cnonce ]
                               | [nonce-count] )

Ram & Senthil                                                 [Page  20]

Internet Draft        End Name Resolution Protocol            July 2001

        nextnonce          = "nextnonce" "=" nonce-value
        response-auth      = "rspauth" "=" response-digest
        response-digest    = <"> *LHEX <">



6.9.4 Encryption

   The Encryption header is used in Requests and Responses, when
   encryption is employed. The message body and all headers following
   a blank line are encrypted. As specified in RFC2543bis3:

        Encryption         =  "Encryption" ":" encryption-scheme 1*SP
                              #encryption-params
        encryption-scheme  =  token
        encryption-params  =  generic-param


6.9.5 Require

   The Require header is used to indicate that the recipient needs to
   support the specified option. As specified in RFC2543:

        Require  =  "Require" ":" 1#option-tag

   When an entity requires the recipient to encrypt the messages, it
   includes the Require header with the following option-tag:

        Require: org.ietf.asap.encrypt-response

6.9.6 Response-Key

   The Response-Key header is used within a Request to indicate that the
   responder SHOULD use the enclosed key to encrypt responses. As
   specified in RFC2543:

        Response-Key  =  "Response-Key" ":" key-scheme 1*SP #key-param
        key-scheme    =  token
        key-param     =  generic-param




7 Status Code Definitions

7.1 Successful 2xx

   The request was successful and MUST terminate a search.

 7.1.1 200 OK

The request has succeeded. The information returned with the response

Ram & Senthil                                                 [Page  21]

Internet Draft        End Name Resolution Protocol            July 2001

depends on the method used in the request, for example:

   o ENRP_REGISTRATION: The registration has succeeded, and the ENRP
     Server  treats the message body of the Response message according
     to
     Content

   o ENRP_REGISTER (Update ): The registration update has succeeded
     and the Name Server end point treats the message body of the
     Response message according to its  Content

   o ENRP_HEARTBEAT: The heartbeat has succeed, the Name Server
      treats  the message body according to its Content.


7.2 Request Failure 4xx

     4xx responses are definite failure responses from a particular
     server.  The Name Server SHOULDNOT retry the same
     request without modification (e.g., adding appropriate
     authorization). However,the same request to a different server
     might be successful.


7.2.1 400 Bad Request

     The request could not be understood due to malformed syntax.
     The Reason-Phrase SHOULD identify the syntax problem in more
     detail,
     e.g., "Missing Handle name".

7.2.2 401 Unauthorized

     The request requires user authentication.  This could occur
     either when the request did not contain an Authorization header
     (non- compliant client), or when the Authorization header is
     invalid. This response is  issued by

     (1) Name Server when the PE does registration/update/deregistration
     ,or
     (2) When PU tries to exchange data with PE, or
     (3) When PU tries to NAME-RESOLUTION request with Name Server


7.2.3 403 Method Not Allowed

     The method specified in the Request-Line is not allowed for the
     receipt. The response MUST include an  Allow header field
     containing a list of valid methods supported by the recipient.

7.2.4 404 Not Found

Ram & Senthil                                                 [Page  22]

Internet Draft        End Name Resolution Protocol            July 2001

    The server has definitive information that the resource does not
    exist. For instance, when a PU sends a NAME-RESOLUTION Request to
    the Name Server and the Pool Handle contained therein does not
    exist, then the Name Server returns a 404 Response.




7.2.5  409 Request Entity Too Large

      The PE  or Name Server is refusing to process a request
      because the request entity is larger than the server is willing
      or able to process. The server MAY close the connection to
      prevent the client from  continuing the request.

      The requesting entity may retry the request at a later time.



7.3 Server Failure 5xx

     5xx responses are failure responses given when a server itself
     has  errored. They are not definitive failures, and the
     requesting entity MUST NOT terminate a search if other possible
     locations remain  untried.

7.3.1 500 Server Internal Error

     The  Name Server encountered an unexpected condition that
     prevented  it from fulfilling the request. The client MAY
     display the  specific error  condition, and MAY retry the
     request after several seconds.

     The client may retry the request at a later time.

7.3.2 501 Not Implemented

     The  Name Server does not support the  functionality required to
     fulfill the    request. This is the  appropriate response when it
     does not recognize the request  method and is not capable of
     supporting it.


7.3.3 502 Service Unavailable

     The ENRP Name server or PE is currently unable to handle the
     request due to a temporary overloading or maintenance of the
     server. The implication is that this is a temporary condition
     which will be alleviated after  some delay.

     Note: The existence of the 502 status code does not imply that a
     server has to use it when becoming overloaded. Some servers MAY
     wish to simply refuse the connection.

Ram & Senthil                                                 [Page  23]

Internet Draft        End Name Resolution Protocol            July 2001

7.3.4 503 Version Not Supported

     The  Name Server does not support, or refuses to support,
     the ASAP/ENRP protocol    version that was used in the request
     message. The PE is indicating that it is unable or
     unwilling to complete the  request    using the same major
     version as the client, other than with this  error message.


8. Behavior of Name Server

8.1 NS  - Startup and Shutdown interaction Messages

   This section describes the rules for Name Servers for generating
   and processing requests and responses during startup.

8.1.1 Registering Entity Resolves the Name Server with which to
    Register

   Prior to registering an Name Server with an NS-pool, the registering
   entity needs to resolve the IP address of an Name Server(s) with
   which it registers.

   Several mechanisms are possible, whereby the registering entity
   can determine the IP address of an Name Server to register with.
   For instance, (1) a registering entity may be manually configured
   with a set of IP addresses of Name Servers that it may register
   with, or (2) a registering entity may be configured with the DNS
   address of a Name Server(s) that it may register with following
   which it uses a DNS query and local policy to determine the
   specific IP address of the Name Server to register with, or
   (3) the Service Location Protocol (SLP) may be used to discover a
   suitable Name Server.

   We briefly describe a possible operation procedure when DNS is
   used. The registering entity is configured with the DNS address of
   an Name Server(s)that it may register with. It performs a DNS
   query which returns a set of IP addresses corresponding to the
   queried DNS address. Based on this returned list of IP addresses
   and any local policies, the registering entity selects an IP
   address for registration.

   While the selection of IP address is implementation specific, a
   sample procedure for selection of IP address is indicated below:

   (a) Selection criterion is based on the order of returned IP
       addresses. In other words, the first IP address in the list
       could be used for  registration. If the registration fails,
       the next IP address in the list is tried, and so on.


   (b) Selection criterion is based on a random selection of returned
      IP addresses from the DNS query.

Ram & Senthil                                                 [Page  24]

Internet Draft        End Name Resolution Protocol            July 2001

      It may be noted that the above specified mechanisms are outside
      the scope of the ASAP/ENRP protocol itself, and that the above
      specified mechanisms are possible ways of resolving the IP
      address  of the Name Server.


8.1.2 Joining Name Server needs to be registered with an NS

   An Name Server may register  with an NS-pool by
   contacting one of the NS in the pool. The registering Name Server
   resolves the IP address of the Name Server to register with, as
   specified in Section 8.1.1.

   In order to register with the selected IP address, the Name Server
   sends a Request message to the selected IP address with method
   set to NS-REGISTRATION. Implementations adhering to this document
   MUST set the ENRP-version field to ENRP/1.0. Hence, the Request-
   line is as follows:

        NS-REGISTRATION ENRP/1.0



  For instance, a typical Register-Request message may look like
  this:

   NS-REGISTRATION ENRP/1.0
   Transaction-ID=0xde34682a
   Expires: 7200
   Authorization:


   An Name Server MUST be authenticated before it can register
   with an Name Server. In order to handle such authentication, the
   ENRP Registration Request message can optionally include an
   Authorization header. Security procedures are described Section 9.


8.1.3   Name Server De-Registering itself from the Pool

   An Name Server that wishes to withdraw its services from an NS-pool,
   does so by issuing a suitable de-register message to the
   Name Server(s) and also to the PE.  An explicit de-
   register  message is  not provided for the purpose. Instead, de-
   registration is inferred by the use of a NS-REGISTRATION  message
   with an Expires header field of value 0.


   For instance, a typical Register-Request message that is used for
   De-Registration purposes may look like this:


Ram & Senthil                                                 [Page  25]

Internet Draft        End Name Resolution Protocol            July 2001

      NS-REGISTRATION  ENRP/1.0
      Transaction-ID=0x34ae78d
      Expires: 0
      Authorization:
      NS-ID: 3


8.1.4 Download of ASAP/ENRP pool element information on to NS

8.1.4.1 Name Server Requests list of Name Servers in NS-pool

After NS (say A) has successfully registered itself with
an NS-pool by sending an NS-REGISTRATION  request message to
an NS (say B) in the NS-pool, it needs to obtain the list of ENRP
servers in the pool. This is obtained by the NS A sending an
NS-DOWNLOAD request message to NS B (which is the NS
server that it got the registration response from.)

The format of the Request-Line of an NS-DOWNLOAD request message is
as follows

     NS-DOWNLOAD  ENRP/1.0

A typical message is as follows:

    NS-DOWNLOAD  ENRP/1.0
    Transaction-ID=0x34ae78d
    Authorization:


8.1.4.2 Response to NS-DOWNLOAD message requesting Name Server list

After an NS (say A) has successfully registered itself with
an NS-pool by sending an NS-REGISTRATION request message to an
NS (say B) in the NS-pool, it needs to obtain the list of NS
servers in the pool. This is obtained by the NS A sending an
NS-DOWNLOAD request message to NS B (which is the NS that it got the
registration response from.)

When NS B receives such an NS-REGISTRATION request message, it
responds by sending a sequence of NS-Parameters. The NS-Parameter
provides information on parameters such as IP addresses), policy,
timers, NS-ID etc.

An example of a successful response to an NS-DOWNLOAD message is
as follows. Here, three Name Servers (with IDs 1,2 and 3) are present
in the NS-pool. Name Server with NS-ID 1 is a multi-
homed server with two interfaces - one  with transport address
172.19.134.20:568 and the other with transport address
172.19.134.21:568. On the other  hand, Name Server with NS-ID of 2 and
3, each have a single  interface.


Ram & Senthil                                                 [Page  26]

Internet Draft        End Name Resolution Protocol            July 2001

    200  ENRP/1.0
    Transaction-ID=0x34ae78d
    NS-Parameter:1;
    172.19.134.20:568;Expires:5000;172.19.134.21:568;Expires:6000;
    NS-Parameter:2;172.19.45.4:40;Expires:65000
    NS-Parameter:3;172.20.65.45:568;Expires:42000
    Policy: RR
    Authorization:


After the requesting NS receives the list of NS-Parameters
based on a successful NS-DOWNLOAD request, it computes its NS-ID  by
suitable navigation of the  existing NS-IDs in the NS-ID list. (see Sec
2.2.2). Determination of the caretaker Name Server is also made by the
NS at this point (see Sec 2.2.2).


8.1.4.3 NS requests PE list from caretaker NS

An NS queries its caretaker NS for a list of PE, by sending an NS-
DOWNLOAD message. The Server-Type header is set to PE to denote that the
list of PE is queried
for.

An example of an NS-DOWNLOAD message is as follows:


    NS-DOWNLOAD  ENRP/1.0
    Transaction-ID=0x34ae78d
    Server-Type: PE
    Authorization:


8.1.4.4 Response to NS-DOWNLOAD message requesting PE list

Upon receiving an NS-DOWLOAD request message with Server-Type set
to PE, the caretaker NS responds with a list of PE-Parameters. The PE-
Parameter includes information such as the
IP addresses), policy, timers, and NS-ID of Name
Server which is responsible for performing health check.

An example usage of this message is as follows. Here, Name Server
with NS-ID of 1 is the caretaker NS for two PEs
 within the  AS-pool www.foo.com. The first PE is multi-homed
 with two interfaces - transport address of 172.19.134.20:568 and
 172.19.134.21:568. The second PE has a single interface with transport
 address of 172.19.45.4:40.

Also, illustrated in the message below is the usage of proxies. The
NS with NS-ID of 2 is the caretaker Name Server for a
legacy application server with transport address of 172.20.65.45:568,
and the proxy PE that is responsible for handling the legacy application
server has an transport address of 145.45.65.30:657.

Ram & Senthil                                                 [Page  27]

Internet Draft        End Name Resolution Protocol            July 2001


    200  ENRP/1.0
    Transaction-ID=0x34ae78d
    Server-Type: PE
    Pool-Handle: www.foo.com
    NS-ID:1
    PE-Parameter:
    172.19.134.20:568;Expires:5000;172.19.134.21:568;Expires:6000
    NS-ID:1
    PE-Parameter: 172.19.45.4:40;Expires:65000
    NS-ID:2
    PE-Parameter: 172.20.65.45:568;Expires:42000;Proxy-
    Addr:145.45.65.30:657
    Policy: RR
    Authorization:


8.2   Interaction between a pair of NS

The following messages are generated by Name Server in the NS-pool to
other Name Servers and to PE to notify changes of NS in the NS-pool.

8.2.1 NS Updates NS status to PEs and other NS in the NS-Pool


The following update messages are sent by Name Servers to
(1) all other Name Servers within the same NS-pool, as well
as (2) to all PE that are registered with this
NS-pool:

   (a) New NS Registration Notification: When an NS (say,
       A) wishes to join the NS-pool, it registers itself
       with an NS (say, B) that is  already in the NS-pool. NS B then
       uploads suitable information (including the current list of NS in
       the pool as well as the current list of PE that are managed by
       this NS-pool) to Name Server A.
       Name Server A then  notifies all Name Servers and PE
       about  its new registration. (Sec 8.2.1.1)

   (b) NS Registration Update: Name Server, which has already
       registered itself with an NS-pool and is currently a member
       of the pool, wants to extend/modify the registration
       attributes (such as duration, policy etc.). (Sec 8.2.1.2)

   (c) NS De-Registration Notification: Name Server, which has
       already registered itself with an NS-pool, deletes
       its registration by notifying its caretaker Name Server.
       After receiving such de-registration message from an NS, the
       caretaker NS-server notifies all other NS in the NS-pool of this
       de-registration. (Sec 8.2.1.3 )

   (d) Heartbeat Failure Notification: Name Server, which is currently

Ram & Senthil                                                 [Page  28]

Internet Draft        End Name Resolution Protocol            July 2001

       a member of an NS-pool, notifies to one/more Name Servers
       within the pool of the  heartbeat failure of another NS within
       the
       same pool. (Sec 8.2.1.3 )




8.2.1.1 New NS Registration Notification

Newly added Name Server sends its  update message to the other NS and
PE.  This informs that the new NS is part of the NS-pool.

NS-UPDATE with Server-Type = ENRP and NS-ID refers to the
Name Server ID which has joined the pool.


 For instance,  NS-UPDATE  message may look like this:

      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      Expires: 10000
      Server-Type:ENRP
      NS-Parameter: NS-ID:2;172.20.65.45:568;Expires:42000;
      Authorization:


8.2.1.2  NS Registration Update


   An Name Server that is already in an NS-pool may update
   its registration. Such update could include modification of
   registration attributes (e.g. expiration time of the registration,
   policy associated with the registration etc.). Registration
   updates are performed using a Request message with the NS-UPDATE
   method.

  NS-UPDATE with Server-Type = ENRP and NS-ID refers to
  the NS which has updated its registration attributes.

   For instance, when an NS wishes to increase its
   registration expiration to a new value of 10000 seconds, then a
   Request message  as follows is sent:

      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      Server-Type:ENRP
      NS-Parameter: NS-ID:2;172.20.65.45:568;Expires:10000;
      Authorization:


8.2.1.3 NS Heart beat Failure or NS de-Registration Notification
        Updates

Ram & Senthil                                                 [Page  29]

Internet Draft        End Name Resolution Protocol            July 2001

 Caretaker Name Server updates all the other Name Servers and PE in
 the event of Name Server heartbeat failures or  de-Registration. Note
 that the  NS-ID represents the Name Server  which has to be
 removed from the NS-pool.Expires value is set to 0.

 NS-UPDATE with Server-Type = ENRP and NS-ID refers to the NS which is
 no more part of the NS-pool.


 For instance, an NS-UPDATE may look like:

       NS-UPDATE ENRP/1.0
       Transaction-ID=0x34ae78d
       Expires: 0
       Server-Type:ENRP
       NS-ID: 3
       Authorization:


8.2.2  Name Server updating a PE Status to all NS

The following update messages, dealing with the update of PE, are
sent by an NS to other NS in the NS-pool:


   (a) PE registration notification: Notifying a newly added
   PE to the server pool.

   (b) PE registration update: PE , which has
   already registered itself with an AS-pool and is
   currently a member of the pool, wants to extend/modify the
   registration attributes (such as duration, policy etc.).

   (c) PE de-registration notification: PE , which has already
   registered itself with an AS-pool, deletes its registration.

   (d) PE heartbeat failure notification: NS,
   detects the failure of a PE during heartbeat
   check, and notifies the other NSs within the NS-pool.

8.2.2.1  PE registration notification

NS updates other NS(s) regarding newly registered PE .Name
Server which has received the PE-REGISTRATION request chooses Caretaker
NS for that PE. NS-ID denotes the Caretaker NS for that PE. The
caretaker NS is responsible for health check of the PE.

An example is as follows:

      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      PE-Parameter:172.19.146.54:675

Ram & Senthil                                                 [Page  30]

Internet Draft        End Name Resolution Protocol            July 2001

      Policy:LRU
      Expires: 10000
      NS-ID: 3
      Authorization:

This implies that the PE with PE-Parameter "172.19.146.54:675" has been
assigned a caretaker NS with NS-ID of 3.

Alternatively, the application server may be a legacy application
server that does not support ASAP/ENRP protocols. Such an application
server may rely on proxy PE to act on its behalf. In this
case, the proxy PE would register the application server with the NS.
When the NS performs a registration notification to
other NSs, it then needs to include both the transport
address of the legacy application server, as well as the transport
address of the proxy PE. The transport address of the legacy application
server is needed in order to respond to a query by a PU (i.e., a NAME-
RESOLUTION REQUEST message). The transport address of the proxy PE is
needed for heartbeat check. An example is as follows:


      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      PE-Parameter:172.19.146.54:675;Proxy: 172.20.43.45:45
      Policy:LRU
      Expires: 10000
      Authorization:
      NS-ID: 3

 This implies that the PE with PE-Parameter "172.19.146.54:675;Proxy:
 172.20.43.45:45" has been assigned a caretaker NS with NS-ID of 3.


8.2.2.2  PE registration update

Caretaker NS updates other NS(s) regarding a registration update to an
already registered PE. This is invoked when the caretaker NS has
received the PE-REGISTRATION request message indicating the update.

An example of an NS-UPDATE request message is as follows:

      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      PE-Parameter:172.19.146.54:675
      Policy:LRU
      Expires: 10000
      Authorization:


8.2.2.3 PE de-registration or interface heartbeat failure
notification

Ram & Senthil                                                 [Page  31]

Internet Draft        End Name Resolution Protocol            July 2001

 An PE may have multiple interfaces by which it may be
 reached. This is the  case of a multi-homed PE . In such a
 case, the NS  needs to be  aware of the availability of
 each interface associated with the PE . Thus, heartbeat
 check is done for each interface, and any failure of such  an
 interface  heartbeat check is notified to all the NSs.

 A multi-homed PE may de-register one/more/all of its
 interfaces associated  with it. The caretaker NS that
 receives such a  de-registration request  message, also sends an
 NS-UPDATE message to all the NSs  notifying  them of
 such de-registration.

 The caretaker NS updates its ENRP database and sends an
 NS-UPDATE message  with the Expires field set to
 zero, to other NSs.

 For instance, an NS-UPDATE may be as follows:

        NS-UPDATE ENRP/1.0
        Transaction-ID=0x34ae78d
        PE-Parameter:172.19.146.54:675
        Expires: 0
        Authorization:


In the above example, the de-registration applies to the transport
address indicated in the PE-Parameter header. Alternatively, the
Expires field within the PE-Parameter header may be set to zero in order
to indicate de-registration.

For instance, an example of the usage of this would be:

       NS-UPDATE ENRP/1.0
       Transaction-ID=0x34ae78d
       PE-Parameter:172.19.146.54:675;expires=0
       Policy:LRU
       Authorization:


8.2.3   Caretaker NS sends a Heartbeat Request to other NSs in NS-Pool

Associated with each NS is a caretaker NS. The caretaker NS is
responsible for heartbeat check of the NS under its care. A
caretaker NS will send the HEARTBEAT request to the NS under its
care, to examine whether the NS is alive.  The format of the
Request-Line of a HEARTBEAT request message is as follows:

   HEARTBEAT ENRP/1.0


An example of a heartbeat request is as follow s:

Ram & Senthil                                                 [Page  32]

Internet Draft        End Name Resolution Protocol            July 2001

      HEARTBEAT ENRP/1.0
      Transaction-ID=0x34ae78d
      Periodic-Update: Yes;600
      Authorization:

The heartbeat check that a caretaker NS performs is done on
a per-interface basis for the NS under its care. If an ENRP
server is multi-homed and has several interfaces by which the ENRP
server may be reached, then the caretaker NS may need to
poll (send HEARTBEAT request to) each interface associated with the
NS under its care.


8.2.4  NS sends Heartbeat Response to Care-Taker NS

Upon receiving a Heartbeat Request from its caretaker NS, an
NS responds back to its caretaker NS with a Heartbeat Response
message. The response indicates whether a Periodic-
Update is supported or not.

The format of HEARTBEAT response message is as follows:

     200 ENRP/1.0
     Transaction-ID=0x34ae78d
     Periodic-Update: Yes
     Authorization:

The interface from which the response to the heartbeat request message
is received, is the interface that corresponds to the heartbeat
response.


8.2.5  NS notifies all other NSs in NS-pool of a change in
        caretaker NS


This is the case of a change of caretaker NS notification.
When the caretaker NS of a PE changes, then such a
change needs to be notified to all NSs in the NS-pool.


      NS-UPDATE ENRP/1.0
      Transaction-ID=0x34ae78d
      NS-ID:1;
      PE-Parameter:
      172.19.134.20:568;Expires:5000;172.19.134.21:568;Expires:6000
      NS-ID:2;
      PE-Parameter: 172.19.45.4:40;Expires:65000
      Policy:LRU
      Expires: 10000
      Authorization:

This implies that the PE with PE-Parameter of
"172.19.134.20:568;Expires:5000;172.19.134.21:568;Expires:6000" is

Ram & Senthil                                                 [Page 33]

Internet Draft        End Name Resolution Protocol            July 2001

assigned a caretaker NS with NS-ID of 1. Similarly, the PE with PE-
Parameter of "172.19.45.4:40;Expires:65000" has been assigned a
caretaker NS with NS-ID of 2.


9 Security Considerations

9.1 Confidentiality and Privacy: Encryption

9.1.1 Application-Level Encryption

   Using public-key or shared-key based mechanisms, some or all headers
   as well as the message body within a Request and/or Response may be
   encrypted. The Encryption header is included to indicate the
   encryption mechanism employed. A blank line is used to indicate the
   start of encryption, and all headers following the blank line and the
   message body are encrypted. The mechanism follows that in RFC2543.


9.1.2 Lower-Layer Encryption

In addition or instead of application layer encryption techniques, lower
layer encryption techniques (e.g.IPSec, TLS, or link layer) may be
employed. Such encryption may provide certain benefits,
such as better protection against traffic analysis attacks (e.g.
using link layer encryption).


9.2 Message Integrity and Access Control: Authentication

   The ENRP protocol utilizes mechanisms provided within HTTP and SIP
   for message integrity and/or authentication purposes. The Basic and
   Digest authentication schemes may be used for authentication. In
   addition, public-key based mechanisms may also be used. Irrespective
   of the type of authentication mechanism, the following procedure is
   adopted:

      - The WWW-Authenticate header is used within a 401 Response
      message, by the authenticator in order to indicate the
      authenticating mechanism and possibly the challenge.
      - The Authorization header is used within a re-issued Request
      message, in order to pass the authenticating information to the
      Authenticator.
      - The Authentication-Info header is used within a 200 Response
      message, by the authenticator in order to pass any token that may
      be needed by the entity that sent the Request message.

   Typically, all communication needs to be authenticated.

9.2.1 Illustration of Digest Scheme

   While we illustrate the use of the Digest authentication scheme here,

Ram & Senthil                                                 [Page  34]

Internet Draft        End Name Resolution Protocol            July 2001

   a similar approach may be followed for other authentication schemes -
   Basic authentication, public-key based authentication etc.

   When an NS first registers with an NS in an NS-pool:

     - An NS (say, A) first registers with an NS (say B) in an NS-pool
     by sending a NS-REGISTRATION Request message without the
     Authorization header.
     - The NS B in the NS-pool returns a 401 Response message with a
     WWW-Authenticate header indicating that Digest authentication is
     needed.
     - The NS A sends a new NS-REGISTRATION Request message with an
     Authorization header included, in order to authenticate itself.
     - Upon successful authentication, the NS B returns a 200
     Response message. An Authentication-Info header is included, and
     this contains a session key that all the NSs in the NS-pool share.

   For subsequent interactions between a pair of NS in the NS-pool:

     - All messages include an Authenticating Code within the
     Authorization header. The Authenticating Code is based on the
     session key shared by all the NS in the NS-pool.



Appendix

A. Implementation   Issues

For Implementation issues Refer ASAP draft  Appendix A for more
detail.


B. Summary of Augmented BNF

   Please refer to [RFC2543] for a summary.


C. Acknowledgement


We wish to thank the Maureen Stillman and John Loughney for providing
valuable comments and suggestions.



Ram & Senthil                                                 [Page  35]

Internet Draft        End Name Resolution Protocol            July 2001

D.  Author's Contact Address

Ram Gopal.L
Senthil Sengodan

Nokia Research Center
5 Wayside Road
Burlington, MA 01803
USA

email: ram.gopal@nokia.com
       senthil.sengodan@nokia.com


E.  Reference


[RFC 822  ]
D. Crocker, "Standard for the format of ARPA Internet text
messages," Request for Comments 822, Internet Engineering Task
Force,Aug. 1982.

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


[RFC 2234]
D. Crocker, Ed., and P. Overell, "Augmented BNF for syntax
specifications:  ABNF," Request for Comments 2234, Internet
Engineering Task Force, Nov.  1997


[RFC 2279 ]
F. Yergeau, "UTF-8, a transformation format of ISO 10646,"
Request for Comments 2279, Internet Engineering Task Force, Jan.
1998.

[RFC2616]
R. Fielding et al. Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616,
Internet Engineering Task Force, June 1999

[RFC 2617]
J. Franks et al, HTTP Authentication: Basic and Digest Access
Authentication, RFC 2617 Internet Engineering Task Force, June 1999

[RFC2960]
R. R. Stewart et al., "Stream Control Transmission
Protocol", RFC 2960, November 2000

[ASAP-Draft]

Ram Gopal and Senthil Sengodan , "Aggregate Server Access Protocol
Candidate ",draft-gopal-asap-candidate-00.txt, July, 2001.


Ram & Senthil                                                 [Page  36]


Internet Draft        End Name Resolution Protocol            July 2001

[Papoulis]
A.Papoulis, Probability, Random Variables, and Stochastic Processes,
3rd Edition, McGraw Hill Publication.

[Mullender]
Sape Mullender , Distributed Systems, 2nd Edition, Addison-Wesley

[Rser-Arch]
M. Tuexen, "Architecture for Reliable Server Pooling",
Internet Draft,draft-ietf-rserpool-arch-00.txt, April, 2001.

[Rser-Comp]
J. Loughney, "Comparison of Protocols for Reliable Server Pooling",
Internet draft,draft-ietf-rserpool-comp-00.txt, May 1,2001


[Rser-req]
M. Tuexen,"Requirements for Reliable Server Pooling",
Internet draft,draft-ietf-rserpool-reqts-03.txt,May 9 2001

[SIP Draft]
Handley, "Session Initiation Protocol",Internet draft,
draft-ietf-sip-rfc2543bis-02.txt, Nov 2000.

[Stevens]
W. R. Stevens, TCP/IP illustrated: the protocols , Vol. 1.
Reading, Massachusetts: Addison-Wesley, 1994.