reworked version negotiation

This commit is contained in:
Randy Bush 2024-01-02 16:56:09 -08:00
parent 6e442cdad6
commit f812c253dc

View file

@ -1177,6 +1177,49 @@
</section>
<section anchor="version" title="Protocol Version Negotiation">
<t>
Once a router has established a transport connection to a cache,
it MUST attempt to open a RPKI-Router 'session' by issuing
either a Reset Query <xref target="resetquery"/>) or a Serial
Query (<xref target="serialquery"/>) with the highest version of
this protocol the router implements in the Protocol Version
field. If the cache supports that version, it responds with a
Cache Response (<xref target="cacheresponse"/>) of that version
and the session is considered open.
</t>
<t>
If a cache which supports version N receives a query with
Protocol Version Q &lt; N, and the cache does not support
versions &lt;= Q, the cache MUST send an Error Report (<xref
target="error"/>) with Protocol Version N and Error Code 4
("Unsupported Protocol Version") and disconnect the transport
session.
</t>
<t>
If a cache which supports version N receives a query with
Protocol Version Q &lt; N, the cache MUST downgrade to protocol
version Q, <xref target="RFC6810"/> or <xref target="RFC8210"/>,
and respond with a Cache Response (<xref
target="cacheresponse"/>) of that Protocol Version and the
session is considered open.
</t>
<t>
If the router query has version Q > N, the cache MUST send an
Error Report (<xref target="error"/>) with Protocol Version
N and Error Code 4 ("Unsupported Protocol Version"), and the
router SHOULD send another query with a Protocol Version Q of
the version N in the Error Report, unless it has already
failed at that version. This MAY repeat with the router
attempting to negotiate lower and lower versions until they
agree.
</t>
<t>
If the router requests Q == 0 and it still fails with the cache
sending an Error Report (<xref target="error"/>) with Error Code
4 ("Unsupported Protocol Version"), then the router MUST abort
the transport connection.
</t>
<!--
<t>
A router MUST start each transport connection by issuing either a
Reset Query or a Serial Query. This query MUST tell the cache
@ -1212,6 +1255,7 @@
</t>
</list>
</t>
-->
<t>
In any of the downgraded combinations above, the new features of
the higher version will not be available, and all PDUs MUST have