<?xml version="1.0" encoding="US-ASCII"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rfc"?>
<!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->
<rfc category="std" docName="draft-zhu-dnsop-de-eeas-01" ipr="trust200902"
     >
  <!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="de-eeas">DNS Extensions to Energy Efficiency as
    Service(EEAS)</title>

    <!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-zhu-dnsop-de-eeas-01"/>

    <author fullname="Huahong Zhu" initials="H" role="editor" surname="Zhu">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->

      <!-- Can have more than one author -->

      <!-- all of the following elements are optional -->

      <organization>China Telecom</organization>

      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->

          <street>Zhongshan Avenue West</street>

          <city>Guangzhou</city>

          <region>Guangdong</region>

          <code>510630</code>

          <country>CN</country>

          <!-- Uses two letter country code -->
        </postal>

        <phone>8613316097206</phone>

        <email>zhuhh11@chinatelecom.cn</email>

        <!-- Can have more than one <email> element -->

        <uri/>
      </address>
    </author>

    <author fullname="Shiying Liu" initials="S" role="editor" surname="Liu">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->

      <!-- Can have more than one author -->

      <!-- all of the following elements are optional -->

      <organization>China Telecom</organization>

      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->

          <street>North Chaoyangmen Street</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100010</code>

          <country>CN</country>

          <!-- Uses two letter country code -->
        </postal>

        <phone>8618901168068</phone>

        <email>liusy@chinatelecom.cn</email>

        <!-- Can have more than one <email> element -->

        <uri/>
      </address>
    </author>

    <date day="9" month="February" year="2026"/>

    <!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>Internet</area>

    <workgroup>DNSOP Working Group</workgroup>

    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword>DNS</keyword>

    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <t>This document describes a new Mechanism and DNS resource record (RR)
      type to carry information about energy-related characteristics for
      end-to-end internet access. The "EE" ("Energy Efficiency") record allows
      the network to provide different levels of energy-saving service. By
      providing more energy information to the client before it attempts to
      establish a connection, these records offer potential benefits to
      enhancements on energy as service criteria.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Energy savings and green communication are crucial due to the effects
      of climate change and the global energy shortage. Today, users who are
      more aware and sensitive toward environment may prefer reducing their
      carbon footprint by choosing more renewable energy sources than
      non-renewable sources for network services, even if it means compromised
      service performance.</t>

      <t>With intended usage of renewable energy sources in the network, the
      usage efficiency of energy consumption may be improved when resolving
      domain-names by taking availability of renewable energy sources into
      consideration. Overall reduction in energy usage and prioritizing usage
      of renewable energy sources over non-renewable energy sources need a
      coordinated solution at both user and application levels from the
      perspective of end-to-end. DNS can play an important role in the whole
      process. For example, authoritative servers can implement energy-aware
      load balancing and scheduling functions based on energy-related
      strategies. However, the exposure of the users' consent, awareness, and
      energy-related information is necessary in this context as it may result
      in dynamic service adjustment at flow level based on energy. Thus,
      energy-aware Domain Name resolution with the user's consent and
      awareness is the requirement for energy saving and green energy
      usage.</t>

      <t>To support Energy Efficiency as a service in the DNS, this document
      defines the following extensions:</t>

      <t><list style="symbols">
          <t>The "EE" ("Energy Efficiency") record type is defined that can be
          applied directly and efficiently to a wide range of services. The
          information helps make connectivity decisions with low carbon
          emissions by using more renewable energy source-operated
          servers.</t>

          <t>A mechanism is described how the "EE resolution" is performed by
          the client and DNS servers. If a client learns more about the origin
          energy before connecting (such as energy consumption, energy supply
          mix, power usage effectiveness, and availability conditions), it may
          be able to choose a greener endpoint without degrading the service
          experience.</t>

          <t>The "EE" ("Energy Efficiency") record's compatibility with other
          resource records is described.</t>
        </list></t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>

      <!-- [CHECK] The 'Requirements Language' section is optional -->
    </section>

    <section title="The EE Record Definitions">
      <section title="EE Record Format">
        <t>The EE DNS RR type is used to choose an alternative endpoint for
        the energy service by clients.</t>

        <t>EE RRs have the same top-level format as other RRs<xref
        target="RFC1035"/></t>

        <figure align="center">
          <artset>
            <artwork type="ascii-art"><![CDATA[ 0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    Name                       |
/                                               /
/                                               /
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    Type                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    Class                ^     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                     TTL                       |
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    RDLENGTH                   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/                     RDATA                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  Figure 1 The top-level format of EE RR]]></artwork>
          </artset>
        </figure>

        <t>Where:</t>

        <t><list style="symbols">
            <t>NAME: A &lt;domain-name&gt; which specifies a host.</t>

            <t>TYPE: A new EE RR TYPE code with two octets is registered by
            IANA.</t>

            <t>CLASS: Two octets contain one of the EE RR CLASS code.</t>

            <t>TTL: A 32-bit signed integer that specifies the time inteval of
            the EE record cached before the source of the information should
            again be consulted.</t>

            <t>RDLENGTH: An unsigned 16-bit integer between 0 and 65535 that
            specifies the length in octets of the RDATA field.</t>

            <t>RDATA: A variable-length string of octets that describes the
            energy-related information.</t>
          </list></t>
      </section>

      <section title="RDATA Format">
        <t>The presentation format &lt;RDATA&gt; of the record <xref
        target="RFC1035"/> has the form:</t>

        <figure align="center">
          <artset>
            <artwork type="ascii-art"><![CDATA[ 0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+        
|                   PRIORITY                    |        
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+        
/                     ENAME                     /        
/                                               /        
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+        
/                   EEPARAMS                    /        
/                                               /        
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
     Figure 2 The format of the RDATA]]></artwork>
          </artset>
        </figure>

        <t>Where:</t>

        <t><list style="symbols">
            <t>PRIORITY: An unsigned 16-bit integer that specifies the
            priority of this record.</t>

            <t>ENAME: A &lt;domain-name&gt; which specifies a host of an
            alternative endpoint.</t>

            <t>EEPARAMS: A &lt;character-string&gt; which specifies the energy
            parameters of the alternative endpoint.</t>
          </list></t>
      </section>

      <section title="Interpretation">
        <section title="PRIORITY">
          <t>RRsets are explicitly unordered collections, so the PRIORITY
          field imposes an ordering on EE RRs. A smaller PRIORITY indicates
          that the domain owner prefers the usage of this record to other RRs
          with a larger PRIORITY value. A value of 0 indicates AliasMode.
          Other values indicate Servicemode.</t>

          <t>When receiving an RRset containing multiple EE records with the
          same PRIORITY value, clients SHOULD apply a random shuffle within a
          priority level to select the records to ensure uniform load
          balancing.</t>
        </section>

        <section title="ENAME">
          <t>ENAME May be the domain name of either the alias target (for
          AliasMode) or the alternative endpoint (for ServiceMode).</t>

          <t>In AliasMode, the EE record aliases a service to an ENAME. EE
          RRsets SHOULD only have a single RR in AliasMode. If multiple
          AliasMode RRs are present, either clients or recursive resolvers
          SHOULD pick one at random.</t>

          <t>In ServiceMode, the ENAME and EEPARAMS within each RR associate
          an alternative endpoint for the service with its connection
          parameters.</t>
        </section>

        <section title="EEPARAMS">
          <t>EEPARAMS is a whitespace-separated list with each EEPARAM
          consisting of an EeParamKey=EeParamValue pair. EeParamKey names are
          presented by lowercase alphanumeric strings from the ranges "a"-"z"
          and "0"-"9". Each EeParamKey SHALL appear at most once in the
          EEPARAMS. EeParamKeys SHOULD be registered by IANA. EEPARAMS in
          presentation format MAY appear in any order, but keys MUST NOT be
          repeated.</t>

          <t>The EeParamValue is a character string. If the optional "=" and
          EeParamValue are omitted, the value is interpreted as empty.</t>
        </section>

        <section title="Initial EeParamKeys">
          <t>A few initial EeParamKeys are defined here.</t>

          <t>The "et" EeParamKey indicates the type of energy. The
          presentation value SHALL be a comma-separated list of one or more
          et-ids.</t>

          <t>The "eei" EeParamKey indicates the Energy Efficiency Index of
          alternative endpoints. The index of Energy Efficiency is defined
          into five levels from 1 to 5. The presentation value SHALL be 4 bits
          in length.</t>

          <t>The "pue" EeParamKey indicates the power usage effectiveness of
          the alternative data centers. The presentation value SHALL be a
          2-octet length.</t>

          <t>The "v4addr" EeParamKey conveys IPv4 addresses used to reach the
          endpoint to minimize additional connection latency by clients.</t>

          <t>The "v6addr" EeParamKey conveys IPv6 addresses used to reach the
          endpoint to minimize additional connection latency by clients.</t>
        </section>
      </section>
    </section>

    <section title="&quot;.&quot; in ENAME">
      <t>If ENAME has the value "." (represented in the wire format as a
      zero-length label), special rules apply.</t>

      <section title="AliasMode">
        <t>For AliasMode EE RRs, an ENAME of "." indicates that the service is
        not available or does not exist. This indication is advisory: clients
        encountering this indication MAY ignore it and attempt to connect
        without EE.</t>
      </section>

      <section title="ServiceMode">
        <t>For ServiceMode EE RRs, if ENAME has the value ".", then the owner
        name of this record MUST be used as the effective ENAME. If the record
        has a wildcard owner name in the zone file, the recipient SHALL use
        the response's synthesized owner name as the effective ENAME.</t>
      </section>
    </section>

    <section title="Client Behavior">
      <t>"EE resolution" is the process of enumerating and ordering the
      available endpoints for a service, as performed by the client. EE
      resolution is as follows:</t>

      <t><list style="numbers">
          <t>Carry a domain name as $QNAME for query in the Question
          section.</t>

          <t>Issue an EE query for $QNAME.</t>

          <t>If an AliasMode EE record is returned, set $QNAME to its ENAME
          and loop back to Step 2, subject to chain length limits and loop
          detection heuristics.</t>

          <t>If one or more ServiceMode records are returned, these represent
          the alternative endpoints. Sort the records by ascending
          PRIORITY.</t>

          <t>Otherwise, EE resolution has failed, and the list of available
          endpoints is empty.</t>
        </list>This procedure does not rely on any recursive or authoritative
      DNS server to comply with this specification or have any awareness of
      EE.</t>

      <t>Clients MUST consider an RR malformed if:</t>

      <t><list style="symbols">
          <t>The end of the RDATA occurs within an EEPARAM.</t>

          <t>EeParamKeys are not in strictly increasing numeric order.</t>

          <t>The EeParamValue for an EeParamKey does not have the expected
          format.</t>
        </list>Note that the second condition implies that there are no
      duplicate EeParamKeys.</t>

      <t>If any RRs are malformed, the client MUST reject the entire RRset and
      fall back to non-EE connection establishment.</t>
    </section>

    <section title="DNS Server Behavior">
      <section title="Authoritative Servers">
        <t>When replying to an EE query, authoritative DNS servers SHOULD
        return A, AAAA, and EE records in the Additional section for any ENAME
        that is in the zone. If the zone is signed, the server SHOULD also
        include DNSSEC records in the Additional section whether the existence
        of these records or not.</t>
      </section>

      <section title="Recursive Resolvers">
        <t>Whether the recursive resolver is aware of EE or not, the normal
        response construction process used for unknown RR types<xref
        target="RFC3597"/> generates the Answer section of the response. If
        recursive resolvers are aware of EE, they SHOULD help the client
        execute the procedure in Section 4 with minimum overall latency by
        incorporating additional valid information into the Additional section
        of the response as follows:</t>

        <t><list style="numbers">
            <t>Incorporate the results of EE resolution. If the recursive
            resolver's local chain length limit (which may be different from
            the client's limit) has been reached, terminate.</t>

            <t>If any of the resolved EE record is in AliasMode, choose one of
            them at random, and resolve EE, A, and AAAA records for its
            ENAME.<list style="symbols">
                <t>If any EE record is resolved, go to Step 1.</t>

                <t>Otherwise, incorporate the results of A and AAAA
                resolution, and terminate.</t>
              </list></t>

            <t>All the resolved EE records are in ServiceMode. Resolve A and
            AAAA queries for each ENAME (or for the owner name if ENAME is
            "."), incorporate all the results, and terminate.</t>
          </list>In this procedure, "resolve" means processing a query for
        that set as the resolver's ordinary recursive resolution procedure.
        This includes following any alias that the resolver would ordinarily
        follow (e.g., CNAME). Errors or anomalies inobtaining additional
        records MAY cause this process to terminate, but they MUST NOT cause
        the resolver to send a response about failure.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->

      <section title="EE RR Type">
        <t>The EE RR type SHOULD be registered on the "Domain Name System
        (DNS) Parameters" page with a new code by IANA.</t>
      </section>

      <section title="EEPARAMS Registry">
        <t>The "Energy Efficiency Parameter Keys (EeParamKeys)" SHOULD be
        registered in the "Domain Name System (DNS) Parameters" category of a
        new page entitled "DNS Energy Efficiency (EE)" by IANA. This registry
        defines the namespace for parameters, including string representations
        and numeric EeParamKey values.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->

      <t>This document should not affect the security of the Internet.
      [CHECK]</t>
    </section>

    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"
                    xmlns:xi="http://www.w3.org/2001/XInclude"/>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"
                    xmlns:xi="http://www.w3.org/2001/XInclude"/>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"
                    xmlns:xi="http://www.w3.org/2001/XInclude"/>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml"
                    xmlns:xi="http://www.w3.org/2001/XInclude"/>

        <!-- The recommended and simplest way to include a well known reference -->
      </references>

      <references>
        <name>Informative References</name>
      </references>
    </references>

    <section anchor="Acknowledgements" numbered="false"
             title="Acknowledgements">
      <!-- [REPLACE/DELETE] an Acknowledgements section is optional -->

      <t>Thanks Aijun Wang for the template and help on this draft.</t>
    </section>
  </back>
</rfc>
