<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
 <!ENTITY rfc1918 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1918.xml">
 <!ENTITY rfc1930 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1930.xml">
 <!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
 <!ENTITY rfc3986 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml">
 <!ENTITY rfc4193 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4193.xml">
 <!ENTITY rfc5234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml">
 <!ENTITY rfc6482 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6482.xml">
 <!ENTITY rfc6483 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6483.xml">
 <!ENTITY rfc6491 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6491.xml">
 <!ENTITY rfc6598 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6598.xml">
 <!ENTITY rfc6810 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6810.xml">
 <!ENTITY rfc6890 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6890.xml">
 <!ENTITY rfc6996 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6996.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.ietf-sidr-ltamgmt SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-sidr-ltamgmt.xml">
 <!ENTITY I-D.kent-sidr-suspenders SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.kent-sidr-suspenders.xml">
]>

<?rfc compact="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc strict="yes" ?>
<?rfc subcompact="no" ?>
<?rfc symrefs="yes" ?>
<?rfc toc="yes" ?>

<rfc category="bcp" docName="draft-dseomn-sidr-slurm-00" ipr="trust200902">
 <front>
  <title abbrev="SLURM">Simplified Local internet nUmber Resource Management
   with the RPKI</title>

  <author initials="D." surname="Mandelberg" fullname="David Mandelberg">
   <organization>BBN Technologies</organization>
   <address>
    <postal>
     <street>10 Moulton St.</street>
     <city>Camridge</city>
     <region>MA</region>
     <code>02138</code>
     <country>US</country>
    </postal>

    <email>david@mandelberg.org</email>
   </address>
  </author>

  <date />

  <workgroup>Secure Inter-Domain Routing</workgroup>

  <abstract>
   <t>The Resource Public Key Infrastructure (RPKI) is a global authorization
    infrastructure that allows the holder of Internet Number Resources (INRs)
    to make verifiable statements about those resources. Internet Service
    Providers (ISPs) can use the RPKI to validate BGP route origination
    assertions. Some ISPs locally use BGP with private address space or private
    AS numbers (see RFC6890). These local BGP routes cannot be verified by the
    global RPKI, and SHOULD be considered invalid based on the global RPKI (see
    RFC6491). The mechanisms described below provide ISPs with a way to make
    local assertions about private (reserved) INRs while using the RPKI's
    assertions about all other INRs.</t>
  </abstract>
 </front>


 <middle>
  <section title="Introduction" anchor="sec_intro">
   <t>The Resource Public Key Infrastructure (RPKI) is a global authorization
    infrastructure that allows the holder of Internet Number Resources (INRs) to
    make verifiable statements about those resources. For example, the holder of
    a block of IP(v4 or v6) addresses can issue a Route Origination Authorization
    (ROA) <xref target="RFC6482" /> to authorize an Autonomous System (AS) to
    originate routes for that block.</t>

   <t>Internet Service Providers (ISPs) can then use the RPKI to validate BGP
    routes. However, some ISPs locally use BGP with private address space (<xref
    target="RFC1918" />, <xref target="RFC4193" />, <xref target="RFC6598" />)
    or private AS numbers (<xref target="RFC1930" />, <xref target="RFC6996"
    />). These local BGP routes cannot be verified by the global RPKI, and
    SHOULD be considered invalid when using the RPKI. For example, <xref
    target="RFC6491" /> recommends the creation of ROAs that would invalidate
    routes for reserved and unallocated address space.</t>

   <t>This document specifies two new mechanisms to enable ISPs to make local
    assertions about private INRs while using the RPKI's assertions about all
    other INRs. Both mechanisms are specified in terms of abstract sets of
    assertions. For Origin Validation <xref target="RFC6483" />, an assertion is
    a tuple of {IP prefix, prefix length, maximum length, AS number} as used by
    <xref target="RFC6810">rpki-rtr</xref>. Output Filtering, described in <xref
    target="sec_filtering" />, filters out any assertions by the RPKI about
    locally reserved INRs. Locally Adding Assertions, described in <xref
    target="sec_adding" />, adds local assertions about locally reserved
    INRs. Note that both of these mechanisms can later be extended to cover any
    assertions made by the RPKI for use in <xref
    target="I-D.ietf-sidr-bgpsec-protocol">BGPSEC</xref>.</t>

   <t>In general, the primary output of an RPKI relying party is the data it
    sends to routers over the rpki-rtr protocol. The rpki-rtr protocol enables
    routers to query a relying party for all Origin Validation assertions it
    knows about (Reset Query) or for an update of only the changes in Origin
    Validation assertions (Serial Query). The mechanisms specified in this
    document are to be applied to the result set for a Reset Query, and to both
    the old and new sets that are compared for a Serial Query. Relying party
    software MAY modify other forms of output in comparable ways, but that is
    outside the scope of this document.</t>

   <t>This document is intended to supersede <xref
    target="I-D.ietf-sidr-ltamgmt" /> while focusing only on local management of
    private INRs. Another draft <xref target="I-D.kent-sidr-suspenders" />
    focuses on the other aspects of local management.</t>

   <section title="Terminology" anchor="sec_terminology">
    <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"/>.</t>
   </section>
  </section>

  <section title="Validation Output Filtering" anchor="sec_filtering">
   <t>To prevent the global RPKI from affecting routes with locally reserved
    INRs, a relying party is locally configured with a list of IP prefixes
    and/or AS numbers that are used locally, and taken from the reserved INR
    spaces. Any Origin Validation assertions where the IP prefix is equal to or
    subsumed by a locally reserved IP prefix, are removed from the relying
    party's output. Any Origin Validation assertions where the IP prefix
    contains a locally reserved IP prefix are removed and the relying party
    software SHOULD issue a warning.</t>
  </section>

  <section title="Locally Adding Assertions" anchor="sec_adding">
   <t>Each relying party is locally configured with a (possibly empty) list of
    Origin Validation assertions. This list is added to the relying party's
    output.</t>
  </section>

  <section title="Configuring SLURM" anchor="sec_configuring">
   <t>Relying party software SHOULD support the following configuration format
    for Validation Output Filtering and Locally Adding Assertions. The format is
    defined using the Augmented Backus-Naur Form (ABNF) notation and core rules
    from <xref target="RFC5234" /> and the rules &lt;IPv4address&gt; and
    &lt;IPv6address&gt; from Appendix A of <xref target="RFC3986" />. Each
    &lt;del&gt; command specifies an INR to use for Validation Output Filtering.
    Each &lt;add&gt; command specifies an assertion to use for Locally Adding
    Assertions. See <xref target="sec_example_config" /> for an example SLURM
    file.</t>

<figure><artwork>
SLURMFile = header *line

header = %x53.4c.55.52.4d SP "1.0" CRLF ; "SLURM 1.0"

line =  *WSP [comment] CRLF
      / *WSP command [ 1*WSP [comment] ] CRLF

comment = "#" *(VCHAR / WSP)

command = add / del

add = %x61.64.64 1*WSP IPprefixMaxLen 1*WSP ASnum

del = %x64.65.6c 1*WSP inr

inr = IPprefix / ASnum

IPprefix = IPv4prefix / IPv6prefix

IPprefixMaxLen = IPv4prefixMaxLen / IPv6prefixMaxLen

IPv4prefix = IPv4address "/" 1*2DIGIT

IPv6prefix = IPv6address "/" 1*3DIGIT

; In the following two rules, if the maximum length component is
; missing, it is treated as equal to the prefix length.
IPv4prefixMaxLen = IPv4prefix ["-" 1*2DIGIT]
IPv6prefixMaxLen = IPv6prefix ["-" 1*3DIGIT]

ASnum = 1*DIGIT
</artwork></figure>
  </section>

  <section title="Combining Mechanisms" anchor="sec_combining">
   <t>In the typical use case, a relying party uses both output filtering and
    locally added assertions. In this case, the resulting assertions MUST be
    the same as if output filtering were performed before locally adding
    assertions. I.e., locally added assertions MUST NOT be removed by output
    filtering.</t>

   <t>If a relying party chooses to use both SLURM and
    <xref target="I-D.kent-sidr-suspenders">Suspenders</xref>, the SLURM
    mechanisms MUST be performed on the output of Suspenders.</t>
  </section>

  <section title="IANA Considerations" anchor="sec_iana">
   <t>TBD</t>
  </section>

  <section title="Security Considerations" anchor="sec_security">
   <t>The mechanisms described in this document provide an ISP additional
    control over its own network. Care should be taken in how that control is
    used.</t>
  </section>

  <section title="Acknowledgements" anchor="sec_acknowledgements">
   <t>The author would like to thank Stephen Kent for his guidance and detailed
    reviews of this document.</t>
  </section>
 </middle>

 <back>
  <references title="Informative References">
   &rfc1918;
   &rfc1930;
   &rfc4193;
   &rfc6482;
   &rfc6483;
   &rfc6491;
   &rfc6598;
   &rfc6810;
   &rfc6890;
   &rfc6996;

   &I-D.ietf-sidr-bgpsec-protocol;
   &I-D.ietf-sidr-ltamgmt;
   &I-D.kent-sidr-suspenders;
  </references>

  <references title="Normative References">
   &rfc2119;
   &rfc3986;
   &rfc5234;
  </references>

  <section title="Example SLURM File" anchor="sec_example_config">
<figure><artwork>
SLURM 1.0

# Reserve 192.0.2.0/24 and 2001:DB8::/32 for local use.
del 192.0.2.0/24
del 2001:DB8::/32

# Allow either 65536 or 65537 to originate routes to 192.0.2.0/24.
add 192.0.2.0/24 65536
add 192.0.2.0/24 65537

add 2001:DB8::/48-52 65536 # 65536 originates 2001:DB8::/48 and
                           # sub-prefixes down to length 52.
add 2001:DB8:0:42::/64 65537 # However, 65537 originates
                             # 2001:DB8:0:42::/64.
add 2001:DB8:1::/48 65537 # 65537 also originates 2001:DB8:1::/48
</artwork></figure>
  </section>
 </back>
</rfc>
