Network Working Group                                     M. Steenstrup
Request for Comments: 1477                 BBN Systems and Technologies
                                                              July 1993


                      IDPR as a Proposed Standard

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard.  Distribution of this memo is
   unlimited.

1.  Introduction

   This document contains a discussion of inter-domain policy routing
   (IDPR), including an overview of functionality and a discussion of
   experiments.  The objective of IDPR is to construct and maintain
   routes between source and destination administrative domains, that
   provide user traffic with the services requested within the
   constraints stipulated for the domains transited.

   Four documents describe IDPR in detail:

      M. Steenstrup.  An architecture for inter-domain policy routing.
      RFC 1478.  July 1993.

      M. Steenstrup.  Inter-domain policy routing protocol
      specification: version 1.  RFC 1479.  July 1993.

      H. Bowns and M. Steenstrup.  Inter-domain policy routing
      configuration and usage.  Work in Progress.  July 1991.

      R. Woodburn.  Definitions of managed objects for inter-domain
      policy routing (version 1).  Work in Progress.  March 1993.

   This is a product of the Inter-Domain Policy Routing Working Group of
   the Internet Engineering Task Force (IETF).

2.  The Internet Environment

   As data communications technologies evolve and user populations grow,
   the demand for internetworking increases.  The Internet currently
   comprises over 7000 operational networks and over 10,000 registered
   networks.  In fact, for the last several years, the number of
   constituent networks has approximately doubled annually.  Although we
   do not expect the Internet to sustain this growth rate, we must
   prepare for the Internet of five to ten years in the future.



Steenstrup                                                      [Page 1]


RFC 1477                         IDPR                          July 1993


   Internet connectivity has increased along with the number of
   component networks.  Internetworks proliferate through
   interconnection of autonomous, heterogeneous networks administered by
   separate authorities.  We use the term "administrative domain" (AD)
   to refer to any collection of contiguous networks, gateways, links,
   and hosts governed by a single administrative authority that selects
   the intra-domain routing procedures and addressing schemes, specifies
   service restrictions for transit traffic, and defines service
   requirements for locally-generated traffic.

   In the early 1980s, the Internet was purely hierarchical, with the
   ARPANET as the single backbone.  The current Internet possesses a
   semblance of a hierarchy in the collection of backbone, regional,
   metropolitan, and campus domains that compose it.  However,
   technological, economical, and political incentives have prompted the
   introduction of inter-domain links outside of those in the strict
   hierarchy.  Hence, the Internet has the properties of both
   hierarchical and mesh connectivity.

   We expect that, over the next five years, the Internet will grow to
   contain O(10) backbone domains, most providing connectivity between
   many source and destination domains and offering a wide range of
   qualities of service, for a fee.  Most domains will connect directly
   or indirectly to at least one Internet backbone domain, in order to
   communicate with other domains.  In addition, some domains may
   install direct links to their most favored destinations.  Domains at
   the lower levels of the hierarchy will provide some transit service,
   limited to traffic between selected sources and destinations.
   However, the majority of Internet domains will be "stubs", that is,
   domains that do not provide any transit service for any other domains
   but that connect directly to one or more transit domains.

   The bulk of Internet traffic will be generated by hosts in the stub
   domains, and thus, the applications running in these hosts will
   determine the traffic service requirements.  We expect application
   diversity encompassing electronic mail, desktop videoconferencing,
   scientific visualization, and distributed simulation, for example.
   Many of these applications have strict requirements on loss, delay,
   and throughput.

   In such a large and heterogeneous Internet, the routing procedures
   must be capable of ensuring that traffic is forwarded along routes
   that offer the required services without violating domain usage
   restrictions.  We believe that IDPR meets this goal; it has been
   designed to accommodate an Internet comprising O(10,000)
   administrative domains with diverse service offerings and
   requirements.




Steenstrup                                                      [Page 2]


RFC 1477                         IDPR                          July 1993


3.  An Overview of IDPR

   IDPR generates, establishes, and maintains "policy routes" that
   satisfy the service requirements of the users and respect the service
   restrictions of the transit domains.  Policy routes are constructed
   using information about the services offered by and the connectivity
   between administrative domains and information about the services
   requested by the users.

3.1  Policies

   With IDPR, each domain administrator sets "transit policies" that
   dictate how and by whom the resources in its domain should be used.
   Transit policies are usually public, and they specify offered
   services comprising:

   - Access restrictions: e.g., applied to traffic to or from certain
     domains or classes of users.

   - Quality: e.g., delay, throughput, or error characteristics.

   - Monetary cost: e.g., charge per byte, message, or session time.

   Each domain administrator also sets "source policies" for traffic
   originating in its domain.  Source policies are usually private, and
   they specify requested services comprising:

   - Access: e.g., domains to favor or avoid in routes.

   - Quality: e.g., acceptable delay, throughput, and reliability.

   - Monetary cost: e.g., acceptable cost per byte, message, or session
     time.

3.2  Functions

   The basic IDPR functions include:

   - Collecting and distributing routing information, i.e., domain
     transit policy and connectivity information.  IDPR uses link state
     routing information distribution, so that each source domain may
     obtain routing information about all other domains.

   - Generating and selecting policy routes based on the routing
     information distributed and on source policy information.  IDPR
     gives each source domain complete control over the routes it
     generates.




Steenstrup                                                      [Page 3]


RFC 1477                         IDPR                          July 1993


   - Setting up paths across the Internet, using the policy routes
     generated.

   - Forwarding messages across and between administrative domains along
     the established paths.  IDPR uses source-specified message
     forwarding, giving each source domain complete control over the
     paths traversed by its hosts' inter-domain traffic.

   - Maintaining databases of routing information, inter-domain policy
     routes, forwarding information, and configuration information.

3.3  Entities

   Several different entities are responsible for performing the IDPR
   functions:

   - "Policy gateways", the only IDPR-recognized connecting points
     between adjacent domains, collect and distribute routing
     information, participate in path setup, maintain forwarding
     information databases, and forward data messages along established
     paths.

   - "Path agents", resident within policy gateways, act on behalf of
     hosts to select policy routes, to set up and manage paths, and to
     maintain forwarding information databases.  Any Internet host can
     reap the benefits of IDPR, as long as there exists a path agent
     willing to act on its behalf and a means by which the host's
     messages can reach that path agent.

   - Special-purpose servers maintain all other IDPR databases as
     follows:

      o  Each "route server" is responsible for both its database of
         routing information, including domain connectivity and transit
         policy information, and its database of policy routes.  Also,
         each route server generates policy routes on behalf of its
         domain, using entries from its routing information database
         and using source policy information supplied through
         configuration or obtained directly from the path agents.  A
         route server may reside within a policy gateway, or it may
         exist as an autonomous entity.  Separating the route server
         functions from the policy gateways frees the policy gateways
         from both the memory intensive task of routing information
         database and route database maintenance and the
         computationally intensive task of route generation.

      o  Each "mapping server" is responsible for its database of
         mappings that resolve Internet names and addresses to



Steenstrup                                                      [Page 4]


RFC 1477                         IDPR                          July 1993


         administrative domains.  The mapping server function can be
         easily integrated into an existing name service such as the
         DNS.

      o  Each "configuration server" is responsible for its database of
         configured information that applies to policy gateways, path
         agents, and route servers in the given administrative domain.
         Configuration information for a given domain includes source
         and transit policies and mappings between local IDPR entities
         and their addresses.  The configuration server function can be
         easily integrated into a domain's existing network management
         system.

3.4  Message Handling

   There are two kinds of IDPR messages:

   - "Data messages" containing user data generated by hosts.

   - "Control messages" containing IDPR protocol-related control
     information generated by policy gateways and route servers.

   Within the Internet, only policy gateways and route servers must be
   able to generate, recognize, and process IDPR messages.  Mapping
   servers and configuration servers perform necessary but ancillary
   functions for IDPR, and they are not required to execute IDPR
   protocols.  The existence of IDPR is invisible to all other gateways
   and hosts.  Using encapsulation across each domain, an IDPR message
   tunnels from source to destination across the Internet through
   domains that may employ disparate intra-domain addressing schemes and
   routing procedures.

4.  Security

   IDPR contains mechanisms for verifying message integrity and source
   authenticity and for protecting against certain types of denial of
   service attacks.  It is particularly important to keep IDPR control
   messages intact, because they carry control information critical to
   the construction and use of viable policy routes between domains.

4.1  Integrity and Authenticity

   All IDPR messages carry a single piece of information, referred to in
   the IDPR documentation as the "integrity/authentication value", which
   may be used not only to detect message corruption but also to verify
   the authenticity of the message's source IDPR entity.  The Internet
   Assigned Numbers Authority (IANA) specifies the set of valid
   algorithms which may be used to compute the integrity/authentication



Steenstrup                                                      [Page 5]


RFC 1477                         IDPR                          July 1993


   values.  This set may include algorithms that perform only message
   integrity checks such as n-bit cyclic redundancy checksums (CRCs), as
   well as algorithms that perform both message integrity and source
   authentication checks such as signed hash functions of message
   contents.

   Each domain administrator is free to select any
   integrity/authentication algorithm, from the set specified by the
   IANA, for computing the integrity/authentication values contained in
   its domain's messages.  However, we recommend that IDPR entities in
   each domain be capable of executing all of the valid algorithms so
   that an IDPR message originating at an entity in one domain can be
   properly checked by an entity in another domain.

   IDPR control messages must carry a non-null integrity/authentication
   value.  We recommend that control message integrity/authentication be
   based on a digital signature algorithm applied to a one-way hash
   function, such as RSA applied to MD5, which simultaneously verifies
   message integrity and source authenticity.  The digital signature may
   be based on either public key or private key cryptography.  However,
   we do not require that IDPR data messages carry a non-null
   integrity/authentication value.  In fact, we recommend that a higher
   layer (end-to-end) procedure assume responsibility for checking the
   integrity and authenticity of data messages, because of the amount of
   computation involved.

4.2  Timestamps

   Each IDPR message carries a timestamp (expressed in seconds elapsed
   since 1 January 1970 0:00 GMT) supplied by the source IDPR entity,
   which serves to indicate the age of the message.  IDPR entities use
   the absolute value of a timestamp to confirm that the message is
   current and use the relative difference between timestamps to
   determine which message contains the most recent information.  All
   IDPR entities must possess internal clocks that are synchronized to
   some degree, in order for the absolute value of a message timestamp
   to be meaningful.  The synchronization granularity required by IDPR
   is on the order of minutes and can be achieved manually.

   Each IDPR recipient of an IDPR control message must check that the
   message's timestamp is in the acceptable range.  A message whose
   timestamp lies outside of the acceptable range may contain stale or
   corrupted information or may have been issued by a source whose clock
   has lost synchronization with the message recipient.  Such messages
   must therefore be discarded, to prevent propagation of incorrect IDPR
   control information.  We do not require IDPR entities to perform a
   timestamp acceptability test for IDPR data messages, but instead
   leave the choice to the individual domain administrators.



Steenstrup                                                      [Page 6]


RFC 1477                         IDPR                          July 1993


5.  Size Considerations

   IDPR provides policy routing among administrative domains and has
   been designed to accommodate an Internet containing tens of thousands
   of domains, supporting diverse source and transit policies.

   In order to construct policy routes, route servers require routing
   information at the domain level only; no intra-domain details need be
   included in IDPR routing information.  Thus, the size of the routing
   information database maintained by a route server depends on the
   number of domains and transit policies and not on the number hosts,
   gateways, or networks in the Internet.

   We expect that, within a domain, a pair of IDPR entities will
   normally be connected such that when the primary intra-domain route
   fails, the intra-domain routing procedure will be able to use an
   alternate route.  In this case, a temporary intra-domain failure is
   invisible at the inter-domain level.  Thus, we expect that most
   intra-domain routing changes will be unlikely to force inter-domain
   routing changes.

   Policy gateways distribute routing information when detectable
   inter-domain changes occur but may also elect to distribute routing
   information periodically as a backup.  Thus, policy gateways do not
   often need to generate and distribute routing information messages,
   and the frequency of distribution of these messages depends only
   weakly on intra-domain routing changes.

   IDPR entities rely on intra-domain routing procedures operating
   within domains to transport inter-domain messages across domains.
   Hence, IDPR messages must appear well-formed according to the intra-
   domain routing procedures and addressing schemes in each domain
   traversed; this requires appropriate header encapsulation of IDPR
   messages at domain boundaries.  Only policy gateways and route
   servers must be capable of handling IDPR-specific messages; other
   gateways and hosts simply treat the encapsulated IDPR messages like
   any other.  Thus, for the Internet to support IDPR, only a small
   proportion of Internet entities require special IDPR software.

   With domain-level routes, many different traffic flows may use not
   only the same policy route but also the same path, as long their
   source domains, destination domains, and requested services are
   identical.  Thus, the size of the forwarding information database
   maintained by a policy gateway depends on the number of domains and
   source policies and not on the number of hosts in the Internet.
   Moreover, memory associated with failed, expired, or disused paths
   can be reclaimed for new paths, and thus forwarding information for
   many paths can be accommodated.



Steenstrup                                                      [Page 7]


RFC 1477                         IDPR                          July 1993


6.  Interactions with Other Inter-Domain Routing Procedures

   We believe that many Internet domains will benefit from the
   introduction of IDPR.  However, the decision to support IDPR in a
   given domain is an individual one, left to the domain administrator;
   not all domains must support IDPR.

   Within a domain that supports IDPR, other inter-domain routing
   procedures, such as BGP and EGP, can comfortably coexist.  Each
   inter-domain routing procedure is independent of the others.  The
   domain administrator determines the relationship among the inter-
   domain routing procedures by deciding which of its traffic flows
   should use which inter-domain routing procedures and by configuring
   this information for use by the policy gateways.

   Hosts in stub domains may have strict service requirements and hence
   will benefit from the policy routing provided by IDPR.  However, the
   stub domain itself need not support IDPR in order for its traffic
   flows to use IDPR routes.  Instead, a "proxy domain" may perform IDPR
   functions on behalf of the stub.  The proxy domain must be reachable
   from the stub domain according to an inter-domain routing procedure
   independent of IDPR.  Administrators of the stub and potential proxy
   domains mutually negotiate the relationship.  Once an agreement is
   reached, the administrator of the stub domain should provide the
   proxy domain with its hosts' service requirements.

   IDPR policy routes must traverse a contiguous set of IDPR domains.
   Hence, the degree of IDPR deployment in transit domains will
   determine the availability of IDPR policy routes for Internet users.
   For a given traffic flow, if there exists no contiguous set of IDPR
   domains between the source and destination, the traffic flow relies
   on an alternate inter-domain routing procedure to provide a route.
   However, if there does exist a contiguous set of IDPR domains between
   the source and destination, the traffic flow may take advantage of
   policy routes provided by IDPR.

7.  Implementation Experience

   To date, there exist two implementations of IDPR: one an independent
   prototype and the other an integral part of the gated UNIX process.
   We describe each of these implementations and our experience with
   them in the following sections.

7.1  The Prototype

   During the summer of 1990, the IDPR development group consisting of
   participants from USC, SAIC, and BBN began work on a UNIX-based
   software prototype of IDPR, designed for implementation in Sun



Steenstrup                                                      [Page 8]


RFC 1477                         IDPR                          July 1993


   workstations.  This prototype consisted of multiple user-level
   processes to provide the basic IDPR functions together with kernel
   modifications to speed up IDPR data message forwarding.

   Most, but not all, of the IDPR functionality was captured in the
   prototype.  In the interests of producing working software as quickly
   as possible, we intentionally left out of the IDPR prototype support
   for source policies and for multiple policy gateways connecting two
   domains.  This simplified configuration and route generation without
   compromising the basic functionality of IDPR.

   The IDPR prototype software was extensively instrumented to provide
   detailed information for monitoring its behavior.  The
   instrumentation allowed us to detect events including but not limited
   to:

   - Change in policy gateway connectivity to adjacent domains.

   - Change in transit policies configured for a domain.

   - Transmission and reception of link state routing information.

   - Generation of policy routes, providing a description of the actual
     route.

   - Transmission and reception of path control information.

   - Change of path state, such as path setup or teardown.

   With the extensive behavioral information available, we were able to
   track most events occurring in our test networks and hence determine
   whether the prototype software provided the expected functionality.

7.1.1  Test Networks

   In February 1991, the IDPR development group began experimenting with
   the completed IDPR prototype software.  Each IDPR development site
   had its own testing environment, consisting of a set of
   interconnected Sun workstations, each workstation performing the
   functions of a policy gateway and route server:

   - USC used a laboratory test network consisting of SPARC1+
     workstations, each pair of workstations connected by an Ethernet
     segment.  The topology of the test network could be arbitrarily
     configured.

   - SAIC used Sun3 workstations in networks at Sparta and at MITRE.
     These two sites were connected through Alternet using a 9.6kb SLIP



Steenstrup                                                      [Page 9]


RFC 1477                         IDPR                          July 1993


     link and through an X.25 path across the DCA EDN testbed.

   - BBN used SPARC1+ workstations at BBN and ISI connected over both
     DARTnet and TWBnet.

7.1.2  Experiments

   The principal goal of our experiments with the IDPR prototype
   software was to provide a proof of concept.  In particular, we set
   out to verify tha t the IDPR prototype software was able to:

   - Monitor connectivity across and between domains.

   - Update routing information when inter-domain connectivity changed
     or when new transit policies were configured.

   - Distribute routing information to all domains.

   - Generate acceptable policy routes based on current link state
     routing information.

   - Set up and maintain paths for these policy routes.

   - Tear down paths that contained failed components, supported stale
     policies, or attained their maximum age.

   Furthermore, we wanted to verify that the IDPR prototype software
   quickly detected and adapted to those events that directly affected
   policy routes.

   The internetwork topology on which we based most of our experiments
   consisted of four distinct administrative domains connected in a
   ring.  Two of the four domains served as host traffic source and
   destination, AD S and AD D respectively, while the two intervening
   domains provided transit service for the host traffic, AD T1 and AD
   T2.  AD S and AD D each contained a single policy gateway that
   connected to two other policy gateways, one in each transit domain.
   AD T1 and AD T2 each contained at most two policy gateways, each
   policy gateway connected to the other and to a policy gateway in the
   source or destination domain.  This internetwork topology provided
   two distinct inter-domain routes between AD S and AD D, allowing us
   to experiment with various component failure and transit policy
   reconfiguration scenarios in the transit domains.

   For the first set of experiments, we configured transit policies for
   AD T1 and AD T2 that were devoid of access restrictions.  We then
   initialized each policy gateway in our internetwork, loading in the
   domain-specific configurations and starting up the IDPR processes.



Steenstrup                                                     [Page 10]


RFC 1477                         IDPR                          July 1993


   In our experiments, we did not use mapping servers; instead, we
   configured address/domain mapping tables in each policy gateway.

   After policy gateway initialization, we observed that each policy
   gateway immediately determined the connectivity to policy gateways in
   its own domain and in the adjacent domains.  The representative
   policy gateway in each domain then generated a routing information
   message that was received by all other policy gateways in the
   internetwork.

   To test the route generation and path setup functionality of the IDPR
   prototype software, we began a telnet session between a host in AD S
   and a host in AD D.  We observed that the telnet traffic prompted the
   path agent resident in the policy gateway in AD S to request a policy
   route from its route server.  The route server then generated a
   policy route and returned it to the path agent.  Using the policy
   route supplied by the route server, the path agent initiated path
   setup, and the telnet session was established immediately.

   Having confirmed that the prototype software satisfactorily performed
   the basic IDPR functions, we proceeded to test the software under
   changing network conditions.  The first of these tests showed that
   the IDPR prototype software was able to deal successfully with a
   component failure along a path.  To simulate a path component
   failure, we terminated the IDPR processes on a policy gateway in the
   transit domain, AD T1, traversed by the current path.  The policy
   gateways on either side of the failed policy gateway immediately
   detected the failure.  Next, these two policy gateways, representing
   two different domains, each issued a routing information message
   indicating the connectivity change and each initiated path teardown
   for its remaining path section.

   Once the path was torn down, the path agent agent in AD S requested a
   new route from its route server, to carry the existing telnet
   traffic.  The route server, having received the new routing
   information messages, proceeded to generate a policy route through
   the other transit domain, AD T2.  Then, the path agent in AD S set up
   a path for the new route supplied by the route server.  Throughout
   the component failure and traffic rerouting, the telnet session
   remained intact.

   At this point, we restored the failed policy gateway in AD T1 to the
   functional state, by restarting its IDPR processes.  The restored
   policy gateway connectivity prompted the generation and distribution
   of routing information messages indicating the change in domain
   connectivity.





Steenstrup                                                     [Page 11]


RFC 1477                         IDPR                          July 1993


   Having returned the internetwork topology to its initial
   configuration, we proceeded to test that the IDPR prototype software
   was able to deal successfully with transit policy reconfiguration.
   The current policy route carrying the telnet traffic traversed AD T2.
   We then reconfigured the transit policy for AD T2 to preclude access
   of traffic travelling from AD S to AD D.  The transit policy
   reconfiguration prompted both the distribution of routing information
   advertising the new transit policy for AD T2 and the initiation of
   path teardown.

   Once the path was torn down, the path agent in AD S requested a new
   route from its route server, to carry the existing telnet traffic.
   The route server, having received the new routing information
   message, proceeded to generate a policy route through the original
   transit domain, AD T1.  Then, the path agent in AD S set up a path
   for the new route supplied by the route server.  Throughout the
   policy reconfiguration and rerouting, the telnet session remained
   intact.

   This set of experiments, although simple, tested all of the major
   functionality of the IDPR prototype software and demonstrated that
   the prototype software could quickly and accurately adapt to changes
   in the internetwork.

7.1.3  Performance Analysis

   We (USC and SAIC members of the IDPR development group) evaluated the
   performance of the path setup and message forwarding portions of the
   IDPR prototype software.  For path setup, we measured the amount of
   processing required at the source path agent and at intermediate
   policy gateways during path setup.  For message forwarding, we
   compared the processing required at each policy gateway when using
   IDPR forwarding with IP encapsulation and when using only IP
   forwarding.  We also compared the processing required when no
   integrity/authentication value was calculated for the message and
   when the RSA/MD4 algorithms were employed.

   Our performance measurements were encouraging, but we have not listed
   them here.  We emphasize that although we tried to produce efficient
   software for the IDPR prototype, we were not able to devote much
   effort to optimizing this software.  Hence, the performance
   measurements for the IDPR prototype software should not be blindly
   extrapolated to other implementations of IDPR.  To obtain a copy of
   the performance measurements for path setup and message forwarding in
   the IDPR prototype software, contact Robert Woodburn
   (woody@sparta.com) and Deborah Estrin (estrin@usc.edu).





Steenstrup                                                     [Page 12]


RFC 1477                         IDPR                          July 1993


7.2  The Gated Version

   In 1992, SRI joined the IDPR development group, and together SRI,
   SAIC, and BBN completed the task of integrating IDPR into the gated
   UNIX process.  As a result, IDPR is now available as part of gated.
   The gated version of IDPR contains the full functionality of IDPR
   together with a simple yet versatile user interface for IDPR
   configuration.  As a single process, the gated version of IDPR
   performs more efficiently than the multiple-process prototype
   version.

   The gated version of IDPR is freely available to the Internet
   community.  Hence, anyone with a UNIX-based machine can experiment
   with IDPR, without investing any money or implementation effort.  By
   making IDPR widely accessible, we can gain Internet experience by
   introducing IDPR into operational networks with real usage
   constraints and transporting host traffic with real service
   requirements.  Currently, a pilot deployment and demonstration of
   IDPR is under way in selected locations in the Internet.

8.  Security Considerations

   Refer to section 4 for details on security in IDPR.

9.  Author's Address

   Martha Steenstrup
   BBN Systems and Technologies
   10 Moulton Street
   Cambridge, MA 02138

   Phone: (617) 873-3192
   Email: msteenst@bbn.com


















Steenstrup                                                     [Page 13]