<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-levine-6man-repsize-00" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" consensus="true">

<front>
<title abbrev="expires">Publishing boundaries for IPv6 reputation</title><seriesInfo value="draft-levine-6man-repsize-00" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="J." surname="Levine" fullname="John Levine"><organization>Standcore LLC</organization><address><postal><street></street>
</postal><email>standards@standcore.com</email>
</address></author><date/>
<area>Application</area>
<workgroup></workgroup>
<keyword>email</keyword>

<abstract>
<t>Applications such as e-mail track the reputation of the hosts that connect to them by IP address.
Since the IPv6 address space is so large, a reputation system needs to aggregate the data for
the IPs useded by a single entity.
This document describes a file format a network operator can use to describe the sizes of
the IP prefixes it allocates, for reputation systems to use to determine the aggregation boundaries.</t>
<t>It also specifies an addition to the the Routing Policy
Specification Language (RPSL) inetnum: class to refer to the location of the boundary file,
and a method to sign boundary files.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t>Applications such as e-mail track the reputation of the hosts that connect to them by IP address.
The IPv4 address space is small enough that it is practical to track individual addresses,
but the IPv6 address space is far too large for that to be practical.
Networks and hosting providers have widely varying allocation policies.
Some may allocate a /48 to each customer, while others allocate individual /64's,
and some hosting providers put multiple customers in a /64 making the allocation
size for those customers in practice /128.</t>
<t>This document provides a way for providers to publish a description of their allocation
policies, to make it possible to tell reliably where the boundaries between allocations are.</t>

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

<section anchor="format"><name>Boundary file format</name>
<t>The boundary file is a sequence of lines of UTF-8 <xref target="RFC3629"></xref> text.
Each line either starts with a '#' character indicating that it is a comment, or
is a sequence of comma-separated (CSV) values as described in <xref target="RFC4180"></xref>.
Each CSV line has the form:</t>

<artwork>ip_prefix,prefixsize,allocsize
</artwork>
<t>The ip_prefix and prefixsize define a range of IP addresses to which the allocation size applies.
The ip_prefix is an IPv6 address <xref target="RFC5952"></xref>.
The prefixsize is a decimal integer in the range 32 to 64, inclusive.</t>
<t>The allocsize is a decimal integer in the range 48 to 128, inclusive.
It declares the prefix length of each suballocation within that range.</t>
<t>Multiple lines can describe nested ranges, in which case the line with the longest prefix applies.
Two lines <bcp14>MUST NOT</bcp14> have the same ip_prefix and prefixsize.</t>
<t>For example:</t>

<artwork># allocations in the example network
2001:db8::,32,48
2001:db8:1234::,48,64
</artwork>
<t>In this example, 2001:db8::/32 is allocated in /48 prefixes, except that
2001:db8:1234::/48 is allocated in /64 prefixes.</t>
</section>

<section anchor="signing"><name>Authenticating the boundary files</name>
<t>If desired, a network <bcp14>MAY</bcp14> sign a boundary file using the method
described in <xref target="RFC9632" sectionFormat="of" relative="#" section="5"></xref>.
The signature is created and appended to the boundary file in exactly
the same way that a signature is created and appended for a geoip file.
Clients validate the signatures the same way the validate signatures for geoip files.</t>
</section>

<section anchor="locating"><name>Locating the boundary files</name>
<t>Routing Policy Specification Language (RPSL) is defined in several documents
including <xref target="RFC2622"></xref> and <xref target="RFC4012"></xref>.
This document proposes an update to the inet6num: class to identify the location
of boundary files, and a workaround method until RPSL is updated.</t>
<t>A new &quot;boundary:&quot; feed attribute would include the URL where the boundary file is located, e.g.:</t>

<artwork>  inet6num: 2001:0db8::/32
  boundary: https://www.somenet.example/boundary.csv
</artwork>
<t>In the absence of that attribute, the boundary file is described in a remark: attribute
including the word &quot;boundary&quot;, a space, and the URL, e.g.</t>

<artwork>  inet6num: 2001:0db8::/32
  remark: boundary https://www.somenet.example/boundary.csv
</artwork>
<t>When fetching boundary files, the most specific inet6num: object that has a boundary reference <bcp14>MUST</bcp14> be used.</t>
<t>When processing files retrieved in this fashion, clients <bcp14>MUST</bcp14> ignore information
for addresses outside the inet6num: range.
If the range in the inet6num: range has been subdivided into smaller ranges, clients <bcp14>MUST</bcp14>
use information from the smallest range that publishes a boundary file.</t>
</section>

<section anchor="security"><name>Security considerations</name>
<t>The signature described in <xref target="signing"></xref> provides assurance that the contents of the boundary
file describes the network's actual policy.</t>
<t>In the absence of a signature, RDAP over https followed by https retrieval of the boundary file
provide assurance that the data are accurate to the extent that the RPSL database correctly contains
the network's information.</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>This document was informed by discussions with Erik Nygren, Nick Buraglio, and George Michaelson.</t>
</section>

</middle>

<back>
<references><name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4180.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5952.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9632.xml"/>
</references>
<references><name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2622.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4012.xml"/>
</references>

</back>

</rfc>
