<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes"?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<rfc category="info" docName="draft-li-casm-address-pool-management-architecture-00"
     ipr="trust200902">
  <front>
    <title abbrev="Address Pool Management">Coordinated Address Space Management architecture</title>

    <author fullname="Chen Li" initials="C." surname="Li">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street>No.118 Xizhimennei street, Xicheng District</street>
          <city>Beijing</city>
          <code>100035</code>
          <country>P.R. China</country>
        </postal>
        <email>lichen@ctbri.com.cn</email>
      </address>
    </author>
	
	<author initials="C." surname="Xie" fullname="Chongfeng Xie">
     <organization>China Telecom</organization>
      <address>
        <postal>
          <street>No.118 Xizhimennei street, Xicheng District</street>
          <city>Beijing</city>
          <code>100035</code>
          <country>P.R. China</country>
        </postal>
        <email>xiechf.bri@chinatelecom.cn</email>
      </address>
    </author> 
	
   <author initials="R." surname="Kumar" fullname="Rakesh Kumar">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <code>CA 94089</code>
          <country>US</country>
        </postal>
        <email>rkkumar@juniper.net</email>
      </address>
    </author>

   <author initials="R." surname="Lohiya" fullname="Anil Lohiya">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <code>CA 94089</code>
          <country>US</country>
        </postal>
        <email>alohiya@juniper.net</email>
      </address>
    </author>

   <author initials="J." surname="Bi" fullname="Jun Bi">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <street>3-212, FIT Building, Tsinghua University, Haidian District</street>
          <city>Beijing</city>
          <code>100084</code>
          <country>P.R. China</country>
        </postal>
        <email>junbi@tsinghua.edu.cn</email>
      </address>
    </author>

    <author fullname="Weiping Xu" initials="W." surname="Xu">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Bantian, Longgang District</street>
          <city>shenzhen</city>
          <code>518129</code>
          <country>P.R. China</country>
        </postal>
        <email>xuweiping@huawei.com</email>
      </address>
    </author>
	
    <date />

    <abstract>
      <t>This document describes an architecture for the IP address space management.  It includes architectural concepts and components used in the CASM (Coordinated Address Space Management), with a focus on those interfaces to be standardized in the IETF.   </t> 
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>
	    The address space management is an integral part of any network management solution.  The network architectures are rapidly changing 
	    with the migration toward private and public clouds.  At the same time, application architectures are also evolving with a shift toward micro-services and multi-tiered approach.  
      </t>
      <t>	
	There is a pressing need to define a new address management system   which can meet these diverse set of requirements.  Such a system must be built with well-defined interfaces 
	so users can easily migrate from one vendor to another without rewriting their network management systems. 
      </t>
      <t>	
	This document defines a reference architecture that should become the basis to develop a new address management system.  
	We are calling this new system as Centralized Address Space Management (CSAM) system.        
      </t>
      <t>
	A series of use cases are defined in "Use Case Draft". For example, Broadband Network Gateway (BNG), which manages a routable IP   address on behalf of each subscriber, 
	should be configured with the   IP address pools allocated to subscribers.  However, currently   operators are facing with the address shortage problem, the remaining IPv4 address 
	pools are usually quite scattered, no more than /24 per   address pool in many cases.  Therefore, it is complicated to manually configure the address pools on lots of 
	Broadband Network Gateway (BNG) for operators.  For large scale MAN, the number of BNGs can be up to over one hundred.  Manual configuration on all the BNGs statically 
	will not only greatly increase the workload, but also decrease the   utilization efficiency of the address pools when the number of subscribers changes in the future. 
      </t>
      <t>	
	Above is one example of use case, there are other devices which may need to configure address pools as well.  In this document, we propose a mechanism to manage the address pools centrally.  
	In this way, operators do not need to configure the address pools one by one manually and it also helps to use the address pools more efficiently.  
      </t>
 
    </section>

    <section title="Terminology">
      <t>The following terms are used in this document:<list>
          <t>CASM: Coordinated Address Space Management 
	  </t>
          <t>IPAM: IP Address Management       
	  </t>
          <t>DA: A device agent in device, which contact with CASM Coordinator to      manipulate address pool 
	  </t>
          <t>CASM Coordinator: A management system which has a centralized database manage the overall address pools and allocate address pools to the device in the devices.       
	  </t>	  
        </list>
      </t>

    </section>
	
    <section title="CASM Reference architecture">
	<t>The figure below shows the reference model for CASM.  This figure covers the various possible scenarios that can exist in a CASM system.
	</t>

        <t><figure anchor="fig1"
            title="CASM reference architecture">
            <artwork><![CDATA[
			
          +-------------+       +-------------+       +-------------+
          |     CASM    |       |     CASM    |       |     CASM    |
          |application 1|       |application j|       |application n|
          +------/------+       +------/------+       +------/------+
                 |                     |                     |
                 |                     |                     |
                 |                     |                     |
                 |                     |                     |
                 |                     |                     |
         +-------\---------------------\---------------------\-------+        
         |    Coordinated Address Space Management System (CASM)     |        
         |                       Coordinator                         |        
         |    +-------------+  +-------------+  +-------------+      |        
         |    |     Pool    |  |   Address   |  |   Address   |      |        
         |    |  Management |  | Management  |  |  Database   |      |        
         |    +-------------+  +-------------+  +-------------+      |
         |                                                           |        
         +---.-------------------------.--------------------------.--+
             |                         |                          |
             |                         |                          |
             |                         |                          |
             |                         |                          |
             |                         |                          |
  +----------\--------+      +---------\---------+       +--------\----------+
  |                   |      |                   |       |                   |
  |  +-------------+  |      |  +-------------+  |       |  +-------------+  |
  |  |    Agent    |  |      |  |    Agent    |  |       |  |    Agent    |  |
  |  +-------------+  |      |  +-------------+  |       |  +-------------+  |
  |                   |      |                   |       |                   |
  |  +-------------+  |      |  +-------------+  |       |  +-------------+  |
  |  |     CASM    |  |      |  |     CASM    |  |       |  |     CASM    |  |
  |  | Distributor |  |      |  | Distributor |  |       |  | Distributor |  |
  |  +-------------+  |      |  +-------------+  |       |  +-------------+  |
  |      Device 1     |      |      Device 2     |       |      Device m     |
  +-------------------+      +-------------------+       +-------------------+

]]></artwork>
          </figure></t>	


	<t>The overall procedure is as follows: <list style="symbols">
	<t> Operators will configure remaining address pools centrally in the Address Pool Management System (APMS). There are multiple 
	address pools which can be configured centrally. The APMS server will then divide the address pools into addressing unit (AU)
	which will be allocated to the agent in devices by default. </t>
	<t> The agent will initiate Address Pool request to the APMS. It can carry its desired size of address pool the request, 
	or just use a default value. The address pool size in the request is only used as a hint. The actual size of the
	address pool is totally determined by APMS. It will also carry the DA's identification and the type of address pool.</t>
	<t> APMS looks up the remaining address pool in its local database. It will then allocate a set of address pools to the DA.
	Each address pool has a related lifetime.</t>
	<t> DA receives the AddressPool reply and use them for their purpose. </t>
        <t> If the lifetime of the address pool is going to expire, the DA should issue an AddressPoolRenew request to extend the lifetime,including the IPv4, IPv6, Ports, etc.</t>		
	<t> The AddressPoolReport module keeps monitoring and reports the current usage of all current address pools for each transition mechanism. if it is running out of address pools, it can renew the AddressPoolRequest for a newly allocated one. It can also release and recycle an existing address pool if the that address pool has not been used for a specific and configurable time.</t>
        <t> When the connection of APMS is lost or the APMS needs the status information of certain applications, the APMS may pre-actively query the DA for the status information.</t>
        </list></t>
      </section>



      <section title="CASM Functional and Logical Blocks">
          <section title="CASM Application">
            <t>CASM Application is a functional entity which usually used to manage, operate, maintain the CASM Coordinator. For example, operator or external user can manage the address pool 
            in CASM Coordinator, and access log, address allocation records, etc.
            </t>
          </section>

          <section title="CASM Coordinator">
            <t>Coordinated Address Space Management System (CASM) Coordinator is a centralized address management coordinator for CASM application to maintain the overall address pools, addresses, 
            address properties, etc.  
            </t>
            <t>It maintains an address database including the overall address pools (OAP) and the address pool status (APS).  CASM Applications can maintain its remaining address pools in the OAP.  
            They can also reserve some address pool for special-purpose usage.  The address pools status is to reflect the current usage of the address pools for different devices.  CASM Coordinator 
            also has the interface to maintain the address pools to different devices dynamically.
            </t>
          </section>
          
          <section title="CASM Device">
            <t>A CASM Device is responsible for distribute or allocate address from local address pools received from CASM Coordinator. 
            </t>
            <t>Device agent (DA) is a component in a CASM device through which contact with CASM Coordinator. It initiates the address pools allocation requests, passes the address pools to local instances, 
            report the status of local address pool usage and update the address pools requests, etc. for some devices, e.g. v6transition, VPN, etc., additional routing modules needs to update 
            the routing table accordingly.
            </t>
            <t>CASM Distributor is another component in a CASM device, DHCP Server is a typical distributor which can assign IP addresses to client computer, DHCP protocol is usually used for this assignment. 
            The address assignment procedure between the CASM Distributor and computer is out of scope of this draft. 
            </t>
            <t>The device determines whether the usage status of the IP address pool in device is satisfies the condition.  The address pool is a sharable resource, when the resource in device is 
            insufficient or excessive, the device sends address pools request to the CASM Coordinator, and receives response with address pools allocated for this device from CASM COORDINATOR server.  
            Then it can use this address pools for assignment.  In addition, it reports usage status of local address pool and update the address pools requests, etc.
            </t>
            <t>The typical CASM devices such as BNG, BRAS, CGN, DHCP Server, NAT, V6Transition, DNS Server, etc., are described in use cases of "draft-xie-ps-centralized-address-management-02" 
            and "draft-kumar-casm-problem-and-use-cases-00". 
            </t>
            <t>The form of device is diverse, it can be physical or virtualized, and it can be a box integrated with control plane and user plane, or separated control plane remote from box and 
            one or more devices share centralized control plane. In this device form, the control plane will manage multiple user plane devices.  A number of devices that are subordinate to a control plane 
            will jointly share the address pools to make the utilization more high. 
            </t>
          </section>
          
      </section>



          
      <section title="CASM Interface and operation">
          <section title="CASM App-facing Interface">
              <section title="Functional requirements">
                <t>The CASM should support following functionality for it to be adopted for wide variety of use cases.  
                </t>
                
                <section  title="Address pools">
                  <t>A CASM system should allow ability to manage different kind of   address pools.  The following pools should be considered for implementation; this is not mandatory or 
                  exhaustive by any means but given here as most commonly used in networks.  The CASM system should   allow user-defined pools with any address objects.  
                  </t>                
                  <t>Unicast address pool:  <list style="symbols">
                    <t>Private IPv4 addresses
                    </t>
                    <t>Public IPv4 addresses
                    </t>
                    <t>IPv6 addresses
                    </t>
                    <t>MAC Addresses
                    </t>                      
                  </list>
                  </t>                    

                  <t>Multicast address pool:  <list style="symbols">
                    <t>IPv4 address
                    </t>
                    <t>IPv6 address
                    </t>                    
                  </list>
                  </t>                 
                </section>
                
                <section  title="Pool management">               
                  <t>There should be a rich set of functionality as defined in this section for operation of a given pool.  
                  </t>  
                  <t>Address management:  <list style="symbols">
                    <t>Address allocation either as single or block
                    </t>
                    <t>Address reservation
                    </t>
                    <t>Allocation logic such as mapping schemes or algorithm per pool
                    </t>
                    <t>
                    </t>                      
                  </list>
                  </t>                    
                  <t>General management:  <list style="symbols">
                    <t>Pool initializing, resizing, threshold markings for resource monitoring
                    </t>
                    <t>Pool attributes such as used to automatically create DNS record
                    </t>
                    <t>Pool priority for searching across different pools
                    </t>
                    <t>Pool fragmentation rules, such as how pool can be sub-divided
                    </t> 
                    <t>Pool lease rules for allocation requests
                    </t>                                          
                  </list>
                  </t>                     
                                 
                </section>

              </section>
              
              
              <section title="General operational">
                <t>The CASM architecture consists of three major distinct entities: CASM Application, CASM Coordinator and network device with a device Agent.  
                In order to provide address space and pools resource that CASM Coordinator can centrally maintaining, there is an interface between CASM Applications and CASM Coordinator. 
                The CASM Application can manage the address space and pool in the CASM Coordinator, and the get address allocation records, logs from CASM Coordinator.  
                </t>
              </section>  

              <section title="Interface modeling requirements">
                <t>There are three broad categories for CASM interface definition:
                </t>
                <t>Pool management interface: Interface to external user or      applications such as SDN controller to manage addresses
                </t>
                <t>Log interface: Interface to access log and records such as DHCP,      DNS, NAT Integration interface: Interface to address services such as DHCP, DNS, NAT    
                </t>
              </section>  

          </section>



          <section title="CASM device-facing Interface">
              <section title="Functional requirements">
                <t>In order to build a complete address management system, it is   important that CASM should be able to integrate with other address   services.  This will provide a complete 
                solution to network operators   without requiring any manual or proprietary workflows.  
                </t>               
                <t>DHCP server:   <list style="symbols">
                  <t>Interface to initialize address pools on DHCP server
                  </t>
                  <t>Notification interface whenever an address lease is modified
                  </t>
                  <t>Interface to access address lease records from DHCP server
                  </t>
                  <t>Ability to store lease records and play back to DHCP server on reboot
                  </t>                      
                </list>
                </t>                    

                <t>DNS server:   <list style="symbols">
                  <t>Interface to initialize NAT pools
                  </t>
                  <t>Interface to access NAT records from NAT device
                  </t>
                  <t>Ability to store NAT records and play back to NAT device on reboot
                  </t>                    
                </list>
                </t>   
               

                
                <section  title="General operational">               
                  <t>The CASM architecture consists of three major distinct entities: CASM Application, CASM Coordinator and network device with a device Agent.  In order to provide address pool 
                  manipulations between CASM Coordinator and device, the CASM architecture calls for well-defined protocols for interfacing between them.  For example, legacy protocol such as 
                  radius to compatible with legacy network equipment. In modern network management system, device acts as NETCONF/RESTCONF server side. It sends address pool request to the CASM 
                  Coordinator which is protocol client, the centralized CASM Coordinator responses with allocated address pool, the device receives the response message and retrieve the allocated 
                  address pool information carried in the response message.   
                  </t>  
                  <t>The overall address management procedure is as follows:    <list style="symbols">
                    <t>Address Pool Management System (CASM) Coordinator configure remaining address pools centrally.  There are multiple address pools which can be configured.  
                    The CASM Coordinator will then divide the address pools into addressing unit (AU) which will be allocated to the agent in devices by default.
                    </t>
                    <t>The agent will initiate Address Pool request to the CASM Coordinator.  The device judges whether the address resource used by the device meet certain conditions, the condition indicates the use status of the address resource with the device. Then it generate and issue an Address Pool request in which carried its desired size of address pool, or just use a default value.  The address pool size in the request is only used as a hint.  The actual size of the address pool is totally determined by CASM Coordinator.  It will also carry the DA's identification and the type of address pool.
                    </t>
                    <t>CASM Coordinator looks up the remaining address pool in its local database. It will then allocate a set of address pools to the DA.  Each address pool has a related lifetime.
                    </t>
                    <t>DA receives the Address Pool reply and use them for their purpose.
                    </t>  
                    <t>If the lifetime of the address pool is going to expire, the DA should issue an Address Pool Renew request to extend the      lifetime, including the IPv4, IPv6, Ports, etc.
                    </t> 
                    <t>The Address Pool Report module keeps monitoring and reports the current usage of all current address pools for each transition      mechanism. If it is running out of address pools, it can renew for a newly allocated one.  It can also release and recycle an existing address pool if that address pool has not been used for a specific and configurable time.
                    </t> 
                    <t>When the connection of CASM Coordinator is lost or the CASM Coordinator needs the status information of certain applications, the CASM Coordinator may pre-actively query the DA for the status information.
                    </t>                                                                                 
                  </list>
                  </t>                                                                   
                </section>

              </section>
              
              
              <section title="Interface modeling requirements">
                  <section title="Initial Address Pool Configuration">
                        <t><figure anchor="fig2"
                            title="Initial Address Pool Configuration">
                            <artwork><![CDATA[
                			
        +--------------+                           +-----------------+
        |   Device     |                           |       CASM      |
        |   Agent      |                           |   Coordinator   |
        +------+-------+                           +--------+--------+
               |                                            |
      +--------+-------+                                    |
      |1.DA start-up   |                                    |
      +---------+------+                                    |
                |            2.Address Pool Request         |
                |------------------------------------------>|
                |                                           |
                |                                  +--------+-------+
                |                                  |  3. Check      |
                |                                  |   address pool |
                |                                  +--------+-------+
                |          4.Address Pool Reply             |
                |<------------------------------------------|
                |                                           |  

                ]]></artwork>
                          </figure></t>
                 
                 
                 
                      
                      <t><xref target="fig2"/> The procedure is as follows:<list style="numbers">
                      <t> The DA checks whether there is already address pool configured in the local site when it starts up. if no, it means the initial start-up or the address pool has been released. if yes, the address pool could be used directly.</t>
                      <t> The DA will initiate Address Pool request to the CASM Coordinator.  It can carry its desired size of address pool in the request, or just use a default value.  The address pool size in the DA's request is only used as a hint.  The actual size of the address pool is totally determined by CASM Coordinator.  It will also carry the DA's identification, the type of transition mechanism and the indication of port allocation support.</t>                         
                      <t> The CASM Coordinator determines the address pool allocated for the DA based on the parameters received. </t>
                      <t> The CASM Coordinator sends the Address Pool Reply to the DA.  It will also distribute the routing entry of the address pool automatically. In particular, if the newly received address pool can be aggregated to an existing one, the routing should be aggregated accordingly.</t>
                      
                      </list></t>
                  </section>  
                  
                  <section title="Address Pool Status Report">
                              <t><figure anchor="fig3"
                            title="Address Pool Status Report">
                            <artwork><![CDATA[
                			
        +--------------+                             +-----------------+
        |   Device     |                             |      CASM       |
        |   Agent      |                             |   Coordinator   |
        +------+-------+                             +--------+--------+
               |                                              |
      +--------+-------+                                      |
      |1.Monitor and   |                                      |
      |count the status|                                      |
      +--------+-------+                                      |
               |        2.Address Pool Status Report          |
               |--------------------------------------------->|
               |                                     +--------+-------+
               |                                     |  3. Record     |
               |                                     |   address pool |
               |                                     +--------+-------+
               |       4.Address Pool Report Confirm          |
               |<---------------------------------------------|
               |                                              |
               |                                              |

                
                ]]></artwork>
                          </figure></t>
                      
                      <t><xref target="fig3"/> Figure 3 illustrates the active address pool status report procedure:<list style="numbers">
                      <t>The DA will monitor and count the usage status of the local       address pool.  The DA counts the address usage status in one month, one week and one day, which includes the local address, address usage ratio (peak and average values), and the port usage ratio (peak and average values).</t>
                      <t>The DA reports the address pool usage status to the CASM Coordinator. For example, it will report the address usage status in one day, which contains the IP address, NAT44, address list: 30.14.44.0/28, peak address value 14, average address usage ratio 90%, TCP port usage ratio 20%, UDP port usage ratio 30% and etc.</t>
                      <t>The CASM Coordinator records the status and compares with the existing address information to determine whether additional address pool is needed.</t>
                      <t>The CASM Coordinator will confirm the address pool status report request to the DA.  It will keep sending the address pool status report       request to the CASM Coordinator if no confirm message is received.</t>
                     </list></t>
                  </section>  

                  <section title="Address Pool Status Query">
                      <t>When the status of CASM Coordinator is lost or the CASM Coordinator needs the status information of the DAs, the CASM Coordinator may actively query the TD for the status information, as shown in step 1 of <xref target="fig4"/>. The following steps 2,3,4,5 are the same as the Address Pool Status Report procedure.</t>
                                    <t><figure anchor="fig4"
                            title="Address Pool Status Query">
                            <artwork><![CDATA[
                			
        +--------------+                             +-----------------+
        |   Device     |                             |      CASM       |
        |   Agent      |                             |   Coordinator   |
        +------+-------+                             +--------+--------+
               |                                              |
               |                                              |
               |         1.Address Pool Status Query          |
               |<---------------------------------------------|
               |                                              |
      +--------+-------+                                      |
      |2.Monitor and   |                                      |
      |count the status|                                      |
      +--------+-------+                                      |
               |        3.Address Pool Status Report          |
               |--------------------------------------------->|
               |                                     +--------+-------+
               |                                     |  4. Record     |
               |                                     |   address pool |
               |                                     +--------+-------+
               |       5.Address Pool Report Confirm          |
               |<---------------------------------------------|
               |                                              |
               |                                              |

                
                ]]></artwork>
                          </figure></t>
                  </section>  
                  
                  <section title="Address Exhaustion">
                      <t>When the DA uses up the addresses allocated, it will renew the address pool request to the CASM Coordinator for an additional address pool.  The procedure is the same as the initial address pool request.</t>	
                  </section>    
                  
                  <section title="Address Pool Release">
                      <t><figure anchor="fig5"
                            title="Address Pool Release">
                            <artwork><![CDATA[
                			
        +--------------+                             +-----------------+
        |   Device     |                             |       CASM      |
        |   Agent      |                             |    Coordinator  |
        +------+-------+                             +--------+--------+
               |                                              |
      +--------+-------+                                      |
      |1.Address pools |                                      |
      |  not used for a|                                      |
      |   long time    |                                      |
      +--------+-------+                                      |
               |        2.Address Pool Release Request        |
               |--------------------------------------------->|
               |                                     +--------+-------+
               |                                     |3. Update       |
               |                                     |   address pool |
               |                                     |   database     |
               |                                     +--------+-------+
               |       4.Address Pool Release Notification    |
               |<---------------------------------------------|
      +--------+-------+                                      |
      |5. Reduce       |                                      |
      |  address pool  |                                      |
      +--------+-------+                                      |
               |         6.Address Pool Release Confirm       |
               |--------------------------------------------->|
               |                                              |
               |                                              |

                
                ]]></artwork>
                          </figure></t>
                      <t><xref target="fig5"/> illustrates the address pool release procedure:<list style="numbers">
                      <t>The counting module in the DA checks that there are addresses not used for a long time;</t>
                      <t>The DA sends the address pool release request to the CASM Coordinator to ask the release of those addresses;</t>
                      <t>The CASM Coordinator updates the local address pool information to add the new addressed released;</t>
                      <t>The CASM Coordinator notifies the TD that the addresses have been release successfully;</t>
                      <t>The DA will update the local address pool. If no Address Pool       Release Notification is received, the DA will repeat step 2;</t>
                      <t>The DA confirms with the CASM Coordinator that the address pool has been released successfully.</t>
                      </list></t>  
                  </section>   
                                                                                        
              </section>  

          </section>

          
      </section>



    <section title="Security Considerations">
      <t></t>
    </section>

    <section title="Acknowledgements">
      <t>N/A.</t>
    </section>
  </middle>

  
  <back>
    <references title="Normative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119"?>
    </references>
    <references title="Informative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6888"?>
    </references>
  </back>  
  
</rfc>
