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>
<section anchor="version" title="Protocol Version Negotiation"> <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> <t>
A router MUST start each transport connection by issuing either a A router MUST start each transport connection by issuing either a
Reset Query or a Serial Query. This query MUST tell the cache Reset Query or a Serial Query. This query MUST tell the cache
@ -1212,6 +1255,7 @@
</t> </t>
</list> </list>
</t> </t>
-->
<t> <t>
In any of the downgraded combinations above, the new features of In any of the downgraded combinations above, the new features of
the higher version will not be available, and all PDUs MUST have the higher version will not be available, and all PDUs MUST have