<?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 RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4271 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
<!ENTITY RFC5065 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5065.xml">
<!ENTITY RFC6480 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6480.xml">
<!ENTITY I-D.ietf-sidr-bgpsec-protocol SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-sidr-bgpsec-protocol.xml">
<!ENTITY I-D.ga-idr-as-migration SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ga-idr-as-migration.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-george-sidr-as-migration-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="as-migration">BGPSec Considerations for AS
    Migration</title>

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

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

    <author fullname="Wesley George" initials="W" surname="George">
      <organization>Time Warner Cable</organization>

      <address>
        <postal>
          <street>13820 Sunrise Valley Drive</street>

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

          <city>Herndon</city>

          <region>VA</region>

          <code>20171</code>

          <country>US</country>
        </postal>

        <phone>+1 703-561-2540</phone>

        <email>wesley.george@twcable.com</email>

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

    <date day="24" month="September" year="2012"/>

    <!-- 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>as-migration, SIDR, BGPSec, AS_PATH</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>This draft discusses considerations for supporting and securing a
      common method for AS-Migration within the BGPSec protocol.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>There is a common method of managing an ASN migration using some BGP
      knobs that while commonly-used are not formally part of the <xref
      target="RFC4271">BGP4</xref> protocol specification and may be
      vendor-specific in exact implementation. In order to ensure that this
      behavior is understood and considered for future modifications to the
      BGP4 protocol specification, especially as it concerns the handling of
      AS_PATH attributes, the behavior and process has been defined in <xref
      target="I-D.ga-idr-as-migration">draft-ga-idr-as-migration</xref>.
      Accordingly, it is necessary to discuss this de facto standard to ensure
      that the process and features are properly supported in BGPSec <xref
      target="I-D.ietf-sidr-bgpsec-protocol"/>, because it is explicitly
      designed to protect against changes in the BGP AS_PATH, whether by
      choice, by misconfiguration, or by malicious intent. It is critical that
      the BGPSec protocol framework is able to support this operationally
      necessary tool without creating an unacceptable security risk or exploit
      in the process.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref
        target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section title="General Scenario">
      <t>The use case being discussed in <xref
      target="I-D.ga-idr-as-migration">draft-ga-idr-as-migration</xref> is as
      follows: For whatever the reason, a provider is in the process of
      merging two or more ASNs, where eventually one subsumes the other(s).
      Confederations <xref target="RFC5065">RFC 5065</xref> are *not* being
      implemented between the ASNs, but vendor-specific configuration knobs
      are being used to masquerade as the old ASN for the PE-CE eBGP session,
      or to manipulate the AS_PATH, or both. While BGPSec <xref
      target="I-D.ietf-sidr-bgpsec-protocol"/> does have a case to handle
      standard confederation implementations, it may not be applicable in this
      exact case. The reason that this may drive a slightly different solution
      in BGPSec than a standard confederation is that unlike in a
      confederation, eBGP peers may not be peering with the "correct" external
      ASN, and the forward-signed updates are for a public ASN, rather than a
      private one, so there is no expectation that the BGP speaker should
      strip the updates before propagating the route to its eBGP
      neighbors.</t>

      <t>In the following examples, AS200 is being subsumed by AS300, and both
      ASNs represent an SP network. AS100 and 400 represent end customer
      networks.</t>
    </section>

    <section title="RPKI Considerations">
      <t>Since the methods and implementation discussed in <xref
      target="I-D.ga-idr-as-migration">draft-ga-idr-as-migration</xref> are
      not technically a part of the BGP4 protocol implementation, but rather a
      vendor-specific optimization, BGPSec is not technically required to
      ensure that it continues functioning as it does today. However, this is
      widely used during network integrations resulting from mergers and
      acquisitions, as well as network redesigns, and therefore it is not
      feasible to simply eliminate this capability on any BGPSec-enabled
      routers/ASNs. What follows is a discussion of the potential issues to be
      considered regarding how ASN-migration and RPKI validation might
      interact.</t>

      <t>Additionally, companies rarely stop with one
      merger/acquisition/divestiture, and end up accumulating several legacy
      ASNs over time. Since they are using methods to migrate that do not
      require coordination with customers, they do not have a great deal of
      control over the length of the transition period as they might with
      something completely under their administrative control like a key roll.
      This leaves many SPs with multiple legacy ASNs which don't go completely
      and cleanly away very quickly, if at all. As solutions are being
      proposed for RPKI implementations to solve this transition case,
      operational complexity and hardware scaling considerations associated
      with maintaining multiple legacy ASN keys on routers throughout the
      combined network have to be carefully considered. While part of the
      recommendation may be "SPs SHOULD NOT remain in this transition phase
      indefinitely because of the operational complexity and scaling
      considerations associated with maintaining multiple legacy ASN keys on
      routers throughout the combined network", this is of limited utility as
      a solution, and so every effort needs to be made to allow the transition
      period to be less onerous, on the assumption that it will likely be
      protracted.</t>

      <section title="Origin Validation">
        <t>In the scenario discussed, AS200 is being replaced by AS300. If
        there are any existing routes originated by AS200 on the router being
        moved into the new ASN, this is likely as simple as generating new
        ROAs for the routes with the new ASN and treating them as new routes
        to be added to AS300/removed from AS200. However, consider the
        situation where one or more PEs are still in AS200, and are
        originating one or more routes. When those routes arrive at PE1, which
        is now a part of AS300 and instructed to use replace-as to remove
        AS200 from the path, how does it handle routes originated from AS200?
        If the route now shows up as originating from AS300, any downstream
        peers' validation check will fail unless a ROA is *also* available for
        AS300 as the origin ASN, meaning that there will be overlapping ROAs
        until all routers originating prefixes from AS200 are migrated to
        AS300.</t>

        <t>[AUTHOR's NOTE, remove before publishing: may need a citation to
        the specific text in the Origin validation spec <xref
        target="RFC6480">RFC 6480</xref> or related documents that allows an
        overlap period on ROAs for transitions like this. also may need to
        rewrite this as a procedure in RFC2119 language, rather than a
        discussion. END NOTE]</t>
      </section>

      <section title="Path Validation">
        <t>BGPSec Path Validation requires that each router in the AS_PATH
        cryptographically sign its update to assert that "Every AS listed in
        the AS_PATH attribute of the update explicitly authorized the
        advertisement of the route to the subsequent AS in the AS_PATH." Since
        this migration technique is explicitly modifying the AS_PATH between
        two eBGP peers who are not coordinating with one another (are not in
        the same administrative domain), no level of trust can be assumed, and
        therefore it may be difficult to identify legitimate manipulation of
        the AS_PATH for migration activities when compared to manipulation due
        to misconfiguration or malicious intent.</t>

        <section title="Outbound announcements (PE--&gt;CE)">
          <t>When PE1 is moved from AS200 to AS300, it will be provisioned
          with the appropriate keys for AS300 so that it can begin
          forward-signing routes using AS300. However, there is currently no
          guidance in the BGPSec protocol specification on whether or not the
          forward-signed ASN value MUST match the configured "remote-as" to
          validate properly. That is, if CE1's BGP session is configured as
          "remote-as 200", the presence of "local-as 200" on PE1 will ensure
          that there is no ASN mismatch on the BGP session itself, but if CE1
          receives updates from its remote neighbor (PE1) forward-signed from
          AS300, should the BGPSec validator on CE1 still consider those valid
          by default? If it does, is there any potential attack vector to
          consider?</t>

          <t>If enabling strict validation that remote-AS and
          forward-signed-AS match is desirable, a possible alternative would
          be to retain the keys for AS200 on PE1, and forward-sign towards CE1
          with AS200 and Pcount=0. However, this would mean passing a pcount=0
          between two ASNs that are in different administrative and trust
          domains such that it could represent a significant attack vector to
          manipulate BGPSec-signed paths. The expectation for legitimate
          instances of Pcount=0 (to make a route-server that is not part of
          the transit path invisible) is that there is some sort of existing
          trust relationship between the operators of the route-server and the
          downstream peers such that the peers could be explicitly configured
          by policy to permit PCount=0 announcements only on the sessions
          where they are expected, and otherwise reject them. For the same
          reason that things like local-as are used for ASN migration without
          end customer coordination, it is unrealistic to assume any sort of
          coordination between the SP and the administrators of CE1 to ensure
          that they will by policy accept PCount=0 signatures during the
          transition period, and therefore this may not be a workable
          solution.</t>
        </section>

        <section title="Inbound announcements (CE--&gt;PE)">
          <t>Inbound is more complicated, because the CE doesn't know that PE1
          has changed ASNs, so it is forward-signing all of its routes with
          AS200, not AS300. The BGPSec speaker cannot [MUST NOT??] manipulate
          previous signatures, and therefore cannot manipulate the previous
          AS_Path without causing a mismatch that will invalidate the route.
          If the updates are simply left intact, the ISP would still need to
          publish and maintain valid and active public-keys for AS 200 if it
          is to appear in the BGPSec_Path_Signature in order that receivers
          can validate the BGPSEC_Path_Signature arrived intact/whole.
          However, if the updates are left intact, this will cause the AS_PATH
          length to be increased, which as previously stated is undesirable.
          More discussion is needed to determine possible solutions that
          enable this transition without defeating the added security that
          BGPSec provides.</t>
        </section>
      </section>
    </section>

    <section title="Requirements">
      <t>PLACEHOLDER for a set of requirements, defining what SIDR Origin
      Validation/BGPSEC &lt;RFC2119-word&gt; do to enable this migration
      strategy to work securely. Need input from WG as to how to proceed.</t>

      <t>Options:</t>

      <t><list style="numbers">
          <t>Add implementation considerations and/or protocol changes to
          support AS-Migration into the BGPSec protocol doc or another
          existing BGPSec document</t>

          <t>Use this draft to document how BGPSec and Origin Validation will
          need to handle the AS-migration procedure (move to PS status?),
          possibly as an update to the BGPSec protocol document</t>

          <t>Explicitly prohibit/deprecate this process for AS-Migration (a la
          AS_Sets) as something that cannot be properly secured within
          BGPSec</t>

          <t>define a new/updated/improved standard method for asymmetric ASN
          migrations which is explicitly designed to operate within the bounds
          of BGPSec (instead of trying to make the existing implementations
          work with no changes) - probably in IDR</t>
        </list>The author does not believe that option #3 is the correct
      course of action because this is in wide use among operators today, and
      no acceptable alternative exists to make the act of merging ASNs less
      onerous.</t>
    </section>

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

    <?rfc needLines="8" ?>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Thanks to Kotikalapudi Sriram and Shane Amante for their
      comments.</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This draft discusses a process by which one ASN is migrated into and
      subsumed by another. Because this involves manipulating the AS_Path to
      make it deviate from the actual path that it took through the network,
      it is in some ways attempting to do exactly what BGPSec is working to
      prevent. The BGPSec implementation MUST be able to manage this
      legitimate use of AS_Path manipulation without generating a
      vulnerability in the RPKI route security infrastructure that can be
      exploited by a malicious actor.</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"?-->

      &RFC2119;

      &I-D.ietf-sidr-bgpsec-protocol;

      &I-D.ga-idr-as-migration;
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      &RFC4271;

      &RFC5065;

      &RFC6480;
    </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>
