-09 published after romain review

This commit is contained in:
Randy Bush 2022-06-14 17:48:12 -07:00
parent e7539c739d
commit 2664fb37e5

View file

@ -164,19 +164,18 @@
Party.
</t>
<t hangText="Serial Number:">
"Serial Number" is 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.
"Serial Number" is 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 Number 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 ID
@ -284,7 +283,7 @@
As a cache server must evaluate certificates and ROAs (Route
Origin Authorizations; see <xref target="RFC6480"/>),
which are time dependent, servers' clocks MUST be correct to a
tolerance of approximately an hour.
tolerance of an hour.
</t>
<t>
Barring errors, transport connections remain up as long as the
@ -322,11 +321,11 @@
e.g., IPv4 Prefix.
</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.
A 32-bit unsigned integer serializing the RPKI cache epoc
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 validated
update from a parent cache or the Global RPKI.
</t>
<t hangText="Session ID:">
A 16-bit unsigned integer.
@ -390,11 +389,12 @@
avoid the risk of Session ID collisions.
</t>
<t>
The Session ID might be a pseudorandom value, a
strictly increasing value if the cache has reliable
storage, et cetera. A seconds-since-epoch timestamp
value such as the POSIX time() function makes a good
Session ID value.
The Session ID might be a pseudorandom value, a strictly
increasing value if the cache has reliable storage, et
cetera. A seconds-since-epoch timestamp value such as the
low order 16 bits of unsigned integer seconds since
1970-01-01T00:00:00Z ignoring leap seconds might make a
good Session ID value.
</t>
<t hangText="Length:">
A 32-bit unsigned integer which has as its value the count
@ -402,9 +402,9 @@
header which includes 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 announce/withdraw flag indicates
An 8-bit binary field, with the lowest-order bit being 1
for an announcement and 0 for a withdrawal. For a Prefix
PDU (IPv4 or IPv6), the announce/withdraw 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
@ -437,49 +437,49 @@
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 hangText="Subject Key Identifier:">
The 20-bit 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="RFC8608"/>. This is the
full ASN.1 DER encoding of the subjectPublicKeyInfo,
including the ASN.1 tag and length values of the
subjectPublicKeyInfo SEQUENCE.
<t hangText="Subject Public Key Info:">
A variable length field holding a router key's
subjectPublicKeyInfo value, as described in <xref
target="RFC8608"/>. 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="Refresh Interval:">
Interval between normal cache polls. See <xref
target="timing"/>.
A 32-bit interval in seconds between normal cache polls.
See <xref target="timing"/>.
</t>
<t hangText="Retry Interval:">
Interval between cache poll retries after a failed cache poll.
See <xref target="timing"/>.
A 32-bit interval in seconds between cache poll retries
after a failed cache poll. See <xref target="timing"/>.
</t>
<t hangText="Expire Interval:">
Interval during which data fetched from a cache remains
valid in the absence of a successful subsequent cache poll.
See <xref target="timing"/>.
A 32-bit interval in seconds during which data fetched
from a cache remains valid in the absence of a successful
subsequent cache poll. See <xref target="timing"/>.
</t>
<t hangText="AFI Flags:">
A field of the ASPA PDU where the low order bit denotes
whether the AS relationships are for IPv4 (0) or IPv6 (1)
AFI.
An 8-bit field of the ASPA PDU where the low order bit
denotes whether the AS relationships are for IPv4 (0) or
IPv6 (1) AFI.
</t>
<t hangText="Provider AS Count:">
The number of Provider Autonomous System Numbers in the
PDU.
A 16-bit count of Provider Autonomous System Numbers in
the PDU.
</t>
<t hangText="Customer Autonomous System Number:">
The AS number of the Autonomous System that authorizes the
upstream providers listed in the Provider Autonomous
System list to propagate prefixes of the specified address
family other ASes.
The 32-bit AS number of the Autonomous System that
authorizes the upstream providers listed in the Provider
Autonomous System list to propagate prefixes of the
specified address family other ASes.
</t>
<t hangText="Provider Autonomous System Numbers:">
The set of AS numbers authorized to propagate prefixes of
the spacified AFI which were received from the customer
AS.
The set of 32-bit AS numbers authorized to propagate
prefixes of the specified AFI which were received from the
customer AS.
</t>
</list>
</t>
@ -685,6 +685,10 @@
`-------------------------------------------'
</artwork>
</figure>
<t>
This PDU carries an <xref target="RFC6811"/> Vidated ROA
Payload (VRP) for an IPv4 ROA.
</t>
<t>
The lowest-order bit of the Flags field is 1 for an
announcement and 0 for a withdrawal.
@ -746,8 +750,13 @@
`-------------------------------------------'
</artwork>
</figure>
<t>
This PDU carries an <xref target="RFC6811"/> Vidated ROA
Payload (VRP) for an IPv6 ROA.
</t>
<t>
Analogous to the IPv4 Prefix PDU, it has 96 more bits and no magic.
Analogous to the IPv4 Prefix PDU, it has 96 more bits and no
magic.
</t>
</section>
@ -863,6 +872,10 @@
`-------------------------------------------'
</artwork>
</figure>
<t>
The Router Key PDU transports an <xref target="RFC8635"/>
Router key.
</t>
<t>
The lowest-order bit of the Flags field is 1 for an
announcement and 0 for a withdrawal.
@ -892,6 +905,10 @@
Subject Public Key values as well as SKIs when detecting
duplicate PDUs.
</t>
<t>
As the Subject Public Key Info is a variable length field, it
must be decoded to determine where the PDU terminates.
</t>
</section>
<section anchor="error" title="Error Report">
@ -906,6 +923,10 @@
<t>
Error codes are described in <xref target="errorcodes"/>.
</t>
<t>
The Erroneous PDU field is a binary copy of the PDU causing
the error condition, including all fields.
</t>
<t>
If the error is generic (e.g., "Internal Error") and not
associated with the PDU to which it is responding, the
@ -924,9 +945,9 @@
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="RFC3629"/>).
The Arbitrary Bytes field is optional; if not present, the
Length of Arbitrary Bytes field MUST be zero. If Arbitrary
Bytes are present, they are, as named, arbitrary values.
</t>
<figure>
<artwork>
@ -949,13 +970,13 @@
| |
+-------------------------------------------+
| |
| Length of Error Text |
| Length of Arbitrary Bytes |
| |
+-------------------------------------------+
| |
| Arbitrary Text |
| Arbitrary Bytes |
| of |
~ Error Diagnostic Message ~
~ Error Diagnostic ~
| |
`-------------------------------------------'
</artwork>
@ -1162,7 +1183,7 @@
target="RFC6810"/> or <xref target="RFC8210"/> or send a version
2 Error Report PDU with Error Code 4 ("Unsupported Protocol
Version") and terminate the connection; in which case the
Arbitrary Text field of the ERROR Report PDU MUST be a list of
Arbitrary Bytes field of the ERROR Report PDU MUST be a list of
one octet binary integers indicating the version numbers the
cache supports. The router MUST choose the highest mutally
supported version. If there are none, the router MUST abort the
@ -1400,7 +1421,8 @@ Cache 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.
until it gets a new usable load from the cache; maybe once a
minute so as not to DoS the cache.
</t>
</section>
@ -1460,19 +1482,20 @@ Cache Router
example, see <xref target="SSH"/>.
</t>
<t>
Caches and routers MAY use TCP MD5 transport
<xref target="RFC5925"/> using the rpki-rtr port. Note that
TCP MD5 has been obsoleted by TCP-AO
<xref target="RFC5925"/>.
Caches and routers MAY use TCP MD5 transport <xref
target="RFC2385"/> using the rpki-rtr port if no other protected
transport is available. 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 Transport Layer Security (TLS) transport
<xref target="RFC8446"/> using port rpki-rtr-tls (324); see
<xref target="IANA"/>.
Caches and routers MAY use Transport Layer Security (TLS)
transport <xref target="RFC8446"/> using port rpki-rtr-tls
(324); see <xref target="IANA"/>. Conformance to <xref
target="RFC7525"/> modern cipher suites is REQUIRED.
</t>
</list></t>
@ -1510,10 +1533,11 @@ Cache Router
Cache servers supporting SSH transport MUST accept RSA
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 MITM attacks.
authentication "publickey") MUST be supported; host
authentication "hostbased") MAY be supported. Implementations
MAY support password authentication "password"). "None"
authentication MUST NOT be used. Client routers SHOULD verify
the public key of the cache to avoid MITM attacks.
</t>
</section>
@ -1581,7 +1605,7 @@ Cache Router
<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="RFC5925"/>. Implementations MUST also support
<xref target="RFC2385"/>. Implementations MUST also support
hexadecimal sequences of at least 32 characters, i.e.,
128 bits.
</t>
@ -1618,12 +1642,12 @@ Cache Router
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, et cetera. 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
preference value for each server. This preference is intended
to be based on proximity, a la RTT, not trust, preferred belief,
et cetera. 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:">
@ -1690,9 +1714,9 @@ Cache Router
<section anchor="races" title="ROA PDU Race Minimization">
<t>
When a cache is sending ROA PDUs to a router, especially an
initial full load in response to a Reset Query PDU, two
undesirable race conditions are possible:
When a cache is sending ROA (IPv4 or IPv6) PDUs to a router,
especially an initial full load in response to a Reset Query PDU,
two undesirable race conditions are possible:
<list style="hanging">
<t hangText="Break Before Make:">
For some prefix P, an AS may announce two (or more) ROAs
@ -1758,10 +1782,10 @@ Cache Router
</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.
is recommended that caches which fetch from the 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>
@ -1834,11 +1858,12 @@ Cache Router
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.
In order for a collection of caches as described in <xref
target="Scenarios"/> to provide a consistent view, they need
to be given consistent trust anchors of the Certification
Authorities to use in their internal validation process.
Distribution of a consistent trust anchor set to validating
caches is assumed to be out of band.
</t>
<t hangText="Cache Peer Identification:">
The router initiates a transport connection to a cache, which it
@ -1857,12 +1882,14 @@ Cache Router
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.
However, this protocol document assumes that the routers
cannot do the validation cryptography. Hence, the last
link, from cache to router, SHOULD be secured by server
authentication and transport-level security to prevent
monkey in the middle attacks; though it might not be. Not
using transport security 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
@ -1881,9 +1908,9 @@ Cache Router
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.
Reliable transport protocols (i.e. not raw TCP) will
authenticate the identity of the cache server to the router
client, and vice versa, before any data are exchanged.
</t>
<t>
Transports which cannot provide the necessary authentication
@ -1913,11 +1940,6 @@ Cache Router
allowed in protocol version 2, with the addition of the new ASPA
PDU.
</t>
<t>
The policy for adding to the registry is RFC Required per <xref
target="RFC8126"/>; the document must be either Standards Track
or Experimental.
</t>
<t>
The "rpki-rtr-pdu" registry <xref target="iana-pdu"/> has been
updated as follows:
@ -1943,19 +1965,6 @@ Cache Router
0-2 255 Reserved
</artwork>
</figure>
<t>
All previous entries in the IANA "rpki-rtr-error" registry <xref
target="iana-err"/> remain valid for all protocol versions.
Protocol version 1 added one new error code:
</t>
<figure>
<artwork>
Error
Code Description
----- ---------------------------
8 Unexpected Protocol Version
</artwork>
</figure>
</section>
</middle>
@ -1978,7 +1987,7 @@ Cache Router
</reference>
<?rfc include="reference.RFC.1982.xml"?>
<?rfc include="reference.RFC.2119.xml"?>
<?rfc include="reference.RFC.3629.xml"?>
<?rfc include="reference.RFC.2385.xml"?>
<?rfc include="reference.RFC.4252.xml"?>
<?rfc include="reference.RFC.4301.xml"?>
<?rfc include="reference.RFC.5280.xml"?>
@ -1988,11 +1997,13 @@ Cache Router
<?rfc include="reference.RFC.6487.xml"?>
<?rfc include="reference.RFC.6810.xml"?>
<?rfc include="reference.RFC.6811.xml"?>
<?rfc include="reference.RFC.7525.xml"?>
<?rfc include="reference.RFC.8126.xml"?>
<?rfc include="reference.RFC.8174.xml"?>
<?rfc include="reference.RFC.8210.xml"?>
<?rfc include="reference.RFC.8446.xml"?>
<?rfc include="reference.RFC.8608.xml"?>
<?rfc include="reference.RFC.8635.xml"?>
</references>
<references title="Informative References">