<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC3068 SYSTEM "http://xml.resource.org/public/rfc/bibxml-rfcs/reference.RFC.3068.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-shi-v6ops-caba-00" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="FRA">Classless AS-based Addressing</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Xingang Shi" role="editor"
            surname="Shi">
      <organization>Tsinghua Univ.</organization>

      <address>
        <postal>
          <street></street>

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

          <city>Beijing</city>

          <region></region>

          <code></code>

          <country>CN</country>
        </postal>

        <email>shixg@cernet.edu.cn</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Yan Yang" surname="Yang">
      <organization>Tsinghua Univ.</organization>

      <address>
        <postal>
          <street></street>

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

          <city>Beijing</city>

          <region></region>

          <code></code>

          <country>CN</country>
        </postal>

        <email>yangyan15@mails.tsinghua.edu.cn</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Zhiliang Wang" surname="Wang">
      <organization>Tsinghua Univ.</organization>

      <address>
        <postal>
          <street></street>

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

          <city>Beijing</city>

          <region></region>

          <code></code>

          <country>CN</country>
        </postal>

        <email>wzl@csnet1.cs.tsinghua.edu.cn</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Jianping Wu" surname="Wu">
      <organization>Tsinghua Univ.</organization>

      <address>
        <postal>
          <street></street>

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

          <city>Beijing</city>

          <region></region>

          <code></code>

          <country>CN</country>
        </postal>

        <email>jianping@csnet1.cs.tsinghua.edu.cn</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Xia Yin" surname="Yin">
      <organization>Tsinghua Univ.</organization>

      <address>
        <postal>
          <street></street>

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

          <city>Beijing</city>

          <region></region>

          <code></code>

          <country>CN</country>
        </postal>

        <email>yxia@csnet1.cs.tsinghua.edu.cn</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date month="February" day="24" year="2017" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF 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 IETF. -->

    <keyword>template</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>Addressing is the foundation of routing and it impacts the routing scalability. The IPv6 routing system will face severe scalability issue if the IPv6 addresses are recklessly used without careful aggregation strategy. This draft describes an addressing scheme and the corresponding allocation scheme which can facilitate the aggregation of IPv6 addresses and keep the IPv6 inter-domain routing system from being overloaded.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>IP address fragment is one of the most contributing factors that cause scalability problems to the IPv4 inter-domain routing system. The IPv6 routing system will face severe scalability issue if the IPv6 addresses are recklessly used without careful aggregation strategy. This document propose Classless AS-Based Addressing (CABA) scheme, which embeds 32 bits AS number (ASN) into the IPv6 address. If ASNs are properly allocated, CABA can facilitate aggregation of IP addresses and reduce the size of inter-domain routing tables.</t>
    </section>

    <section title="Address format">
      <t>The Classless AS-Based address has five fields of fixed lengths, as shown in Figure 1.</t>

      <figure align="center" anchor="xml_figure1" title="Classless AS-Based address format">
        <artwork align="left"><![CDATA[
+---------+-------------+--------------+------------+--------/ /--------+
| IANA /8 | ASN Low /16 | ASN High /16 | Subnet /24 |   Interface /64   |
+---------+-------------+--------------+------------+--------/ /--------+
            ]]></artwork>
      </figure>

      <t>IANA /8 field should be allocated by IANA.</t>
      <t>ASN Low /16 is the lower 16 bits of the AS number.</t>
      <t>ASN High /16 is the higher 16 bits of the AS number.</t>
      <t>Subnet /24 should be allocated by individual ASes according to their intra-domain routing policies.</t>
      <t>Interface /64 is interface ID.</t>
      <t>All ASNs are assumed as 32 bits long. For a legacy ASN of 16 bits, the higher 16 bits are filled with 0. The document uses AS x.y to denote an ASN whose higher part is x and lower part is y. For example, AS 199081 (0x309a9 in hex) is denoted as AS 3.2473, and the ASN Low /16 field and the ASN High /16 field are 0x09a9 and 0x0003 respectively, as shown in Figure 2.</t>

      <figure align="center" anchor="xml_figure2" title="ASN and IPv6 Block examples">
        <artwork align="left"><![CDATA[
+----------------+--------------------+----------------------------+
| ASN in decimal | ASN in hexadecimal | IPv6 Block                 |
+----------------+--------------------+----------------------------+
| AS 0.2473      | 0x9a9              | [xx]09:a900::/40           |
| AS 3.2473      | 0x309a9            | [xx]09:a900:300::/40       |
+----------------+--------------------+----------------------------+
            ]]></artwork>
      </figure>

      <t>In order to prevent routing scalability issues, any prefixes that are more specific than the allocated /40 should not be advertised into global routing system. Meanwhile, IPv6 operator must filter BGP updates that contain information of more specific prefixes.</t>
      
    </section>

    <section title="ASN allocation">

      <t>To take advantage of this AS-based addressing scheme, this document suggests to allocate ASNs in a way similar to provider-aggregatable (PA) addresses, where each allocation is made by ASes instead of RIRs.</t>

      <t>Initially, a legacy 16-bit ASN is regarded as holding 65536 32-bit ASNs. For example, AS 333 holds ASNs from 0.333 to 65535.333. Existing 32-bit ASNs are regarded as holding only one 32-bit ASN and it is not hold by any other AS. For example, if 2.333 exists, AS 333 holds ASNs 0.333, 1.333 and from 3.333 to 65535.333. And each AS can use only one ASN for routing purpose and this ASN is the smallest among all ASNs it holds.</t>

      <t>When a new AS wants to obtain an ASN, it should choose a provider who holds several ASNs and ask for a unrouted ASN. The provider should response by allocating an ASN or a range of ASNs from its ASN pool according to its policy. Each AS can have its own allocation policy but must conform to the following guidelines:</t>

      <t>1. The higher part of allocated ASNs should be successive.</t>

      <t>2. The higher part of remained ASNs should be as successive as possible (There might be holes due to historical reasons).</t>

      <t>For example, if AS 0.333 allocates 4 ASNs to its customer, it should allocate ASNs from 65532.333 to 65535.333.</t>

      <t>Therefore, an ASN can only decide the number of ASNs in each allocation. As examples, there might be two kind of polices:</t>

      <t>1. Allocating a fixed ratio of all ASNs currently hold by the AS.</t>

      <t>2. Allocating a fixed number of ASNs.</t>

      <t>For example, an AS who has ASNs from 0.100 to 65535.100 may choose to allocate 1/4 of its ASNs (49152.1s00~65535.100) or 256 ASNs (65280.100~65535.100). An AS can define its own allocation policy provided the policy conforms to the above guidelines.</t>

      <t>According to the allocation strategy above, we encode the ASN's lower bits first. Thus ASNs who have the same lower part share a common prefix. As Figure 2 shows, AS 0.2473 and AS 3.2473 share the same prefix [xx]09:a900::/32 and their IPv6 blocks are more likely to be aggregated by ASN allocator AS 0.2473. (xx denote the bits provided by IANA). Therefore, any prefixes that are more specific than the corresponding AS-Based prefix should not be advertised into global routing system. As a result, IPv6 operator must filter the anomalous BGP updates which contain information of more specific prefixes.</t>
    </section>

    <section title="effects on the size of IPv6 inter-domain routing tables">

      <t>For core routers in the Internet, their inter-domain routing tables are usually large and complex. routing tables list the routes to particular network prefixes and some metrics associated with those routes. As there are so many prefixes spreading around the current Internet, core routers' inter-domain routing tables become larger, causing routing system overloaded.</t>

      <t>In the current Internet, an AS usually announces several prefixes to its neighbors. CABA scheme embeds 32-bit ASN into its IPv6 address. If CABA is adopted in the Internet, the number of spreading prefixes will reduce obviously. One AS deploying CABA can only announce one prefix to other networks. Thus, the size of inter-domain routing tables will never be more than the number of ASes. Figure 3 shows the result of our simulation. The routes from inter-domain routing tables are collected by Routeviews in August, 2016. We choose different proportions of ASes in the Internet randomly to adopt CABA scheme and count the size of inter-domain routing tables.</t>

      <figure align="center" anchor="xml_figure3" title="CABA deployment influences sizes of inter-domain routing tables">
        <artwork align="left"><![CDATA[
+---------------+--------+--------+--------+--------+--------+-------+
| adoption rate | 0      | 20     | 40     | 60     | 80     | 100   |
+---------------+--------+--------+--------+--------+--------+-------+
| RIB size      | 634050 | 515201 | 393595 | 280183 | 173500 | 53483 |
+---------------+--------+--------+--------+--------+--------+-------+
            ]]></artwork>
      </figure>

      <t>In addition, since the allocation of ASNs facilitates aggregation of IP addresses (providers can aggregate classless AS-Based addresses which they allocate to customers), the size of routing tables will reduce further.</t>

    </section>

    <!-- This PI places the pagebreak correctly (before the section title) in the text output. -->

    <?rfc needLines="8" ?>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA should allocate a /8 IPv6 address block for this purpose, which is similar to <xref target="RFC3068">2002::/8</xref> used by 6to4. No IPv4 allocation required.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document includes no request to security.</t>
    </section>

    <section title="Conclusions">
      <t>This draft describes an addressing scheme CABA (Classless AS-Based Addressing) and an address allocation scheme which can facilitate aggregation of addresses. CABA can solve the scalability problem of IP address and reduce the size of core RIBs obviously.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

      &RFC3068;

    </references>

    <!-- Change Log

v00 2006-03-15  EBD   Initial version

v01 2006-04-03  EBD   Moved PI location back to position 1 -
                      v3.1 of XMLmind is better with them at this location.
v02 2007-03-07  AH    removed extraneous nested_list attribute,
                      other minor corrections
v03 2007-03-09  EBD   Added comments on null IANA sections and fixed heading capitalization.
                      Modified comments around figure to reflect non-implementation of
                      figure indent control.  Put in reference using anchor="DOMINATION".
                      Fixed up the date specification comments to reflect current truth.
v04 2007-03-09 AH     Major changes: shortened discussion of PIs,
                      added discussion of rfc include.
v05 2007-03-10 EBD    Added preamble to C program example to tell about ABNF and alternative 
                      images. Removed meta-characters from comments (causes problems).  -->
  </back>
</rfc>