<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<rfc category="info" docName="draft-ietf-sidr-roa-validation-00.txt"
     ipr="full3978">
  <front>
    <title abbrev="Route Validation">Validation of Route Origination in BGP
    using the Resource Certificate PKI</title>

    <author fullname="Geoff Huston" initials="G." surname="Huston">
      <organization abbrev="APNIC">Asia Pacific Network Information
      Centre</organization>

      <address>
        <email>gih@apnic.net</email>

        <uri>http://www.apnic.net</uri>
      </address>
    </author>

    <author fullname="George Michaelson" initials="G." surname="Michaelson">
      <organization abbrev="APNIC">Asia Pacific Network Information
      Centre</organization>

      <address>
        <email>ggm@apnic.net</email>

        <uri>http://www.apnic.net</uri>
      </address>
    </author>

    <date year="2008" />

    <area>Individual Submission</area>

    <workgroup>Individual Submission</workgroup>

    <abstract>
      <t>This document defines an application of the Resource Public Key
      Infrastructure to validate the origination of routes advertised in the
      Border Gateway Protocol. The proposed application is intended to fit
      within the requirements for adding security to inter-domain routing,
      including the ability to support incremental and piecemeal deployment,
      and does not require any changes to the specification of BGP.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>This document defines an application of the Resource Public Key
      Infrastructure (RPKI) to validate the origination of routes advertised
      in the Border Gateway Protocol (BGP) <xref target="RFC4271"></xref>.</t>

      <t>The RPKI is based on Resource Certificates. Resource Certificates are
      X.509 certificates that conform to the PKIX profile <xref
      target="RFC5280"></xref>, and to the extensions for IP addresses and AS
      identifiers <xref target="RFC3779"></xref>. A Resource Certificate
      describes an action by an Issuer that binds a list of IP address blocks
      and Autonomous System (AS) numbers to the Subject of a certificate,
      identified by the unique association of the Subject's private key with
      the public key contained in the Resource Certificate. The PKI is
      structured such that each current Resource Certificate matches a current
      resource allocation or assignment. This is described in <xref
      target="I-D.ietf-sidr-arch"></xref>.</t>

      <t>Route Origin Authorizations (ROAs) are digitally signed objects that
      bind an address to an AS number, signed by the address holder. A ROA
      provides a means of verifying that an IP address block holder has
      authorized an AS to originate route objects in the inter-domain routing
      environment for that address block. ROAs are described in <xref
      target="I-D.ietf-sidr-roa-format"></xref>.</t>

      <t>Bogon Origin Attestations (BOAs) are digitally signed objects that
      describe a collection of address prefixes and AS numbers that are not
      authorised by the right-of-use holder to be advertised in the
      inter-domain routing system <xref
      target="I-D.ietf-sidr-boa"></xref>.</t>

      <t>This document describes how ROA and BOA validation outcomes can be
      used in the BGP route selection process, and how the proposed
      application of ROAs and BOAs are intended to fit within the requirements
      for adding security to inter-domain routing <xref
      target="ID.ietf-rpsec-bgpsecrec"></xref>, including the ability to
      support incremental and piecemeal deployment. This proposed application
      does not require any changes to the specification of BGP protocol
      elements. The application may be used as part of BGP's local route
      selection algorithm <xref target="RFC4271"></xref>.</t>
    </section>

    <section anchor="Outcomes"
             title="Validation Outcomes of a BGP Route Object">
      <t>A BGP Route Object is an address prefix and a set of attributes. In
      terms of ROA and BOA validation the prefix value and the origin AS are
      used in the validation operation.</t>

      <t>If the route object is an aggregate and the AS Path contains an AS
      Set, then the origin AS is considered to be the AS described as the
      AGGREGATOR <xref target="RFC4271"></xref> of the route object.</t>

      <t>ROA validation is described in <xref
      target="I-D.ietf-sidr-roa-format"></xref>, and the outcome of the
      validation operation is that the ROA is valid in the context of the
      RPKI, or validation has failed.</t>

      <t>BOA validation is described in <xref
      target="I-D.ietf-sidr-boa"></xref>, and the outcome of the validation
      operation is that the BOA is valid in the context of the RPKI, or
      validation has failed.</t>

      <t>There appears to be two means of matching a route object to a ROA:
      decoupled and linked.</t>

      <section title="Decoupled Validation">
        <t>The decoupled approach is where the ROAs are managed and
        distributed independently of the operation of the routing protocol and
        a local BGP speaker has access to a local cache of the complete set of
        ROAs and the RPKI data set when performing a validation operation.</t>

        <t>In this case the BGP route object does not refer to a specific ROA.
        The relying party to match a route object to one or more candidate
        valid ROAs and BOAs in order to determine the appropriate local
        actions to perform on the route object.</t>

        <t>The relying party selects the set of ROAs where the address prefix
        in the route object either exactly matches an ROAIPAddress (matching
        both the address prefix value and the prefix length), or where the
        route object spans a block of addresses that is included in the span
        described by the ROA's address prefix value and length and where the
        route object's prefix length is less than the ROA's prefix length and
        greater then or equal to the ROA's corresponding maxLength
        attribute.</t>

        <t>The following outcomes are possible using the defined ROA
        validation procedure for each ROA in this set:</t>

        <t><list style="symbols">
            <t>An "exact match" is a valid ROA where the address prefix in the
            route object exactly matches a prefix listed in the ROA and the
            origin AS in the route object matches the origin AS listed in the
            ROA.<vspace blankLines="1" /></t>

            <t>A "covering match" is a valid ROA where the address prefix in
            the ROA is a covering aggregate of the prefix in the route object,
            and the prefix length of the route object is greater than or equal
            to the ROA's maxLength attribute, and the origin AS in the route
            object matches the AS listed in the ROA.<vspace
            blankLines="1" /></t>

            <t>An "exact mismatch" is a ROA where the address prefix in the
            route object exactly matches a prefix listed in the ROA and the
            origin AS of the route object does not match the AS listed in the
            ROA.<vspace blankLines="1" /></t>

            <t>A "covering mismatch" is a ROA where the address prefix in the
            ROA is a covering aggregate of the prefix in the route object, the
            prefix length of the route object is greater than or equal to the
            ROA's maxLength attribute, and the origin AS of the route object
            does not match the AS listed in the ROA.<vspace
            blankLines="1" /></t>

            <t>"ROA missing" is where there are no exact or covering matches,
            no exact or covering mismatches and no exact of covering failures
            in the RPKI repository.</t>
          </list></t>

        <t>In this case the ROA that would be used for the validation function
        is selected from the set such that the most specific valid ROA that
        matches or covers the route object address prefix and where the route
        object origin AS matches the ROA AS. If there is no such ROA in the
        set, then the most specific valid ROA is selected. If there is no such
        ROA in the set then the most specific ROA is selected.</t>

        <t>The set of BOAs that are used in validation are composed of the set
        of valid BOAs where the origin AS matches an AS described in a BOA, or
        where the BOA's address prefix is an exact match or a covering
        aggregate of the route object. In the case that the validation outcome
        using ROAs is one of ("exact mismatch", "covering mismatch" or "ROA
        missing"), then the validation outcome of the BOA changes the overall
        validation result to "bogon match".</t>
      </section>

      <section title="Linked Validation">
        <t>The linked approach requires the route object to reference a ROA
        either by inclusion of the ROA as an attribute of the route object, or
        inclusion of a identity field in an attribute of the route object as a
        means of identifying a particular ROA. The relying party will still
        need check for BOAs that refer to this route object in the case that
        an exact match or a covering match is not present. The set of possible
        outcomes of linked validation is as follows:</t>

        <t><list style="symbols">
            <t>"exact match"<vspace blankLines="1" /></t>

            <t>"covering match"<vspace blankLines="1" /></t>

            <t>"exact mismatch"<vspace blankLines="1" /></t>

            <t>"covering mismatch"<vspace blankLines="1" /></t>

            <t>"bogon match"<vspace blankLines="1" /></t>

            <t>"ROA missing"</t>
          </list></t>
      </section>
    </section>

    <section anchor="Selection"
             title="Applying Validation Outcomes to BGP Route Selection">
      <t>Within the framework of the abstract model of BGP operation, a
      received prefix announcement from a peer is compared to all
      announcements for this prefix received from other peers and a route
      selection procedure is used to select the "best" route object from this
      candidate set which is then used locally by placing it in the loc-RIB,
      and is announced to peers as the local "best" route.</t>

      <t>It is proposed that the validation outcome be used as part of the
      determination of the local degree of preference as defined in section
      9.1.1 of the BGP specification <xref target="RFC4271"></xref>.</t>

      <t>In the case of partial deployment of ROAs there are a very limited
      set of circumstances where the outcome of ROA validation can be used as
      grounds to reject all consideration of the route object as an invalid
      advertisement. While the presence of a valid ROA that matches the
      advertisement is a strong indication that an advertisement matches the
      authority provided by the prefix holder to advertise the prefix into the
      routing system, the absence of a ROA or the invalidity of a covering ROA
      does not provide a conclusive indication that the advertisement has been
      undertaken without the address holder's permission, unless the object is
      described in a BOA.</t>

      <t>In the case of a partial deployment scenario or RPKI route
      attestation objects, when some prefixes are described in ROAs or BOAs
      and others are not, then the relative ranking of validation outcomes
      from the highest (most preferred) to the lowest (least preferred) degree
      of preference are proposed as follows:</t>

      <t><list style="numbers">
          <t>"exact match"<vspace blankLines="1" />An exact match indicates
          that the prefix has been allocated and is routeable, and that the
          prefix right-of-use holder has authorized the originating AS to
          originate precisely this announcement.<vspace blankLines="1" /></t>

          <t>"covering match"<vspace blankLines="1" />A covering match is
          slightly less preferred because it is possible that the address
          holder of the aggregate has allocated the prefix in question to a
          different party, and both the aggregate address holder and the
          prefix holder have signed ROAs and are advertising the
          prefix.<vspace blankLines="1" /></t>

          <t>"ROA missing"<vspace blankLines="1" />In the case of partial
          deployment of ROAs the absence of validation credentials is neutral,
          in that there is no grounds to increase or decrease the relative
          degree of preference for the prefix.<vspace blankLines="1" /></t>

          <t>"covering mismatch"<vspace blankLines="1" />A covering mismatch
          is considered to be less preferable than a neutral position in that
          the address holder of a covering aggregate has indicated an
          originating AS that is not the originating AS of this announcement.
          On the other hand it may be the case that this prefix has been
          validly allocated to another party who has not generated a ROA for
          this prefix even through the announcement is valid.<vspace
          blankLines="1" /></t>

          <t>An "exact mismatch"<vspace blankLines="1" />Here the exact match
          prefix holder has validly provided an authority for origination by
          an AS that is not the AS that is originating this announcement. This
          would appear to be a bogus announcement by inference.<vspace
          blankLines="1" /></t>

          <t>"bogon match"<vspace blankLines="1" />Here the right-of-use
          holder of the AS or address prefix has explicitly tagged the address
          prefix or the AS as a "bogon". This implies that the announcement
          has been made without the appropriate authority, and the prefix
          should be ranked at a level commensurate with rejecting the route
          object.</t>
        </list></t>

      <t>In the case of comprehensive deployment of ROAs the absence of a
      specific origination authority for the route object should render it as
      an unusable for routing. In this case the relative degree of preference
      the relative local degree of preference can be adjusted such that cases
      3 through 5 of the above list have an equal level of lesser
      preference.</t>

      <section anchor="Rejection"
               title="Using Validation Outcomes to reject BGP advertisements">
        <t>The use of a validation outcome of a missing ROA, or a covering or
        exact mismatch as sufficient grounds to reject a route object should
        be undertaken with care. The consideration here is one of potential
        circularity of dependence. If the authoritative publication point of
        the repository of ROAs or any certificates used to related to an
        address prefix is stored at a location that lies within the address
        prefix described in a ROA, then the repository can only be accessed
        once a route for the prefix has been accepted. It is also noted that
        the propagation time of RPKI objects may be different to the
        propagation time of route objects in BGP, and that route objects may
        be received before the relying party's local repository cache picks up
        the associated ROAs and recognises them as valid within the RPKI.</t>

        <t>For these reasons it is proposed that even in the case of
        comprehensive deployment of ROAs a missing ROA or a mismatch should
        not be considered as sufficient grounds to reject a route
        advertisement.</t>
      </section>
    </section>

    <section anchor="Issues" title="Open Issues">
      <t>This document provides a description of how ROAs and BOAs could be
      used by a BGP speaker.</t>

      <t>It is noted that the proposed procedure requires no changes to the
      operation of BGP.</t>

      <t>It is also noted that the decoupled and linked approach are not
      mutually exclusive, and the same procedure can be applied to route
      objects that contain an explicit pointer to the associated ROA and route
      objects where the local BGP speaker has to create a set of candidate
      ROAs that could be applied to a route object. However, there are a
      number of questions about this approach that are not resolved here.</t>

      <t>Some open issues at this point are:<vspace blankLines="1" /> <list
          style="symbols">
          <t>When should validation of an advertised prefix be performed by a
          BGP speaker? Is it strictly necessary to perform validation at a
          point prior to loading the object into the Adj-RIB-In structure, or
          once the object has been loaded into Adj-RIB-In, or at a later time
          that is determined by a local configuration setting? Should
          validation be performed each time a route object is updated by a
          peer even when the origin AS has not altered? <vspace
          blankLines="1" /></t>

          <t>What is the lifetime of a validation outcome? When should the
          routing object be revalidated? Should the validation outcome be
          regarded as valid until the route object is withdrawn or further
          updated, or should validation occur at more frequent intervals?
          <vspace blankLines="1" /></t>

          <t>Are there circumstances that would allow a route object to be
          removed from further consideration in route selection upon a
          validation failure, similar to the actions of Route Flap
          Damping?<vspace blankLines="1" /></t>

          <t>Can ROA validation be performed on a per-AS basis rather than a
          per-BGP speaker? What BGP mechanisms would be appropriate to support
          such a mode of operation?<vspace blankLines="1" /></t>

          <t>If a relying party had access to RPKI signed objects with
          comparable semantics to a Route Registry's Route Object (RRRO),
          namely the acknowledgement by an AS holder that it intends to
          originate an advertisement for a specified address prefix, how would
          this validation procedure be altered. Presumably these signed RRROs
          would need to describe the complete set of address prefixes that may
          be announced by this originating AS in order to be of use in this
          context. Failure to match a valid RPKI RRRO would then be
          commensurate with a "bogon match", namely rejection of the route
          object, in a manner similar to the operation of a filter list
          constructed from a Route Registry.</t>
        </list></t>
    </section>

    <section title="Security Considerations">
      <t>[To be Completed - the intent of this validation approach is to
      improve the level of confidence in route objects in the IDR domain. It
      is noted that this approach does not allow for 'comprehensive'
      validation given that there remains some issues of potential circularity
      of dependence and time lags between the propagation of information in
      the routing system and propagation of information in the RPKI, and
      issues of treatment of unauthorised route objects in the scenario of
      partial use of the RPKI. The consequence is that ROAs can increase the
      confidence in the validity of route objects that match a valid ROA, but
      cannot perform the opposite of explicitly rejecting invalid route
      objects. To assist in the case of rejecting invalid route objects the
      BOA has been used as a means of explicit rejection of certain classes
      route objects. The implication is that RRs should issue both ROAs and
      BOAs in order to provide the greatest level of information that will
      allow relying parties to make appropriate choices in terms of route
      preference selection.]</t>
    </section>

    <section title="IANA Considerations">
      <t>[There are no IANA considerations in this document at this stage.
      Later iterations of this draft may propose to add a ROA identifier into
      the BGP attribute set]</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="I-D.ietf-sidr-arch">
        <front>
          <title>An Infrastructure to Support Secure Internet Routing</title>

          <author fullname="M. Lepinski" initials="M" surname="Lepinski">
            <organization>BBN Technologies</organization>
          </author>

          <author fullname="S. Kent" initials="S" surname="Kent">
            <organization>BBN Technologies</organization>
          </author>

          <author fullname="R. Barnes" initials="R" surname="Barnes">
            <organization>BBN Technologies</organization>
          </author>

          <date day="25" month="February" year="2008" />
        </front>

        <seriesInfo name="Internet-Draft" value="draft-ietf-sidr-arch" />

        <format target="http://draft-ietf-sidr-arch.potaroo.net" type="TXT" />
      </reference>

      <reference anchor="I-D.ietf-sidr-roa-format">
        <front>
          <title>An Infrastructure to Support Secure Internet Routing</title>

          <author fullname="M. Lepinski" initials="M" surname="Lepinski">
            <organization>BBN Technologies</organization>
          </author>

          <author fullname="S. Kent" initials="S" surname="Kent">
            <organization>BBN Technologies</organization>
          </author>

          <author fullname="D. Kong" initials="D" surname="Kong">
            <organization>BBN Technologies</organization>
          </author>

          <date day="7" month="July" year="2008" />
        </front>

        <seriesInfo name="Internet-Draft" value="draft-ietf-sidr-roa-format" />

        <format target="http://draft-ietf-sidr-roa-format.potaroo.net"
                type="TXT" />
      </reference>

      <reference anchor="I-D.ietf-sidr-boa">
        <front>
          <title>Profile for Bogon Origin Attestations (BOAs)</title>

          <author fullname="G. Huston" initials="G" surname="Huston">
            <organization>APNIC</organization>
          </author>

          <author fullname="T. Manderson" initials="T" surname="Manderson">
            <organization>APNIC</organization>
          </author>

          <author fullname="G. Michaelson" initials="G" surname="Michaelson">
            <organization>APNIC</organization>
          </author>

          <date day="7" month="August" year="2008" />
        </front>

        <seriesInfo name="Internet-Draft" value="draft-ietf-sidr-bogons" />

        <format target="http://draft-ietf-sidr-roa-bogons.potaroo.net"
                type="TXT" />
      </reference>

      <reference anchor="ID.ietf-rpsec-bgpsecrec">
        <front>
          <title>BGP Security Requirements</title>

          <author fullname="B. Christian" initials="B" surname="Christian">
            <organization>BBN Technologies</organization>
          </author>

          <author fullname="T. Tauber" initials="T" surname="Tauber">
            <organization>BBN Technologies</organization>
          </author>

          <date day="19" month="November" year="2007" />
        </front>

        <seriesInfo name="EXPIRED Internet-Draft"
                    value="draft-ietf-sidr-roa-format" />

        <format target="http://draft-ietf-sidr-roa-format.potaroo.net"
                type="TXT" />
      </reference>

      <?rfc include='./rfcs/bibxml/reference.RFC.3779.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4271.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.5280.xml'?>
    </references>
  </back>
</rfc>
