summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2769.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2769.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2769.txt')
-rw-r--r--doc/rfc/rfc2769.txt2355
1 files changed, 2355 insertions, 0 deletions
diff --git a/doc/rfc/rfc2769.txt b/doc/rfc/rfc2769.txt
new file mode 100644
index 0000000..7d2398b
--- /dev/null
+++ b/doc/rfc/rfc2769.txt
@@ -0,0 +1,2355 @@
+
+
+
+
+
+
+Network Working Group C. Villamizar
+Request for Comments: 2769 Avici Systems
+Category: Standards Track C. Alaettinoglu
+ R. Govindan
+ ISI
+ D. Meyer
+ Cisco
+ February 2000
+
+
+ Routing Policy System Replication
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+ 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 RFC 2119.
+
+Abstract
+
+ The RIPE database specifications and RPSL define languages used as
+ the basis for representing information in a routing policy system. A
+ repository for routing policy system information is known as a
+ routing registry. A routing registry provides a means of exchanging
+ information needed to address many issues of importance to the
+ operation of the Internet. The implementation and deployment of a
+ routing policy system must maintain some degree of integrity to be of
+ any use. The Routing Policy System Security RFC [3] addresses the
+ need to assure integrity of the data by proposing an authentication
+ and authorization model. This document addresses the need to
+ distribute data over multiple repositories and delegate authority for
+ data subsets to other repositories without compromising the
+ authorization model established in Routing Policy System Security
+ RFC.
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 1]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+Table of Contents
+
+ 1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2 Data Representation . . . . . . . . . . . . . . . . . . . . . 4
+ 3 Authentication and Authorization . . . . . . . . . . . . . . . 5
+ 4 Repository Hierarchy . . . . . . . . . . . . . . . . . . . . . 6
+ 5 Additions to RPSL . . . . . . . . . . . . . . . . . . . . . . 6
+ 5.1 repository object . . . . . . . . . . . . . . . . . . . . 7
+ 5.2 delegated attribute . . . . . . . . . . . . . . . . . . . 9
+ 5.3 integrity attribute . . . . . . . . . . . . . . . . . . . 10
+ 6 Interactions with a Repository or Mirror . . . . . . . . . . . 11
+ 6.1 Initial Transaction Submission . . . . . . . . . . . . . 12
+ 6.2 Redistribution of Transactions . . . . . . . . . . . . . 12
+ 6.3 Transaction Commit and Confirmation . . . . . . . . . . . 12
+ 7 Data Format Summaries, Transaction Encapsulation and Processing 13
+ 7.1 Transaction Submit and Confirm . . . . . . . . . . . . . 13
+ 7.2 Redistribution of Transactions . . . . . . . . . . . . . 16
+ 7.3 Redistribution Protocol Description . . . . . . . . . . . 16
+ 7.3.1 Explicitly Requesting Transactions . . . . . . . . 21
+ 7.3.2 Heartbeat Processing . . . . . . . . . . . . . . . 22
+ 7.4 Transaction Commit . . . . . . . . . . . . . . . . . . . 23
+ 7.5 Database Snapshot . . . . . . . . . . . . . . . . . . . . 24
+ 7.6 Authenticating Operations . . . . . . . . . . . . . . . . 25
+ A Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
+ A.1 Initial Object Submission and Redistribution . . . . . . 27
+ A.2 Transaction Redistribution Encoding . . . . . . . . . . . 29
+ A.3 Transaction Protocol Encoding . . . . . . . . . . . . . . 31
+ A.4 Transaction Redistribution . . . . . . . . . . . . . . . 32
+ B Technical Discussion . . . . . . . . . . . . . . . . . . . . . 35
+ B.1 Server Processing . . . . . . . . . . . . . . . . . . . . 35
+ B.1.1 getting connected . . . . . . . . . . . . . . . . . 35
+ B.1.2 rolling transaction logs forward and back . . . . . 35
+ B.1.3 committing or disposing of transactions . . . . . . 36
+ B.1.4 dealing with concurrency . . . . . . . . . . . . . 36
+ B.2 Repository Mirroring for Redundancy . . . . . . . . . . . 36
+ B.3 Trust Relationships . . . . . . . . . . . . . . . . . . . 37
+ B.4 A Router as a Minimal Mirror . . . . . . . . . . . . . . 38
+ B.5 Dealing with Errors . . . . . . . . . . . . . . . . . . . 38
+ C Deployment Considerations . . . . . . . . . . . . . . . . . . 39
+ D Privacy of Contact Information . . . . . . . . . . . . . . . . 39
+ References . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
+ Security Considerations . . . . . . . . . . . . . . . . . . . . . 41
+ Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41
+ Full Copyright Statement . . . . . . . . . . . . . . . . . . . . 42
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 2]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+1 Overview
+
+ A routing registry must maintain some degree of integrity to be of
+ any use. The IRR is increasingly used for purposes that have a
+ stronger requirement for data integrity and security. There is also
+ a desire to further decentralize the IRR. This document proposes a
+ means of decentralizing the routing registry in a way that is
+ consistent with the usage of the IRR and which avoids compromising
+ data integrity and security even if the IRR is distributed among less
+ trusted repositories.
+
+ Two methods of authenticating the routing registry information have
+ been proposed.
+
+ authorization and authentication checks on transactions: The
+ integrity of the routing registry data is insured by repeating
+ authorization checks as transactions are processed. As
+ transactions are flooded each remote registry has the option to
+ repeat the authorization and authentication checks. This scales
+ with the total number of changes to the registry regardless of how
+ many registries exist. When querying, the integrity of the
+ repository must be such that it can be trusted. If an
+ organization is unwilling to trust any of the available
+ repositories or mirrors they have the option to run their own
+ mirror and repeat authorization checks at that mirror site.
+ Queries can then be directed to a mirror under their own
+ administration which presumably can be trusted.
+
+ signing routing registry objects: An alternate which appears on the
+ surface to be attractive is signing the objects themselves.
+ Closer examination reveals that the approach of signing objects by
+ itself is flawed and when used in addition to signing transactions
+ and rechecking authorizations as changes are made adds nothing.
+ In order for an insertion of critical objects such as inetnums and
+ routes to be valid, authorization checks must be made which allow
+ the insertion. The objects on which those authorization checks
+ are made may later change. In order to later repeat the
+ authorization checks the state of other objects, possibly in other
+ repositories would have to be known. If the repository were not
+ trusted then the change history on the object would have to be
+ traced back to the object's insertion. If the repository were not
+ trusted, the change history of any object that was depended upon
+ for authorization would also have to be rechecked. This trace
+ back would have to go back to the epoch or at least to a point
+ where only trusted objects were being relied upon for the
+ authorizations. If the depth of the search is at all limited,
+ authorization could be falsified simply by exceeding the search
+ depth with a chain of authorization references back to falsified
+
+
+
+Villamizar, et al. Standards Track [Page 3]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ objects. This would be grossly inefficient. Simply verifying
+ that an object is signed provides no assurance that addition of
+ the object addition was properly authorized.
+
+ A minor distinction is made between a repository and a mirror. A
+ repository has responsibility for the initial authorization and
+ authentication checks for transactions related to its local objects
+ which are then flooded to adjacent repositories. A mirror receives
+ flooded transactions from remote repositories but is not the
+ authoritative source for any objects. From a protocol standpoint,
+ repositories and mirrors appear identical in the flooding topology.
+
+ Either a repository or a mirror may recheck all or a subset of
+ transactions that are flooded to it. A repository or mirror may
+ elect not to recheck authorization and authentication on transactions
+ received from a trusted adjacency on the grounds that the adjacent
+ repository is trusted and would not have flooded the information
+ unless authorization and authentication checks had been made.
+
+ If it can be arranged that all adjacencies are trusted for a given
+ mirror, then there is no need to implement the code to check
+ authorization and authentication. There is only a need to be able to
+ check the signatures on the flooded transactions of the adjacent
+ repository. This is an important special case because it could allow
+ a router to act as a mirror. Only changes to the registry database
+ would be received through flooding, which is a very low volume. Only
+ the signature of the adjacent mirror or repository would have to be
+ checked.
+
+2 Data Representation
+
+ RPSL provides a complete description of the contents of a routing
+ repository [1]. Many RPSL data objects remain unchanged from the
+ RIPE, and RPSL references the RIPE-181 specification as recorded in
+ RFC-1786 [2]. RPSL provides external data representation. Data may
+ be stored differently internal to a routing registry. The integrity
+ of the distributed registry data requires the use of the
+ authorization and authentication additions to RPSL described in [3].
+
+ Some additions to RPSL are needed to locate all of the repositories
+ after having located one of them and to make certain parameters
+ selectable on a per repository basis readily available. These
+ additions are described in Section 5.
+
+ Some form of encapsulation must be used to exchange data. The de-
+ facto encapsulation has been that which the RIPE tools accept, a
+ plain text file or plain text in the body of an RFC-822 formatted
+ mail message with information needed for authentication derived from
+
+
+
+Villamizar, et al. Standards Track [Page 4]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ the mail headers. Merit has slightly modified this using the PGP
+ signed portion of a plain text file or PGP signed portion of the body
+ of a mail message.
+
+ The exchange that occurs during flooding differs from the initial
+ submission. In order to repeat the authorization checks the state of
+ all repositories containing objects referenced by the authorization
+ checks needs to be known. To accomplish this a sequence number is
+ associated with each transaction in a repository and the flooded
+ transactions must contain the sequence number of each repository on
+ which authorization of the transaction depends.
+
+ In order to repeat authorization checks it must be possible to
+ retrieve back revisions of objects. How this is accomplished is a
+ matter local to the implementation. One method which is quite simple
+ is to keep the traversal data structures to all current objects even
+ if the state is deleted, keep the sequence number that the version of
+ the object became effective and keep back links to prior versions of
+ the objects. Finding a prior version of an object involves looking
+ back through the references until the sequence number of the version
+ of the object is less than or equal to the sequence number being
+ searched for.
+
+ The existing very simple forms of encapsulation are adequate for the
+ initial submission of a database transaction and should be retained
+ as long as needed for backward compatibility. A more robust
+ encapsulation and submission protocol, with optional confirmation is
+ defined in Section 6.1. An encapsulation suitable for exchange of
+ transaction between repositories is addressed in Section 6. Query
+ encapsulation and protocol is outside the scope of this document.
+
+3 Authentication and Authorization
+
+ Control must be exercised over who can make changes and what changes
+ they can make. The distinction of who vs what separates
+ authentication from authorization.
+
+ o Authentication is the means to determine who is attempting to make
+ a change.
+
+ o Authorization is the determination of whether a transaction
+ passing a specific authentication check is allowed to perform a
+ given operation.
+
+ A submitted transaction contains a claimed identity. Depending on
+ the type of transaction, the authorization will depend on related
+ objects.
+
+
+
+
+Villamizar, et al. Standards Track [Page 5]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The "mnt-by", "mnt-routes", or "mnt-lower" attributes in those
+ related objects reference "maintainer" objects. Those maintainer
+ objects contain "auth" attributes. The auth attributes contain an
+ authorization method and data which generally contains the claimed
+ identity and some form of public encryption key used to authenticate
+ the claim.
+
+ Authentication is done on transactions. Authentication should also
+ be done between repositories to insure the integrity of the
+ information exchange. In order to comply with import, export, and
+ use restrictions throughout the world no encryption capability is
+ specified. Transactions must not be encrypted because it may be
+ illegal to use decryption software in some parts of the world.
+
+4 Repository Hierarchy
+
+ With multiple repositories, "repository" objects are needed to
+ propagate the existence of new repositories and provide an automated
+ means to determine the supported methods of access and other
+ characteristics of the repository. The repository object is
+ described in Section 5.
+
+ In each repository there should be a special repository object named
+ ROOT. This should point to the root repository or to a higher level
+ repository. This is to allow queries to be directed to the local
+ repository but refer to the full set of registries for resolution of
+ hierarchically allocated objects.
+
+ Each repository may have an "expire" attribute. The expire attribute
+ is used to determine if a repository must be updated before a local
+ transaction that depends on it can proceed.
+
+ The repository object also contains attributes describing the access
+ methods and supported authentication methods of the repository. The
+ "query-address" attribute provides a host name and a port number used
+ to direct queries. The "response-auth-type" attribute provides the
+ authentication types that may be used by the repository when
+ responding to queries. The "submit-address" attribute provides a
+ host name and a port number used to submit objects to the repository.
+ The "submit-auth-type" attribute provides the authentication types
+ that may be used by the repository when responding to submissions.
+
+5 Additions to RPSL
+
+ There are very few additions to RPSL defined here. The additions to
+ RPSL are referred to as RPSL "objects". They reside in the
+ repository database and can be retrieved with ordinary queries.
+ Objects consist of "attributes", which are name/value pairs.
+
+
+
+Villamizar, et al. Standards Track [Page 6]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ Attributes may be mandatory or optional. They may be single or
+ multiple. One or more attributes may be part of a key field. Some
+ attributes may have the requirement of being unique.
+
+ Most of the data formats described in this document are
+ encapsulations used in transaction exchanges. These are referred to
+ as "meta-objects". These "meta-objects", unlike RPSL "objects" do
+ not reside in the database but some must be retained in a transaction
+ log. A similar format is used to represent "meta-objects". They
+ also consist of "attributes" which are name/value pairs.
+
+ This section contains all of the additions to RPSL described in this
+ document. This section describes only RPSL objects. Other sections
+ described only meta-objects.
+
+5.1 repository object
+
+ A root repository must be agreed upon. Ideally such a repository
+ would contain only top level delegations and pointers to other
+ repositories used in these delegations. It would be wise to allow
+ only cryptographically strong transactions in the root repository
+ [3].
+
+ The root repository contains references to other repositories. An
+ object of the following form identifies another repository.
+
+ repository: RIPE
+ query-address: whois://whois.ripe.net
+ response-auth-type: PGPKEY-23F5CE35 # pointer to key-cert object
+ response-auth-type: none
+ remarks: you can request rsa signature on queries
+ remarks: PGP required on submissions
+ submit-address: mailto://auto-dbm@ripe.net
+ submit-address: rps-query://whois.ripe.net:43
+ submit-auth-type: pgp-key, crypt-pw, mail-from
+ remarks: these are the authentication types supported
+ mnt-by: maint-ripe-db
+ expire: 0000 04:00:00
+ heartbeat-interval: 0000 01:00:00
+ ...
+ remarks: admin and technical contact, etc
+ source: IANA
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 7]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The attributes of the repository object are listed below.
+
+ repository key mandatory single
+ query-address mandatory multiple
+ response-auth-type mandatory multiple
+ submit-address mandatory multiple
+ submit-auth-type mandatory multiple
+ repository-cert mandatory multiple
+ expire mandatory single
+ heartbeat-interval mandatory single
+ descr optional multiple
+ remarks optional multiple
+ admin-c mandatory multiple
+ tech-c mandatory multiple
+ notify optional multiple
+ mnt-by mandatory multiple
+ changed mandatory multiple
+ source mandatory single
+
+ In the above object type only a small number of the attribute types
+ are new. These are:
+
+ repository This attribute provides the name of the repository. This
+ is the key field for the object and is single and must be globally
+ unique. This is the same name used in the source attribute of all
+ objects in that repository.
+
+ query-address This attribute provides a url for directing queries.
+ "rps-query" or "whois" can be used as the protocol identifier.
+
+ response-auth-type This attribute provides an authentication type
+ that may be used by the repository when responding to user
+ queries. Its syntax and semantics is same as the auth attribute
+ of the maintainer class.
+
+ submit-address This attribute provides a url for submitting objects
+ to the repository.
+
+ submit-auth-type This attribute provides the authentication types
+ that are allowed by the repository for users when submitting
+ registrations.
+
+ repository-cert This attribute provides a reference to a public key
+ certificate in the form of an RPSL key-cert object. This
+ attribute can be multiple to allow the repository to use more than
+ one method of signature.
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 8]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ heartbeat-interval Heartbeat meta-objects are sent by this
+ repository at the rate of one heartbeat meta-object per the
+ interval indicated. The value of this attribute shall be
+ expressed in the form "dddd hh:mm:ss", where the "dddd" represents
+ days, "hh" represents hours, "mm" minutes and "ss" seconds.
+
+ expire If no heartbeat or new registrations are received from a
+ repository for expire period, objects from this repository should
+ be considered non-authoritative, and cannot be used for
+ authorization purposes. The value of this attribute shall be
+ expressed in the form "dddd hh:mm:ss", where the "dddd" represents
+ days, "hh" represents hours, "mm" minutes and "ss" seconds. This
+ value should be bigger than heartbeat-interval.
+
+ Please note that the "heartbeat" meta-objects mentioned above, like
+ other meta-objects described in this document are part of the
+ protocol to exchange information but are not placed in the database
+ itself. See Section 7.3.2 for a description of the heartbeat meta-
+ object.
+
+ The remaining attributes in the repository object are defined in
+ RPSL.
+
+5.2 delegated attribute
+
+ For many RPSL object types a particular entry should appear only in
+ one repository. These are the object types for which there is a
+ natural hierarchy, "as-block", "aut-num", "inetnum", and "route". In
+ order to facilitate putting an object in another repository, a
+ "delegated" attribute is added.
+
+ delegated The delegated attribute is allowed in any object type with
+ a hierarchy. This attribute indicates that further searches for
+ object in the hierarchy must be made in one or more alternate
+ repositories. The current repository may be listed. The ability
+ to list more than one repository serves only to accommodate
+ grandfathered objects (those created prior to using an
+ authorization model). The value of a delegated attribute is a
+ list of repository names.
+
+ If an object contains a "delegated" attribute, an exact key field
+ match of the object may also be contained in each repository listed
+ in the "delegated" attribute. For the purpose of authorizing changes
+ only the "mnt-by" in the object in the repository being modified is
+ considered.
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 9]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The following is an example of the use of a "delegated" attribute.
+
+ inetnum: 193.0.0.0 - 193.0.0.255
+ delegated: RIPE
+ ...
+ source: IANA
+
+ This inetnum simply delegates the storage of any more specific
+ inetnum objects overlapping the stated range to the RIPE repository.
+ An exact match of this inetnum may also exist in the RIPE repository
+ to provide hooks for the attributes referencing maintainer objects.
+ In this case, when adding objects to the RIPE repository, the "mnt-
+ lower", "mnt-routes", and "mnt-by" fields in the IANA inetnum object
+ will not be considered, instead the values in the RIPE copy will be
+ used.
+
+5.3 integrity attribute
+
+ The "integrity" attribute can be contained in any RPSL object. It is
+ intended solely as a means to facilitate a transition period during
+ which some data has been moved from repositories prior to the use of
+ a strong authorization model and is therefore questionable, or when
+ some repositories are not properly checking authorization.
+
+ The "integrity" attribute may have the values "legacy", "no-auth",
+ "auth-failed", or "authorized". If absent, the integrity is
+ considered to be "authorized". The integrity values have the
+ following meanings:
+
+ legacy: This data existed prior to the use of an adequate
+ authorization model. The data is highly suspect.
+
+ no-auth: This data was added to a repository during an initial
+ transition use of an authorization model but authorization
+ depended on other objects whose integrity was not "authorized".
+ Such an addition is being allowed during the transition but would
+ be disallowed later.
+
+ auth-failed: The authoritative repository is not checking
+ authorization. Had it been doing so, authorization would have
+ failed. This attribute may be added by a repository that is
+ mirroring before placing the object in its local storage, or can
+ add this attribute to an encapsulating meta-object used to further
+ propagate the transaction. If the failure to enforce
+ authorization is intentional and part of a transition (for
+ example, issuing warnings only), then the authoritative repository
+ may add this attribute to the encapsulating meta-object used to
+ further propagate the transaction.
+
+
+
+Villamizar, et al. Standards Track [Page 10]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ authorized: Authorization checks were passed. The maintainer
+ contained a "referral-by" attribute, a form of authentication
+ deemed adequate by the repository was used, and all objects that
+ were needed for authorization were objects whose integrity was
+ "authorized".
+
+ Normally once an object is added to a repository another object
+ cannot overwrite it unless authorized to do so by the maintainers
+ referenced by the "mnt-by" attributes in the object itself. If the
+ integrity attribute is anything but "authorized", an object can be
+ overwritten or deleted by any transaction that would have been a
+ properly authorized addition had the object of lesser integrity not
+ existed.
+
+ During such a transition grandfathered data and data added without
+ proper authorization becomes advisory until a properly authorized
+ addition occurs. After transition additions of this type would no
+ longer be accepted. Those objects already added without proper
+ authorization would remain but would be marked as candidates for
+ replacement.
+
+6 Interactions with a Repository or Mirror
+
+ This section presents an overview of the transaction distribution
+ mechanisms. The detailed format of the meta-objects for
+ encapsulating and distributing transactions, and the rules for
+ processing meta-objects are described in Section 7. There are a few
+ different types of interactions between routing repositories or
+ mirrors.
+
+ Initial submission of transactions: Transactions may include
+ additions, changes, and deletions. A transaction may operate on
+ more than one object and must be treated as an atomic operation.
+ By definition initial submission of transactions is not applicable
+ to a mirror. Initial submission of transactions is described in
+ Section 6.1.
+
+ Redistribution of Transactions: The primary purpose of the
+ interactions between registries is the redistribution of
+ transactions. There are a number of ways to redistribute
+ transactions. This is discussed in Section 6.2.
+
+ Queries: Query interactions are outside the scope of this document.
+
+ Transaction Commit and Confirmation: Repositories may optionally
+ implement a commit protocol and a completion indication that gives
+ the submitter of a transaction a response that indicates that a
+
+
+
+
+Villamizar, et al. Standards Track [Page 11]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ transaction has been successful and will not be lost by a crash of
+ the local repository. A submitter may optionally request such a
+ confirmation. This is discussed in Section 6.3.
+
+6.1 Initial Transaction Submission
+
+ The simplest form of transaction submission is an object or set of
+ objects submitted with RFC-822 email encapsulation. This form is
+ still supported for backwards compatibility. A preferred form allows
+ some meta-information to be included in the submission, such as a
+ preferred form of confirmation. Where either encapsulation is used,
+ the submitter will connect to a host and port specified in the
+ repository object. This allows immediate confirmation. If an email
+ interface similar to the interface provided by the existing RIPE code
+ is desired, then an external program can provide the email interface.
+
+ The encapsulation of a transaction submission and response is
+ described in detail in Section 7.
+
+
+6.2 Redistribution of Transactions
+
+ Redistribution of transactions can be accomplished using one of:
+
+ 1. A repository snapshot is a request for the complete contents of a
+ given repository. This is usually done when starting up a new
+ repository or mirror or when recovering from a disaster, such as a
+ disk crash.
+
+ 2. A transaction sequence exchange is a request for a specific set of
+ transactions. Often the request is for the most recent sequence
+ number known to a mirror to the last transactions. This is used
+ in polling.
+
+ 3. Transaction flooding is accomplished through a unicast adjacency.
+
+ This section describes the operations somewhat qualitatively. Data
+ formats and state diagrams are provided in Section 7.
+
+6.3 Transaction Commit and Confirmation
+
+ If a submission requires a strong confirmation of completion, or if a
+ higher degree of protection against false positive confirmation is
+ desired as a matter of repository policy, a commit may be performed.
+
+ A commit request is a request from the repository processing an
+ initial transaction submission to another repository to confirm that
+ they have been able to advance the transaction sequence up to the
+
+
+
+Villamizar, et al. Standards Track [Page 12]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ sequence number immediately below the transaction in the request and
+ are willing to accept the transaction in the request as a further
+ advance in the sequence. This indicates that either the
+ authorization was rechecked by the responding repository and passed
+ or that the responding repository trusts the requesting repository
+ and has accepted the transaction.
+
+ A commit request can be sent to more than one alternate repository.
+ One commit completion response is sufficient to respond to the
+ submitter with a positive confirmation that the transaction has been
+ completed. However, the repository or submitter may optionally
+ require more than one.
+
+7 Data Format Summaries, Transaction Encapsulation and Processing
+
+ RIPE-181 [2] and RPSL [1] data is represented externally as ASCII
+ text. Objects consist of a set of attributes. Attributes are
+ name/value pairs. A single attribute is represented as a single line
+ with the name followed by a colon followed by whitespace characters
+ (space, tab, or line continuation) and followed by the value. Within
+ a value all consecutive whitespace characters is equivalent to a
+ single space. Line continuation is supported by putting a white
+ space or '+' character to the beginning of the continuation lines.
+ An object is externally represented as a sequence of attributes.
+ Objects are separated by blank lines.
+
+ Protocol interactions between registries are activated by passing
+ "meta objects". Meta objects are not part of RPSL but conform to
+ RPSL object representation. They serve mostly as delimiters to the
+ protocol messages or to carry the request for an operation.
+
+7.1 Transaction Submit and Confirm
+
+ The de-facto method for submitting database changes has been via
+ email. This method should be supported by an external application.
+ Merit has added the pgp-from authentication method to the RADB
+ (replaced by "pgpkey" in [4]), where the mail headers are essentially
+ ignored and the body of the mail message must be PGP signed.
+
+ This specification defines a different encapsulation for transaction
+ submission. When submitting a group of objects to a repository, a
+ user MUST append to that group of objects, exactly one "timestamp"
+ and one or more "signature" meta-objects, in that order.
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 13]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The "timestamp" meta-object contains a single attribute:
+
+ timestamp This attribute is mandatory and single-valued. This
+ attribute specifies the time at which the user submits the
+ transaction to the repository. The format of this attribute is
+ "YYYYMMDD hh:mm:ss [+/-]xx:yy", where "YYYY" specifies the four
+ digit year, "MM" represents the month, "DD" the date, "hh" the
+ hour, "mm" the minutes, "ss" the seconds of the timestamp, and
+ "xx" and "yy" represents the hours and minutes respectively that
+ that timestamp is ahead or behind UTC.
+
+ A repository may reject a transaction which does not include the
+ "timestamp" meta-object. The timestamp object is used to prevent
+ replaying registrations. How this is actually used is a local
+ matter. For example, a repository can accept a transaction only if
+ the value of the timestamp attribute is greater than the timestamp
+ attribute in the previous registration received from this user
+ (maintainer), or the repository may only accept transactions with
+ timestamps within its expire window.
+
+ Each "signature" meta-object contains a single attribute:
+
+ signature This attribute is mandatory and single-valued. This
+ attribute, a block of free text, contains the signature
+ corresponding to the authentication method used for the
+ transaction. When the authentication method is a cryptographic
+ hash (as in PGP-based authentication), the signature must include
+ all text up to (but not including) the last blank line before the
+ first "signature" meta-object.
+
+ A repository must reject a transaction that does not include any
+ "signature" meta-object.
+
+ The group of objects submitted by the user, together with the
+ "timestamp" and "signature" meta-objects, constitute the "submitted
+ text" of the transaction.
+
+ The protocol used for submitting a transaction, and for receiving
+ confirmation of locally committed transactions, is not specified in
+ this document. This protocol may define additional encapsulations
+ around the submitted text. The rest of this section gives an example
+ of one such protocol. Implementations are free to choose another
+ encapsulation.
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 14]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The meta-objects "transaction-submit-begin" and "transaction-submit-
+ end" delimit a transaction. A transaction is handled as an atomic
+ operation. If any part of the transaction fails none of the changes
+ take effect. For this reason a transaction can only operate on a
+ single database.
+
+ A socket connection is used to request queries or submit
+ transactions. An email interface may be provided by an external
+ program that connects to the socket. A socket connection must use
+ the "transaction-submit-begin" and "transaction-submit-end"
+ delimiters but can request a legacy style confirmation. Multiple
+ transactions may be sent prior to the response for any single
+ transaction. Transactions may not complete in the order sent.
+
+ The "transaction-submit-begin" meta-object may contain the following
+ attributes.
+
+ transaction-submit-begin This attribute is mandatory and single.
+ The value of the attribute contains name of the database and an
+ identifier that must be unique over the course of the socket
+ connection.
+
+ response-auth-type This attribute is optional and multiple. The
+ remainder of the line specifies an authentication type that would
+ be acceptable in the response. This is used to request a response
+ cryptographically signed by the repository.
+
+ transaction-confirm-type This attribute is optional and single. A
+ confirmation type keyword must be provided. Keywords are "none",
+ "legacy", "normal", "commit". The confirmation type can be
+ followed by the option "verbose".
+
+ The "transaction-submit-end meta-object consists of a single
+ attribute by the same name. It must contain the same database name
+ and identifier as the corresponding "transaction-submit-begin"
+ attribute.
+
+ Unless the confirmation type is "none" a confirmation is sent. If
+ the confirmation type is "legacy", then an email message of the form
+ currently sent by the RIPE database code will be returned on the
+ socket (suitable for submission to the sendmail program).
+
+ A "normal" confirmation does not require completion of the commit
+ protocol. A "commit" confirmation does. A "verbose" confirmation
+ may contain additional detail.
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 15]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ A transaction confirmation is returned as a "transaction-confirm"
+ meta-object. The "transaction-confirm" meta-object may have the
+ following attributes.
+
+ transaction-confirm This attribute is mandatory and single. It
+ contains the database name and identifier associated with the
+ transaction.
+
+ confirmed-operation This attribute is optional and multiple. It
+ contains one of the keywords "add", "delete" or "modify" followed
+ by the object type and key fields of the object operated on.
+
+ commit-status This attribute is mandatory and single. It contains
+ one of the keywords "succeeded, "error", or "held". The "error"
+ keyword may be followed by an optional text string. The "held"
+ keyword is returned when a repository containing a dependent
+ object for authorization has expired.
+
+7.2 Redistribution of Transactions
+
+ In order to redistribute transactions, each repository maintains a
+ TCP connection with one or more other repositories. After locally
+ committing a submitted transaction, a repository assigns a sequence
+ number to the transaction, signs and encapsulates the transaction,
+ and then sends one copy to each neighboring (or "peer") repository.
+ In turn, each repository authenticates the transaction (as described
+ in Section 7.6), may re-sign the transaction and redistributes the
+ transaction to its neighbors. We use the term "originating
+ repository" to distinguish the repository that redistributes a
+ locally submitted transaction.
+
+ This document also specifies two other methods for redistributing
+ transactions to other repositories: a database snapshot format used
+ for initializing a new registry, and a polling technique used by
+ mirrors.
+
+ In this section, we first describe how a repository may encapsulate
+ the submitted text of a transaction. We then describe the protocol
+ for flooding transactions or polling for transactions, and the
+ database snapshot contents and format.
+
+7.3 Redistribution Protocol Description
+
+ The originating repository must first authenticate a submitted
+ transaction using methods described in [3].
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 16]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ Before redistributing a transaction, the originating repository must
+ encapsulate the submitted text of the transaction with several meta-
+ objects, which are described below.
+
+ The originating repository must prepend the submitted text with
+ exactly one "transaction-label" meta-object. This meta-object
+ contains the following attributes:
+
+ transaction-label This attribute is mandatory and single. The value
+ of this attribute conforms to the syntax of an RPSL word, and
+ represents a globally unique identifier for the database to which
+ this transaction is added.
+
+ sequence This attribute is mandatory and single. The value of this
+ attribute is an RPSL integer specifying the sequence number
+ assigned by the originating repository to the transaction.
+ Successive transactions distributed by the same originating
+ repository have successive sequence numbers. The first
+ transaction originated by a registry is assigned a sequence number
+ 1. Each repository must use sequence numbers drawn from a range
+ at least as large as 64 bit unsigned integers.
+
+ timestamp This attribute is mandatory and single-valued. This
+ attribute specifies the time at which the originating repository
+ encapsulates the submitted text. The format of this attribute is
+ "YYYYMMDD hh:mm:ss [+/-]xx:yy", where "YYYY" specifies the four
+ digit year, "MM" represents the month, "DD" the date, "hh" the
+ hour, "mm" the minutes, "ss" the seconds of the timestamp, and
+ "xx" and "yy" represents the hours and minutes respectively that
+ that timestamp is ahead or behind UTC.
+
+ integrity This attribute is optional and single-valued. It may have
+ the values "legacy", "no-auth", "auth-failed", or "authorized".
+ If absent, the integrity is considered to be "authorized".
+
+ The originating repository may append to the submitted text one or
+ more "auth-dependency" meta-objects. These meta-objects are used to
+ indicate which other repositories' objects were used by the
+ originating registry to authenticate the submitted text. The "auth-
+ dependency" meta-objects should be ordered from the most preferred
+ repository to the least preferred repository. This order is used by
+ a remote repository to tie break between the multiple registrations
+ of an object with the same level of integrity. The "auth-dependency"
+ meta-object contains the following attributes:
+
+ auth-dependency This attribute mandatory and single-valued. It
+ equals a repository name from which an object is used to
+ authorize/authenticate this transaction.
+
+
+
+Villamizar, et al. Standards Track [Page 17]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ sequence This attribute mandatory and single-valued. It equals the
+ transaction sequence number of the dependent repository known at
+ the originating repository at the time of processing this
+ transaction.
+
+ timestamp This attribute mandatory and single-valued. It equals the
+ timestamp of the dependent repository known at the originating
+ repository at the time of processing this transaction.
+
+ If the originating repository needs to modify submitted objects in a
+ way that the remote repositories can not re-create, it can append an
+ "override-objects" meta-object followed by the modified versions of
+ these objects. An example modification can be auto assignment of NIC
+ handles. The "override-objects" meta-object contains the following
+ attributes:
+
+ override-objects A free text remark.
+
+ Other repositories may or may not honor override requests, or limit
+ the kinds of overrides they allow.
+
+ Following this, the originating repository must append exactly one
+ "repository-signature" meta-object. The "repository-signature"
+ meta-object contains the following attributes:
+
+ repository-signature This attribute is mandatory and single-valued.
+ It contains the name of the repository.
+
+ integrity This attribute is optional and single-valued. It may have
+ the values "legacy", "no-auth", "auth-failed", or "authorized".
+ If absent, the value is same as the value in the transaction-
+ label. If a different value is used, the value here takes
+ precedence.
+
+ signature This attribute is optional and single-valued. This
+ attribute, a block of free text, contains the repository's
+ signature using the key in the repository-cert attribute of the
+ repository object. When the authentication method is a
+ cryptographic hash (as in PGP-based authentication), the signature
+ must include all text upto (but not including) this attribute.
+ That is, the "repository-signature" and "integrity" attributes of
+ this object are included. This attribute is optional since
+ cryptographic authentication may not be available everywhere.
+ However, its use where it is available is highly recommended.
+
+ A repository must reject a redistributed transaction that does not
+ include any "repository-signature" meta-object.
+
+
+
+
+Villamizar, et al. Standards Track [Page 18]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ The transaction-label, the submitted text, the dependency objects,
+ the override-objects, the overridden objects, and the repository's
+ signature together constitute what we call the "redistributed text".
+
+ In preparation for redistributing the transaction to other
+ repositories, the originating repository must perform the following
+ protocol encapsulation. This protocol encapsulation may involve
+ transforming the redistributed text according to one of the
+ "transfer-method"s described below.
+
+ The transformed redistributed text is first prepended with exactly
+ one "transaction-begin" meta-object. One newline character separates
+ this meta-object from the redistributed text. This meta-object has
+ the following attributes:
+
+ transaction-begin This attribute is mandatory and single. The value
+ of this attribute is the length, in bytes, of the transformed
+ redistributed text.
+
+ transfer-method This attribute is optional and single-valued. Its
+ value is either "gzip", or "plain". The value of the attribute
+ describes the kind of text encoding that the repository has
+ performed on the redistributed text. If this attribute is not
+ specified, its value is assumed to be "plain". An implementation
+ must be capable of encoding and decoding both of these types.
+
+ The "transaction-begin" meta-object and the transformed redistributed
+ text constitute what we call the "transmitted text". The originating
+ repository may distribute the transmitted text to one or more peer
+ repositories.
+
+ When a repository receives the transmitted text of a transaction, it
+ must perform the following steps. After performing the following
+ steps, a transaction may be marked successful or failed.
+
+ 1. It must decapsulate the "transaction-begin" meta-object, then
+ decode the original redistributed text according to the value of
+ the transfer-method attribute specified in the "transaction-begin"
+ meta-object.
+
+ 2. It should then extract the "transaction-label" meta-object from
+ the transmitted text. If this transaction has already been
+ processed, or is currently being held, the repository must
+ silently discard this incarnation of the same transaction.
+
+ 3. It should verify that the signature of the originating repository
+ matches the first "repository-signature" meta-object in the
+ redistributed text following the "auth-dependency" meta-objects.
+
+
+
+Villamizar, et al. Standards Track [Page 19]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ 4. If not all previous (i.e., those with a lower sequence number)
+ transactions from the same repository have been received or
+ completely processed, the repository must "hold" this transaction.
+
+ 5. It may check whether any subsequent "repository-signature" meta-
+ objects were appended by a trusted repository. If so, this
+ indicates that the trusted repository verified the transaction's
+ integrity and marked its conclusion in the integrity attribute of
+ this object. The repository may verify the trusted repositories
+ signature and also mark the transaction with the same integrity,
+ and skip the remaining steps.
+
+ 6. It should verify the syntactic correctness of the transaction. An
+ implementation may allow configurable levels of syntactic
+ conformance with RPSL [1]. This enables RPSL extensions to be
+ incrementally deployed in the distributed registry scheme.
+
+ 7. The repository must authorize and authenticate this transaction.
+ To do this, it may need to reference objects and transactions from
+ other repositories. If these objects are not available, the
+ repository must "hold" this transaction as described in Section
+ 7.6, until it can be authorized and authenticated later. In order
+ to verify authorization/authentication of this transaction, the
+ repository must not use an object from a repository not mentioned
+ in an "auth-dependency" meta-object. The repository should also
+ only use the latest objects (by rolling back to earlier versions
+ if necessary) which are within the transaction sequence numbers of
+ the "auth-dependency" meta-objects.
+
+ A non-originating repository must redistribute a failed transaction
+ in order not to cause a gap in the sequence. (If the transaction was
+ to fail at the originating registry, it would simply not be assigned
+ a sequence number).
+
+ To the redistributed text of a transaction, a repository may append
+ another "repository-signature" meta-object. This indicates that the
+ repository has verified the transaction's integrity and marked it in
+ the "integrity" attribute of this object. The signature covers the
+ new redistributed text from (and including) the transaction-label
+ object to this object's signature attribute (including the
+ "repository-signature" and "integrity" attributes of this object, but
+ excluding the "signature" attribute). The original redistributed
+ text, together with the new "repository-signature" meta-object
+ constitutes the modified redistributed text.
+
+ To redistribute a successful or failed transaction, the repository
+ must encapsulate the (original or modified) redistributed text with a
+ "transaction-begin" object. This step is essentially the same as
+
+
+
+Villamizar, et al. Standards Track [Page 20]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ that performed by the originating repository (except that the
+ repository is free to use a different "transfer-method" from the one
+ that was in the received transaction.
+
+7.3.1 Explicitly Requesting Transactions
+
+ A repository may also explicitly request one or more transactions
+ belonging to a specified originating repository. This is useful for
+ catching up after a repository has been off-line for a period of
+ time. It is also useful for mirrors which intermittently poll a
+ repository for recently received transactions.
+
+ To request a range of transactions from a peer, a repository must
+ send a "transaction-request" meta-object to the peer. A
+ "transaction-request" meta-object may contain the following
+ attributes:
+
+ transaction-request This attribute is mandatory and single. It
+ contains the name of the database whose transactions are being
+ requested.
+
+ sequence-begin This attribute is optional and single. It contains
+ the sequence number of the first transaction being requested.
+
+ sequence-end This attribute is optional and single. It contains the
+ sequence number of the last transaction being requested.
+
+ Upon receiving a "transaction-request" object, a repository performs
+ the following actions. If the "sequence-begin" attribute is not
+ specified, the repository assumes the request first sequence number
+ to be 1. The last sequence number is the lesser of the value of the
+ "sequence-end" attributed and the highest completed transaction in
+ the corresponding database. The repository then, in order, transmits
+ the requested range of transactions. Each transaction is prepared
+ exactly according to the rules for redistribution specified in
+ Section 7.3.
+
+ After transmitting all the transactions, the peer repository must
+ send a "transaction-response" meta-object. This meta-object has the
+ following attributes:
+
+ transaction-response This attribute is mandatory and single. It
+ contains the name of the database whose transactions are were
+ requested.
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 21]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ sequence-begin This attribute is optional and mandatory. It
+ contains the value of the "sequence-begin" attribute in the
+ original request. It is omitted if the corresponding attribute
+ was not specified in the original request.
+
+ sequence-end This attribute is optional and mandatory. It contains
+ the value of the "sequence-end" attribute in the original request.
+ It is omitted if the corresponding attribute was not specified in
+ the original request.
+
+ After receiving a "transaction-response" meta-object, a repository
+ may tear down the TCP connection to its peer. This is useful for
+ mirrors that intermittently resynchronize transactions with a
+ repository. If the TCP connection stays open, repositories exchange
+ subsequent transactions according to the redistribution mechanism
+ specified in Section 7.3. While a repository is responding to a
+ transaction-request, it MAY forward heartbeats and other transactions
+ from the requested repository towards the requestor.
+
+7.3.2 Heartbeat Processing
+
+ Each repository that has originated at least one transaction must
+ periodically send a "heartbeat" meta-object. The interval between
+ two successive transmissions of this meta-object is configurable but
+ must be less than 1 day. This meta-object serves to indicate the
+ liveness of a particular repository. The repository liveness
+ determines how long transactions are held (See Section 7.6).
+
+ The "heartbeat" meta-object contains the following attributes:
+
+ heartbeat This attribute is mandatory and single. It contains the
+ name of the repository which originates this meta-object.
+
+ sequence This attribute is mandatory and single. It contains the
+ highest transaction sequence number that has been assigned by the
+ repository.
+
+ timestamp This attribute is mandatory and single. It contains the
+ time at which this meta-object was generated. The format of this
+ attribute is "YYYYMMDD hh:mm:ss [+/-]xx:yy", where "YYYY"
+ specifies the four digit year, "MM" represents the month, "DD" the
+ date, "hh" the hour, "mm" the minutes, "ss" the seconds of the
+ timestamp, and "xx" and "yy" represents the hours and minutes
+ respectively that that timestamp is ahead or behind UTC.
+
+ Upon receiving a heartbeat meta-object, a repository must first check
+ the timestamp of the latest previously received heartbeat message.
+ If that timestamp exceeds the timestamp in the received heartbeat
+
+
+
+Villamizar, et al. Standards Track [Page 22]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ message, the repository must silently discard the heartbeat message.
+ Otherwise, it must record the timestamp and sequence number in the
+ heartbeat message, and redistribute the heartbeat message, without
+ modification, to each of its peer repositories.
+
+ If the heartbeat message is from a repository previously unknown to
+ the recipient, the recipient may send a "transaction-request" to one
+ or more of its peers to obtain all transactions belonging to the
+ corresponding database. If the heartbeat message contains a sequence
+ number higher than the highest sequence number processed by the
+ recipient, the recipient may send a "transaction-request" to one or
+ more of its peers to obtain all transactions belonging to the
+ corresponding database.
+
+7.4 Transaction Commit
+
+ Submitters may require stronger confirmation of commit for their
+ transactions (Section 6.3). This section describes a simple
+ request-response protocol by which a repository may provide this
+ stronger confirmation, by verifying if one or more other repositories
+ have committed the transaction. Implementation of this request-
+ response protocol is optional.
+
+ After it has redistributed a transaction, the originating repository
+ may request a commit confirmation from one or more peer repositories
+ by sending to them a "commit-request" meta-object. The "commit-
+ request" contains two attributes:
+
+ commit-request This attribute is mandatory and single. It contains
+ the name of the database for whom a commit confirmation is being
+ requested.
+
+ sequence This attribute is mandatory and single. It contains the
+ transaction sequence number for which a commit confirmation is
+ being requested.
+
+ A repository that receives a "commit-request" must not redistribute
+ the request. It must delay the response until the corresponding
+ transaction has been processed. For this reason, the repository must
+ keep state about pending commit requests. It should discard this
+ state if the connection to the requester is lost before the response
+ is sent. In that event, it is the responsibility of the requester to
+ resend the request.
+
+ Once a transaction has been processed (Section 7.3), a repository
+ must check to see if there exists any pending commit request for the
+ transaction. If so, it must send a "commit-response" meta-object to
+ the requester. This meta-object has three attributes:
+
+
+
+Villamizar, et al. Standards Track [Page 23]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ commit-response This attribute is mandatory and single. It contains
+ the name of the database for whom a commit response is being sent.
+
+ sequence This attribute is mandatory and single. It contains the
+ transaction sequence number for which a commit response is being
+ sent.
+
+ commit-status This attribute is mandatory and single. It contains
+ one of the keywords "held", "error", or "succeeded". The "error"
+ keyword may be followed by an optional text string. The "held"
+ keyword is returned when a repository containing a dependent
+ object for authorization has expired.
+
+7.5 Database Snapshot
+
+ A database snapshot provides a complete copy of a database. It is
+ intended only for repository initialization or disaster recovery. A
+ database snapshot is an out of band mechanism. A set of files are
+ created periodically at the source repository. These files are then
+ transferred to the requestor out of band (e.g. ftp transfer). The
+ objects in these files are then registered locally.
+
+ A snapshot of repository X contains the following set of files:
+
+ X.db This file contains the RPSL objects of repository X, separated
+ by blank lines. In addition to the RPSL objects and blank lines,
+ comment lines can be present. Comment lines start with the
+ character '#'. The comment lines are ignored. The file X.db ends
+ in a special comment line "# eof".
+
+ X.<class>.db This optional file if present contains the RPSL objects
+ in X.db that are of class <class>. The format of the file is same
+ as that of X.db.
+
+ X.transaction-label This file contains a transaction-label object
+ that records the timestamp and the latest sequence number of the
+ repository at the time of the snapshot.
+
+ Each of these files can be optionally compressed uzing gzip. This is
+ signified by appending the suffix .gz to the file name. Each of
+ these files can optionally be PGP signed. In this case, the detached
+ signature with ASCII armoring and platform-independent text mode is
+ stored in a file whose name is constructed by appending .sig to the
+ file name of the file being signed.
+
+ In order to construct a repository's contents from a snapshot, a
+ repository downloads these files. After uncompressing and checking
+ signatures, the repository records these objects in its database. No
+
+
+
+Villamizar, et al. Standards Track [Page 24]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ RPS authorization/authentication is done on these objects. The
+ transaction-label object provides the seed for the replication
+ protocol to receive the follow on transactions from this repository.
+ Hence, it is not crucial to download an up to the minute snapshot.
+
+ After successfully playing a snapshot, it is possible that a
+ repository may receive a transaction from a third repository that has
+ a dependency on an earlier version of one of the objects in the
+ snapshot. This can only happen within the expire period of the
+ repository being downloaded, plus any possible network partition
+ period. This dependency is only important if the repository wants to
+ re-verify RPS authorization/authentication. There are three allowed
+ alternatives in this case. The simplest alternative is for the
+ repository to accept the transaction and mark it with integrity "no-
+ auth". The second choice is to only peer with trusted repositories
+ during this time period, and accept the transaction with the same
+ integrity as the trusted repository (possibly as "authorized"). The
+ most preferred alternative is not to download an up to the minute
+ snapshot, but to download an older snapshot, at minimum twice the
+ repositories expire time, in practice few days older. Upon replaying
+ an older snapshot, the replication protocol will fetch the more
+ current transactions from this repository. Together they provide the
+ necessary versions of objects to re-verify rps
+ authorization/authentication.
+
+7.6 Authenticating Operations
+
+ The "signature" and "repository-signature" meta-objects represent
+ signatures. Where multiple of these objects are present, the
+ signatures should be over the original contents, not over other
+ signatures. This allows signatures to be checked in any order.
+
+ A maintainer can also sign a transaction using several authentication
+ methods (some of which may be available in some repositories only).
+
+ In the case of PGP, implementations should allow the signatures of
+ the "signature" and "repository-signature" meta-objects to be either
+ the detached signatures produced by PGP or regular signatures
+ produced by PGP. In either case, ASCII armoring and platform-
+ independent text mode should be used.
+
+ Note that the RPSL objects themselves are not signed but the entire
+ transaction body is signed. When exchanging transactions among
+ registries, the meta-objects (e.g. "auth-dependency") prior to the
+ first "repository-signature" meta object in the redistributed text
+ are also signed over.
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 25]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ Transactions must remain intact, including the signatures, even if an
+ authentication method provided by the submitter is not used by a
+ repository handling the message. An originating repository may chose
+ to remove clear text passwords signatures from a transaction, and
+ replace it with the keyword "clear-text-passwd" followed by the
+ maintainer's id.
+
+ signature: clear-text-passwd <maintainer-name>
+
+ Note that this does not make the system less secure since clear text
+ password is an indication of total trust to the originating
+ repository by the maintainer.
+
+ A repository may sign a transaction that it verified. If at any
+ point the signature of a trusted repository is encountered, no
+ further authorization or authentication is needed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 26]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+A Examples
+
+ RPSL provides an external representation of RPSL objects and
+ attributes. An attribute is a name/value pair. RPSL is line
+ oriented. Line continuation is supported, however most attributes
+ fit on a single line. The attribute name is followed by a colon,
+ then any amount of whitespace, then the attribute value. An example
+ of the ASCII representation of an RPSL attribute is the following:
+
+ route: 140.222.0.0/16
+
+ An RPSL object is a set of attributes. Objects are separated from
+ each other by one or more blank lines. An example of a complete RPSL
+ object follows:
+
+ route: 140.222.0.0/16
+ descr: ANS Communications
+ origin: AS1673
+ member-of: RS-ANSOSPFAGGREGATE
+ mnt-by: ANS
+ changed: tck@ans.net 19980115
+ source: ANS
+
+A.1 Initial Object Submission and Redistribution
+
+ Figure 1 outlines the steps involved in submitting an object and the
+ initial redistribution from the authoritative registry to its flooding
+ peers.
+
+ If the authorization check requires objects from other repositories,
+ then the sequence numbers of the local copies of those databases is
+ required for mirrors to recheck the authorization.
+
+ To simply resubmit the object from the prior example, the submitter or
+ a client application program acting on the submitter's behalf must
+ submit a transaction. The legacy method was to send PGP signed email.
+ The preferred method is for an interactive program to encapsulate a
+ request between "transaction-submit-begin" and
+ "transaction-submit-end" meta-objects and encapsulate that as a
+ signed block as in the following example:
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 27]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ +--------------+
+ | Transaction |
+ | signed by |
+ | submitter |
+ +--------------+
+ |
+ | 1
+ v
+ +---------------------+ 2
+ | Primary repository |---->+----------+
+ | identified by | | database |
+ | RPSL source |<----+----------+
+ +---------------------+ 3
+ |
+ | 4
+ v
+ +----------------+
+ | Redistributed |
+ | transaction |
+ +----------------+
+
+ 1. submit object
+ 2. authorization check
+ 3. sequence needed for authorization
+ 4. redistribute
+
+ Figure 1: Initial Object Submission and Redistribution
+
+
+
+ transaction-submit-begin: ANS 1
+ response-auth-type: PGP
+ transaction-confirm-type: normal
+
+ route: 140.222.0.0/16
+ descr: ANS Communications
+ origin: AS1673
+ member-of: RS-ANSOSPFAGGREGATE
+ mnt-by: ANS
+ changed: curtis@ans.net 19990401
+ source: ANS
+
+ timestamp: 19990401 10:30:00 +08:00
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 28]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ signature:
+ + -----BEGIN PGP SIGNATURE-----
+ + Version: PGP for Personal Privacy 5.0
+ + MessageID: UZi4b7kjlzP7rb72pATPywPxYfQj4gXI
+ +
+ + iQCVAwUANsrwkP/OhQ1cphB9AQFOvwP/Ts8qn3FRRLQQHKmQGzy2IxOTiF0QXB4U
+ + Xzb3gEvfeg8NWhAI32zBw/D6FjkEw7P6wDFDeok52A1SA/xdP5wYE8heWQmMJQLX
+ + Avf8W49d3CF3qzh59UC0ALtA5BjI3r37ubzTf3mgtw+ONqVJ5+lB5upWbqKN9zqv
+ + PGBIEN3/NlM=
+ + =c93c
+ + -----END PGP SIGNATURE-----
+
+ transaction-submit-end: ANS 1
+
+ The signature covers the everything after the first blank line after
+ the "transaction-submit-begin" object to the last blank line before
+ the "signature" meta-object. If multiple signatures are needed, it
+ would be quite easy to email this block and ask the other party to
+ add a signature-block and return or submit the transaction. Because
+ of delay in obtaining multiple signatures the accuracy of the
+ "timestamp" cannot be strictly enforced. Enforcing accuracy to
+ within the "expire" time of the database might be a reasonable
+ compromise. The tradeoff is between convenience, allowing a longer
+ time to obtain multiple signatures, and increased time of exposure to
+ replay attack.
+
+ The ANS repository would look at its local database and make
+ authorization checks. If the authorization passes, then the sequence
+ number of any other database needed for the authorization is
+ obtained.
+
+ If this operation was successful, then a confirmation would be
+ returned. The confirmation would be of the form:
+
+ transaction-confirm: ANS 1
+ confirmed-operation: change route 140.222.0.0/16 AS1673
+ commit-status: commit
+ timestamp: 19990401 10:30:10 +05:00
+
+A.2 Transaction Redistribution Encoding
+
+ Having passed the authorization check the transaction is given a
+ sequence number and stored in the local transaction log and is then
+ flooded. The meta-object flooded to another database would be signed
+ by the repository and would be of the following form:
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 29]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ transaction-label: ANS
+ sequence: 6666
+ timestamp: 19990401 13:30:10 +05:00
+ integrity: authorized
+
+ route: 140.222.0.0/16
+ descr: ANS Communications
+ origin: AS1673
+ member-of: RS-ANSOSPFAGGREGATE
+ mnt-by: ANS
+ changed: curtis@ans.net 19990401
+ source: ANS
+
+ timestamp: 19990401 10:30:00 +08:00
+
+ signature:
+ + -----BEGIN PGP SIGNATURE-----
+ + Version: PGP for Personal Privacy 5.0
+ + MessageID: UZi4b7kjlzP7rb72pATPywPxYfQj4gXI
+ +
+ + iQCVAwUANsrwkP/OhQ1cphB9AQFOvwP/Ts8qn3FRRLQQHKmQGzy2IxOTiF0QXB4U
+ + Xzb3gEvfeg8NWhAI32zBw/D6FjkEw7P6wDFDeok52A1SA/xdP5wYE8heWQmMJQLX
+ + Avf8W49d3CF3qzh59UC0ALtA5BjI3r37ubzTf3mgtw+ONqVJ5+lB5upWbqKN9zqv
+ + PGBIEN3/NlM=
+ + =c93c
+ + -----END PGP SIGNATURE-----
+
+ auth-dependency: ARIN
+ sequence: 555
+ timestamp: 19990401 13:30:08 +05:00
+
+ auth-dependency: RADB
+ sequence: 4567
+ timestamp: 19990401 13:27:54 +05:00
+
+ repository-signature: ANS
+ signature:
+ + -----BEGIN PGP SIGNATURE-----
+ + Version: PGP for Personal Privacy 5.0
+ + MessageID: UZi4b7kjlzP7rb72pATPywPxYfQj4gXI
+ +
+ + iQCVAwUANsrwkP/OhQ1cphB9AQFOvwP/Ts8qn3FRRLQQHKmQGzy2IxOTiF0QXB4U
+ + Xzb3gEvfeg8NWhAI32zBw/D6FjkEw7P6wDFDeok52A1SA/xdP5wYE8heWQmMJQLX
+ + Avf8W49d3CF3qzh59UC0ALtA5BjI3r37ubzTf3mgtw+ONqVJ5+lB5upWbqKN9zqv
+ + PGBIEN3/NlM=
+ + =c93c
+ + -----END PGP SIGNATURE-----
+
+
+
+
+Villamizar, et al. Standards Track [Page 30]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ Note that the repository-signature above is a detached signature for
+ another file and is illustrative only. The repository-signature
+ covers from the "transaction-label" meta-object (including) to the
+ last blank line before the first "repository-signature" meta-object
+ (excluding the last blank line and the "repository-signature"
+ object).
+
+A.3 Transaction Protocol Encoding
+
+ transaction-begin: 1276
+ transfer-method: plain
+
+ transaction-label: ANS
+ sequence: 6666
+ timestamp: 19990401 13:30:10 +05:00
+ integrity: authorized
+
+ route: 140.222.0.0/16
+ descr: ANS Communications
+ origin: AS1673
+ member-of: RS-ANSOSPFAGGREGATE
+ mnt-by: ANS
+ changed: curtis@ans.net 19990401
+ source: ANS
+
+ timestamp: 19990401 10:30:00 +08:00
+
+ signature:
+ + -----BEGIN PGP SIGNATURE-----
+ + Version: PGP for Personal Privacy 5.0
+ + MessageID: UZi4b7kjlzP7rb72pATPywPxYfQj4gXI
+ +
+ + iQCVAwUANsrwkP/OhQ1cphB9AQFOvwP/Ts8qn3FRRLQQHKmQGzy2IxOTiF0QXB4U
+ + Xzb3gEvfeg8NWhAI32zBw/D6FjkEw7P6wDFDeok52A1SA/xdP5wYE8heWQmMJQLX
+ + Avf8W49d3CF3qzh59UC0ALtA5BjI3r37ubzTf3mgtw+ONqVJ5+lB5upWbqKN9zqv
+ + PGBIEN3/NlM=
+ + =c93c
+ + -----END PGP SIGNATURE-----
+
+ auth-dependency: ARIN
+ sequence: 555
+ timestamp: 19990401 13:30:08 +05:00
+
+ auth-dependency: RADB
+ sequence: 4567
+ timestamp: 19990401 13:27:54 +05:00
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 31]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ repository-signature: ANS
+ signature:
+ + -----BEGIN PGP SIGNATURE-----
+ + Version: PGP for Personal Privacy 5.0
+ + MessageID: UZi4b7kjlzP7rb72pATPywPxYfQj4gXI
+ +
+ + iQCVAwUANsrwkP/OhQ1cphB9AQFOvwP/Ts8qn3FRRLQQHKmQGzy2IxOTiF0QXB4U
+ + Xzb3gEvfeg8NWhAI32zBw/D6FjkEw7P6wDFDeok52A1SA/xdP5wYE8heWQmMJQLX
+ + Avf8W49d3CF3qzh59UC0ALtA5BjI3r37ubzTf3mgtw+ONqVJ5+lB5upWbqKN9zqv
+ + PGBIEN3/NlM=
+ + =c93c
+ + -----END PGP SIGNATURE-----
+
+ Before the transaction is sent to a peer, the repository prepends a
+ "transaction-begin" meta-object. The value of the "transaction-
+ begin" attribute is the number of octets in the transaction, not
+ counting the "transaction-begin" meta-object and the first blank line
+ after it.
+
+ Separating transaction-begin and transaction-label objects enables
+ different encodings at different flooding peerings.
+
+A.4 Transaction Redistribution
+
+ The last step in Figure 1 was redistributing the submitter's
+ transaction through flooding (or later through polling). Figure 2
+ illustrates the further redistribution of the transaction.
+
+ If the authorization check was repeated, the mirror may optionally
+ add a repository-signature before passing the transaction any
+ further. A "signature" can be added within that block. The previous
+ signatures should not be signed.
+
+ Figure 3 illustrates the special case referred to as a "lightweight
+ mirror". This is specifically intended for routers.
+
+ The lightweight mirror must trust the mirror from which it gets a
+ feed. This is a safe assumption if the two are under the same
+ administration (the mirror providing the feed is a host owned by the
+ same ISP who owns the routers). The lightweight mirror simply checks
+ the signature of the adjacent repository to insure data integrity.
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 32]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ +----------------+
+ | Redistributed |
+ | transaction |
+ +----------------+
+ |
+ | 1
+ v
+ +--------------------+ 2
+ | |---->+----------+
+ | Mirror repository | | database |
+ | |<----+----------+
+ +--------------------+ 3
+ |
+ | 4
+ v
+ +------------------+
+ |+----------------+|
+ || Redistributed ||
+ || transaction ||
+ |+----------------+|
+ | Optional |
+ | signature |
+ +------------------+
+
+ 1. redistribute transaction
+ 2. recheck authorization against full DB at the
+ time of the transaction using sequence numbers
+ 3. authorization pass/fail
+ 4. optionally sign then redistribute
+
+ Figure 2: Further Transaction Redistribution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 33]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ +----------------+
+ | Redistributed |
+ | transaction |
+ +----------------+
+ | 1
+ v
+ +--------------------+ 2
+ | |---->+----------+
+ | Mirror repository | | database |
+ | |<----+----------+
+ +--------------------+ 3
+ | 4
+ v
+ +----------------+
+ | Redistributed |
+ | transaction |
+ +----------------+
+ | 5
+ v
+ +--------------------+
+ | Lightweight | 6 +----------+
+ | Mirror repository |---->| database |
+ | (router?) | +----------+
+ +--------------------+
+
+ 1. redistribute transaction
+ 2. recheck authorization against full DB at the
+ time of the transaction using sequence numbers
+ 3. authorization pass/fail
+ 4. sign and redistribute
+ 5. just check mirror signature
+ 6. apply change with no authorization check
+
+ Figure 3: Redistribution to Lightweight Mirrors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 34]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+B Technical Discussion
+
+B.1 Server Processing
+
+ This document does not mandate any particular software design,
+ programming language choice, or underlying database or underlying
+ operating system. Examples are given solely for illustrative
+ purposes.
+
+B.1.1 getting connected
+
+ There are two primary methods of communicating with a repository
+ server. E-mail can be sent to the server. This method may be
+ deprecated but at least needs to be supported during transition. The
+ second method is preferred, connect directly to a TCP socket.
+
+ Traditionally the whois service is supported for simple queries. It
+ might be wise to retain the whois port connection solely for simple
+ queries and use a second port not in the reserved number space for
+ all other operations including queries except those queries using the
+ whois unstructured single line query format.
+
+ There are two styles of handling connection initiation is the
+ dedicated daemon, in the style of BSD sendmail, or launching through
+ a general purpose daemon such as BSD inetd. E-mail is normally
+ handled sequentially and can be handled by a front end program which
+ will make the connection to a socket in the process as acting as a
+ mail delivery agent.
+
+B.1.2 rolling transaction logs forward and back
+
+ There is a need to be able to easily look back at previous states of
+ any database in order to repeat authorization checks at the time of a
+ transaction. This is difficult to do with the RIPE database
+ implementation, which uses a sequentially written ASCII file and a
+ set of Berkeley DB maintained index files for traversal. At the very
+ minimum, the way in which deletes or replacements are implemented
+ would need to be altered.
+
+ In order to easily support a view back at prior versions of objects,
+ the sequence number of the transaction at which each object was
+ entered would need to be kept with the object. A pointer would be
+ needed back to the previous state of the object. A deletion would
+ need to be implemented as a new object with a deleted attribute,
+ replacing the previous version of the object but retaining a pointer
+ back to it.
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 35]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ A separate transaction log needs to be maintained. Beyond some age,
+ the older versions of objects and the the older transaction log
+ entries can be removed although it is probably wise to archive them.
+
+B.1.3 committing or disposing of transactions
+
+ The ability to commit large transaction, or reject them as a whole
+ poses problems for simplistic database designs. This form of commit
+ operation can be supported quite easily using memory mapped files.
+ The changes can be made in virtual memory only and then either
+ committed or disposed of.
+
+B.1.4 dealing with concurrency
+
+ Multiple connections may be active. In addition, a single connection
+ may have multiple outstanding operations. It makes sense to have a
+ single process or thread coordinate the responses for a given
+ connection and have multiple processes or threads each tending to a
+ single operation. The operations may complete in random order.
+
+ Locking on reads is not essential. Locking before write access is
+ essential. The simplest approach to locking is to lock at the
+ database granularity or at the database and object type granularity.
+ Finer locking granularity can also be implemented. Because there are
+ multiple databases, deadlock avoidance must be considered. The usual
+ deadlock avoidance mechanism is to acquire all necessary locks in a
+ single operation or acquire locks in a prescribed order.
+
+B.2 Repository Mirroring for Redundancy
+
+ There are numerous reasons why the operator of a repository might
+ mirror their own repository. Possibly the most obvious are
+ redundancy and the relative ease of disaster recovery. Another
+ reason might be the widespread use of a small number of
+ implementations (but more than one) and the desire to insure that the
+ major repository software releases will accept a transaction before
+ fully committing to the transaction.
+
+ The operation of a repository mirror used for redundancy is quite
+ straightforward. The transactions of the primary repository host can
+ be immediately fed to the redundant repository host. For tighter
+ assurances that false positive confirmations will be sent, as a
+ matter of policy the primary repository host can require commit
+ confirmation before making a transaction sequence publicly available.
+
+ There are many ways in which the integrity of local data can be
+ assured regardless of a local crash in the midst of transaction disk
+ writes. For example, transactions can be implemented as memory
+
+
+
+Villamizar, et al. Standards Track [Page 36]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ mapped file operations, with disk synchronization used as the local
+ commit mechanism, and disposal of memory copies of pages used to
+ handle commit failures. The old pages can be written to a separate
+ file, the new pages written into the database. The transaction can
+ be logged and old pages file can then be removed. In the event of a
+ crash, the existence of a old pages file and the lack of a record of
+ the transaction completing would trigger a transaction roll back by
+ writing the old pages back to the database file.
+
+ The primary repository host can still sustain severe damage such as a
+ disk crash. If the primary repository host becomes corrupted, the
+ use of a mirror repository host provides a backup and can provide a
+ rapid recovery from disaster by simply reversing roles.
+
+ If a mirror is set up using a different software implementation with
+ commit mirror confirmation required, any transaction which fails due
+ a software bug will be deferred indefinitely allowing other
+ transactions to proceed rather than halting the remote processing of
+ all transactions until the bug is fixed everywhere.
+
+B.3 Trust Relationships
+
+ If all repositories trust each other then there is never a need to
+ repeat authorization checks. This enables a convenient interim step
+ for deployment prior to the completion of software supporting that
+ capability. The opposite case is where no repository trusts any
+ other repository. In this case, all repositories must roll forward
+ transactions gradually, checking the authorization of each remote
+ transaction.
+
+ It is likely that repositories will trust a subset of other
+ repositories. This trust can reduce the amount of processing a
+ repository required to maintain mirror images of the full set of
+ data. For example, a subset of repositories might be trustworthy in
+ that they take reasonable security measures, the organizations
+ themselves have the integrity not to alter data, and these
+ repositories trust only a limited set of similar repositories. If
+ any one of these repositories receives a transaction sequence and
+ repeats the authorization checks, other major repositories which
+ trusts that repository need not repeat the checks. In addition,
+ trust need not be mutual to reap some benefit in reduced processing.
+
+ As a transaction sequence is passed from repository to repository
+ each repository signs the transaction sequence before forwarding it.
+ If a receiving repository finds that any trusted repository has
+ signed the transaction sequence it can be considered authorized since
+ the trusted repository either trusted a preceding repository or
+ repeated the authorization checks.
+
+
+
+Villamizar, et al. Standards Track [Page 37]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+B.4 A Router as a Minimal Mirror
+
+ A router could serve as a minimal repository mirror. The following
+ simplifications can be made.
+
+ 1. No support for repeating authorization checks or transaction
+ authentication checks need be coded in the router.
+
+ 2. The router must be adjacent only to trusted mirrors, generally
+ operated by the same organization.
+
+ 3. The router would only check the authentication of the adjacent
+ repository mirrors.
+
+ 4. No support for transaction submission or query need be coded in
+ the router. No commit support is needed.
+
+ 5. The router can dispose of any object types or attributes not
+ needed for configuration of route filters.
+
+ The need to update router configurations could be significantly
+ reduced if the router were capable of acting as a limited repository
+ mirror.
+
+ A significant amount of non-volatile storage would be needed. There
+ are currently an estimated 100 transactions per day. If storage were
+ flash memory with a limited number of writes, or if there were some
+ other reason to avoid writing to flash, the router could only update
+ the non-volatile copy every few days. A transaction sequence request
+ can be made to get an update in the event of a crash, returning only
+ a few hundred updates after losing a few days of deferred writes.
+ The routers can still take a frequent or continuous feed of
+ transactions.
+
+ Alternately, router filters can be reconfigured periodically as they
+ are today.
+
+B.5 Dealing with Errors
+
+ If verification of an authorization check fails, the entire
+ transaction must be rejected and no further advancement of the
+ repository can occur until the originating repository corrects the
+ problem. If the problem is due to a software bug, the offending
+ transaction can be removed manually once the problem is corrected.
+ If a software bug exists in the receiving software, then the
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 38]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ transaction sequence is stalled until the bug is corrected. It is
+ better for software to error on the side of denying a transaction
+ than acceptance, since an error on the side of acceptance will
+ require later removal of the effects of the transaction.
+
+C Deployment Considerations
+
+ This section described deployment considerations. The intention is
+ to raise issues rather than to provide a deployment plan.
+
+ This document calls for a transaction exchange mechanism similar to
+ but not identical to the existing "near real time mirroring"
+ supported by the code base widely used by the routing registries. As
+ an initial step, the transaction exchange can be implemented without
+ the commit protocol or the ability to recheck transaction
+ authorization. This is a fairly minimal step from the existing
+ capabilities.
+
+ The transition can be staged as follows:
+
+ 1. Modify the format of "near real time mirroring" transaction
+ exchange to conform to the specifications of this document.
+
+ 2. Implement commit protocol and confirmation support.
+
+ 3. Implement remote recheck of authorization. Prior to this step all
+ repositories must be trusted.
+
+ 4. Allow further decentralization of the repositories.
+
+D Privacy of Contact Information
+
+ The routing registries have contained contact information. The
+ redistribution of this contact information has been a delicate issue
+ and in some countries has legal implications.
+
+ The person and role objects contain contact information. These
+ objects are referenced by NIC-handles. There are some attributes
+ such as the "changed" and "notify" attributes that require an email
+ address. All of the fields that currently require an email address
+ must also accept a NIC-handle.
+
+ The person and role objects should not be redistributed by default.
+ If a submission contains an email address in a field such as a
+ changed field rather than a NIC-handle the submitter should be aware
+ that they are allowing that email address to be redistributed and
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 39]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+ forfeiting any privacy. Repositories which do not feel that prior
+ warnings of this forfeiture are sufficient legal protection should
+ reject the submission requesting that a NIC-handle be used.
+
+ Queries to role and person objects arriving at a mirror must be
+ referred to the authoritative repository where whatever
+ authentication, restrictions, or limitations deemed appropriate by
+ that repository can be enforced directly.
+
+ Software should make it possible to restrict the redistribution of
+ other entire object types as long as those object types are not
+ required for the authorization of additions of other object types.
+ It is not possible to redistribute objects with attributes removed or
+ altered since this would invalidate the submitter's signature and
+ make subsequent authentication checks impossible. Repositories
+ should not redistribute a subset of the objects of a given type.
+
+ Software should also not let a transaction contain both
+ redistributable (e.g. policy objects) and non-redustributable
+ objects (e.g. person) since there is no way to verify the signature
+ of these transactions without the non-redustributable objects.
+
+ When redistributing legacy data, contact information in attributes
+ such as "changed" and "notify" should be stripped to maintain
+ privacy. The "integrity" attribute on these objects should already
+ be set to "legacy" indicating that their origin is questionable, so
+ the issue of not being able to recheck signatures is not as
+ significant.
+
+References
+
+ [1] Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D.,
+ Meyer, D., Bates, T., Karrenberg, D. and M. Terpstra, "Routing
+ Policy Specification Language", RFC 2622, June 1999.
+
+ [2] Bates, T., Gerich, E., Joncheray, L., Jouanigot, J-M.,
+ Karrenberg, D., Terpstra, M. and J. Yu, "Representation of IP
+ Routing Policies in a Routing Registry (ripe-81++)", RFC 1786,
+ March 1995.
+
+ [3] Villamizar, C., Alaettinoglu, C., Meyer, D. and S. Murphy,
+ "Routing Policy System Security", RFC 2725, June 1999.
+
+ [4] Zsako, J., "PGP Authentication for RIPE Database Updates", RFC
+ 2726, December 1999.
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 40]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+Security Considerations
+
+ An authentication and authorization model for routing policy object
+ submission is provided by [3]. Cryptographic authentication is
+ addressed by [4]. This document provides a protocol for the exchange
+ of information among distributed routing registries such that the
+ authorization model provided by [3] can be adhered to by all
+ registries and any deviation (hopefully accidental) from those rules
+ on the part of a registry can be identified by other registries or
+ mirrors.
+
+Authors' Addresses
+
+ Curtis Villamizar
+ Avici Systems
+ EMail: curtis@avici.com
+
+
+ Cengiz Alaettinoglu
+ ISI
+ EMail: cengiz@ISI.EDU
+
+
+ Ramesh Govindan
+ ISI
+ EMail: govindan@ISI.EDU
+
+
+ David M. Meyer
+ Cisco
+ EMail: dmm@cisco.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 41]
+
+RFC 2769 Routing Policy System Replication February 2000
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Villamizar, et al. Standards Track [Page 42]
+