| draft-ietf-sidr-rpki-rtr-rfc6810-bis-07.txt | draft-ietf-sidr-rpki-rtr-rfc6810-bis-08.txt | |||
|---|---|---|---|---|
| Network Working Group R. Bush | Network Working Group R. Bush | |||
| Internet-Draft Internet Initiative Japan | Internet-Draft Internet Initiative Japan | |||
| Obsoletes: 6810 (if approved) R. Austein | Intended status: Standards Track R. Austein | |||
| Intended status: Standards Track Dragon Research Labs | Expires: July 11, 2017 Dragon Research Labs | |||
| Expires: September 4, 2016 March 3, 2016 | January 7, 2017 | |||
| The Resource Public Key Infrastructure (RPKI) to Router Protocol | The Resource Public Key Infrastructure (RPKI) to Router Protocol | |||
| draft-ietf-sidr-rpki-rtr-rfc6810-bis-07 | draft-ietf-sidr-rpki-rtr-rfc6810-bis-08 | |||
| Abstract | Abstract | |||
| In order to verifiably validate the origin Autonomous Systems and | In order to verifiably validate the origin Autonomous Systems and | |||
| Autonomous System Paths of BGP announcements, routers need a simple | Autonomous System Paths of BGP announcements, routers need a simple | |||
| but reliable mechanism to receive Resource Public Key Infrastructure | but reliable mechanism to receive Resource Public Key Infrastructure | |||
| (RFC 6480) prefix origin data and router keys from a trusted cache. | (RFC 6480) prefix origin data and router keys from a trusted cache. | |||
| This document describes a protocol to deliver validated prefix origin | This document describes a protocol to deliver them. | |||
| data and router keys to routers. | ||||
| This document describes version 1 of the rpki-rtr protocol. | This document describes version 1 of the rpki-rtr protocol. RFC 6810 | |||
| describes version 0. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 4, 2016. | This Internet-Draft will expire on July 11, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 2, line 19 | skipping to change at page 2, line 19 | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Changes from RFC 6810 . . . . . . . . . . . . . . . . . . 3 | 1.2. Changes from RFC 6810 . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Deployment Structure . . . . . . . . . . . . . . . . . . . . 4 | 3. Deployment Structure . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Operational Overview . . . . . . . . . . . . . . . . . . . . 5 | 4. Operational Overview . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. Protocol Data Units (PDUs) . . . . . . . . . . . . . . . . . 6 | 5. Protocol Data Units (PDUs) . . . . . . . . . . . . . . . . . 6 | |||
| 5.1. Fields of a PDU . . . . . . . . . . . . . . . . . . . . . 6 | 5.1. Fields of a PDU . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.2. Serial Notify . . . . . . . . . . . . . . . . . . . . . . 8 | 5.2. Serial Notify . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.3. Serial Query . . . . . . . . . . . . . . . . . . . . . . 9 | 5.3. Serial Query . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.4. Reset Query . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.4. Reset Query . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.5. Cache Response . . . . . . . . . . . . . . . . . . . . . 11 | 5.5. Cache Response . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5.6. IPv4 Prefix . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.6. IPv4 Prefix . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5.7. IPv6 Prefix . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.7. IPv6 Prefix . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.8. End of Data . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.8. End of Data . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.9. Cache Reset . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.9. Cache Reset . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.10. Router Key . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.10. Router Key . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.11. Error Report . . . . . . . . . . . . . . . . . . . . . . 16 | 5.11. Error Report . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6. Protocol Timing Parameters . . . . . . . . . . . . . . . . . 17 | 6. Protocol Timing Parameters . . . . . . . . . . . . . . . . . 17 | |||
| skipping to change at page 3, line 12 | skipping to change at page 3, line 12 | |||
| 16.2. Informative References . . . . . . . . . . . . . . . . . 32 | 16.2. Informative References . . . . . . . . . . . . . . . . . 32 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 1. Introduction | 1. Introduction | |||
| In order to verifiably validate the origin Autonomous Systems (ASes) | In order to verifiably validate the origin Autonomous Systems (ASes) | |||
| and AS paths of BGP announcements, routers need a simple but reliable | and AS paths of BGP announcements, routers need a simple but reliable | |||
| mechanism to receive cryptographically validated Resource Public Key | mechanism to receive cryptographically validated Resource Public Key | |||
| Infrastructure (RPKI) [RFC6480] prefix origin data and router keys | Infrastructure (RPKI) [RFC6480] prefix origin data and router keys | |||
| from a trusted cache. This document describes a protocol to deliver | from a trusted cache. This document describes a protocol to deliver | |||
| validated prefix origin data and router keys to routers. The design | them. The design is intentionally constrained to be usable on much | |||
| is intentionally constrained to be usable on much of the current | of the current generation of ISP router platforms. | |||
| generation of ISP router platforms. | ||||
| Section 3 describes the deployment structure, and Section 4 then | Section 3 describes the deployment structure, and Section 4 then | |||
| presents an operational overview. The binary payloads of the | presents an operational overview. The binary payloads of the | |||
| protocol are formally described in Section 5, and the expected | protocol are formally described in Section 5, and the expected | |||
| Protocol Data Unit (PDU) sequences are described in Section 8. The | Protocol Data Unit (PDU) sequences are described in Section 8. The | |||
| transport protocol options are described in Section 9. Section 10 | transport protocol options are described in Section 9. Section 10 | |||
| details how routers and caches are configured to connect and | details how routers and caches are configured to connect and | |||
| authenticate. Section 11 describes likely deployment scenarios. The | authenticate. Section 11 describes likely deployment scenarios. The | |||
| traditional security and IANA considerations end the document. | traditional security and IANA considerations end the document. | |||
| The protocol is extensible in order to support new PDUs with new | The protocol is extensible in order to support new PDUs with new | |||
| semantics, if deployment experience indicates they are needed. PDUs | semantics, if deployment experience indicates they are needed. PDUs | |||
| are versioned should deployment experience call for change. | are versioned should deployment experience call for change. | |||
| For an implementation (not interoperability) report on the use of | ||||
| this protocol with prefix origin data, see [RFC7128]. | ||||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119] | document are to be interpreted as described in RFC 2119 [RFC2119] | |||
| only when they appear in all upper case. They may also appear in | only when they appear in all upper case. They may also appear in | |||
| lower or mixed case as English words, without special meaning. | lower or mixed case as English words, without special meaning. | |||
| 1.2. Changes from RFC 6810 | 1.2. Changes from RFC 6810 | |||
| The protocol described in this document is largely compatible with | This section summarizes the significant changes between [RFC6810] and | |||
| [RFC6810]. This section summarizes the significant changes. | the protocol described in this document. | |||
| o New Router Key PDU type (Section 5.10) added. | o New Router Key PDU type (Section 5.10) added. | |||
| o Explicit timing parameters (Section 5.8, Section 6) added. | o Explicit timing parameters (Section 5.8, Section 6) added. | |||
| o Protocol version number incremented from zero to one. | o Protocol version number incremented from zero to one. | |||
| o Protocol version number negotiation (Section 7) added. | o Protocol version number negotiation (Section 7) added. | |||
| 2. Glossary | 2. Glossary | |||
| The following terms are used with special meaning. | The following terms are used with special meaning. | |||
| Global RPKI: The authoritative data of the RPKI are published in a | Global RPKI: The authoritative data of the RPKI are published in a | |||
| distributed set of servers at the IANA, Regional Internet | distributed set of servers at the IANA, Regional Internet | |||
| Registries (RIRs), National Internet Registries (NIRs), and ISPs; | Registries (RIRs), National Internet Registries (NIRs), and ISPs; | |||
| see [RFC6481]. | see [RFC6481]. | |||
| Cache: A coalesced copy of the published Global RPKI data, | Cache: A coalesced copy of the published Global RPKI data, | |||
| periodically fetched or refreshed, directly or indirectly, using | periodically fetched or refreshed, directly or indirectly, using | |||
| the [RFC5781] protocol or some successor protocol. Relying party | the [RFC5781] protocol or some successor. Relying party software | |||
| software is used to gather and validate the distributed data of | is used to gather and validate the distributed data of the RPKI | |||
| the RPKI into a cache. Trusting this cache further is a matter | into a cache. Trusting this cache further is a matter between the | |||
| between the provider of the cache and a relying party. | provider of the cache and a relying party. | |||
| Serial Number: A 32-bit strictly increasing unsigned integer which | Serial Number: A 32-bit strictly increasing unsigned integer which | |||
| wraps from 2^32-1 to 0. It denotes the logical version of a | wraps from 2^32-1 to 0. It denotes the logical version of a | |||
| cache. A cache increments the value when it successfully updates | cache. A cache increments the value when it successfully updates | |||
| its data from a parent cache or from primary RPKI data. While a | its data from a parent cache or from primary RPKI data. While a | |||
| cache is receiving updates, new incoming data and implicit deletes | cache is receiving updates, new incoming data and implicit deletes | |||
| are associated with the new serial but MUST NOT be sent until the | are associated with the new serial but MUST NOT be sent until the | |||
| fetch is complete. A Serial Number is not commensurate between | fetch is complete. A Serial Number is not commensurate between | |||
| different caches or different protocol versions, nor need it be | different caches or different protocol versions, nor need it be | |||
| maintained across resets of the cache server. See [RFC1982] on | maintained across resets of the cache server. See [RFC1982] on | |||
| DNS Serial Number Arithmetic for too much detail on the topic. | DNS Serial Number Arithmetic for too much detail on the topic. | |||
| Session ID: When a cache server is started, it generates a Session | Session ID: When a cache server is started, it generates a Session | |||
| ID to uniquely identify the instance of the cache and to bind it | ID to uniquely identify the instance of the cache and to bind it | |||
| to the sequence of Serial Numbers that cache instance will | to the sequence of Serial Numbers that cache instance will | |||
| generate. This allows the router to restart a failed session | generate. This allows the router to restart a failed session | |||
| knowing that the Serial Number it is using is commensurate with | knowing that the Serial Number it is using is commensurate with | |||
| that of the cache. | that of the cache. | |||
| Payload PDU: A protocol message which contains data for use by the | Payload PDU: A protocol message which contains data for use by the | |||
| router, as opposed to a PDU which just conveys the semantics of | router, as opposed to a PDU which conveys the control mechanisms | |||
| this protocol. Prefixes and Router Keys are examples of payload | of this protocol. Prefixes and Router Keys are examples of | |||
| PDUs. | payload PDUs. | |||
| 3. Deployment Structure | 3. Deployment Structure | |||
| Deployment of the RPKI to reach routers has a three-level structure | Deployment of the RPKI to reach routers has a three-level structure | |||
| as follows: | as follows: | |||
| Global RPKI: The authoritative data of the RPKI are published in a | Global RPKI: The authoritative data of the RPKI are published in a | |||
| distributed set of servers, RPKI publication repositories, e.g., | distributed set of servers, RPKI publication repositories, e.g., | |||
| by the IANA, RIRs, NIRs, and ISPs (see [RFC6481]). | by the IANA, RIRs, NIRs, and ISPs (see [RFC6481]). | |||
| Local Caches: A local set of one or more collected and verified | Local Caches: A local set of one or more collected and verified | |||
| caches. A relying party, e.g., router or other client, MUST have | caches of RPKI data. A relying party, e.g., router or other | |||
| a trust relationship with, and a trusted transport channel to, any | client, MUST have a trust relationship with, and a trusted | |||
| cache(s) it uses. | transport channel to, any cache(s) it uses. | |||
| Routers: A router fetches data from a local cache using the protocol | 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 | 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 | cache. There MAY be mechanisms for the router to assure itself of | |||
| the authenticity of the cache and to authenticate itself to the | the authenticity of the cache and to authenticate itself to the | |||
| cache. | cache (see Section 9). | |||
| 4. Operational Overview | 4. Operational Overview | |||
| A router establishes and keeps open a connection to one or more | A router establishes and keeps open a connection to one or more | |||
| caches with which it has client/server relationships. It is | caches with which it has client/server relationships. It is | |||
| configured with a semi-ordered list of caches, and establishes a | configured with a semi-ordered list of caches, and establishes a | |||
| connection to the most preferred cache, or set of caches, which | connection to the most preferred cache, or set of caches, which | |||
| accept the connections. | accept the connections. | |||
| The router MUST choose the most preferred, by configuration, cache or | The router MUST choose the most preferred, by configuration, cache or | |||
| skipping to change at page 5, line 41 | skipping to change at page 5, line 41 | |||
| a router establishes a new session with a cache, or wishes to reset a | a router establishes a new session with a cache, or wishes to reset a | |||
| current relationship, it sends a Reset Query. | current relationship, it sends a Reset Query. | |||
| The cache responds to the Serial Query with all data changes which | The cache responds to the Serial Query with all data changes which | |||
| took place since the given Serial Number. This may be the null set, | took place since the given Serial Number. This may be the null set, | |||
| in which case the End of Data PDU is still sent. Note that the | in which case the End of Data PDU is still sent. Note that the | |||
| Serial Number comparison used to determine "since the given Serial | Serial Number comparison used to determine "since the given Serial | |||
| Number" MUST take wrap-around into account, see [RFC1982]. | Number" MUST take wrap-around into account, see [RFC1982]. | |||
| When the router has received all data records from the cache, it sets | 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 | its current Serial Number to that of the Serial Number in the | |||
| Data PDU. | received End of Data PDU. | |||
| When the cache updates its database, it sends a Notify message to | 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 | 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. | 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 | The protocol requires the router to poll for updates periodically in | |||
| any case. | any case. | |||
| Strictly speaking, a router could track a cache simply by asking for | 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 | a complete data set every time it updates, but this would be very | |||
| inefficient. The Serial Number based incremental update mechanism | inefficient. The Serial Number based incremental update mechanism | |||
| skipping to change at page 7, line 48 | skipping to change at page 7, line 48 | |||
| router already has. In such cases, a router will detect the error | 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 | 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 | out of sync is when nothing in the Cache Response contradicts any | |||
| data currently held by the router. | data currently held by the router. | |||
| Using persistent storage for the Session ID or a clock-based | Using persistent storage for the Session ID or a clock-based | |||
| scheme for generating Session IDs should avoid the risk of Session | scheme for generating Session IDs should avoid the risk of Session | |||
| ID collisions. | ID collisions. | |||
| The Session ID might be a pseudo-random value, a strictly | The Session ID might be a pseudo-random value, a strictly | |||
| increasing value if the cache has reliable storage, etc. | 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. | ||||
| Length: A 32-bit unsigned integer which has as its value the count | 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 | of the bytes in the entire PDU, including the eight bytes of | |||
| header which end with the length field. | header which includes the length field. | |||
| Flags: The lowest order bit of the Flags field is 1 for an | 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 | announcement and 0 for a withdrawal. For a Prefix PDU (IPv4 or | |||
| IPv6), the flag indicates whether this PDU announces a new right | IPv6), the flag indicates whether this PDU announces a new right | |||
| to announce the prefix or withdraws a previously announced right; | to announce the prefix or withdraws a previously announced right; | |||
| a withdraw effectively deletes one previously announced Prefix PDU | a withdraw effectively deletes one previously announced Prefix PDU | |||
| with the exact same Prefix, Length, Max-Len, and Autonomous System | with the exact same Prefix, Length, Max-Len, and Autonomous System | |||
| Number (ASN). Similarly, for a Router Key PDU, the flag indicates | Number (ASN). Similarly, for a Router Key PDU, the flag indicates | |||
| whether this PDU announces a new Router Key or deletes one | whether this PDU announces a new Router Key or deletes one | |||
| previously announced Router Key PDU with the exact same AS Number, | previously announced Router Key PDU with the exact same AS Number, | |||
| subjectKeyIdentifier, and subjectPublicKeyInfo. | subjectKeyIdentifier, and subjectPublicKeyInfo. | |||
| The remaining bits in the flags field are reserved for future use. | The remaining bits in the flags field are reserved for future use. | |||
| In protocol version 1, they MUST be 0 on transmission and SHOULD | In protocol version 1, they MUST be 0 on transmission and SHOULD | |||
| be ignored on receipt. | be ignored on receipt. | |||
| Prefix Length: An 8-bit unsigned integer denoting the shortest | Prefix Length: An 8-bit unsigned integer denoting the shortest | |||
| prefix allowed for the prefix. | prefix allowed for the Prefix element. | |||
| Max Length: An 8-bit unsigned integer denoting the longest prefix | Max Length: An 8-bit unsigned integer denoting the longest prefix | |||
| allowed by the prefix. This MUST NOT be less than the Prefix | allowed by the Prefix element. This MUST NOT be less than the | |||
| Length element. | Prefix Length element. | |||
| Prefix: The IPv4 or IPv6 prefix of the ROA. | Prefix: The IPv4 or IPv6 prefix of the ROA. | |||
| Autonomous System Number: A 32-bit unsigned integer representing an | Autonomous System Number: A 32-bit unsigned integer representing an | |||
| ASN allowed to announce a prefix or associated with a router key. | ASN allowed to announce a prefix or associated with a router key. | |||
| Subject Key Identifier: 20-octet Subject Key Identifier (SKI) value | Subject Key Identifier: 20-octet Subject Key Identifier (SKI) value | |||
| of a router key, as described in [RFC6487]. | of a router key, as described in [RFC6487]. | |||
| Subject Public Key Info: a router key's subjectPublicKeyInfo value, | Subject Public Key Info: a router key's subjectPublicKeyInfo value, | |||
| as described in [I-D.ietf-sidr-bgpsec-algs]. This is the full | as described in [I-D.ietf-sidr-bgpsec-algs]. This is the full | |||
| ASN.1 DER encoding of the subjectPublicKeyInfo, including the | ASN.1 DER encoding of the subjectPublicKeyInfo, including the | |||
| ASN.1 tag and length values of the subjectPublicKeyInfo SEQUENCE. | ASN.1 tag and length values of the subjectPublicKeyInfo SEQUENCE. | |||
| Zero: Fields shown as zero MUST be zero on transmission. The value | Refresh Interval: Interval between normal cache polls. See | |||
| of such a field SHOULD be ignored on receipt. | Section 6 | |||
| Retry Interval: Interval between cache poll retries after a failed | ||||
| cache poll. See Section 6 | ||||
| Expire Interval: Interval during which data fetched from a cache | ||||
| remains valid in the absence of a successful subsequent cache | ||||
| poll. See Section 6 | ||||
| 5.2. Serial Notify | 5.2. Serial Notify | |||
| The cache notifies the router that the cache has new data. | The cache notifies the router that the cache has new data. | |||
| The Session ID reassures the router that the Serial Numbers are | The Session ID reassures the router that the Serial Numbers are | |||
| commensurate, i.e., the cache session has not been changed. | commensurate, i.e., the cache session has not been changed. | |||
| Upon receipt of a Serial Notify PDU, the router MAY issue an | Upon receipt of a Serial Notify PDU, the router MAY issue an | |||
| immediate Serial Query (Section 5.3) or Reset Query (Section 5.4) | immediate Serial Query (Section 5.3) or Reset Query (Section 5.4) | |||
| without waiting for the Refresh Interval timer (see Section 6) to | without waiting for the Refresh Interval timer (see Section 6) to | |||
| expire. | expire. | |||
| Serial Notify is the only message that the cache can send that is not | Serial Notify is the only message that the cache can send that is not | |||
| in response to a message from the router. | in response to a message from the router. | |||
| If the router receives a Serial Notify PDU during the initial start- | If the router receives a Serial Notify PDU during the initial start- | |||
| up period where the router and cache are still negotiating to agree | up period where the router and cache are still negotiating to agree | |||
| on a protocol version, the router SHOULD simply ignore the Serial | on a protocol version, the router MUST simply ignore the Serial | |||
| Notify PDU, even if the Serial Notify PDU is for an unexpected | Notify PDU, even if the Serial Notify PDU is for an unexpected | |||
| protocol version. See Section 7 for details. | protocol version. See Section 7 for details. | |||
| 0 8 16 24 31 | 0 8 16 24 31 | |||
| .-------------------------------------------. | .-------------------------------------------. | |||
| | Protocol | PDU | | | | Protocol | PDU | | | |||
| | Version | Type | Session ID | | | Version | Type | Session ID | | |||
| | 1 | 0 | | | | 1 | 0 | | | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | | | | | | |||
| skipping to change at page 14, line 34 | skipping to change at page 14, line 34 | |||
| | Retry Interval | | | Retry Interval | | |||
| | | | | | | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | | | | | | |||
| | Expire Interval | | | Expire Interval | | |||
| | | | | | | |||
| `-------------------------------------------' | `-------------------------------------------' | |||
| The Refresh Interval, Retry Interval, and Expire Interval are all | The Refresh Interval, Retry Interval, and Expire Interval are all | |||
| 32-bit elapsed times measured in seconds, and express the timing | 32-bit elapsed times measured in seconds, and express the timing | |||
| parameters that the cache expects the router to use to decide when | parameters which the cache expects the router to use in deciding when | |||
| next to send the cache another Serial Query or Reset Query PDU. See | to send subsequent Serial Query or Reset Query PDUs to the cache. | |||
| Section 6 for an explanation of the use and the range of allowed | See Section 6 for an explanation of the use and the range of allowed | |||
| values for these parameters. | values for these parameters. | |||
| 5.9. Cache Reset | 5.9. Cache Reset | |||
| The cache may respond to a Serial Query informing the router that the | The cache may respond to a Serial Query informing the router that the | |||
| cache cannot provide an incremental update starting from the Serial | cache cannot provide an incremental update starting from the Serial | |||
| Number specified by the router. The router must decide whether to | Number specified by the router. The router must decide whether to | |||
| issue a Reset Query or switch to a different cache. | issue a Reset Query or switch to a different cache. | |||
| 0 8 16 24 31 | 0 8 16 24 31 | |||
| skipping to change at page 16, line 24 | skipping to change at page 16, line 24 | |||
| Also note that it is possible, albeit very unlikely, for multiple | Also note that it is possible, albeit very unlikely, for multiple | |||
| distinct Subject Public Key values to hash to the same SKI. For this | distinct Subject Public Key values to hash to the same SKI. For this | |||
| reason, implementations MUST compare Subject Public Key values as | reason, implementations MUST compare Subject Public Key values as | |||
| well as SKIs when detecting duplicate PDUs. | well as SKIs when detecting duplicate PDUs. | |||
| 5.11. Error Report | 5.11. Error Report | |||
| This PDU is used by either party to report an error to the other. | This PDU is used by either party to report an error to the other. | |||
| Error reports are only sent as responses to other PDUs. | Error reports are only sent as responses to other PDUs, not to report | |||
| errors in Error Report PDUS. | ||||
| The Error Code is described in Section 12. | The Error Code is described in Section 12. | |||
| If the error is generic (e.g., "Internal Error") and not associated | 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 | 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. | be empty and the Length of Encapsulated PDU field MUST be zero. | |||
| An Error Report PDU MUST NOT be sent for an Error Report PDU. If an | 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 | erroneous Error Report PDU is received, the session SHOULD be | |||
| dropped. | dropped. | |||
| skipping to change at page 17, line 47 | skipping to change at page 17, line 47 | |||
| retrieved from the Global RPKI system at intervals which are only | retrieved from the Global RPKI system at intervals which are only | |||
| known to the cache, only the cache can really know how frequently it | 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 | 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 | are likely to remain valid (or, at least, unchanged). For this | |||
| reason, as well as to allow the cache some control over the load | 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 | placed on it by its client routers, the End Of Data PDU includes | |||
| three values that allow the cache to communicate timing parameters to | three values that allow the cache to communicate timing parameters to | |||
| the router. | the router. | |||
| Refresh Interval: This parameter tells the router how long to wait | Refresh Interval: This parameter tells the router how long to wait | |||
| before next attempting to poll the cache, using a Serial Query or | before next attempting to poll the cache and between subsequent | |||
| Reset Query PDU. The router SHOULD NOT poll the cache sooner than | attempts, using a Serial Query or Reset Query PDU. The router | |||
| indicated by this parameter. Note that receipt of a Serial Notify | SHOULD NOT poll the cache sooner than indicated by this parameter. | |||
| PDU overrides this interval and allows the router to issue an | Note that receipt of a Serial Notify PDU overrides this interval | |||
| immediate query without waiting for the Refresh Interval to | and suggests that the router issue an immediate query without | |||
| expire. Countdown for this timer starts upon receipt of the | waiting for the Refresh Interval to expire. Countdown for this | |||
| containing End Of Data PDU. | timer starts upon receipt of the containing End Of Data PDU. | |||
| Minimum allowed value: 1 second. | Minimum allowed value: 1 second. | |||
| Maximum allowed value: 86400 seconds (one day). | Maximum allowed value: 86400 seconds (one day). | |||
| Recommended default: 3600 seconds (one hour). | Recommended default: 3600 seconds (one hour). | |||
| Retry Interval: This parameter tells the router how long to wait | Retry Interval: This parameter tells the router how long to wait | |||
| before retrying a failed Serial Query or Reset Query. The router | before retrying a failed Serial Query or Reset Query. The router | |||
| SHOULD NOT retry sooner than indicated by this parameter. Note | SHOULD NOT retry sooner than indicated by this parameter. Note | |||
| skipping to change at page 18, line 30 | skipping to change at page 18, line 30 | |||
| restarts after each subsequent failure until a query succeeds. | restarts after each subsequent failure until a query succeeds. | |||
| Minimum allowed value: 1 second. | Minimum allowed value: 1 second. | |||
| Maximum allowed value: 7200 seconds (two hours). | Maximum allowed value: 7200 seconds (two hours). | |||
| Recommended default: 600 seconds (ten minutes). | Recommended default: 600 seconds (ten minutes). | |||
| Expire Interval: This parameter tells the router how long it can | Expire Interval: This parameter tells the router how long it can | |||
| continue to use the current version of the data while unable to | continue to use the current version of the data while unable to | |||
| perform a successful query. The router MUST NOT retain the data | perform a successful subsequent query. The router MUST NOT retain | |||
| past the time indicated by this parameter. Countdown for this | the data past the time indicated by this parameter. Countdown for | |||
| timer starts upon receipt of the containing End Of Data PDU. | this timer starts upon receipt of the containing End Of Data PDU. | |||
| Minimum allowed value: 600 seconds (ten minutes). | Minimum allowed value: 600 seconds (ten minutes). | |||
| Maximum allowed value: 172800 seconds (two days). | Maximum allowed value: 172800 seconds (two days). | |||
| Recommended default: 7200 seconds (two hours). | Recommended default: 7200 seconds (two hours). | |||
| If the router has never issued a successful query against a | If the router has never issued a successful query against a | |||
| particular cache, it SHOULD retry periodically using the default | particular cache, it SHOULD retry periodically using the default | |||
| Retry Interval, above. | Retry Interval, above. | |||
| skipping to change at page 19, line 19 | skipping to change at page 19, line 19 | |||
| 1. The cache may terminate the connection, perhaps with a version 0 | 1. The cache may terminate the connection, perhaps with a version 0 | |||
| Error Report PDU. In this case the router MAY retry the | Error Report PDU. In this case the router MAY retry the | |||
| connection using protocol version 0. | connection using protocol version 0. | |||
| 2. The cache may reply with a version 0 response. In this case the | 2. The cache may reply with a version 0 response. In this case the | |||
| router MUST either downgrade to version 0 or terminate the | router MUST either downgrade to version 0 or terminate the | |||
| connection. | connection. | |||
| In any of the downgraded combinations above, the new features of | In any of the downgraded combinations above, the new features of | |||
| version 1 will not be available. | version 1 will not be available, and all PDUs will have 0 in their | |||
| version fields. | ||||
| If either party receives a PDU containing an unrecognized Protocol | If either party receives a PDU containing an unrecognized Protocol | |||
| Version (neither 0 nor 1) during this negotiation, it MUST either | Version (neither 0 nor 1) during this negotiation, it MUST either | |||
| downgrade to a known version or terminate the connection, with an | downgrade to a known version or terminate the connection, with an | |||
| Error Report PDU unless the received PDU is itself an Error Report | Error Report PDU unless the received PDU is itself an Error Report | |||
| PDU. | PDU. | |||
| The router MUST ignore any Serial Notify PDUs it might receive from | The router MUST ignore any Serial Notify PDUs it might receive from | |||
| the cache during this initial start-up period, regardless of the | the cache during this initial start-up period, regardless of the | |||
| Protocol Version field in the Serial Notify PDU. Since Session ID | Protocol Version field in the Serial Notify PDU. Since Session ID | |||
| and Serial Number values are specific to a particular protocol | and Serial Number values are specific to a particular protocol | |||
| version, the values in the notification are not useful to the router. | version, the values in the notification are not useful to the router. | |||
| Even if these values were meaningful, the only effect that processing | Even if these values were meaningful, the only effect that processing | |||
| the notification would have would be to trigger exactly the same | the notification would have would be to trigger exactly the same | |||
| Reset Query or Serial Query that the router has already sent as part | Reset Query or Serial Query that the router has already sent as part | |||
| of the not-yet-complete version negotiation process, so there is | of the not-yet-complete version negotiation process, so there is | |||
| nothing to be gained by processing notifications until version | nothing to be gained by processing notifications until version | |||
| negotiation completes. | negotiation completes. | |||
| Caches SHOULD NOT send Serial Notify PDUs before version negotiation | Caches SHOULD NOT send Serial Notify PDUs before version negotiation | |||
| completes. Note, however, that routers MUST handle such | completes. Routers, however, MUST handle such notifications (by | |||
| notifications (by ignoring them) for backwards compatibility with | ignoring them) for backwards compatibility with caches serving | |||
| caches serving protocol version 0. | protocol version 0. | |||
| Once the cache and router have agreed upon a Protocol Version via the | 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 | negotiation process above, that version is stable for the life of the | |||
| session. See Section 5.1 for a discussion of the interaction between | session. See Section 5.1 for a discussion of the interaction between | |||
| Protocol Version and Session ID. | Protocol Version and Session ID. | |||
| If either party receives a PDU for a different Protocol Version once | If either party receives a PDU for a different Protocol Version once | |||
| the above negotiation completes, that party MUST drop the session; | the above negotiation completes, that party MUST drop the session; | |||
| unless the PDU containing the unexpected Protocol Version was itself | unless the PDU containing the unexpected Protocol Version was itself | |||
| an Error Report PDU, the party dropping the session SHOULD send an | an Error Report PDU, the party dropping the session SHOULD send an | |||
| skipping to change at page 20, line 26 | skipping to change at page 20, line 27 | |||
| | <----- Reset Query -------- | R requests data (or Serial Query) | | <----- Reset Query -------- | R requests data (or Serial Query) | |||
| | | | | | | |||
| | ----- Cache Response -----> | C confirms request | | ----- Cache Response -----> | C confirms request | |||
| | ------- Payload PDU ------> | C sends zero or more | | ------- Payload PDU ------> | C sends zero or more | |||
| | ------- Payload PDU ------> | IPv4 Prefix, IPv6 Prefix, | | ------- Payload PDU ------> | IPv4 Prefix, IPv6 Prefix, | |||
| | ------- Payload PDU ------> | or Router Key PDUs | | ------- Payload PDU ------> | or Router Key PDUs | |||
| | ------- End of Data ------> | C sends End of Data | | ------- End of Data ------> | C sends End of Data | |||
| | | and sends new serial | | | and sends new serial | |||
| ~ ~ | ~ ~ | |||
| When a transport connection is first established, the router MAY send | When a transport connection is first established, the router MUST | |||
| a Reset Query and the cache responds with a data sequence of all data | send either a Reset Query or a Serial Query. A Serial Query would be | |||
| it contains. | appropriate if the router has significant unexpired data from a | |||
| broken session with the same cache and remembers the Session ID of | ||||
| Alternatively, if the router has significant unexpired data from a | that session, in which case a Serial Query containing the Session ID | |||
| broken session with the same cache, it MAY start with a Serial Query | from the previous session will allow the router to bring itself up to | |||
| containing the Session ID from the previous session to ensure the | date while ensuring that the Serial Numbers are commensurate and that | |||
| Serial Numbers are commensurate. | the router and cache are speaking compatible versions of the | |||
| protocol. In all other cases, the router lacks the necessary data | ||||
| for fast re-synchronization and therefore MUST fall back to a Reset | ||||
| Query. | ||||
| This Reset Query sequence is also used when the router receives a | The Reset Query sequence is also used when the router receives a | |||
| Cache Reset, chooses a new cache, or fears that it has otherwise lost | Cache Reset, chooses a new cache, or fears that it has otherwise lost | |||
| its way. | its way. | |||
| The router MUST send either a Reset Query or a Serial Query when | See Section 7 for details on version negotiation. | |||
| starting a transport connection, in order to confirm that router and | ||||
| cache are speaking compatible versions of the protocol. See | ||||
| Section 7 for details on version negotiation. | ||||
| To limit the length of time a cache must keep the data necessary to | To limit the length of time a cache must keep the data necessary to | |||
| generate incremental updates, a router MUST send either a Serial | generate incremental updates, a router MUST send either a Serial | |||
| Query or a Reset Query periodically. This also acts as a keep-alive | Query or a Reset Query periodically. This also acts as a keep-alive | |||
| at the application layer. See Section 6 for details on the required | at the application layer. See Section 6 for details on the required | |||
| polling frequency. | polling frequency. | |||
| 8.2. Typical Exchange | 8.2. Typical Exchange | |||
| Cache Router | Cache Router | |||
| skipping to change at page 23, line 27 | skipping to change at page 23, line 27 | |||
| It is expected that, when the TCP Authentication Option (TCP-AO) | It is expected that, when the TCP Authentication Option (TCP-AO) | |||
| [RFC5925] is available on all platforms deployed by operators, it | [RFC5925] is available on all platforms deployed by operators, it | |||
| will become the mandatory-to-implement transport. | will become the mandatory-to-implement transport. | |||
| Caches and routers MUST implement unprotected transport over TCP | Caches and routers MUST implement unprotected transport over TCP | |||
| using a port, rpki-rtr (323); see Section 14. Operators SHOULD use | using a port, rpki-rtr (323); see Section 14. Operators SHOULD use | |||
| procedural means, e.g., access control lists (ACLs), to reduce the | procedural means, e.g., access control lists (ACLs), to reduce the | |||
| exposure to authentication issues. | exposure to authentication issues. | |||
| Caches and routers SHOULD use TCP-AO, SSHv2, TCP MD5, or IPsec | ||||
| transport. | ||||
| If unprotected TCP is the transport, the cache and routers MUST be on | If unprotected TCP is the transport, the cache and routers MUST be on | |||
| the same trusted and controlled network. | the same trusted and controlled network. | |||
| If available to the operator, caches and routers MUST use one of the | If available to the operator, caches and routers MUST use one of the | |||
| following more protected protocols. | following more protected protocols. | |||
| Caches and routers SHOULD use TCP-AO transport [RFC5925] over the | Caches and routers SHOULD use TCP-AO transport [RFC5925] over the | |||
| rpki-rtr port. | rpki-rtr port. | |||
| Caches and routers MAY use SSHv2 transport [RFC4252] using the normal | Caches and routers MAY use SSHv2 transport [RFC4252] using the normal | |||
| SSH port. For an example, see Section 9.1. | SSH port. For an example, see Section 9.1. | |||
| Caches and routers MAY use TCP MD5 transport [RFC2385] using the | Caches and routers MAY use TCP MD5 transport [RFC2385] using the | |||
| rpki-rtr port. Note that TCP MD5 has been obsoleted by TCP-AO | rpki-rtr port. Note that TCP MD5 has been obsoleted by TCP-AO | |||
| [RFC5925]. | [RFC5925]. | |||
| Caches and routers MAY use TCP over IPsec transport [RFC4301] using | Caches and routers MAY use TCP over IPsec transport [RFC4301] using | |||
| the rpki-rtr port. | the rpki-rtr port. | |||
| Caches and routers MAY use TLS transport [RFC5246] using a port, | Caches and routers MAY use TLS transport [RFC5246] using port rpki- | |||
| rpki-rtr-tls (324); see Section 14. | rtr-tls (324); see Section 14. | |||
| 9.1. SSH Transport | 9.1. SSH Transport | |||
| To run over SSH, the client router first establishes an SSH transport | To run over SSH, the client router first establishes an SSH transport | |||
| connection using the SSHv2 transport protocol, and the client and | connection using the SSHv2 transport protocol, and the client and | |||
| server exchange keys for message integrity and encryption. The | server exchange keys for message integrity and encryption. The | |||
| client then invokes the "ssh-userauth" service to authenticate the | client then invokes the "ssh-userauth" service to authenticate the | |||
| application, as described in the SSH authentication protocol | application, as described in the SSH authentication protocol | |||
| [RFC4252]. Once the application has been successfully authenticated, | [RFC4252]. Once the application has been successfully authenticated, | |||
| the client invokes the "ssh-connection" service, also known as the | the client invokes the "ssh-connection" service, also known as the | |||
| skipping to change at page 24, line 30 | skipping to change at page 24, line 30 | |||
| the application transport as an SSH subsystem called "rpki-rtr". | the application transport as an SSH subsystem called "rpki-rtr". | |||
| Subsystem support is a feature of SSH version 2 (SSHv2) and is not | Subsystem support is a feature of SSH version 2 (SSHv2) and is not | |||
| included in SSHv1. Running this protocol as an SSH subsystem avoids | included in SSHv1. Running this protocol as an SSH subsystem avoids | |||
| the need for the application to recognize shell prompts or skip over | the need for the application to recognize shell prompts or skip over | |||
| extraneous information, such as a system message that is sent at | extraneous information, such as a system message that is sent at | |||
| shell start-up. | shell start-up. | |||
| It is assumed that the router and cache have exchanged keys out of | It is assumed that the router and cache have exchanged keys out of | |||
| band by some reasonably secured means. | band by some reasonably secured means. | |||
| Cache servers supporting SSH transport MUST accept RSA and Digital | Cache servers supporting SSH transport MUST accept RSA authentication | |||
| Signature Algorithm (DSA) authentication and SHOULD accept Elliptic | and SHOULD accept Elliptic Curve Digital Signature Algorithm (ECDSA) | |||
| Curve Digital Signature Algorithm (ECDSA) authentication. User | authentication. User authentication MUST be supported; host | |||
| authentication MUST be supported; host authentication MAY be | authentication MAY be supported. Implementations MAY support | |||
| supported. Implementations MAY support password authentication. | password authentication. Client routers SHOULD verify the public key | |||
| Client routers SHOULD verify the public key of the cache to avoid | of the cache to avoid monkey-in-the-middle attacks. | |||
| monkey-in-the-middle attacks. | ||||
| 9.2. TLS Transport | 9.2. TLS Transport | |||
| Client routers using TLS transport MUST present client-side | Client routers using TLS transport MUST present client-side | |||
| certificates to authenticate themselves to the cache in order to | certificates to authenticate themselves to the cache in order to | |||
| allow the cache to manage the load by rejecting connections from | allow the cache to manage the load by rejecting connections from | |||
| unauthorized routers. In principle, any type of certificate and | unauthorized routers. In principle, any type of certificate and | |||
| certificate authority (CA) may be used; however, in general, cache | certificate authority (CA) may be used; however, in general, cache | |||
| operators will wish to create their own small-scale CA and issue | operators will wish to create their own small-scale CA and issue | |||
| certificates to each authorized router. This simplifies credential | certificates to each authorized router. This simplifies credential | |||
| skipping to change at page 26, line 26 | skipping to change at page 26, line 26 | |||
| establish a session with each potential serving cache in preference | establish a session with each potential serving cache in preference | |||
| order, and then starts to load data from the most preferred cache to | 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 | which it can connect and authenticate. The router's list of caches | |||
| has the following elements: | has the following elements: | |||
| Preference: An unsigned integer denoting the router's preference to | Preference: An unsigned integer denoting the router's preference to | |||
| connect to that cache; the lower the value, the more preferred. | connect to that cache; the lower the value, the more preferred. | |||
| Name: The IP address or fully qualified domain name of the cache. | Name: The IP address or fully qualified domain name of the cache. | |||
| Key: Any needed public key of the cache. | Cache Credential(s): Any credential (such as a public key) needed to | |||
| authenticate the cache's identity to the router. | ||||
| MyKey: Any needed private key or certificate of this client. | Router Credential(s): Any credential (such as a private key or | |||
| certificate) needed to authenticate the router's identity to the | ||||
| cache. | ||||
| Due to the distributed nature of the RPKI, caches simply cannot be | Due to the distributed nature of the RPKI, caches simply cannot be | |||
| rigorously synchronous. A client may hold data from multiple caches | rigorously synchronous. A client may hold data from multiple caches | |||
| but MUST keep the data marked as to source, as later updates MUST | but MUST keep the data marked as to source, as later updates MUST | |||
| affect the correct data. | affect the correct data. | |||
| Just as there may be more than one covering ROA from a single cache, | Just as there may be more than one covering ROA from a single cache, | |||
| there may be multiple covering ROAs from multiple caches. The | there may be multiple covering ROAs from multiple caches. The | |||
| results are as described in [RFC6811]. | results are as described in [RFC6811]. | |||
| If data from multiple caches are held, implementations MUST NOT | If data from multiple caches are held, implementations MUST NOT | |||
| distinguish between data sources when performing validation. | distinguish between data sources when performing validation of BGP | |||
| announcements. | ||||
| When a more preferred cache becomes available, if resources allow, it | When a more preferred cache becomes available, if resources allow, it | |||
| would be prudent for the client to start fetching from that cache. | would be prudent for the client to start fetching from that cache. | |||
| The client SHOULD attempt to maintain at least one set of data, | The client SHOULD attempt to maintain at least one set of data, | |||
| regardless of whether it has chosen a different cache or established | regardless of whether it has chosen a different cache or established | |||
| a new connection to the previous cache. | a new connection to the previous cache. | |||
| A client MAY drop the data from a particular cache when it is fully | A client MAY drop the data from a particular cache when it is fully | |||
| in sync with one or more other caches. | in sync with one or more other caches. | |||
| skipping to change at page 28, line 10 | skipping to change at page 28, line 10 | |||
| recommended that primary caches which load from the distributed | recommended that primary caches which load from the distributed | |||
| Global RPKI not do so all at the same times, e.g., on the hour. | 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 | Choose a random time, perhaps the ISP's AS number modulo 60 and | |||
| jitter the inter-fetch timing. | jitter the inter-fetch timing. | |||
| 12. Error Codes | 12. Error Codes | |||
| This section contains a preliminary list of error codes. The authors | This section contains a preliminary list of error codes. The authors | |||
| expect additions to the list during development of the initial | expect additions to the list during development of the initial | |||
| implementations. There is an IANA registry where valid error codes | implementations. There is an IANA registry where valid error codes | |||
| are listed; see Section 14. Errors which are considered fatal SHOULD | are listed; see Section 14. Errors which are considered fatal MUST | |||
| cause the session to be dropped. | cause the session to be dropped. | |||
| 0: Corrupt Data (fatal): The receiver believes the received PDU to | 0: Corrupt Data (fatal): The receiver believes the received PDU to | |||
| be corrupt in a manner not specified by another error code. | be corrupt in a manner not specified by another error code. | |||
| 1: Internal Error (fatal): The party reporting the error experienced | 1: Internal Error (fatal): The party reporting the error experienced | |||
| some kind of internal error unrelated to protocol operation (ran | some kind of internal error unrelated to protocol operation (ran | |||
| out of memory, a coding assertion failed, et cetera). | out of memory, a coding assertion failed, et cetera). | |||
| 2: No Data Available: The cache believes itself to be in good | 2: No Data Available: The cache believes itself to be in good | |||
| skipping to change at page 28, line 40 | skipping to change at page 28, line 40 | |||
| request to be invalid. | request to be invalid. | |||
| 4: Unsupported Protocol Version (fatal): The Protocol Version is not | 4: Unsupported Protocol Version (fatal): The Protocol Version is not | |||
| known by the receiver of the PDU. | known by the receiver of the PDU. | |||
| 5: Unsupported PDU Type (fatal): The PDU Type is not known by the | 5: Unsupported PDU Type (fatal): The PDU Type is not known by the | |||
| receiver of the PDU. | receiver of the PDU. | |||
| 6: Withdrawal of Unknown Record (fatal): The received PDU has Flag=0 | 6: Withdrawal of Unknown Record (fatal): The received PDU has Flag=0 | |||
| but a matching record ({Prefix, Len, Max-Len, ASN} tuple for an | but a matching record ({Prefix, Len, Max-Len, ASN} tuple for an | |||
| IPvX PDU, {SKI, ASN, Subject Public Key} tuple for a Router Key | IPvX PDU, or {SKI, ASN, Subject Public Key} tuple for a Router Key | |||
| PDU) does not exist in the receiver's database. | PDU) does not exist in the receiver's database. | |||
| 7: Duplicate Announcement Received (fatal): The received PDU has | 7: Duplicate Announcement Received (fatal): The received PDU has | |||
| Flag=1 but a matching record ({Prefix, Len, Max-Len, ASN} tuple | 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 | for an IPvX PDU, or {SKI, ASN, Subject Public Key} tuple for a | |||
| Key PDU) is already active in the router. | Router Key PDU) is already active in the router. | |||
| 8: Unexpected Protocol Version (fatal): The received PDU has a | 8: Unexpected Protocol Version (fatal): The received PDU has a | |||
| Protocol Version field that differs from the protocol version | Protocol Version field that differs from the protocol version | |||
| negotiated in Section 7. | negotiated in Section 7. | |||
| 13. Security Considerations | 13. Security Considerations | |||
| As this document describes a security protocol, many aspects of | As this document describes a security protocol, many aspects of | |||
| security interest are described in the relevant sections. This | security interest are described in the relevant sections. This | |||
| section points out issues which may not be obvious in other sections. | section points out issues which may not be obvious in other sections. | |||
| skipping to change at page 31, line 33 | skipping to change at page 31, line 33 | |||
| No doubt this list is incomplete. We apologize to any contributor | No doubt this list is incomplete. We apologize to any contributor | |||
| whose name we missed. | whose name we missed. | |||
| 16. References | 16. References | |||
| 16.1. Normative References | 16.1. Normative References | |||
| [I-D.ietf-sidr-bgpsec-algs] | [I-D.ietf-sidr-bgpsec-algs] | |||
| Turner, S., "BGPsec Algorithms, Key Formats, & Signature | Turner, S., "BGPsec Algorithms, Key Formats, & Signature | |||
| Formats", draft-ietf-sidr-bgpsec-algs-14 (work in | Formats", draft-ietf-sidr-bgpsec-algs-16 (work in | |||
| progress), November 2015. | progress), November 2016. | |||
| [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, | [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, | |||
| August 1996. | August 1996. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119, BCP 14, March 1997. | Requirement Levels", RFC 2119, BCP 14, March 1997. | |||
| [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5 | [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5 | |||
| Signature Option", RFC 2385, August 1998. | Signature Option", RFC 2385, August 1998. | |||
| skipping to change at page 33, line 12 | skipping to change at page 33, line 12 | |||
| [RFC5781] Weiler, S., Ward, D., and R. Housley, "The rsync URI | [RFC5781] Weiler, S., Ward, D., and R. Housley, "The rsync URI | |||
| Scheme", RFC 5781, February 2010. | Scheme", RFC 5781, February 2010. | |||
| [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support | [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support | |||
| Secure Internet Routing", RFC 6480, February 2012. | Secure Internet Routing", RFC 6480, February 2012. | |||
| [RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for | [RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for | |||
| Resource Certificate Repository Structure", RFC 6481, | Resource Certificate Repository Structure", RFC 6481, | |||
| February 2012. | February 2012. | |||
| [RFC7128] Bush, R., Austein, R., Patel, K., Gredler, H., and M. | ||||
| Waehlisch, "Resource Public Key Infrastructure (RPKI) | ||||
| Router Implementation Report", RFC 7128, February 2014. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Randy Bush | Randy Bush | |||
| Internet Initiative Japan | Internet Initiative Japan | |||
| 5147 Crystal Springs | 5147 Crystal Springs | |||
| Bainbridge Island, Washington 98110 | Bainbridge Island, Washington 98110 | |||
| US | US | |||
| Email: randy@psg.com | Email: randy@psg.com | |||
| End of changes. 41 change blocks. | ||||
| 95 lines changed or deleted | 98 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||