One document matched: draft-ietf-sidr-rpki-rtr-rfc6810-bis-04.xml
<?xml version="1.0"?>
<?rfc comments="yes"?><?rfc compact="yes"?><?rfc inline="yes"?><?rfc sortrefs="yes"?><?rfc subcompact="no"?><?rfc symrefs="yes"?><?rfc toc="yes"?><?rfc tocdepth="3"?><?rfc tocindent="yes"?><?rfc tocompact="yes"?><rfc category="std" docName="draft-ietf-sidr-rpki-rtr-rfc6810-bis-04" ipr="trust200902" updates="6810">
<front>
<title abbrev="RPKI-Router Protocol">
The Resource Public Key Infrastructure (RPKI) to Router Protocol
</title>
<author fullname="Randy Bush" initials="R." surname="Bush">
<organization>Internet Initiative Japan</organization>
<address>
<postal>
<street>5147 Crystal Springs</street>
<city>Bainbridge Island</city>
<region>Washington</region>
<code>98110</code>
<country>US</country>
</postal>
<email>randy@psg.com</email>
</address>
</author>
<author initials="R." surname="Austein" fullname="Rob Austein">
<organization>Dragon Research Labs</organization>
<address>
<email>sra@hactrn.net</email>
</address>
</author>
<date/>
<abstract>
<t>
In order to verifiably validate the origin Autonomous Systems
and Autonomous System Paths of BGP announcements, routers need
a simple but reliable mechanism to receive Resource Public Key
Infrastructure (RFC 6480) prefix origin data and router keys
from a trusted cache. This document describes a protocol to
deliver validated prefix origin data and router keys to
routers.
</t>
</abstract>
</front>
<middle>
<section anchor="Intro" title="Introduction">
<t>
In order to verifiably validate the origin Autonomous Systems
(ASes) and AS paths of BGP announcements, routers need a
simple but reliable mechanism to receive cryptographically
validated Resource Public Key Infrastructure (RPKI)
<xref target="RFC6480"/> prefix origin data and router keys
from a trusted cache. This document describes a protocol to
deliver validated prefix origin data and router keys to
routers. The design is intentionally constrained to be usable
on much of the current generation of ISP router platforms.
</t>
<t>
<xref target="Struct"/> describes the deployment structure, and
<xref target="OpOvr"/> then presents an operational overview.
The binary payloads of the protocol are formally described in
<xref target="pdus"/>, and the expected PDU sequences are
described in <xref target="protocol"/>. The transport protocol
options are described in <xref target="Transport"/>.
<xref target="Setup"/> details how routers and caches are
configured to connect and authenticate.
<xref target="Scenarios"/> describes likely deployment
scenarios. The traditional security and IANA considerations end
the document.
</t>
<t>
The protocol is extensible in order to support new PDUs with
new semantics, if deployment experience indicates they are
needed. PDUs are versioned should deployment experience call
for change.
</t>
<t>
For an implementation (not interoperability) report on the use of
this protocol with prefix origin data, see
<xref target="RFC7128"/>.
</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> only when they appear
in all upper case. They may also appear in lower or mixed
case as English words, without special meaning.
</t>
</section>
</section>
<section anchor="Glossary" title="Glossary">
<t>
The following terms are used with special meaning.
<list style="hanging">
<t hangText="Global RPKI:">
The authoritative data of the RPKI are published in a
distributed set of servers at the IANA, Regional Internet
Registries (RIRs), National Internet Registries (NIRs),
and ISPs; see <xref target="RFC6481"/>.
</t>
<t hangText="Cache:">
A coalesced copy of the published Global RPKI data,
periodically fetched or refreshed, directly or indirectly,
using the <xref target="RFC5781"/> protocol or some
successor protocol. Relying party software is used to
gather and validate the distributed data of the RPKI into
a cache. Trusting this cache further is a matter between
the provider of the cache and a relying party.
</t>
<t hangText="Serial Number:">
A 32-bit strictly increasing unsigned integer which wraps
from 2^32-1 to 0. It denotes the logical version of a
cache. A cache increments the value when it successfully
updates its data from a parent cache or from primary RPKI
data. While a cache is receiving updates, new incoming
data and implicit deletes are associated with the new
serial but MUST NOT be sent until the fetch is complete.
A Serial Number is not commensurate between different
caches or different protocol versions, nor need it be
maintained across resets of the cache server. See
<xref target="RFC1982"/> on DNS Serial Number Arithmetic
for too much detail on the topic.
</t>
<t hangText="Session ID:">
When a cache server is started, it generates a session
identifier to uniquely identify the instance of the cache and
to bind it to the sequence of Serial Numbers that cache
instance will generate. This allows the router to restart a
failed session knowing that the Serial Number it is using is
commensurate with that of the cache.
</t>
<t hangText="Payload PDU:">
A protocol message which contains data for use by the
router, as opposed to a PDU which just conveys the
semantics of this protocol. Prefixes and Router Keys are
examples of payload PDUs.
</t>
</list>
</t>
</section>
<section anchor="Struct" title="Deployment Structure">
<t>
Deployment of the RPKI to reach routers has a three-level
structure as follows:
<list style="hanging">
<t hangText="Global RPKI:">
The authoritative data of the RPKI are published in a
distributed set of servers, RPKI publication repositories,
e.g., by the IANA, RIRs, NIRs, and ISPs (see
<xref target="RFC6481"/>).
</t>
<t hangText="Local Caches:">
A local set of one or more collected and verified caches. A
relying party, e.g., router or other client, MUST have a trust
relationship with, and a trusted transport channel to, any
cache(s) it uses.
</t>
<t hangText="Routers:">
A router fetches data from a local cache using the protocol
described in this document. It is said to be a client of the
cache. There MAY be mechanisms for the router to assure
itself of the authenticity of the cache and to authenticate
itself to the cache.
</t>
</list>
</t>
</section>
<section anchor="OpOvr" title="Operational Overview">
<t>
A router establishes and keeps open a connection to one or more
caches with which it has client/server relationships. It is
configured with a semi-ordered list of caches, and establishes a
connection to the most preferred cache, or set of caches, which
accept the connections.
</t>
<t>
The router MUST choose the most preferred, by configuration,
cache or set of caches so that the operator may control load
on their caches and the Global RPKI.
</t>
<t>
Periodically, the router sends to the cache the Serial Number
of the highest numbered data it has received from that cache,
i.e., the router's current Serial Number, in the form of a
Serial Query. When a router establishes a new connection to a
cache, or wishes to reset a current relationship, it sends a
Reset Query.
</t>
<t>
The cache responds to the Serial Query with all data records
which have Serial Numbers greater than that in the router's
query. This may be the null set, in which case the End of
Data PDU is still sent. Note that "greater" MUST take
wrap-around into account, see <xref target="RFC1982"/>.
</t>
<t>
When the router has received all data records from the cache,
it sets its current Serial Number to that of the Serial Number
in the End of Data PDU.
</t>
<t>
When the cache updates its database, it sends a Notify
message to every currently connected router. This is a hint
that now would be a good time for the router to poll for an
update, but is only a hint. The protocol requires the router
to poll for updates periodically in any case.
</t>
<t>
Strictly speaking, a router could track a cache simply by
asking for a complete data set every time it updates, but this
would be very inefficient. The Serial Number based
incremental update mechanism allows an efficient transfer of
just the data records which have changed since last update.
As with any update protocol based on incremental transfers,
the router must be prepared to fall back to a full transfer if
for any reason the cache is unable to provide the necessary
incremental data. Unlike some incremental transfer protocols,
this protocol requires the router to make an explicit request
to start the fallback process; this is deliberate, as the
cache has no way of knowing whether the router has also
established sessions with other caches that may be able to
provide better service.
</t>
<t>
As a cache server must evaluate certificates and ROAs (Route
Origin Attestations; see <xref target="RFC6480"/>),
which are time dependent, servers' clocks MUST be correct to a
tolerance of approximately an hour.
</t>
</section>
<section anchor="pdus" title="Protocol Data Units (PDUs)">
<t>
The exchanges between the cache and the router are sequences of
exchanges of the following PDUs according to the rules described
in <xref target="protocol"/>.
</t>
<t>
Reserved fields (marked "zero" in PDU diagrams) MUST be zero
on transmission, and SHOULD be ignored on receipt.
</t>
<section anchor="fields" title="Fields of a PDU">
<t>
PDUs contain the following data elements:
<list style="hanging">
<t hangText="Protocol Version:">
An eight-bit unsigned integer, currently 1, denoting the
version of this protocol.
</t>
<t hangText="PDU Type:">
An eight-bit unsigned integer, denoting the type of the PDU,
e.g., IPv4 Prefix, etc.
</t>
<t hangText="Serial Number:">
The Serial Number of the RPKI Cache when this set of PDUs
was received from an upstream cache server or gathered from
the Global RPKI. A cache increments its Serial Number when
completing a rigorously validated update from a parent cache
or the Global RPKI.
</t>
<t hangText="Session ID:">
A 16-bit unsigned integer.
When a cache server is started, it generates a Session
ID to identify the instance of the cache and to bind it
to the sequence of Serial Numbers that cache instance
will generate. This allows the router to restart a
failed session knowing that the Serial Number it is
using is commensurate with that of the cache. If, at
any time, either the router or the cache finds the value
of the session identifier is not the same as the
other's, they MUST completely drop the session and the
router MUST flush all data learned from that cache.
</t>
<t>
Note that sessions are specific to a particular protocol
version. That is: if a cache server supports multiple
versions of this protocol, happens to use the same
Session ID value for multiple protocol versions, and
further happens to use the same Serial Number values for
two or more sessions using the same Session ID but
different Protocol Version values, the serial numbers
are not commensurate. The full test for whether serial
numbers are commensurate requires comparing Protocol
Version, Session ID, and Serial Number. To reduce the
risk of confusion, cache servers SHOULD NOT use the same
Session ID across multiple protocol versions, but even
if they do, routers MUST treat sessions with different
Protocol Version fields as separate sessions even if
they do happen to have the same Session ID.
</t>
<t>
Should a cache erroneously reuse a Session ID so that a
router does not realize that the session has changed (old
Session ID and new Session ID have same numeric value), the
router may become confused as to the content of the cache.
The time it takes the router to discover it is confused will
depend on whether the Serial Numbers are also reused. If
the Serial Numbers in the old and new sessions are different
enough, the cache will respond to the router's Serial Query
with a Cache Reset, which will solve the problem. If,
however, the Serial Numbers are close, the cache may respond
with a Cache Response, which may not be enough to bring the
router into sync. In such cases, it's likely but not
certain that the router will detect some discrepancy between
the state that the cache expects and its own state. For
example, the Cache Response may tell the router to drop a
record which the router does not hold, or may tell the
router to add a record which the router already has. In
such cases, a router will detect the error and reset the
session. The one case in which the router may stay out of
sync is when nothing in the Cache Response contradicts any
data currently held by the router.
</t>
<t>
Using persistent storage for the session identifier or a
clock-based scheme for generating session identifiers should
avoid the risk of session identifier collisions.
</t>
<t>
The Session ID might be a pseudo-random value, a strictly
increasing value if the cache has reliable storage, etc.
</t>
<t hangText="Length:">
A 32-bit unsigned integer which has as its value the count
of the bytes in the entire PDU, including the eight bytes of
header which end with the length field.
</t>
<t hangText="Flags:">
The lowest order bit of the Flags field is 1 for an
announcement and 0 for a withdrawal. For a Prefix PDU
(IPv4 or IPv6), the flag indicates whether this PDU
announces a new right to announce the prefix or
withdraws a previously announced right; a withdraw
effectively deletes one previously announced Prefix PDU
with the exact same Prefix, Length, Max-Len, and
Autonomous System Number (ASN). Similarly, for a Router
Key PDU, the flag indicates whether this PDU announces a
new Router Key or deletes one previously announced
Router Key PDU with the exact same AS Number,
subjectKeyIdentifier, and subjectPublicKeyInfo.
</t>
<t>
The remaining bits in the flags field are reserved for
future use. In protocol version 1, they MUST be 0 on
transmission and SHOULD be ignored on receipt.
</t>
<t hangText="Prefix Length:">
An 8-bit unsigned integer denoting the shortest prefix
allowed for the prefix.
</t>
<t hangText="Max Length:">
An 8-bit unsigned integer denoting the longest prefix
allowed by the prefix. This MUST NOT be less than the
Prefix Length element.
</t>
<t hangText="Prefix:">
The IPv4 or IPv6 prefix of the ROA.
</t>
<t hangText="Autonomous System Number:">
A 32-bit unsigned integer representing an ASN allowed to
announce a prefix or associated with a router key.
</t>
<t hangText="Subject Key Identifier:"> 20-octet
Subject Key Identifier (SKI) value of a router key, as
described in <xref target="RFC6487"/>.
</t>
<t hangText="Subject Public Key Info:"> a router key's
subjectPublicKeyInfo value, as described in
<xref target="I-D.ietf-sidr-bgpsec-algs"/>. This is the
full ASN.1 DER encoding of the subjectPublicKeyInfo,
including the ASN.1 tag and length values of the
subjectPublicKeyInfo SEQUENCE.
</t>
<t hangText="Zero:">
Fields shown as zero MUST be zero on transmission. The
value of such a field SHOULD be ignored on receipt.
</t>
</list>
</t>
</section>
<section anchor="notify" title="Serial Notify">
<t>
The cache notifies the router that the cache has new
data.
</t>
<t>
The Session ID reassures the router that the Serial Numbers
are commensurate, i.e., the cache session has not been
changed.
</t>
<t>
Upon receipt of a Serial Notify PDU, the router MAY issue an
immediate Serial Query or Reset Query without waiting for
the Refresh Interval timer (see <xref target="timing"/>)
to expire.
</t>
<t>
Serial Notify is the only message that the cache can send
that is not in response to a message from the router.
</t>
<t>
If the router receives a Serial Notify PDU during the
initial start-up period where the router and cache are still
negotiating to agree on a protocol version, the router
SHOULD simply ignore the Serial Notify PDU, even if the
Serial Notify PDU is for an unexpected protocol version.
See <xref target="version"/> for details.
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | Session ID |
| 1 | 0 | |
+-------------------------------------------+
| |
| Length=12 |
| |
+-------------------------------------------+
| |
| Serial Number |
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
<section anchor="serialquery" title="Serial Query">
<t>
Serial Query: The router sends Serial Query to ask the cache
for all all announcements and withdrawals which have
occurred since the Serial Number specified in the Serial
Query.
</t>
<t>
The cache replies to this query with a Cache Response PDU
(<xref target="cacheresponse"/>) if the cache has a,
possibly null, record of the changes since the Serial Number
specified by the router, followed by zero or more payload
PDUs and an End Of Data PDU.
</t>
<t>
If the cache does not have the data needed to update the
router, perhaps because its records do not go back to the
Serial Number in the Serial Query, then it responds with a
Cache Reset PDU (<xref target="cachereset"/>).
</t>
<t>
The Session ID tells the cache what instance the router
expects to ensure that the Serial Numbers are commensurate,
i.e., the cache session has not been changed.
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | Session ID |
| 1 | 1 | |
+-------------------------------------------+
| |
| Length=12 |
| |
+-------------------------------------------+
| |
| Serial Number |
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
<section anchor="resetquery" title="Reset Query">
<t>
Reset Query: The router tells the cache that it wants to
receive the total active, current, non-withdrawn database.
The cache responds with a Cache Response PDU
(<xref target="cacheresponse"/>).
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | zero |
| 1 | 2 | |
+-------------------------------------------+
| |
| Length=8 |
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
<section anchor="cacheresponse" title="Cache Response">
<t>
The cache responds with zero or more payload PDUs. When
replying to a Serial Query request
(<xref target="serialquery"/>), the cache sends the set of
announcements and withdrawals that have occurred since the
Serial Number sent by the client router. When replying to a
Reset Query, the cache sends the set of all data records it
has; in this case, the withdraw/announce field in the
payload PDUs MUST have the value 1 (announce).
</t>
<t>
In response to a Reset Query, the new value of the Session ID
tells the router the instance of the cache session for future
confirmation. In response to a Serial Query, the Session ID
being the same reassures the router that the Serial Numbers
are commensurate, i.e., the cache session has not changed.
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | Session ID |
| 1 | 3 | |
+-------------------------------------------+
| |
| Length=8 |
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
<section anchor="ipv4" title="IPv4 Prefix">
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | zero |
| 1 | 4 | |
+-------------------------------------------+
| |
| Length=20 |
| |
+-------------------------------------------+
| | Prefix | Max | |
| Flags | Length | Length | zero |
| | 0..32 | 0..32 | |
+-------------------------------------------+
| |
| IPv4 Prefix |
| |
+-------------------------------------------+
| |
| Autonomous System Number |
| |
`-------------------------------------------'
</artwork>
</figure>
<t>
The lowest order bit of the Flags field is 1 for an
announcement and 0 for a withdrawal.
</t>
<t>
In the RPKI, nothing prevents a signing certificate from
issuing two identical ROAs. In this case, there would be no
semantic difference between the objects, merely a process
redundancy.
</t>
<t>
In the RPKI, there is also an actual need for what might
appear to a router as identical IPvX PDUs.
This can occur when an upstream certificate is being reissued
or there is an address ownership transfer up the validation
chain. The ROA would be identical in the router sense,
i.e., have the same {Prefix, Len, Max-Len, ASN}, but a
different validation path in the RPKI. This is important to
the RPKI, but not to the router.
</t>
<t>
The cache server MUST ensure that it has told the router
client to have one and only one IPvX PDU for a unique {Prefix,
Len, Max-Len, ASN} at any one point in time. Should the
router client receive an IPvX PDU with a {Prefix, Len,
Max-Len, ASN} identical to one it already has active, it
SHOULD raise a Duplicate Announcement Received error.
</t>
</section>
<section anchor="ipv6" title="IPv6 Prefix">
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | zero |
| 1 | 6 | |
+-------------------------------------------+
| |
| Length=32 |
| |
+-------------------------------------------+
| | Prefix | Max | |
| Flags | Length | Length | zero |
| | 0..128 | 0..128 | |
+-------------------------------------------+
| |
+--- ---+
| |
+--- IPv6 Prefix ---+
| |
+--- ---+
| |
+-------------------------------------------+
| |
| Autonomous System Number |
| |
`-------------------------------------------'
</artwork>
</figure>
<t>
Analogous to the IPv4 Prefix PDU, it has 96 more bits and no magic.
</t>
</section>
<section anchor="eod" title="End of Data">
<t>
End of Data: The cache tells the router it has no more data for the
request.
</t>
<t>
The Session ID and Protocol Version MUST be the same as that
of the corresponding Cache Response which began the,
possibly null, sequence of data PDUs.
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | Session ID |
| 1 | 7 | |
+-------------------------------------------+
| |
| Length=24 |
| |
+-------------------------------------------+
| |
| Serial Number |
| |
+-------------------------------------------+
| |
| Refresh Interval |
| |
+-------------------------------------------+
| |
| Retry Interval |
| |
+-------------------------------------------+
| |
| Expire Interval |
| |
`-------------------------------------------'
</artwork>
</figure>
<t>
The Refresh Interval, Retry Interval, and Expire Interval
are all 32-bit elapsed times measured in seconds, and
express the timing parameters that the cache expects the
router to use to decide when next to send the cache another
Serial Query or Reset Query PDU. See
<xref target="timing"/> for an explanation of the use and
the range of allowed values for these parameters.
</t>
</section>
<section anchor="cachereset" title="Cache Reset">
<t>
The cache may respond to a Serial Query informing the router
that the cache cannot provide an incremental update
starting from the Serial Number specified by the router.
The router must decide whether to issue a Reset Query or
switch to a different cache.
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | zero |
| 1 | 8 | |
+-------------------------------------------+
| |
| Length=8 |
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
<section anchor="routerkey" title="Router Key">
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | | |
| Version | Type | Flags | zero |
| 1 | 9 | | |
+-------------------------------------------+
| |
| Length |
| |
+-------------------------------------------+
| |
+--- ---+
| Subject Key Identifier |
+--- ---+
| |
+--- ---+
| (20 octets) |
+--- ---+
| |
+-------------------------------------------+
| |
| AS Number |
| |
+-------------------------------------------+
| |
| Subject Public Key Info |
| |
`-------------------------------------------'
</artwork>
</figure>
<t>
The lowest order bit of the Flags field is 1 for an
announcement and 0 for a withdrawal.
</t>
<t>
The cache server MUST ensure that it has told the router
client to have one and only one Router Key PDU for a unique
{SKI, ASN, Subject Public Key} at any one point in time.
Should the router client receive a Router Key PDU with a
{SKI, ASN, Subject Public Key} identical to one it already
has active, it SHOULD raise a Duplicate Announcement
Received error.
</t>
<t>
Note that a particular ASN may appear in multiple Router Key
PDUs with different Subject Public Key values, while a
particular Subject Public Key value may appear in multiple
Router Key PDUs with different ASNs. In the interest of
keeping the announcement and withdrawal semantics as simple
as possible for the router, this protocol makes no attempt
to compress either of these cases.
</t>
<t>
Also note that it is possible, albeit very unlikely, for
multiple distinct Subject Public Key values to hash to the
same SKI. For this reason, implementations MUST compare
Subject Public Key values as well as SKIs when detecting
duplicate PDUs.
</t>
</section>
<section anchor="error" title="Error Report">
<t>
This PDU is used by either party to report an error to the
other.
</t>
<t>
Error reports are only sent as responses to other PDUs.
</t>
<t>
The Error Code is described in
<xref target="errorcodes"/>.
</t>
<t>
If the error is generic (e.g., "Internal Error") and not
associated with the PDU to which it is responding, the
Erroneous PDU field MUST be empty and the Length of
Encapsulated PDU field MUST be zero.
</t>
<t>
An Error Report PDU MUST NOT be sent for an Error Report PDU.
If an erroneous Error Report PDU is received, the session
SHOULD be dropped.
</t>
<t>
If the error is associated with a PDU of excessive length,
i.e., too long to be any legal PDU other than another Error
Report, or a possibly corrupt length, the Erroneous PDU field
MAY be truncated.
</t>
<t>
The diagnostic text is optional; if not present, the Length of
Error Text field MUST be zero. If error text is present, it
MUST be a string in UTF-8 encoding (see
<xref target="RFC3269"/>).
</t>
<figure>
<artwork>
0 8 16 24 31
.-------------------------------------------.
| Protocol | PDU | |
| Version | Type | Error Code |
| 1 | 10 | |
+-------------------------------------------+
| |
| Length |
| |
+-------------------------------------------+
| |
| Length of Encapsulated PDU |
| |
+-------------------------------------------+
| |
~ Copy of Erroneous PDU ~
| |
+-------------------------------------------+
| |
| Length of Error Text |
| |
+-------------------------------------------+
| |
| Arbitrary Text |
| of |
~ Error Diagnostic Message ~
| |
`-------------------------------------------'
</artwork>
</figure>
</section>
</section>
<section anchor="timing" title="Protocol Timing Parameters">
<t>
Since the data the cache distributes via the rpki-rtr protocol
are retrieved from the Global RPKI system at intervals which
are only known to the cache, only the cache can really know
how frequently it makes sense for the router to poll the
cache, or how long the data are likely to remain valid (or, at
least, unchanged). For this reason, as well as to allow the
cache some control over the load placed on it by its client
routers, the End Of Data PDU includes three values that allow
the cache to communicate timing parameters to the router.
</t>
<t>
<list style="hanging">
<t hangText="Refresh Interval:">
This parameter tells the router how long to wait before
next attempting to poll the cache, using a Serial Query or
Reset Query PDU. The router SHOULD NOT poll the cache
sooner than indicated by this parameter. Note that
receipt of a Serial Notify PDU overrides this interval and
allows the router to issue an immediate query without
waiting for the Refresh Interval to expire. Countdown for
this timer starts upon receipt of the containing End Of
Data PDU.
<list style="hanging">
<t hangText="Minimum allowed value:">1 second.</t>
<t hangText="Maximum allowed value:">86400 seconds (one day).</t>
<t hangText="Recommended default:">3600 seconds (one hour).</t>
</list>
</t>
<t hangText="Retry Interval:">
This parameter tells the router how long to wait before
retrying a failed Serial Query or Reset Query. The router
SHOULD NOT retry sooner than indicated by this parameter.
Note that a protocol version mismatch overrides this
interval: if the router needs to downgrade to a lower
protocol version number, it MAY send the first Serial
Query or Reset Query immediately. Countdown for this
timer starts upon failure of the query, and restarts after
each subsequent failure until a query succeeds.
<list style="hanging">
<t hangText="Minimum allowed value:">1 second.</t>
<t hangText="Maximum allowed value:">7200 seconds (two hours).</t>
<t hangText="Recommended default:">600 seconds (ten minutes).</t>
</list>
</t>
<t hangText="Expire Interval:">
This parameter tells the router how long it can continue
to use the current version of the data while unable to
perform a successful query. The router MUST NOT retain the
data past the time indicated by this parameter. Countdown
for this timer starts upon receipt of the containing End
Of Data PDU.
<list style="hanging">
<t hangText="Minimum allowed value:">600 seconds (ten minutes).</t>
<t hangText="Maximum allowed value:">172800 seconds (two days).</t>
<t hangText="Recommended default:">7200 seconds (two hours).</t>
</list>
</t>
</list>
</t>
<t>
If the router has never issued a successful query against a
particular cache, it SHOULD retry periodically using the default
Retry Interval, above.
</t>
</section>
<section anchor="version" title="Protocol Version Negotiation">
<t>
A router MUST start each transport session by issuing either a
Reset Query or a Serial Query. This query will tell the cache
which version of this protocol the router implements.
</t>
<t>
If a cache which supports version 1 receives a query from a
router which specifies version 0, the cache MUST downgrade to
protocol version 0 <xref target="RFC6810"/> or terminate the
session.
</t>
<t>
If a router which supports version 1 sends a query to a cache
which only supports version 0, one of two things will happen.
<list style="numbers">
<t>
The cache may terminate the connection, perhaps with a
version 0 Error Report PDU. In this case the router MAY
retry the connection using protocol version 0.
</t>
<t>
The cache may reply with a version 0 response. In this
case the router MUST either downgrade to version 0 or
terminate the connection.
</t>
</list>
</t>
<t>
In any of the downgraded combinations above, the new features of
version 1 will not be available.
</t>
<t>
If either party receives a PDU containing an unrecognized
Protocol Version (neither 0 nor 1) during this negotiation, it
MUST either downgrade to a known version or terminate the
connection, with an Error Report PDU unless the received PDU
is itself an Error Report PDU.
</t>
<t>
The router MUST ignore any Serial Notify PDUs it might receive
from the cache during this initial start-up period, regardless
of the Protocol Version field in the Serial Notify PDU. Since
Session ID and Serial Number values are specific to a
particular protocol version, the values in the notification
are not useful to the router. Even if these values were
meaningful, the only effect that processing the notification
would have would be to trigger exactly the same Reset Query or
Serial Query that the router has already sent as part of the
not-yet-complete version negotiation process, so there is
nothing to be gained by processing notifications until version
negotiation completes.
</t>
<t>
Caches SHOULD NOT send Serial Notify PDUs before version
negotiation completes. Note, however, that routers must handle
such notifications (by ignoring them) for backwards
compatibility with caches serving protocol version 0.
</t>
<t>
Once the cache and router have agreed upon a Protocol Version
via the negotiation process above, that version is stable for
the life of the session. See <xref target="fields"/> for a
discussion of the interaction between Protocol Version and
Session ID.
</t>
<t>
If either party receives a PDU for a different Protocol
Version once the above negotiation completes, that party MUST
drop the session; unless the PDU containing the unexpected
Protocol Version was itself an Error Report PDU, the party
dropping the session SHOULD send an Error Report with an error
code of 8 ("Unexpected Protocol Version").
</t>
</section>
<section anchor="protocol" title="Protocol Sequences">
<t>
The sequences of PDU transmissions fall into three
conversations as follows:
</t>
<section anchor="start" title="Start or Restart">
<figure>
<artwork>
Cache Router
~ ~
| <----- Reset Query -------- | R requests data (or Serial Query)
| |
| ----- Cache Response -----> | C confirms request
| ------- Payload PDU ------> | C sends zero or more
| ------- Payload PDU ------> | IPv4 Prefix, IPv6 Prefix,
| ------- Payload PDU ------> | or Router Key PDUs
| ------ End of Data ------> | C sends End of Data
| | and sends new serial
~ ~
</artwork>
</figure>
<t>
When a transport session is first established, the router
MAY send a Reset Query and the cache responds with a data
sequence of all data it contains.
</t>
<t>
Alternatively, if the router has significant unexpired data
from a broken session with the same cache, it MAY start with a
Serial Query containing the Session ID from the previous
session to ensure the Serial Numbers are commensurate.
</t>
<t>
This Reset Query sequence is also used when the router
receives a Cache Reset, chooses a new cache, or fears that
it has otherwise lost its way.
</t>
<t>
The router MUST send either a Reset Query or a Serial Query
when starting a transport session, in order to confirm that
router and cache are speaking compatible versions of the
protocol. See <xref target="version"/> for details on
version negotiation.
</t>
<t>
To limit the length of time a cache must keep the data
necessary to generate incremental updates, a router MUST
send either a Serial Query or a Reset Query periodically.
This also acts as a keep-alive at the application layer.
See <xref target="timing"/> for details on the required
polling frequency.
</t>
</section>
<section anchor="query" title="Typical Exchange">
<figure>
<artwork>
Cache Router
~ ~
| -------- Notify ----------> | (optional)
| |
| <----- Serial Query ------- | R requests data
| |
| ----- Cache Response -----> | C confirms request
| ------- Payload PDU ------> | C sends zero or more
| ------- Payload PDU ------> | IPv4 Prefix, IPv6 Prefix,
| ------- Payload PDU ------> | or Router Key PDUs
| ------ End of Data ------> | C sends End of Data
| | and sends new serial
~ ~
</artwork>
</figure>
<t>
The cache server SHOULD send a notify PDU with its current
Serial Number when the cache's serial changes, with the
expectation that the router MAY then issue a Serial Query
earlier than it otherwise might. This is analogous to DNS
NOTIFY in <xref target="RFC1996"/>. The cache MUST rate limit
Serial Notifies to no more frequently than one per minute.
</t>
<t>
When the transport layer is up and either a timer has gone
off in the router, or the cache has sent a Notify, the router
queries for new data by sending a Serial Query, and the cache
sends all data newer than the serial in the Serial Query.
</t>
<t>
To limit the length of time a cache must keep old withdraws, a
router MUST send either a Serial Query or a Reset Query
periodically. See <xref target="timing"/> for details on the
required polling frequency.
</t>
</section>
<section anchor="nodiff" title="No Incremental Update Available ">
<figure>
<artwork>
Cache Router
~ ~
| <----- Serial Query ------ | R requests data
| ------- Cache Reset ------> | C cannot supply update
| | from specified serial
| <------ Reset Query ------- | R requests new data
| ----- Cache Response -----> | C confirms request
| ------- Payload PDU ------> | C sends zero or more
| ------- Payload PDU ------> | IPv4 Prefix, IPv6 Prefix,
| ------- Payload PDU ------> | or Router Key PDUs
| ------ End of Data ------> | C sends End of Data
| | and sends new serial
~ ~
</artwork>
</figure>
<t>
The cache may respond to a Serial Query with a Cache Reset,
informing the router that the cache cannot supply an
incremental update from the Serial Number specified by the
router. This might be because the cache has lost state, or
because the router has waited too long between polls and the
cache has cleaned up old data that it no longer believes it
needs, or because the cache has run out of storage space and
had to expire some old data early. Regardless of how this
state arose, the cache replies with a Cache Reset to tell
the router that it cannot honor the request. When a router
receives this, the router SHOULD attempt to connect to any
more preferred caches in its cache list. If there are no
more preferred caches, it MUST issue a Reset Query and get an
entire new load from the cache.
</t>
</section>
<section anchor="nodata" title="Cache Has No Data Available">
<figure>
<artwork>
Cache Router
~ ~
| <----- Serial Query ------ | R requests data
| ---- Error Report PDU ----> | C No Data Available
~ ~
Cache Router
~ ~
| <----- Reset Query ------- | R requests data
| ---- Error Report PDU ----> | C No Data Available
~ ~
</artwork>
</figure>
<t>
The cache may respond to either a Serial Query or a Reset
Query informing the router that the cache cannot supply any
update at all. The most likely cause is that the cache has
lost state, perhaps due to a restart, and has not yet
recovered. While it is possible that a cache might go into
such a state without dropping any of its active sessions,
a router is more likely to see this behavior when it
initially connects and issues a Reset Query while the cache
is still rebuilding its database.
</t>
<t>
When a router receives this kind of error, the router
SHOULD attempt to connect to any other caches in its cache
list, in preference order. If no other caches are
available, the router MUST issue periodic Reset Queries
until it gets a new usable load from the cache.
</t>
</section>
</section>
<section anchor="Transport" title="Transport">
<t>
The transport-layer session between a router and a cache
carries the binary PDUs in a persistent session.
</t>
<t>
To prevent cache spoofing and DoS attacks by illegitimate
routers, it is highly desirable that the router and the cache
be authenticated to each other. Integrity protection for
payloads is also desirable to protect against
monkey-in-the-middle (MITM) attacks. Unfortunately, there is
no protocol to do so on all currently used platforms.
Therefore, as of the writing of this document, there is no
mandatory-to-implement transport which provides authentication
and integrity protection.
</t>
<t>
To reduce exposure to dropped but non-terminated sessions, both
caches and routers SHOULD enable keep-alives when available in
the chosen transport protocol.
</t>
<t>
It is expected that, when the TCP Authentication Option
(TCP-AO) <xref target="RFC5925"/> is available on all
platforms deployed by operators, it will become the
mandatory-to-implement transport.
</t>
<t>
Caches and routers MUST implement unprotected transport over
TCP using a port, rpki-rtr (323); see
<xref target="IANA"/>. Operators SHOULD use procedural means,
e.g., access control lists (ACLs), to reduce the exposure to
authentication issues.
</t>
<t>
Caches and routers SHOULD use TCP-AO, SSHv2, TCP MD5, or IPsec
transport.
</t>
<t>
If unprotected TCP is the transport, the cache and routers MUST be
on the same trusted and controlled network.
</t>
<t>
If available to the operator, caches and routers MUST use one
of the following more protected protocols.
</t>
<t>
Caches and routers SHOULD use TCP-AO transport
<xref target="RFC5925"/> over the rpki-rtr port.
</t>
<t>
Caches and routers MAY use SSHv2 transport
<xref target="RFC4252"/> using the normal SSH port. For an
example, see <xref target="SSH"/>.
</t>
<t>
Caches and routers MAY use TCP MD5 transport
<xref target="RFC2385"/> using the rpki-rtr port. Note that
TCP MD5 has been obsoleted by TCP-AO
<xref target="RFC5925"/>.
</t>
<t>
Caches and routers MAY use TCP over IPsec transport
<xref target="RFC4301"/> using the rpki-rtr port.
</t>
<t>
Caches and routers MAY use TLS transport
<xref target="RFC5246"/> using a port, rpki-rtr-tls (324); see
<xref target="IANA"/>.
</t>
<section anchor="SSH" title="SSH Transport">
<t>
To run over SSH, the client router first establishes an SSH
transport connection using the SSHv2 transport protocol, and
the client and server exchange keys for message integrity and
encryption. The client then invokes the "ssh-userauth"
service to authenticate the application, as described in the
SSH authentication protocol <xref target="RFC4252"/>.
Once the application has been successfully
authenticated, the client invokes the "ssh-connection"
service, also known as the SSH connection protocol.
</t>
<t>
After the ssh-connection service is established, the client
opens a channel of type "session", which results in an SSH
session.
</t>
<t>
Once the SSH session has been established, the application
invokes the application transport as an SSH subsystem called
"rpki-rtr". Subsystem support is a feature of SSH version 2
(SSHv2) and is not included in SSHv1. Running this protocol as
an SSH subsystem avoids the need for the application to
recognize shell prompts or skip over extraneous information,
such as a system message that is sent at shell start-up.
</t>
<t>
It is assumed that the router and cache have exchanged keys
out of band by some reasonably secured means.
</t>
<t>
Cache servers supporting SSH transport MUST accept RSA and
Digital Signature Algorithm (DSA) authentication and SHOULD
accept Elliptic Curve Digital Signature Algorithm (ECDSA)
authentication. User authentication MUST be supported; host
authentication MAY be supported. Implementations MAY
support password authentication. Client routers SHOULD
verify the public key of the cache to avoid
monkey-in-the-middle attacks.
</t>
</section>
<section title="TLS Transport">
<t>
Client routers using TLS transport MUST present client-side
certificates to authenticate themselves to the cache in
order to allow the cache to manage the load by rejecting
connections from unauthorized routers. In principle, any
type of certificate and certificate authority (CA) may be
used; however, in general, cache operators will wish to
create their own small-scale CA and issue certificates to
each authorized router. This simplifies credential
rollover; any unrevoked, unexpired certificate from the
proper CA may be used.
</t>
<t>
Certificates used to authenticate client routers in this
protocol MUST include a subjectAltName extension [RFC5280]
containing one or more iPAddress identities; when
authenticating the router's certificate, the cache MUST check
the IP address of the TLS connection against these iPAddress
identities and SHOULD reject the connection if none of the
iPAddress identities match the connection.
</t>
<t>
Routers MUST also verify the cache's TLS server certificate,
using subjectAltName dNSName identities as described in
[RFC6125], to avoid monkey-in-the-middle attacks. The rules
and guidelines defined in [RFC6125] apply here, with the
following considerations:
</t>
<t>
<list style="empty">
<t>
Support for DNS-ID identifier type (that is, the dNSName
identity in the subjectAltName extension) is REQUIRED in
rpki-rtr server and client implementations which use TLS.
Certification authorities which issue rpki-rtr server
certificates MUST support the DNS-ID identifier type, and
the DNS-ID identifier type MUST be present in rpki-rtr
server certificates.
</t>
<t>
DNS names in rpki-rtr server certificates SHOULD NOT
contain the wildcard character "*".
</t>
<t>
rpki-rtr implementations which use TLS MUST NOT use CN-ID
identifiers; a CN field may be present in the server
certificate's subject name, but MUST NOT be used for
authentication within the rules described in
<xref target="RFC6125"/>.
</t>
<t>
The client router MUST set its "reference identifier" to
the DNS name of the rpki-rtr cache.
</t>
</list>
</t>
</section>
<section title="TCP MD5 Transport">
<t>
If TCP MD5 is used, implementations MUST support key lengths
of at least 80 printable ASCII bytes, per Section 4.5 of
<xref target="RFC2385"/>. Implementations MUST also support
hexadecimal sequences of at least 32 characters, i.e., 128
bits.
</t>
<t>
Key rollover with TCP MD5 is problematic. Cache servers
SHOULD support <xref target="RFC4808"/>.
</t>
</section>
<section title="TCP-AO Transport">
<t>
Implementations MUST support key lengths of at least 80
printable ASCII bytes. Implementations MUST also support
hexadecimal sequences of at least 32 characters, i.e., 128
bits. Message Authentication Code (MAC) lengths of at least
96 bits MUST be supported, per Section 5.1 of
<xref target="RFC5925"/>.
</t>
<t>
The cryptographic algorithms and associated parameters described in
<xref target="RFC5926"/> MUST be supported.
</t>
</section>
</section>
<section anchor="Setup" title="Router-Cache Setup">
<t>
A cache has the public authentication data for each router it
is configured to support.
</t>
<t>
A router may be configured to peer with a selection of caches,
and a cache may be configured to support a selection of routers.
Each must have the name of, and authentication data for, each
peer. In addition, in a router, this list has a non-unique
preference value for each server. This
preference merely denotes proximity, not trust, preferred
belief, etc. The client router attempts to establish a session
with each potential serving cache in preference order, and then
starts to load data from the most preferred cache to which it
can connect and authenticate. The router's list of caches has
the following elements:
<list style="hanging">
<t hangText="Preference:">
An unsigned integer denoting the router's preference to
connect to that cache; the lower the value, the more
preferred.
</t>
<t hangText="Name:">
The IP address or fully qualified domain name of the cache.
</t>
<t hangText="Key:">
Any needed public key of the cache.
</t>
<t hangText="MyKey:">
Any needed private key or certificate of this client.
</t>
</list>
</t>
<t>
Due to the distributed nature of the RPKI, caches simply
cannot be rigorously synchronous. A client may hold data from
multiple caches but MUST keep the data marked as to source, as
later updates MUST affect the correct data.
</t>
<t>
Just as there may be more than one covering ROA from a single
cache, there may be multiple covering ROAs from multiple caches.
The results are as described in
<xref target="RFC6811"/>.
</t>
<t>
If data from multiple caches are held, implementations MUST NOT
distinguish between data sources when performing validation.
</t>
<t>
When a more preferred cache becomes available, if resources
allow, it would be prudent for the client to start fetching
from that cache.
</t>
<t>
The client SHOULD attempt to maintain at least one set of data,
regardless of whether it has chosen a different cache or
established a new connection to the previous cache.
</t>
<t>
A client MAY drop the data from a particular cache when it is
fully in sync with one or more other caches.
</t>
<t>
See <xref target="timing"/> for details on what to do when the
client is not able to refresh from a particular cache.
</t>
<t>
If a client loses connectivity to a cache it is using, or
otherwise decides to switch to a new cache, it SHOULD retain the
data from the previous cache until it has a full set of data
from one or more other caches. Note that this may already be
true at the point of connection loss if the client has
connections to more than one cache.
</t>
</section>
<section anchor="Scenarios" title="Deployment Scenarios">
<t>
For illustration, we present three likely deployment
scenarios.
<list style="hanging">
<t hangText="Small End Site:">
The small multihomed end site may wish to outsource the
RPKI cache to one or more of their upstream ISPs. They
would exchange authentication material with the ISP using
some out-of-band mechanism, and their router(s) would
connect to the cache(s) of one or more upstream ISPs. The
ISPs would likely deploy caches intended for customer use
separately from the caches with which their own BGP
speakers peer.
</t>
<t hangText="Large End Site:">
A larger multihomed end site might run one or more caches,
arranging them in a hierarchy of client caches, each fetching
from a serving cache which is closer to the Global RPKI. They
might configure fall-back peerings to upstream ISP caches.
</t>
<t hangText="ISP Backbone:">
A large ISP would likely have one or more redundant caches
in each major point of presence (PoP), and these caches
would fetch from each other in an ISP-dependent topology
so as not to place undue load on the Global RPKI.
</t>
</list>
</t>
<t>
Experience with large DNS cache deployments has shown that
complex topologies are ill-advised as it is easy to make errors
in the graph, e.g., not maintain a loop-free condition.
</t>
<t>
Of course, these are illustrations and there are other possible
deployment strategies. It is expected that minimizing load on
the Global RPKI servers will be a major consideration.
</t>
<t>
To keep load on Global RPKI services from unnecessary peaks, it
is recommended that primary caches which load from the
distributed Global RPKI not do so all at the same times, e.g., on
the hour. Choose a random time, perhaps the ISP's AS number
modulo 60 and jitter the inter-fetch timing.
</t>
</section>
<section anchor="errorcodes" title="Error Codes">
<t>
This section contains a preliminary list of error codes. The
authors expect additions to the list during development of
the initial implementations. There is an IANA registry where
valid error codes are listed; see <xref target="IANA"/>. Errors
which are considered fatal SHOULD cause the session to be
dropped.
<list style="hanging">
<t hangText="0: Corrupt Data (fatal):">
The receiver believes the received PDU to be corrupt in a
manner not specified by another error code.
</t>
<t hangText="1: Internal Error (fatal):">
The party reporting the error experienced some kind of
internal error unrelated to protocol operation (ran out of
memory, a coding assertion failed, et cetera).
</t>
<t hangText="2: No Data Available:">
The cache believes itself to be in good working order, but
is unable to answer either a Serial Query or a Reset Query
because it has no useful data available at this time. This
is likely to be a temporary error, and most likely indicates
that the cache has not yet completed pulling down an initial
current data set from the Global RPKI system after some kind
of event that invalidated whatever data it might have
previously held (reboot, network partition, et cetera).
</t>
<t hangText="3: Invalid Request (fatal):">
The cache server believes the client's request to be
invalid.
</t>
<t hangText="4: Unsupported Protocol Version (fatal):">
The Protocol Version is not known by the receiver of the
PDU.
</t>
<t hangText="5: Unsupported PDU Type (fatal):">
The PDU Type is not known by the receiver of the PDU.
</t>
<t hangText="6: Withdrawal of Unknown Record (fatal):">
The received PDU has Flag=0 but a matching record
({Prefix, Len, Max-Len, ASN} tuple for an IPvX PDU, {SKI,
ASN, Subject Public Key} tuple for a Router Key PDU) does
not exist in the receiver's database.
</t>
<t hangText="7: Duplicate Announcement Received (fatal):">
The received PDU has Flag=1 but a matching record
({Prefix, Len, Max-Len, ASN} tuple for an IPvX PDU, {SKI,
ASN, Subject Public Key} tuple for a Router Key PDU) is
already active in the router.
</t>
<t hangText="8: Unexpected Protocol Version (fatal):">
The received PDU has a Protocol Version field that differs
from the protocol version negotiated in
<xref target="version"/>.
</t>
</list>
</t>
</section>
<section anchor="Security" title="Security Considerations">
<t>
As this document describes a security protocol, many aspects of
security interest are described in the relevant sections. This
section points out issues which may not be obvious in other
sections.
<list style="hanging">
<t hangText="Cache Validation:">
In order for a collection of caches as described in
<xref target="Scenarios"/> to guarantee a consistent view,
they need to be given consistent trust anchors to use in their
internal validation process. Distribution of a consistent
trust anchor is assumed to be out of band.
</t>
<t hangText="Cache Peer Identification:">
The router initiates a transport session to a cache, which it
identifies by either IP address or fully qualified domain
name. Be aware that a DNS or address spoofing attack could
make the correct cache unreachable. No session would be
established, as the authorization keys would not match.
</t>
<t hangText="Transport Security:">
The RPKI relies on object, not server or transport, trust.
That is, the IANA root trust anchor is distributed to all
caches through some out-of-band means, and can then be
used by each cache to validate certificates and ROAs all
the way down the tree. The inter-cache relationships are
based on this object security model; hence, the
inter-cache transport can be lightly protected.
</t>
<t>
However, this protocol document assumes that the routers cannot
do the validation cryptography. Hence, the last link, from
cache to router, is secured by server authentication and
transport-level security. This is dangerous, as server
authentication and transport have very different threat models
than object security.
</t>
<t>
So the strength of the trust relationship and the transport
between the router(s) and the cache(s) are critical. You're
betting your routing on this.
</t>
<t>
While we cannot say the cache must be on the same LAN, if
only due to the issue of an enterprise wanting to off-load the
cache task to their upstream ISP(s), locality, trust, and
control are very critical issues here. The cache(s) really
SHOULD be as close, in the sense of controlled and protected
(against DDoS, MITM) transport, to the router(s) as possible.
It also SHOULD be topologically close so that a minimum of
validated routing data are needed to bootstrap a router's access
to a cache.
</t>
<t>
The identity of the cache server SHOULD be verified and
authenticated by the router client, and vice versa, before any
data are exchanged.
</t>
<t>
Transports which cannot provide the necessary authentication
and integrity (see <xref target="Transport"/>) must rely on
network design and operational controls to provide protection
against spoofing/corruption attacks. As pointed out in
<xref target="Transport"/>, TCP-AO is the long-term plan.
Protocols which provide integrity and authenticity SHOULD be
used, and if they cannot, i.e., TCP is used as the transport,
the router and cache MUST be on the same trusted, controlled
network.
</t>
</list>
</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>
This section only discusses updates required in the existing
IANA protocol registries to accommodate version 1 of this
protocol. See <xref target="RFC6810"/> for IANA Considerations
from the original (version 0) protocol.
</t>
<t>
All existing entries in the IANA "rpki-rtr-pdu" registry
remain valid for protocol version 0. All of the PDU types
allowed in protocol version 0 are also allowed in protocol
version 1, with the addition of the new Router Key PDU. To
reduce the likelihood of confusion, the PDU number used by the
Router Key PDU in protocol version 1 is hereby registered as
reserved (and unused) in protocol version 0.
</t>
<t>
The policy for adding to the registry is RFC Required per
<xref target="RFC5226"/>, either Standards Track or
Experimental.
</t>
<t>
Assuming that the registry allows range notation in the
Protocol Version field, the updated "rpki-rtr-pdu" registry
will be:
<figure>
<artwork>
Protocol PDU
Version Type Description
-------- ---- ---------------
0-1 0 Serial Notify
0-1 1 Serial Query
0-1 2 Reset Query
0-1 3 Cache Response
0-1 4 IPv4 Prefix
0-1 6 IPv6 Prefix
0-1 7 End of Data
0-1 8 Cache Reset
0 9 Reserved
1 9 Router Key
0-1 10 Error Report
0-1 255 Reserved
</artwork>
</figure>
</t>
<t>
All exiting entries in the IANA "rpki-rtr-error" registry
remain valid for all protocol versions. Protocol version 1
adds one new error code:
<figure>
<artwork>
Error
Code Description
----- ----------------
8 Unexpected Protocol Version
</artwork>
</figure>
</t>
</section>
<section anchor="Acknowledgments" title="Acknowledgments">
<t>
The authors wish to thank
Nils Bars,
Steve Bellovin,
Tim Bruijnzeels,
Rex Fernando,
Richard Hansen,
Paul Hoffman,
Fabian Holler,
Russ Housley,
Pradosh Mohapatra,
Keyur Patel,
David Mandelberg,
Sandy Murphy,
Robert Raszuk,
Andreas Reuter,
Thomas C. Schmidt,
John Scudder,
Ruediger Volk,
Matthias Waehlisch,
and
David Ward.
Particular thanks go to Hannes Gredler for showing us the
dangers of unnecessary fields.
</t>
<t>
No doubt this list is incomplete. We apologize to any
contributor whose name we missed.
</t>
</section>
</middle>
<back>
<references title="Normative References">
<!-- Begin inclusion: reference.RFC.1982.xml --><reference anchor="RFC1982">
<front>
<title>Serial Number Arithmetic</title>
<author fullname="R. Elz" initials="R." surname="Elz">
<organization/>
</author>
<author fullname="R. Bush" initials="R." surname="Bush">
<organization/>
</author>
<date month="August" year="1996"/>
<keyword>SNA</keyword>
<keyword>domain</keyword>
<keyword>name</keyword>
<keyword>system</keyword>
<keyword>DNS</keyword>
<abstract>
<t>The DNS has long relied upon serial number arithmetic, a concept which has never really been defined, certainly not in an IETF document, though which has been widely understood. This memo supplies the missing definition. It is intended to update RFC1034 and RFC1035. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="1982"/>
<format type="TXT" octets="14440" target="http://www.rfc-editor.org/rfc/rfc1982.txt"/>
<!-- updates RFC1034 RFC1035 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.1982.xml -->
<!-- Begin inclusion: reference.RFC.2119.xml --><reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname="S. Bradner" initials="S." surname="Bradner">
<organization/>
</author>
<date month="March" year="1997"/>
<keyword>Standards</keyword>
<keyword>Track</keyword>
<keyword>Documents</keyword>
<abstract>
<t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="BCP" value="14"/>
<format type="TXT" octets="4723" target="http://www.rfc-editor.org/rfc/rfc2119.txt"/>
<!-- current-status BEST CURRENT PRACTICE -->
<!-- publication-status BEST CURRENT PRACTICE -->
</reference><!-- End inclusion: reference.RFC.2119.xml -->
<!-- Begin inclusion: reference.RFC.2385.xml --><reference anchor="RFC2385">
<front>
<title>Protection of BGP Sessions via the TCP MD5 Signature Option</title>
<author fullname="A. Heffernan" initials="A." surname="Heffernan">
<organization/>
</author>
<date month="August" year="1998"/>
<keyword>border</keyword>
<keyword>gateway</keyword>
<keyword>protocol</keyword>
<keyword>transmission</keyword>
<keyword>control</keyword>
<keyword>message</keyword>
<keyword>digest</keyword>
<keyword>algorithm</keyword>
<abstract>
<t>This memo describes a TCP extension to enhance security for BGP. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2385"/>
<format type="TXT" octets="12315" target="http://www.rfc-editor.org/rfc/rfc2385.txt"/>
<!-- obsoleted-by RFC5925 -->
<!-- updated-by RFC6691 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.2385.xml -->
<!-- Begin inclusion: reference.RFC.3269.xml --><reference anchor="RFC3269">
<front>
<title>Author Guidelines for Reliable Multicast Transport (RMT) Building Blocks and Protocol Instantiation documents</title>
<author fullname="R. Kermode" initials="R." surname="Kermode">
<organization/>
</author>
<author fullname="L. Vicisano" initials="L." surname="Vicisano">
<organization/>
</author>
<date month="April" year="2002"/>
<keyword>definitions</keyword>
<keyword>operation</keyword>
<abstract>
<t>This document provides general guidelines to assist the authors of Reliable Multicast Transport (RMT) building block and protocol instantiation definitions. The purpose of these guidelines is to ensure that any building block and protocol instantiation definitions produced contain sufficient information to fully explain their operation and use. In addition these guidelines provide directions to specify modular and clearly defined RMT building blocks and protocol instantiations that can be refined and augmented to safely create new protocols for use in new scenarios for which any existing protocols were not designed. This memo provides information for the Internet community.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="3269"/>
<format type="TXT" octets="25258" target="http://www.rfc-editor.org/rfc/rfc3269.txt"/>
<!-- current-status INFORMATIONAL -->
<!-- publication-status INFORMATIONAL -->
</reference><!-- End inclusion: reference.RFC.3269.xml -->
<!-- Begin inclusion: reference.RFC.4252.xml --><reference anchor="RFC4252">
<front>
<title>The Secure Shell (SSH) Authentication Protocol</title>
<author fullname="T. Ylonen" initials="T." surname="Ylonen">
<organization/>
</author>
<author fullname="C. Lonvick" initials="C." surname="Lonvick">
<organization/>
</author>
<date month="January" year="2006"/>
<keyword>remote login</keyword>
<keyword>public key</keyword>
<keyword>password</keyword>
<keyword>host-based client authentication</keyword>
<abstract>
<t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4252"/>
<format type="TXT" octets="34268" target="http://www.rfc-editor.org/rfc/rfc4252.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.4252.xml -->
<!-- Begin inclusion: reference.RFC.4301.xml --><reference anchor="RFC4301">
<front>
<title>Security Architecture for the Internet Protocol</title>
<author fullname="S. Kent" initials="S." surname="Kent">
<organization/>
</author>
<author fullname="K. Seo" initials="K." surname="Seo">
<organization/>
</author>
<date month="December" year="2005"/>
<keyword>IPSEC</keyword>
<keyword>ipsec</keyword>
<keyword>authentication</keyword>
<keyword>encapsulation</keyword>
<keyword>IP</keyword>
<keyword>IPv4</keyword>
<keyword>IPv6</keyword>
<keyword>IP-layer</keyword>
<keyword>ip authentication header</keyword>
<keyword>ip security</keyword>
<keyword>IPsec</keyword>
<keyword>confidentiality</keyword>
<keyword>authentication integrity</keyword>
<keyword>anti-replay</keyword>
<keyword>ah</keyword>
<keyword>esp</keyword>
<keyword>encapsulating security payload</keyword>
<keyword>ike</keyword>
<keyword>internet key exchange</keyword>
<keyword>ikev2</keyword>
<keyword>esn</keyword>
<keyword>extended sequence number</keyword>
<abstract>
<t>This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4301"/>
<format type="TXT" octets="262123" target="http://www.rfc-editor.org/rfc/rfc4301.txt"/>
<!-- obsoletes RFC2401 -->
<!-- updates RFC3168 -->
<!-- updated-by RFC6040 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.4301.xml -->
<!-- Begin inclusion: reference.RFC.5226.xml --><reference anchor="RFC5226">
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author fullname="T. Narten" initials="T." surname="Narten">
<organization/>
</author>
<author fullname="H. Alvestrand" initials="H." surname="Alvestrand">
<organization/>
</author>
<date month="May" year="2008"/>
<keyword>internet assigned numbers authority</keyword>
<keyword>values</keyword>
<keyword>implementations</keyword>
<keyword>code point</keyword>
<keyword>protocol constant</keyword>
<keyword>protocol parameter</keyword>
<abstract>
<t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA). In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA. This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5226"/>
<seriesInfo name="BCP" value="26"/>
<format type="TXT" octets="66160" target="http://www.rfc-editor.org/rfc/rfc5226.txt"/>
<!-- obsoletes RFC2434 -->
<!-- current-status BEST CURRENT PRACTICE -->
<!-- publication-status BEST CURRENT PRACTICE -->
</reference><!-- End inclusion: reference.RFC.5226.xml -->
<!-- Begin inclusion: reference.RFC.5246.xml --><reference anchor="RFC5246">
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author fullname="T. Dierks" initials="T." surname="Dierks">
<organization/>
</author>
<author fullname="E. Rescorla" initials="E." surname="Rescorla">
<organization/>
</author>
<date month="August" year="2008"/>
<keyword>idea</keyword>
<keyword>international data algorithm</keyword>
<keyword>symmetric</keyword>
<keyword>transport protocol layer</keyword>
<keyword>authentication</keyword>
<keyword>privacy</keyword>
<abstract>
<t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5246"/>
<format type="TXT" octets="222395" target="http://www.rfc-editor.org/rfc/rfc5246.txt"/>
<!-- obsoletes RFC3268 RFC4346 RFC4366 -->
<!-- updates RFC4492 -->
<!-- updated-by RFC5746 RFC5878 RFC6176 RFC7465 RFC7507 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.5246.xml -->
<!-- Begin inclusion: reference.RFC.5925.xml --><reference anchor="RFC5925">
<front>
<title>The TCP Authentication Option</title>
<author fullname="J. Touch" initials="J." surname="Touch">
<organization/>
</author>
<author fullname="A. Mankin" initials="A." surname="Mankin">
<organization/>
</author>
<author fullname="R. Bonica" initials="R." surname="Bonica">
<organization/>
</author>
<date month="June" year="2010"/>
<keyword>transmission control protocol</keyword>
<keyword>border</keyword>
<keyword>gateway</keyword>
<keyword>protocol</keyword>
<keyword>transmission control message</keyword>
<keyword>digest</keyword>
<keyword>algorithm</keyword>
<abstract>
<t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5925"/>
<format type="TXT" octets="106174" target="http://www.rfc-editor.org/rfc/rfc5925.txt"/>
<!-- obsoletes RFC2385 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.5925.xml -->
<!-- Begin inclusion: reference.RFC.5926.xml --><reference anchor="RFC5926">
<front>
<title>Cryptographic Algorithms for the TCP Authentication Option (TCP-AO)</title>
<author fullname="G. Lebovitz" initials="G." surname="Lebovitz">
<organization/>
</author>
<author fullname="E. Rescorla" initials="E." surname="Rescorla">
<organization/>
</author>
<date month="June" year="2010"/>
<keyword>transmission control protocol</keyword>
<abstract>
<t>The TCP Authentication Option (TCP-AO) relies on security algorithms to provide authentication between two end-points. There are many such algorithms available, and two TCP-AO systems cannot interoperate unless they are using the same algorithms. This document specifies the algorithms and attributes that can be used in TCP-AO's current manual keying mechanism and provides the interface for future message authentication codes (MACs). [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5926"/>
<format type="TXT" octets="31010" target="http://www.rfc-editor.org/rfc/rfc5926.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.5926.xml -->
<!-- Begin inclusion: reference.RFC.6125.xml --><reference anchor="RFC6125">
<front>
<title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
<author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
<organization/>
</author>
<author fullname="J. Hodges" initials="J." surname="Hodges">
<organization/>
</author>
<date month="March" year="2011"/>
<abstract>
<t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6125"/>
<format type="TXT" octets="136507" target="http://www.rfc-editor.org/rfc/rfc6125.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.6125.xml -->
<!-- Begin inclusion: reference.RFC.6487.xml --><reference anchor="RFC6487">
<front>
<title>A Profile for X.509 PKIX Resource Certificates</title>
<author fullname="G. Huston" initials="G." surname="Huston">
<organization/>
</author>
<author fullname="G. Michaelson" initials="G." surname="Michaelson">
<organization/>
</author>
<author fullname="R. Loomans" initials="R." surname="Loomans">
<organization/>
</author>
<date month="February" year="2012"/>
<keyword>rpki</keyword>
<keyword>Resource Public Key Infrastructure</keyword>
<keyword>Internet Number Resources</keyword>
<keyword>INR</keyword>
<abstract>
<t>This document defines a standard profile for X.509 certificates for the purpose of supporting validation of assertions of "right-of-use" of Internet Number Resources (INRs). The certificates issued under this profile are used to convey the issuer's authorization of the subject to be regarded as the current holder of a "right-of-use" of the INRs that are described in the certificate. This document contains the normative specification of Certificate and Certificate Revocation List (CRL) syntax in the Resource Public Key Infrastructure (RPKI). This document also specifies profiles for the format of certificate requests and specifies the Relying Party RPKI certificate path validation procedure. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6487"/>
<format type="TXT" octets="69150" target="http://www.rfc-editor.org/rfc/rfc6487.txt"/>
<!-- updated-by RFC7318 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.6487.xml -->
<!-- Begin inclusion: reference.RFC.6810.xml --><reference anchor="RFC6810">
<front>
<title>The Resource Public Key Infrastructure (RPKI) to Router Protocol</title>
<author fullname="R. Bush" initials="R." surname="Bush">
<organization/>
</author>
<author fullname="R. Austein" initials="R." surname="Austein">
<organization/>
</author>
<date month="January" year="2013"/>
<abstract>
<t>In order to verifiably validate the origin Autonomous Systems of BGP announcements, routers need a simple but reliable mechanism to receive Resource Public Key Infrastructure (RFC 6480) prefix origin data from a trusted cache. This document describes a protocol to deliver validated prefix origin data to routers. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6810"/>
<format type="TXT" octets="59714" target="http://www.rfc-editor.org/rfc/rfc6810.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.6810.xml -->
<!-- Begin inclusion: reference.RFC.6811.xml --><reference anchor="RFC6811">
<front>
<title>BGP Prefix Origin Validation</title>
<author fullname="P. Mohapatra" initials="P." surname="Mohapatra">
<organization/>
</author>
<author fullname="J. Scudder" initials="J." surname="Scudder">
<organization/>
</author>
<author fullname="D. Ward" initials="D." surname="Ward">
<organization/>
</author>
<author fullname="R. Bush" initials="R." surname="Bush">
<organization/>
</author>
<author fullname="R. Austein" initials="R." surname="Austein">
<organization/>
</author>
<date month="January" year="2013"/>
<keyword>SIDR</keyword>
<keyword>security</keyword>
<abstract>
<t>To help reduce well-known threats against BGP including prefix mis- announcing and monkey-in-the-middle attacks, one of the security requirements is the ability to validate the origination Autonomous System (AS) of BGP routes. More specifically, one needs to validate that the AS number claiming to originate an address prefix (as derived from the AS_PATH attribute of the BGP route) is in fact authorized by the prefix holder to do so. This document describes a simple validation mechanism to partially satisfy this requirement. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6811"/>
<format type="TXT" octets="20082" target="http://www.rfc-editor.org/rfc/rfc6811.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.6811.xml -->
<!-- Begin inclusion: reference.I-D.ietf-sidr-bgpsec-algs.xml --><!-- Automatically generated, do not edit. --><reference anchor="I-D.ietf-sidr-bgpsec-algs">
<front>
<title>BGP Algorithms, Key Formats, & Signature Formats</title>
<author initials="S." surname="Turner" fullname="Sean Turner"><organization/></author>
<date day="21" month="January" year="2015"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-sidr-bgpsec-algs-09"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-sidr-bgpsec-algs-09.txt"/>
</reference><!-- End inclusion: reference.I-D.ietf-sidr-bgpsec-algs.xml -->
</references>
<references title="Informative References">
<!-- Begin inclusion: reference.RFC.5781.xml --><reference anchor="RFC5781">
<front>
<title>The rsync URI Scheme</title>
<author fullname="S. Weiler" initials="S." surname="Weiler">
<organization/>
</author>
<author fullname="D. Ward" initials="D." surname="Ward">
<organization/>
</author>
<author fullname="R. Housley" initials="R." surname="Housley">
<organization/>
</author>
<date month="February" year="2010"/>
<keyword>rsyncuri</keyword>
<abstract>
<t>This document specifies the rsync Uniform Resource Identifier (URI) scheme. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5781"/>
<format type="TXT" octets="6704" target="http://www.rfc-editor.org/rfc/rfc5781.txt"/>
<!-- current-status INFORMATIONAL -->
<!-- publication-status INFORMATIONAL -->
</reference><!-- End inclusion: reference.RFC.5781.xml -->
<!-- Begin inclusion: reference.RFC.7128.xml --><reference anchor="RFC7128">
<front>
<title>Resource Public Key Infrastructure (RPKI) Router Implementation Report</title>
<author fullname="R. Bush" initials="R." surname="Bush">
<organization/>
</author>
<author fullname="R. Austein" initials="R." surname="Austein">
<organization/>
</author>
<author fullname="K. Patel" initials="K." surname="Patel">
<organization/>
</author>
<author fullname="H. Gredler" initials="H." surname="Gredler">
<organization/>
</author>
<author fullname="M. Waehlisch" initials="M." surname="Waehlisch">
<organization/>
</author>
<date month="February" year="2014"/>
<keyword>routing</keyword>
<keyword>security</keyword>
<abstract>
<t>This document is an implementation report for the Resource Public Key Infrastructure (RPKI) Router protocol as defined in RFC 6810. The authors did not verify the accuracy of the information provided by respondents. The respondents are experts with the implementations they reported on, and their responses are considered authoritative for the implementations for which their responses represent. The respondents were asked to only use the "YES" answer if the feature had at least been tested in the lab.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7128"/>
<format type="TXT" octets="19348" target="http://www.rfc-editor.org/rfc/rfc7128.txt"/>
<!-- current-status INFORMATIONAL -->
<!-- publication-status INFORMATIONAL -->
</reference><!-- End inclusion: reference.RFC.7128.xml -->
<!-- Begin inclusion: reference.RFC.6480.xml --><reference anchor="RFC6480">
<front>
<title>An Infrastructure to Support Secure Internet Routing</title>
<author fullname="M. Lepinski" initials="M." surname="Lepinski">
<organization/>
</author>
<author fullname="S. Kent" initials="S." surname="Kent">
<organization/>
</author>
<date month="February" year="2012"/>
<keyword>RPKI</keyword>
<keyword>BGP</keyword>
<keyword>ROA</keyword>
<abstract>
<t>This document describes an architecture for an infrastructure to support improved security of Internet routing. The foundation of this architecture is a Resource Public Key Infrastructure (RPKI) that represents the allocation hierarchy of IP address space and Autonomous System (AS) numbers; and a distributed repository system for storing and disseminating the data objects that comprise the RPKI, as well as other signed objects necessary for improved routing security. As an initial application of this architecture, the document describes how a legitimate holder of IP address space can explicitly and verifiably authorize one or more ASes to originate routes to that address space. Such verifiable authorizations could be used, for example, to more securely construct BGP route filters. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6480"/>
<format type="TXT" octets="62127" target="http://www.rfc-editor.org/rfc/rfc6480.txt"/>
<!-- current-status INFORMATIONAL -->
<!-- publication-status INFORMATIONAL -->
</reference><!-- End inclusion: reference.RFC.6480.xml -->
<!-- Begin inclusion: reference.RFC.6481.xml --><reference anchor="RFC6481">
<front>
<title>A Profile for Resource Certificate Repository Structure</title>
<author fullname="G. Huston" initials="G." surname="Huston">
<organization/>
</author>
<author fullname="R. Loomans" initials="R." surname="Loomans">
<organization/>
</author>
<author fullname="G. Michaelson" initials="G." surname="Michaelson">
<organization/>
</author>
<date month="February" year="2012"/>
<keyword>rpki</keyword>
<keyword>Resource Public Key Infrastructure</keyword>
<abstract>
<t>This document defines a profile for the structure of the Resource Public Key Infrastructure (RPKI) distributed repository. Each individual repository publication point is a directory that contains files that correspond to X.509/PKIX Resource Certificates, Certificate Revocation Lists and signed objects. This profile defines the object (file) naming scheme, the contents of repository publication points (directories), and a suggested internal structure of a local repository cache that is intended to facilitate synchronization across a distributed collection of repository publication points and to facilitate certification path construction. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6481"/>
<format type="TXT" octets="36117" target="http://www.rfc-editor.org/rfc/rfc6481.txt"/>
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.6481.xml -->
<!-- Begin inclusion: reference.RFC.1996.xml --><reference anchor="RFC1996">
<front>
<title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title>
<author fullname="P. Vixie" initials="P." surname="Vixie">
<organization/>
</author>
<date month="August" year="1996"/>
<keyword>DNS-NOTIFY</keyword>
<keyword>Domain</keyword>
<keyword>Name</keyword>
<keyword>System</keyword>
<abstract>
<t>This memo describes the NOTIFY opcode for DNS, by which a master server advises a set of slave servers that the master's data has been changed and that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="1996"/>
<format type="TXT" octets="15247" target="http://www.rfc-editor.org/rfc/rfc1996.txt"/>
<!-- updates RFC1035 -->
<!-- current-status PROPOSED STANDARD -->
<!-- publication-status PROPOSED STANDARD -->
</reference><!-- End inclusion: reference.RFC.1996.xml -->
<!-- Begin inclusion: reference.RFC.4808.xml --><reference anchor="RFC4808">
<front>
<title>Key Change Strategies for TCP-MD5</title>
<author fullname="S. Bellovin" initials="S." surname="Bellovin">
<organization/>
</author>
<date month="March" year="2007"/>
<keyword>bgp</keyword>
<keyword>border gateway protocol</keyword>
<abstract>
<t>The TCP-MD5 option is most commonly used to secure BGP sessions between routers. However, changing the long-term key is difficult, since the change needs to be synchronized between different organizations. We describe single-ended strategies that will permit (mostly) unsynchronized key changes. This memo provides information for the Internet community.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4808"/>
<format type="TXT" octets="14939" target="http://www.rfc-editor.org/rfc/rfc4808.txt"/>
<!-- current-status INFORMATIONAL -->
<!-- publication-status INFORMATIONAL -->
</reference><!-- End inclusion: reference.RFC.4808.xml -->
</references>
</back>
</rfc><!--
- Local Variables:
- mode:sgml
- End:
-->
| PAFTECH AB 2003-2026 | 2026-04-23 01:08:59 |