NETWORK Working Group                           Octavian Catrina, Editor
INTERNET-DRAFT                                  International University
Category: Standards Track                                    Dave Thaler
22 October 2002                                            Bernard Aboba
Expires in six months                                          Microsoft
                                                            Erik Guttman
                                                        Sun Microsystems

         Zeroconf Multicast Address Allocation Protocol (ZMAAP)
                   <draft-ietf-zeroconf-zmaap-02.txt>

Status of this Memo

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

   Comments on this document should be sent to the zeroconf@merit.edu
   mailing list.

   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.

Copyright Notice

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

Abstract

   Today, with the rapid rise of home networking, there is an increasing
   need for auto-configuration mechanisms. This document specifies a
   protocol to be used on small networks without a multicast address
   allocation server in order to allow peer to peer allocation of
   multicast addresses.








Catrina, et. al.         Expires: 22 April 2002                 [Page 1]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


Table of Contents

      1.  Introduction . . . . . . . . . . . . . . . . . . . . . . .
      1.1   Changes since the last version of this document  . . . .
      2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .
      3.  Requirements and Design Considerations . . . . . . . . . .
      4.  Zeroconf Multicast Address Allocation Protocol . . . . . .
      4.1   Protocol Overview  . . . . . . . . . . . . . . . . . . .
      4.2   Transmission of ZMAAP messages . . . . . . . . . . . . .
      4.3   Protocol Message Format  . . . . . . . . . . . . . . . .
      4.4   ZMAAP mini-MAAS behavior . . . . . . . . . . . . . . . .
      4.4.1   Claiming an Address  . . . . . . . . . . . . . . . . .
      4.4.2   Defending an Address . . . . . . . . . . . . . . . . .
      4.4.3   Verifying a Lease Descriptor . . . . . . . . . . . . .
      4.4.4   Detecting a Collision  . . . . . . . . . . . . . . . .
      4.4.5   Deallocation and Lease Lifetime  . . . . . . . . . . .
      5.  Timer Default Values . . . . . . . . . . . . . . . . . . .
      6.  Security Considerations  . . . . . . . . . . . . . . . . .
      7.  IANA Considerations  . . . . . . . . . . . . . . . . . . .
          Appendix A:  Application Programmer Interface (API) Issues
          Appendix B:  Session Management Implications . . . . . . .
          Acknowledgments  . . . . . . . . . . . . . . . . . . . . .
          References . . . . . . . . . . . . . . . . . . . . . . . .
          Author's Contact Information . . . . . . . . . . . . . . .
          Full Copyright Statement . . . . . . . . . . . . . . . . .



1.  Introduction

   Servers and network administration staff are not available in all
   environments. Home networks and ad-hoc networks, for example, need to
   rely entirely on zero-configuration protocols [ZCREQTS]. This
   document defines the Zeroconf Multicast Address Allocation Protocol
   (ZMAAP), that allows hosts on small networks to allocate addresses
   without the need for multicast address allocation servers.

   The Internet Multicast Address Allocation Architecture [RFC2908]
   provides a three-layer framework for allocating multicast addresses.
   The top layer is used to decide which address range to use for
   allocation.  The middle layer is used to coordinate among peers
   allocating from the same range.  The bottom layer is used to provide
   scalability in a managed environment whereby a small number of
   servers can allocate addresses to a large number of hosts.  In a
   zero-configuration environment, less scalability is required, and
   hence the bottom layer will not be needed.  ZMAAP thus fits into the
   Multicast Address Allocation Architecture as a middle-layer protocol
   which is used between end nodes.

   ZMAAP allows applications to allocate unique addresses from certain
   address ranges, to defend those allocations and to detect conflicts


Catrina, et. al.         Expires: 22 April 2002                 [Page 2]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   in those allocations.

1.1 Changes since the previous version of this document

   1. Timers introduced before AIU responses to ACLM messages are sent

      If there are many members of a group, an ACLM for that group's
      allocation would cause a massive implosion of AIUs - like a
      distributed denial of service attack.  While it is unlikely that
      ZMAAP will be used for large groups maintained by of thousands of
      mini-MAASs, we won't rule out the possibility.

      Currently mini-MAASs respond to ACLMs with an AIU immediately.

      Now, before sending an AIU in response to an ACLM, mini-MAASs will
      wait a random interval and listen for other AIUs defending the
      allocation.  If such an AIU is received, the mini-MAAS cancels its
      waiting timer and does not send the AIU.

   2. To prevent thrashing, rules slow down and stop allocation attempts

      As more and more addresses in an address space are allocated,
      claims for random address ranges in the address space have a
      higher chance of collision.  To prevent thrashing (excessively
      repeated attempts for allocation), new rules are

   3. Security: Text on WEP removed

   4. Add a magic number to ZMAAP headers

      This will be used to detect collision in the use of the same
      multicast address by multiple applications.

   5. Clarification of address range conflicts

      Non overlapping ranges conflict even if the lease id is the same.


2.  Terminology

   This document uses the following terms:

   Multicast
     IP Multicast, as defined in [RFC1112] and [RFC2460].

   Multicast Address
     An IP multicast address or group address, as defined in [RFC1112]
     and [RFC2373]. An identifier for a group of nodes.

   Multicast Scope
     A range of multicast addresses configured so that traffic


Catrina, et. al.         Expires: 22 April 2002                 [Page 3]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


     sent to these addresses is limited to some subset of the
     internetwork. See [RFC2365] and [RFC2373].

   Multicast Address Allocation Server (MAAS)
     A node providing multicast address allocation services to
     network clients.

   Mini-MAAS
     A service providing multicast address allocation services to
     applications running on the same host. Mini-MAASs
     cooperate to provide network-wide services in small networks
     without MAASs.

   In this document, the key words "MAY", "MUST", "MUST NOT",
   "optional", "recommended", "SHOULD", and "SHOULD NOT", are to be
   interpreted as described in [RFC2119].

3.  Requirements and Design Considerations

   As described in [RFC2771], a multicast allocation API provides two
   main services to multicast applications. First, it allows enumeration
   of the set of available multicast scopes applications may attempt to
   allocate in.  Second, applications can dynamically allocate multicast
   addresses in scopes they specify.

   Hosts may also use MADCAP [RFC2730] for these features.  MADCAP
   provides various functions, including allocation of addresses in
   scopes which are not available using ZMAAP.

   In general, applications should be unaware of which protocol is being
   used to allocate multicast addresses (e.g., MADCAP, ZMAAP, or local
   allocation of SSM [SSM] addresses).

   ZMAAP satisfies the general requirements for multicast address
   allocation mechanisms specified in [RFC2908]: robustness,
   availability and low probability of clashes in the presence of host
   and network failures, short allocation delay and efficient use of the
   address space.  ZMAAP is expected to work in a unreliable environment
   (for example on laptops in an ad-hoc network, that can be switched
   off and back on at any moment).

   Applications can obtain the following services from a mini-MAAS
   making use of ZMAAP.  For further discussion, see Appendix A.

    - Obtain an enumeration of supported multicast scopes.
    - Allocate an address in a specified scope.
    - Renew an existing address allocation, which an application is
      using.
    - Get notified when an allocation has been cancelled by the mini-
      MAAS due to an allocation conflict.



Catrina, et. al.         Expires: 22 April 2002                 [Page 4]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


4. Zeroconf Multicast Address Configuration Protocol

4.1 Protocol Overview

   ZMAAP is a peer-to-peer protocol that allows mini-MAASs to coordinate
   their multicast address allocations.  Three messages are used for
   this purpose: Address In Use (AIU), Address Claim (ACLM).

   To obtain a multicast address allocation, an application makes a
   request to a local mini-MAAS, specifying the scope and number of
   addresses. The mini-MAAS selects the addresses to be allocated and
   multicasts a ZMAAP ACLM request to the other mini-MAASs.  The mini-
   MAAS issues this request repeatedly.

   Two things may occur.  If an AIU response is received, the mini-MAAS
   has requested a range of addresses which conflicts with an existing
   allocation.  In this case, the mini-MAAS must select a new range of
   addresses and try again, or give up.  If, on the other hand, the
   receives no AIU response when the allotted time expire, it assumes it
   has succeeded in allocating an address.

   A mini-MAAS will defend an address allocation which it has made.  An
   application can also ask a local mini-MAAS to defend an address
   allocation it uses, learned through another mechanism (for example,
   through the use of an API).  A mini-MAAS which receives an ACLM
   message which it defends will issue an AIU response immediately,
   indicating that the allocation already exists and the ACLM message
   conflicts.

   Mini-MAASs may cache information about allocations to aid in
   selecting addresses which do not conflict with others.  A cache entry
   is maintained for the duration of the intended allocation lifetime
   indicated in ZMAAP messages.  The lifetime can be extended using AIU
   messages.  If an address is not in the cache, it is considered
   available for allocation.

4.2 Transmission of ZMAAP Messages

   A mini-MAAS sends AIU messages for the addresses that it currently
   has allocated, before their allocation lifetime expires.

   All ZMAAP messages are multicast using UDP. The reserved UDP port
   number is TBD. The address allocations communicated in any message
   MUST belong to the same multicast scope.

   All messages are sent to a reserved IPv4 scope-relative multicast
   address, or IPv6 variable scope multicast address, called in the
   following the ZMAAP multicast address.

   These address assignments are TBD.  The destination address of a
   message MUST be in the same multicast scope as the address


Catrina, et. al.         Expires: 22 April 2002                 [Page 5]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   allocations it contains.  A mini-MAAS MUST listen to messages sent to
   the ZMAAP multicast address for all scopes in which it is has
   allocated addresses or is in the process of allocating addresses.

   ZMAAP is used to allocate addresses in all ranges for which
   coordination must be done among multiple machines, but within an area
   smaller than an Admin scope.  This way, the ranges used by MADCAP,
   ZMAAP, and SSM are all disjoint and clear ownership is preserved.
   MADCAP is used for ranges which require coordination across an Admin
   scope or larger, and SSM does not require coordination among multiple
   machines.

   The ranges which are defined or under discussion today, which ZMAAP
   would be used for, include:


   Allocation Scope
   ----------------
   (1) IPv4 Dynamic Link-Local [TBD]
   (2) IPv6 Dynamic Link-Local [RFC2373]
   (3) IPv6 Dynamic Subnet-Local [RFC2373]
   (4) IPv4 Unicast-Prefix-based  [TBD]
   (5) IPv6 Unicast-Prefix-based [UNIPREFIX]

   To date, no range of addresses for (1) or (4) has been defined.

4.3 Protocol Message Format

   ZMAAP uses two messages: Address In Use (AIU), used to announce an
   existing address allocation, and Address Claim (ACLM), used to
   announce a desired address allocation. ZMAAP implementations MUST
   support both these messages.

   The ZMAAP messages have the following common 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     0x1b      |      0xd7     |     0x3b      |     0x48      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Version    | Message Type  |         Address Family        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Lease descriptor 1 (variable)              /
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                      . . .
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Lease descriptor N (variable)              /
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The initial 4 bytes in the message constitute a 'magic number' which
   is used to detect protocol collisions on the port and multicast group


Catrina, et. al.         Expires: 22 April 2002                 [Page 6]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   where ZMAAP is operating.  Any message which does not begin with the
   magic number MUST be silently discarded.

   The Version field indicates the ZMAAP version. It MUST be 1 for the
   version described in this document.

   The Message Type field defines the type of ZMAAP message. The
   following values are defined:

      Value     Message type
      -----     ------------
        0       Address Claim (ACLM)
        1       Address In Use (AIU)

   The Address Family field indicates the address family for all the
   addresses in the ZMAAP message, using the values defined by IANA
   [IANA]. This version of ZMAAP supports the IPv4 and IPv6 address
   families:

      Value     Address Family
      -----     --------------
        1       IPv4
        2       IPv6

   Lease descriptors describe address allocations in ZMAAP messages.

   An IPv4 address is represented by 4 bytes in network byte order.  The
   lease descriptor for IPv4 addresses has the following 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Initial address in the range                 |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Final address in the range                  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Lease Identifier                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Lease Lifetime         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   An IPv6 address is represented by 16 bytes in network byte order.
   The lease descriptor for IPv6 addresses has the following 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                  Initial address in the range                 |
      |                                                               |
      |                                                               |


Catrina, et. al.         Expires: 22 April 2002                 [Page 7]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                   Final address in the range                  |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Lease Identifier                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Lease Lifetime         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The initial and final addresses define the range of addresses claimed
   or allocated.  When individual addresses are allocated rather than
   ranges, the Initial and Final addresses are identical.

   Addresses in the lease descriptor belong to the address family
   indicated by the Address Family field in the message header.

   The Lease Identifier distinguishes different allocations of the same
   address range.  It is assigned by the allocator mini-MAAS, using an
   implementation dependent method.  For example, it can be computed as
   a hash of the allocator's address and the allocation time (and UDP
   transmission port in case more than one mini-MAAS resides on the same
   host).

   The Lease Lifetime is the number of seconds which a lease may be
   cached after it has been received.

   The number of lease descriptors in a ZMAAP message is limited by the
   condition that the message fits into a payload of maximum 576 bytes
   for IPv4 packets and 1280 bytes for IPv6 packets.  If the number of
   lease descriptors is too large to fit into the maximum payload, they
   are sent in separate ZMAAP messages.

4.4 ZMAAP mini-MAAS behavior

   A ZMAAP mini-MAAS performs four functions:  Claiming, defending,
   verifying and detecting conflicts in allocations.

   A mini-MAAS MUST maintain state information for the allocations it
   makes or it maintains as a result of requests from its local
   applications.  This will be referred to as the 'allocation record.'

   It MAY also cache state information for other allocations, learned
   from received ZMAAP messages.  This could be useful, for example, to
   assist in selecting multicast addresses that will be unlikely to
   conflict with preexisting allocations.  The term 'allocation record'
   as used below will NOT include this state information.





Catrina, et. al.         Expires: 22 April 2002                 [Page 8]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


4.4.1 Claiming an address

   To allocate multicast addresses, an application makes a request from
   the local mini-MAAS, indicating the scope, the number of addresses
   desired and the allocation lifetime.

   The mini-MAAS selects free addresses by consulting its allocation
   record and creates a lease descriptor.  To reduce the likelihood of
   collisions, a random selection of the free addresses is strongly
   recommended (see Section 4.3).  A unique identifier ("lease
   identifier") is associated with each allocation to distinguish
   allocations of the same addresses.

   The mini-MAAS starts the claiming by sending an ACLM message
   containing the lease descriptor.  After sending the ACLM message it
   MUST start a Claim Timer for [ANNOUNCE-WAIT] seconds. Also, it SHOULD
   resend the ACLM message, first after [RESEND-WAIT] seconds, and later
   doubling after each send, until either the Claim Timer expires, or
   the claim is aborted.

   If the mini-MAAS receives an AIU message or an ACLM message listing
   addresses being claimed, it MUST abort the claiming, stop the Claim
   Timer, and give up on the addresses indicated in the AIU or ACLM
   message.  It MAY select new addresses and restart the claiming
   procedure, after waiting.  Each successive attempt T, the mini-MAAS
   waits for a uniformly distributed random interval from 0 to
   ([RESTART-WAIT] * T) milliseconds.

   If the Claim Timer expires, the mini-MAAS commits the allocation and
   communicates the lease to the application.  To complete a new address
   allocation, a mini-MAAS MUST send an AIU message containing its lease
   descriptor.

4.4.2 Defending an Address

   A mini-MAAS MUST defend all allocations in its allocation record.

   If there is any overlapping between address ranges in the received
   ACLM and address ranges in its allocation record, the mini-MAAS MUST
   respond with an AIU.  This AIU contains the Lease Descriptors of the
   mini-MAASs own allocations whose address ranges overlap with those in
   the ACLM.

   Note that the AIU is sent regardless of whether the Lease Identifiers
   for an overlapping range match (same allocation) or not (conflicting
   allocations).  The other mini-MAAS will be able to distinguish these
   cases using the Lease Identifier and take an appropriate action.

   To send an AIU in response to an ACLM message, the mini-MAAS starts a
   random Defense Timer, uniformly distributed from 0 to [DEFEND-WAIT]
   milliseconds.  During this waiting interval, the mini-MAAS listens


Catrina, et. al.         Expires: 22 April 2002                 [Page 9]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   for AIU response to the ACLM.  If the mini-MAAS detects the same AIU
   which it would have sent, the mini-MAAS cancels the Defense Timer.
   Otherwise, when the Defense Timer expires, the mini-MAAS sends the
   AIU.

   ZMAAP allows address allocations to persist without the initial
   allocator.  Other session participants can share the defense of the
   address allocation by registering with their local mini-MAASs and
   indicating the lease identifier (learned from the session initiator
   via some session announcement mechanism, see Appendix B.)  A mini-
   MAAS MAY add an allocation to its record, even if it was not the
   mini-MAAS which allocated the address.  Before it does this, it MUST
   verify the lease identifier is correct (see Section 4.4.3).

4.4.3 Verifying a Lease Descriptor

   A valid lease identifier matches an existing (defended) allocation,
   and does not conflict with any other allocations.

   A mini-MAAS MUST verify the validity of a lease identifier before
   adding it to its allocation record for 'shared defense' of an address
   (see Section 4.4.2 and Appendix A).

   To verify a lease identifier is correct, the mini-MAAS claims it
   using ACLM messages, as described in section 4.4.1.

4.4.4. Detecting an Allocation Conflict

   A mini-MAAS that receives an AIU message MUST check its allocation
   record to determine the status of the indicated allocations.

   If the mini-MAAS is currently trying to allocate any of the addresses
   in the AIU message, the mini-MAAS MUST try a different address or
   give up trying to allocate addresses (see Section 4.4.1).

   If any ranges in the AIU message overlap without exactly matching
   recorded allocations then an allocation conflict exists.  Also, if an
   address range in an AIU matches a recorded address allocation with a
   different lease identifiery, this also indicates a conflict.  The
   mini-MAAS MUST remove the allocation from its allocation record.  The
   mini-MAAS will inform any local applications registered for the
   canceled allocation, if it has implemented this functionality (see
   Appendix A).

4.4.5. Deallocation and Lease Lifetime

   A mini-MAAS maintains an address allocation in its record as long as
   a local application uses it.

   When an allocation is not needed anymore by any local application,
   the mini-MAAS removes it from the allocation record, so it stops


Catrina, et. al.         Expires: 22 April 2002                [Page 10]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   defending it.  However, the allocation can still be defended by other
   mini-MAASs interested in preserving it.  When an allocation is no
   longer defended by any mini-MAAS, the addresses can be reallocated.

   The Lease Lifetime indicated in ZMAAP messages limits the lifetime of
   cache entries used to assist in address selection for new
   allocations.  A mini-MAAS MAY send AIUs to extend an expiring
   lifetime for any of its allocations.  It SHOULD NOT send AIUs to
   reduce the lifetime (in particular set it to 0), since other mini-
   MAASs may intend to preserve it.

5. Timer Default Values

      ANNOUNCE-WAIT     3 seconds
      RESEND-WAIT     200 milliseconds
      RESTART-WAIT    100 milliseconds
      DEFEND-WAIT     100 milliseconds

6.  Security Considerations

   In the interest of simplicity, this draft does not prescribe a means
   of securing the multicast auto-configuration mechanism. Thus it is
   possible that hosts will allocate conflicting multicast addresses for
   a period of time, or that non-conforming hosts will attempt to deny
   service to other hosts by allocating the same multicast addresses.

   A 'greedy' mini-MAAS which simply ignored others' advertisements and
   allocated any address it wished could steal addresses from others.
   If there were more than one such 'greedy' mini-MAAS on the network,
   address allocation conflicts would never be detected or corrected.

   These threats are most serious in wireless networks since attackers
   on a wired network will require physical access to the home network,
   while wireless attackers may reside outside the home.

   In order to counter these threats, IP or link layer security could be
   applied to authenticate messages and thereby prevent the attacks
   listed above.  For example, if all authorized hosts in the network
   shared a preconfigured key, this could be used with the IP
   Authentication Header [RFC2402] to discard unauthenticated datagrams.
   Admittedly, preconfiguration of keys runs counter to the goals of
   zero configuration networking.  There's no free lunch.

7.  IANA Considerations

   This document requires an allocation for a UDP port number, and a
   range of IPv4 multicast addresses for link-local dynamic multicast
   address allocation.





Catrina, et. al.         Expires: 22 April 2002                [Page 11]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


Appendix A  Application Programmer Interface (API) Definition

   The ZMAAP API will be presented as a set of abstract functions
   followed by language specific mappings.  These functions and their
   names are derived from the Abstract API for Multicast Address
   Allocation [RFC2771].  This API is specified in a separate document
   [ZMAAPAPI].

   What distinguishes the ZMAAP API from the general multicast address
   allocation API is the need for two additional functions:  Shared
   ownership, for renewal and defense of allocations, and conflict
   notification for applications to determine if and when an allocation
   can no longer be used.

   Normally the mini-MAAS allocating an address maintains an allocation
   record entry for it.  This implies the mini-MAAS will defend the
   address from conflicting claims and will send AIU messages before the
   lease lifetime expires for all active allocations.  In the case of
   'shared ownership', (initiated via the ZMAAP API), a mini-MAAS first
   verifies that the lease is still valid (section 4.4.3), then it adds
   the record to its own allocation record.

Appendix B  Session Management Implications

   Multicast address allocation alone is not useful.  A mechanism is
   needed in order to discover sessions using multicast allocations.
   This serves applications attempting to join an existing session,
   those initiating new sessions and also for rendezvous at a new
   session address if there has been a conflict with an address
   currently in use.

   Sessions are announced using the Session Announcement Protocol (SAP)
   [RFC2974].  They are described using the Session Description Protocol
   (SDP) [RFC2327].

   SAP describes how to announce sessions for IPv4 using global and
   adminstrative scoped multicast.

   This technique can be used to announce sessions which are allocated
   in other scopes as well. For IPv4 link-local scope session
   announcement, an IP time-to-live of 1 is used.  This limits
   propogation of the announcement to the same scope where it is
   meaningful.

   An additional SDP session attribute SHOULD be included for use in
   announcing sessions for addresses allocated with ZMAAP.  This
   attribute allows coordination with ZMAAP.

    a=zmaap-lease-id:<lease-id>

    <lease-id> is set to the lease identifier associated with the


Catrina, et. al.         Expires: 22 April 2002                [Page 12]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


               announced session.

   An application which receives a session announcement with this
   attribute may use it to form a Lease Descriptor and request the ZMAAP
   API to either defend the allocation or for notification if there is
   an address allocation conflict.

References

   [IANA]  Address Family Numbers. http://www.isi.edu/in-
        notes/iana/assignments/address-family-numbers

   [MDNS] Ebisov, L., Aboba, B., Thaler, D., "Multicast DNS", draft-
        ietf-dnsext-mdns-06.txt, October 2001. Work in progress.

   [RFC1112] Deering, S., "Host Extensions for IP Multicasting", RFC
        1112, August 1989.

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

   [RFC2327] Handley, M., Jacobson, V., "SDP: Session Description
        Protocol", RFC 2327, April 1998.

   [RFC2365]  Meyer, D., "Administratively Scoped IP Multicast", BCP 23,
        RFC 2365, July 1998.

   [RFC2373] Hinden, R. and Deering, S., "IP Version 6 Addressing
        Architecture", RFC 2373, July 1998.

   [RFC2402] Kent, S., Atkinson, R., "IP Authentication Header", RFC
        2402, November 1998.

   [RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
        (IPv6) Specification", RFC 2460, December 1998.

   [RFC2730]  Hanna, S., Patel, B., and M. Shah, "Multicast Address
        Dynamic Client Allocation Protocol (MADCAP)", RFC 2730, December
        1999.

   [RFC2771] Finlayson, R., "An Abstract API for Multicast Address
        Allocation", RFC 2771, February 2000.

   [RFC2908] Thaler, D., Handley, M., and D. Estrin, "The Internet
        Multicast Address Allocation Architecture", RFC 2908, September
        2000.

   [RFC2974] Handley, M., Perkins, C., Whelan, E., "Session Announcement
        Protocol", RFC 2974, October 2000.

   [SSM]  IANA, "Single-source IP Multicast Address Range",


Catrina, et. al.         Expires: 22 April 2002                [Page 13]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


        http://www.isi.edu/in-notes/iana/assignments/single-source-
        multicast, October 1998.

   [UNIPREFIX] Haberman, B., Thaler, D., "Unicast-Prefix-based IPv6
        Multicast Addresses", Internet Draft, draft-ietf-ipngwg-uni-
        based-mcast-03.txt, October 2001.  Work in progress.

   [V4LL] Cheshire, S., Aboba, B., "Dynamic Configuration of IPv4 link-
        local addresses", draft-ietf-zeroconf-ipv4-linklocal-04.txt,
        July 2001.  Work in progress.

   [ZCREQTS] Hattig, M., "Zeroconf Requirements", draft-ietf-zeroconf-
        reqts-06.txt, November 2000.  Work in progress.

   [ZMAAPAPI] Guttman, E., "An API for the Zeroconf Multicast Address
        Allocation Protocol", draft-ietf-zeroconf-zmaap-api-00.txt.
        Work in Progress.

Acknowledgments

   This draft has been benefited from work by Mark Handley and Steve
   Hanna on the Multicast Address Allocation Protocol (AAP).  Prashant
   Agarwal's master thesis work at International University provided
   helpful insights.

Authors' Addresses

   Octavian Catrina, Editor
   International University in Germany
   International University Campus 2
   D-76646 Bruchsal, Germany

   Phone: +49 7251 700 221
   EMail: Octavian.Catrina@i-u.de

   Dave Thaler
   Microsoft Corporation
   One Microsoft Way
   Redmond, WA 98052

   Phone: +1 (425) 703-8835
   EMail: dthaler@microsoft.com

   Bernard Aboba
   Microsoft Corporation
   One Microsoft Way
   Redmond, WA 98052

   Phone: +1 (425) 936-6605
   EMail: bernarda@microsoft.com



Catrina, et. al.         Expires: 22 April 2002                [Page 14]


Internet Draft   Zeroconf Multicast Allocation Protocol     October 2001


   Erik Guttman
   Sun Microsystems
   Eichhoelzelstr. 7
   74915 Waibstadt Germany

   Phone: +49 172 865 5497
   Email: erik.guttman@sun.com

Full Copyright Statement

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

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

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

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."

Acknowledgement

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













Catrina, et. al.         Expires: 22 April 2002                [Page 15]