One document matched: draft-liu-anima-grasp-api-00.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!-- This is built from a template for a generic Internet Draft. Suggestions for
     improvement welcome - write to Brian Carpenter, brian.e.carpenter @ gmail.com 
     This can be converted using the Web service at http://xml.resource.org/ -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<!-- You want a table of contents -->
<?rfc symrefs="yes"?>
<!-- Use symbolic labels for references -->
<?rfc sortrefs="yes"?>
<!-- This sorts the references -->
<?rfc iprnotified="no" ?>
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<?rfc compact="yes"?>
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<rfc category="std" docName="draft-liu-anima-grasp-api-00" ipr="trust200902">
  <front>
    <title abbrev="GRASP API">Generic Autonomic Signaling Protocol Application
    Program Interface (GRASP API)</title>

    <author fullname="Brian Carpenter" initials="B. E." surname="Carpenter">
      <organization abbrev="Univ. of Auckland"/>

      <address>
        <postal>
          <street>Department of Computer Science</street>

          <street>University of Auckland</street>

          <street>PB 92019</street>

          <city>Auckland</city>

          <region/>

          <code>1142</code>

          <country>New Zealand</country>
        </postal>

        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author>

    <author fullname="Bing Liu" initials="B." role="editor" surname="Liu">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Q14, Huawei Campus</street>

          <street>No.156 Beiqing Road</street>

          <city>Hai-Dian District, Beijing</city>

          <code>100095</code>

          <country>P.R. China</country>
        </postal>

        <email>leo.liubing@huawei.com</email>
      </address>
    </author>

    <author fullname="Wendong Wang" initials="W." surname="Wang  ">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts & Telecom.</street>

          <street>No.10 Xitucheng Road</street>

          <city>Hai-Dian District, Beijing 100876</city>

          <country>P.R. China</country>
        </postal>

        <email>wdwang@bupt.edu.cn</email>
      </address>
    </author>

    <author fullname="Xiangyang Gong" initials="X." surname="Gong">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts & Telecom.</street>

          <street>No.10 Xitucheng Road</street>

          <city>Hai-Dian District, Beijing 100876</city>

          <country>P.R. China</country>
        </postal>

        <email>xygong@bupt.edu.cn</email>
      </address>
    </author>

    <!---->

    <date day="04" month="April" year="2016"/>

    <abstract>
      <t>This document specifies the application program interface of the
      Generic Autonomic Signaling Protocol (GRASP). The API is used for
      Autonomic Service Agent (ASA) calling the GRASP protocol module to
      communicate the autonomic network signalings with other ASAs.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>As defined in <xref target="I-D.ietf-anima-reference-model"/> , ASA
      is the atomic entities of an autonomic function; and it is instantiated
      on autonomic nodes. When ASAs communicate with each other, they should
      use the GRASP <xref target="I-D.ietf-anima-grasp"/>.</t>

      <t>As the following figure shows, the GRASP could contain two
      sub-layers. The bottom is the GRASP base protocol module, which is only
      responsible for sending and recieving GRASP messages. The upper layer is
      some extended funcitons based upon GRASP basic protocol. For example,
      <xref target="I-D.liu-anima-grasp-distribution"/> is one of the extended
      functions.</t>

      <t><figure>
          <artwork align="center"><![CDATA[+----+                              +----+
|ASAs|                              |ASAs|
+----+                              +----+
   |                                   |
   | GRASP Function API                |
   |                                   |
+------------------+                   |GRASP API
| GRASP Extended   |                   |
| Function Modules |                   |
+------------------+                   |
+------------------------------------------+
|              GRASP Module                |
+------------------------------------------+
]]></artwork>
        </figure></t>

      <t>Both the GRASP base module and the extended function modules should
      be available to the ASAs. Thus, there needs to be two sub-set of API.
      However, since the extended functions could be added in a incremental
      manner, it is not very proper to define the function APIs in a single
      document. This document only defines the base GRASP API.</t>
    </section>

    <section title="GRASP API for ASA">
      <t/>

      <section title="Design Principles">
        <t>The assumption of this document is that any Autonomic Service Agent
        (ASA) needs to call a GRASP module that handles protocol details
        (security, sending and listening for GRASP messages, waiting, caching
        discovery results, negotiation looping, sending and receiving
        sychronization data, etc.) but understands nothing about individual
        objectives. So this is a high level abstract API for use by ASAs.</t>

        <t>This is very preliminary. Two particular gaps exist:<list
            style="symbols">
            <t>Bootstrapping issues are hidden behind grasp_init.</t>

            <t>Rapid mode is not supported.</t>
          </list></t>
      </section>

      <section title="API definition">
        <t><list style="symbols">
            <t>grasp_init(objectives asa_negotiate_result [asa_geq_fn]) ->
            OK/fail<list style="symbols">
                <t>This initialises state in the GRASP module for the calling
                entity (the ASA). The objectives parameter is a list of all
                GRASP objective options that the ASA supports (see below for
                ABNF and more details). It also provides references to one or
                two functions within the ASA that GRASP may call
                asynchronously.</t>

                <t>OK: means that the ASA has been authenticated and has
                credentials to proceed.</t>

                <t>fail: means that the ASA has not been authenticated and
                cannot operate.</t>
              </list></t>

            <t>grasp_discover(objective) -> OK/fail<list style="symbols">
                <t>This causes GRASP discovery for the listed objective.</t>

                <t>OK: means that discovery has succeeded and the locator has
                been cached.</t>

                <t>fail: means that discovery has failed. The ASA must wait
                before retrying.</t>
              </list></t>

            <t>grasp_negotiate(objective) -> objective/fail<list
                style="symbols">
                <t>This causes GRASP to start negotiation for the given
                objective, and to negotiate within the limits set (see
                below).</t>

                <t>objective: Negotiation succeeded, this contains the
                negotiated value.</t>

                <t>fail: Negotiation failed. The ASA must wait before
                retrying.</t>
              </list></t>

            <t>grasp_synchronize(objective) -> objective/fail<list
                style="symbols">
                <t>This sends a GRASP synchronization request for the given
                objective.</t>

                <t>objective: Synchronization succeeded, this contains the
                received value.</t>

                <t>fail: Synchronization failed. The ASA must wait before
                retrying.</t>
              </list></t>

            <t>asa_geq_fn(objective_number value value) -> true/false<list
                style="symbols">
                <t>This function is optionally provided by the ASA for use by
                the GRASP module. It returns true iff the first value is
                considered greater than or equal to the second value. The
                semantics of this comparison are known only to the ASA; the
                GRASP module uses this function to conduct negotiation to find
                an acceptable value between the set limits. If no function is
                provided, GRASP uses normal arithmetic comparison of the
                values, considered as unsigned binary numbers.</t>
              </list></t>

            <t>grasp_listen_negotiate(objective) -> OK/fail<list
                style="symbols">
                <t>This causes GRASP to listen for negotiation requests for
                the given objective, and to negotiate within the limits set
                (see below). This call may be repeated whenever the limits
                change.</t>

                <t>OK: GRASP is listening.</t>

                <t>fail: GRASP is not listening.</t>
              </list></t>

            <t>asa_negotiate_result(objective) -> objective/fail<list
                style="symbols">
                <t>This is a function in the ASA called asynchronously by
                GRASP, if the ASA has previously called grasp_listen_negotiate
                and an incoming negotiation has terminated.</t>

                <t>objective: Negotiation succeeded, this contains the
                negotiated value.</t>

                <t>fail: Negotiation failed.</t>
              </list></t>

            <t>grasp_stop_negotiate(objective) -> OK/fail<list
                style="symbols">
                <t>This causes GRASP to stop listening for negotiation
                requests for the given objective.</t>

                <t>OK: GRASP is not listening.</t>

                <t>fail: unspecified failure.</t>
              </list></t>

            <t>grasp_listen_synchronize(objective) -> OK/fail<list
                style="symbols">
                <t>This causes GRASP to listen for synchronization requests
                for the given objective, and to reply with the given value.
                This call may be repeated whenever the value changes.</t>

                <t>OK: GRASP is listening.</t>

                <t>fail: GRASP is not listening.</t>
              </list></t>

            <t>grasp_stop_synchronize(objective) -> OK/fail<list
                style="symbols">
                <t>This causes GRASP to stop listening for synchronization
                requests for the given objective.</t>

                <t>OK: GRASP is not listening.</t>

                <t>fail: unspecified failure.</t>
              </list></t>
          </list></t>
      </section>
    </section>

    <!---->

    <section anchor="security" title="Security Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This does not need IANA assignment.</t>

      <t/>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>This document was produced using the xml2rfc tool <xref
      target="RFC2629"/>.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.2629'?>

      <?rfc include='reference.I-D.ietf-anima-grasp'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.I-D.ietf-anima-reference-model'?>

      <?rfc include='reference.I-D.liu-anima-grasp-distribution'?>
    </references>
  </back>
</rfc>

PAFTECH AB 2003-20262026-04-23 02:58:21