home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 1100s / rfc1102.txt < prev    next >
Text File  |  1989-05-09  |  58KB  |  1,235 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           D. Clark
  8. Request for Comments: 1102        M.I.T. Laboratory for Computer Science
  9.                                                                 May 1989
  10.  
  11.  
  12.                   Policy Routing in Internet Protocols
  13.  
  14. 1. Status of this Memo
  15.  
  16.    The purpose of this RFC is to focus discussion on particular problems
  17.    in the Internet and possible methods of solution.  No proposed
  18.    solutions in this document are intended as standards for the
  19.    Internet.  Distribution of this memo is unlimited.
  20.  
  21. 2. Introduction
  22.  
  23.    An integral component of the Internet protocols is the routing
  24.    function, which determines the series of networks and gateways a
  25.    packet will traverse in passing from the source to the destination.
  26.    Although there have been a number of routing protocols used in the
  27.    Internet, they share the idea that one route should be selected out
  28.    of all available routes based on minimizing some measure of the
  29.    route, such as delay.  Recently, it has become important to select
  30.    routes in order to restrict the use of network resources to certain
  31.    classes of customers.  These considerations, which are usually
  32.    described as resource policies, are poorly enforced by the existing
  33.    technology in the Internet.  This document proposes an approach to
  34.    integrating policy controls into the Internet.
  35.  
  36.    I assume that the resources of the Internet: networks, links, and
  37.    gateways, are partitioned into Administrative Regions or ARs.  Each
  38.    AR is governed by a somewhat autonomous administration, with distinct
  39.    goals as to the class of customers it intends to serve, the qualities
  40.    of service it intends to deliver, and the means for recovering its
  41.    cost.  To construct a route across the Internet, a sequence of ARs
  42.    must be selected that collectively supply a path from the source to
  43.    the destination.  This sequence of ARs will be called a Policy Route,
  44.    or PR.  Each AR through which a Policy Route passes will be concerned
  45.    that the PR has been properly constructed.  To this end, each AR may
  46.    wish to insure that the user of the PR is authorized, the requested
  47.    quality of service is supported, and that the cost of the service can
  48.    be recovered.
  49.  
  50.    In the abstract, a Policy Route is a series of ARs, which are assumed
  51.    to be named with globally distinct identifiers.  (The requirement for
  52.    global names for ARs suggests that the name space of ARs is flat.
  53.    That simplifying assumption is made in this RFC, but it should be
  54.    possible to extend the scheme described here to permit nesting of ARs
  55.  
  56.  
  57.  
  58. Clark                                                           [Page 1]
  59.  
  60. RFC 1102          Policy Routing in Internet Protocols          May 1989
  61.  
  62.  
  63.    to reduce the amount of global information.  The problem of adding
  64.    structure to the space of ARs is an exercise for later study.)
  65.    Before a PR can be used, however, it must be reduced to more concrete
  66.    terms; a series of gateways which connect the sequence of ARs.  These
  67.    gateways will be called Policy Gateways.
  68.  
  69.    Presently, the closest mechanism to policy routing in the Internet is
  70.    EGP, the Exterior Gateway Protocol.  EGP was constructed to permit
  71.    regions of the Internet to communicate reachability information, even
  72.    though they did not totally share trust.  In this respect, the
  73.    regions hooked together by EGP could each be viewed as Administrative
  74.    Regions.  However, the mechanisms of EGP imposed a topological
  75.    restriction on the interconnection of the Administration Regions.  In
  76.    practice, this has proved unsatisfactory.  Policy matters are driven
  77.    by human concerns, and these have not turned out to be amenable to
  78.    topological constraints, or indeed to constraints of almost any sort.
  79.  
  80.    The proposals in this memo are designed to permit as wide a latitude
  81.    as possible in the construction and enforcement of policies.  In
  82.    particular, no topological restrictions are assumed.  In general, the
  83.    approach taken in this memo is driven by the belief that since
  84.    policies reflect human concerns, the system should primarily be
  85.    concerned with enforcement of policy, rather than synthesis of
  86.    policy.  The proposal permits both end points and transit services to
  87.    express and enforce local policy concerns.
  88.  
  89. 3. Policy Routes
  90.  
  91.    Almost all approaches to policy control share, to some degree, the
  92.    idea of a Policy Route.  The distinguishing component of a policy
  93.    approach is the procedure by which the Policy Route is synthesized.
  94.    One approach to synthesizing routes is to associate with each
  95.    distinct policy a subset of all the gateways in the system, and then
  96.    run a routing algorithm across the subset of the gateways.  This
  97.    approach has several drawbacks.  It requires a distinct routing
  98.    computation for every policy, which may be prohibitively expensive.
  99.    It requires the global agreement on the nature and scope of each
  100.    policy, which is at odds with the desire of Administrative Regions to
  101.    establish their own independent policy assertions.  Finally, it
  102.    almost inevitably implies a topological restriction on the
  103.    interconnection of regions.
  104.  
  105.    Another synthesis approach is to have each Policy Gateway examine
  106.    incoming packets and determine, based on local policy constraints,
  107.    the most appropriate next AR.  This approach might possibly work, but
  108.    again has several drawbacks.  First, it implies a substantial amount
  109.    of computation at each Policy Gateway.  More importantly, it removes
  110.    the route selection from the location where it would most naturally
  111.  
  112.  
  113.  
  114. Clark                                                           [Page 2]
  115.  
  116. RFC 1102          Policy Routing in Internet Protocols          May 1989
  117.  
  118.  
  119.    be executed, the end-points of the connection.
  120.  
  121.    It is useful to think of the interconnected ARs as a marketplace, in
  122.    which various services are offered and users select among these
  123.    services to obtain packet transport.  By this analogy, it seems
  124.    appropriate that the actual selection of the Policy Route should be
  125.    made by the end ARs desiring to send the packets, rather than by the
  126.    Policy Gateways.  Looking to the phone system for comparison, it is
  127.    the customer of the phone system who selects which of the long
  128.    distance carriers to use, whether to purchase a fixed price service
  129.    or pay incrementally for usage, and so on.  In this proposal,
  130.    therefore, Policy Routes are synthesized at the end point, where the
  131.    packet originates, and are attached to packets in order to direct
  132.    them through the appropriate series of ARs.  In other words, Policy
  133.    Routes are a form of source routing.  The role of synthesizing a
  134.    Policy Route is shared between the source AR and the particular
  135.    source host.
  136.  
  137.    In this architecture, therefore, the function of the Policy Gateway
  138.    is not to synthesize the Policy Route, but to verify it.  In the
  139.    following sections, we will address the two questions of how a Policy
  140.    Route is verified, and how a Policy Route is synthesized.
  141.  
  142.    In determining that Policy Routes should be synthesized at the end
  143.    point, it is important to distinguish between those aspects of
  144.    routing that reflect legitimate policy concerns, and those aspects of
  145.    routing which, in reality, relate to the detailed operation of the
  146.    ARs.  For example, if one were to represent Policy Routes using the
  147.    existing Internet source route mechanism, which allows the end point
  148.    to specify a series of gateways through which the packet should pass,
  149.    the result would be that too much function has been transferred from
  150.    the internals of the Internet to the end points.  The end point would
  151.    have to have knowledge of exactly which gateways are up and
  152.    operational at a particular moment, and this degree of knowledge
  153.    cannot be justified by policy concerns.  Further, it would be
  154.    necessary to run a systemwide gateway reachability protocol.
  155.  
  156.    This proposal attempts to strike a balance between end point
  157.    specification of those concerns legitimately related to policy, and
  158.    local determination in the Policy Gateways of the more specific
  159.    details necessary for reliable operation.  This leads to a two-level
  160.    routing model, in which the abstract Policy Route, a series of
  161.    administrative regions, is specified by the end point as a form of
  162.    source route, and each Policy Gateway selects the next actual Policy
  163.    Gateway that is to be used to forward this packet.  In other words,
  164.    the abstract Policy Route is made concrete incrementally.  This
  165.    division of function does require that the source AR know if there
  166.    are faults that have partitioned pairs of ARs that are normally
  167.  
  168.  
  169.  
  170. Clark                                                           [Page 3]
  171.  
  172. RFC 1102          Policy Routing in Internet Protocols          May 1989
  173.  
  174.  
  175.    connected together.  This implies a global reachability protocol to
  176.    be run for the purpose of providing information to the source AR, but
  177.    it need only concern itself at the level of ARs, not at the level of
  178.    gateways.  In a later section on cost-recovery, the topic of gateway
  179.    selection will be discussed in more detail.
  180.  
  181.    An objection to a scheme such as source routing is that the
  182.    potentially bulky source route must be in every packet, and must be
  183.    evaluated for each packet.  One solution to this performance problem
  184.    is to employ a limited form of route setup, in which the actual
  185.    Policy Route is carried only in the first packet of a sequence, and a
  186.    short identifier or "handle" is included in subsequent packets of the
  187.    sequence.  Each Policy Gateway evaluates the PR on first encounter,
  188.    and caches the result, which is then retrieved for later packets
  189.    using the handle in the packet.  The idea of a handle and caching,
  190.    and the need for a form of route setup, is discussed later.
  191.  
  192. 4. Verification of Policy Routes
  193.  
  194.    As a packet arrives at a Policy Gateway, attempting to enter an AR,
  195.    the Policy Gateway must decide whether it is legitimate to forward
  196.    this packet, and if so, at what next Policy Gateway the packet should
  197.    exit the AR (assuming that the final destination is not within the
  198.    AR).  The information available to the Policy Gateway to support its
  199.    decision determines the range of policies that can be enforced.
  200.    Determining what information is to be available is therefore a
  201.    central feature of our proposal.
  202.  
  203. 4.1. Identifying the User
  204.  
  205.    Classic routing decisions, those minimizing some cost, are typically
  206.    driven only by the destination of the packet.  At a minimum, policy
  207.    decisions must be based both on the source and the destination of the
  208.    packet.  In fact, source and destination addresses may not be
  209.    sufficient to determine policy, for an AR may support different users
  210.    with different rights, moreover a single user may wish to exercise
  211.    different rights at different times.  I suggest that to identify the
  212.    user who is proposing to use this particular Policy Route, it is
  213.    sufficient that the packets contain the source host and AR, the
  214.    destination host and AR, and, optionally, a User Class Identifier, or
  215.    UCI.  In a later section, I discuss how to prevent misuse of the user
  216.    class identifier.
  217.  
  218.    In fact, the source and destination host address may not be needed to
  219.    support the practical range of policy decisions required at
  220.    intermediate ARs.  Only the source and destination AR information may
  221.    be necessary.  If individual host addresses are to be used, that
  222.    implies that intermediate ARs will want to keep track of the rights
  223.  
  224.  
  225.  
  226. Clark                                                           [Page 4]
  227.  
  228. RFC 1102          Policy Routing in Internet Protocols          May 1989
  229.  
  230.  
  231.    of individual hosts.  It would be much simpler if the source AR could
  232.    be trusted to permit only the proper hosts to use certain PRs.  I
  233.    will consider this further in a later section when I discuss the role
  234.    of the Policy Controller.
  235.  
  236. 4.2. Verifying the Route
  237.  
  238.    The packet contains an abstract Policy Route: a series of AR
  239.    identifiers.  To validate this route, each Policy Gateway could store
  240.    the complete selection of acceptable policy routes, and require that
  241.    an incoming packet have a Policy Route that exactly matched one of
  242.    the stored entries.  This degree of constraint probably overspecifies
  243.    the situation, and causes an information explosion.  At the other end
  244.    of the scale, Policy Gateways could simply be sensitive to the source
  245.    AR and the destination AR.  In some cases, particularly as regards to
  246.    billing, this does not provide sufficient constraints.  This proposal
  247.    suggests that in deciding whether a given Policy Route is valid, a
  248.    Policy Gateway should look at the source and destination ARs, and
  249.    also the ARs immediately abutting the AR in question, called the
  250.    entry and exit ARs.
  251.  
  252.    One can think of the verification information in the Policy Gateway
  253.    as a number of templates.  Each template is associated with a valid
  254.    set of users, as described by the source and destination host address
  255.    and the optional User Class, and contains the four ARs described
  256.    above, Source, Destination, Exit, and Entry.  An incoming packet
  257.    should be forwarded if, and only if, there is a template matching the
  258.    information in the packet.  These templates will be called Policy
  259.    Terms.
  260.  
  261. 4.3. Conditions
  262.  
  263.    The Policy Terms, as described so far, do not permit the expression
  264.    of a realistic range of policies.  What is needed is the ability to
  265.    attach to a Policy Term a number of conditions, which describe
  266.    circumstances under which the term is valid.  These might include
  267.    what type of service (TOS) is available, what times of day the term
  268.    is valid, what accounting options are valid, and so on.  A time-of-
  269.    day condition, for example, would permit networks, like time-sharing
  270.    systems, to offer their off-peak capacity to a wider community.
  271.  
  272.    In general, these conditions could be quite arbitrary.  The important
  273.    constraint on these conditions is that any condition imposed by the
  274.    Policy Gateway must be understood by the end point, so that it can
  275.    generate Policy Routes which will conform to the condition.  If this
  276.    is not so, and the Policy Gateway attaches capricious conditions to
  277.    its policy terms, then the end points will construct Policy Routes in
  278.    good faith which are rejected, leading to a failure to obtain service
  279.  
  280.  
  281.  
  282. Clark                                                           [Page 5]
  283.  
  284. RFC 1102          Policy Routing in Internet Protocols          May 1989
  285.  
  286.  
  287.    and serious dissatisfaction among users.  For this reason, it is
  288.    necessary that the nature of policy conditions be negotiated in
  289.    advance.
  290.  
  291.    The most interesting and difficult conditions are those that relate
  292.    to the dynamic state of the network.  An excellent example is a
  293.    bilateral mutual aid agreement between two transit ARs in which each
  294.    agrees to carry the load of the other if the other should go down.
  295.    To capture this agreement, each might wish to put in Policy Terms
  296.    with the condition that they are valid only if some other AR is non-
  297.    functional.  In the earlier discussion of Policy Route synthesis, it
  298.    was necessary for the ARs to run a global up-down protocol to
  299.    describe the connectivity of ARs.  This protocol is sufficient to
  300.    allow the Policy Gateway to know that some other AR is non-
  301.    functional, but care is required in the dynamics of this system to
  302.    ensure that the end point in the PR have a consistent view of the
  303.    up-down status of the world.  Otherwise, there would be transient
  304.    service outages, which again would lead to user dissatisfaction.
  305.  
  306.    In general, this proposal asserts that policies should not be based
  307.    on highly dynamic phenomenon.  Administrative Regions should be
  308.    thought of as stable entities which do not change state rapidly.
  309.    Highly dynamic characteristics like queue length should be dealt with
  310.    by proper engineering internal to the AR.  Precisely because
  311.    conditions must be propagated globally, attempting to base a
  312.    condition on a highly dynamic parameter is liable to lead to system
  313.    instability.
  314.  
  315. 4.4. Ownership of Policy Gateways
  316.  
  317.    In Section 1, all the resources of the network were described as
  318.    being partitioned among the ARs.  This statement does not extend to
  319.    the Policy Gateways, which sit on the boundary between ARs.  Either
  320.    the Policy Gateway must be composed of two physical halves, connected
  321.    by a wire, or there must be a joint agreement for the ownership and
  322.    operation of the gateway.  This is a matter for further study.
  323.  
  324. 5. Examples of Policy Terms
  325.  
  326.    This section presents examples of how policy terms would be used to
  327.    express a range of practical policies.  In order to give examples, it
  328.    is necessary to define a notation for policy terms.  The following is
  329.    not necessarily the most compact form, but will be sufficient for
  330.    some simple examples.
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Clark                                                           [Page 6]
  339.  
  340. RFC 1102          Policy Routing in Internet Protocols          May 1989
  341.  
  342.  
  343.         A Policy Term will be expressed as follows:
  344.  
  345.         ((Hs,ARs,ARent),(Hd,ARd,ARexit),UCI,Cg)
  346.  
  347.    where:
  348.  
  349.         Hs is the source host address,
  350.         ARs is the source AR,
  351.         ARent is the entry AR,
  352.  
  353.  
  354.  
  355.    and these three values comprise the first "element" of the term,
  356.    describing the permitted access looking toward the source.
  357.    Similarly, for the destination, there is an element describing the
  358.    host address, the adjacent AR, and the ultimate AR.
  359.  
  360.    In addition to the two directional elements of the term, there is
  361.    global information:
  362.  
  363.         UCI is the User Class Id, and
  364.         Cg are any global conditions.
  365.  
  366.    In many cases, an element will not want to constrain one of the
  367.    values, and we will use the "*" symbol to indicate a "wild-card"
  368.    match.
  369.  
  370.    To construct some simple examples, here is a topology, where H
  371.    elements are hosts, G elements are Policy Gateways, and Numbered
  372.    elements are ARs.
  373.  
  374.       H1 ---  1 --- G1 -----  2 ------ G2 ----- 3 ----- H2
  375.               |                                 |
  376.               |                                 |
  377.               |                                 |
  378.               |---- G3 -----  4 ------ G4 ------|------ G5 --- 5
  379.                               |                                |
  380.                               |                                |
  381.                               |                               H4
  382.                               H3
  383.  
  384.    In this picture, there are four hosts, five gateways, and five
  385.    Administrative Regions.
  386.  
  387.    First, consider AR two.  It has no hosts attached, and models a
  388.    transit service, such as the NSF network.  It may have a very simple
  389.    policy: it will carry any traffic between universities, without
  390.    further constraint.  If we let AR1 and AR3 be the regions of two
  391.  
  392.  
  393.  
  394. Clark                                                           [Page 7]
  395.  
  396. RFC 1102          Policy Routing in Internet Protocols          May 1989
  397.  
  398.  
  399.    particular universities, then its policy term could be written as:
  400.  
  401.       AR2: ((*,1,*),(*,3,*),*,*).
  402.  
  403.    This says that AR 2 agrees to carry traffic from AR 1 to AR 3,
  404.    without concern as to the entry and exit AR, and for any hosts in
  405.    these ARs.
  406.  
  407.    This notation works, but is very bulky, as a new term is required for
  408.    every pair of universities.  There are several ways to compact the
  409.    notation.  First, we can use the * and a new symbol, "-", to broaden
  410.    the terms a bit.  For example:
  411.  
  412.       AR2: ((*,1,*),(*,*,-),*,*)
  413.  
  414.    would assert that AR 1 can use AR 2 to talk to any directly attached
  415.    AR, where we use the "-" to mean that the exit AR must be the
  416.    destination AR.  In other words, the destination AR must be directly
  417.    attached to AR2.  If AR 2 only attaches to universities, then this
  418.    would provide the proper constraint.
  419.  
  420.    Another approach is to use the User Class ID:
  421.  
  422.       AR2:((*,*,*),(*,*,*),University,*)
  423.  
  424.    says that any traffic of any sort that has the User Class of
  425.    University is acceptable.
  426.  
  427.    Another, and perhaps most suitable notation, is to observe that the
  428.    distinction between source and destination is actually artificial.
  429.    While it helps in this memo to have names for the two ends, either
  430.    end can be a source, depending on who sends the first packet. (A
  431.    later section explores the bi-directional nature of PRs).  A more
  432.    general form of a PR is thus to permit any number of elements.  That
  433.    is, a Policy Term can have more than two elements, and the meaning of
  434.    this is that a PR is valid if it uses any two of these.
  435.  
  436.    For example, if university 5 wanted to use the AR2 service, AR2 might
  437.    write a Policy term as follows:
  438.  
  439.       AR2:((*,1,*),(*,3,*),(*,5,*),*,*)
  440.  
  441.    which would permit a policy route between hosts in any two of the ARs
  442.    1, 3 and 5.
  443.  
  444.    All the terms so far relate to the policies of AR2.  If university 1
  445.    wanted to subscribe to this service, and use it to reach any other
  446.    site, it would specify terms of its own.  For example:
  447.  
  448.  
  449.  
  450. Clark                                                           [Page 8]
  451.  
  452. RFC 1102          Policy Routing in Internet Protocols          May 1989
  453.  
  454.  
  455.       AR1: ((*,1, -),(*,*,2),*,*).
  456.  
  457.    This term says that any host in AR 1 can use AR 2 as a path to any
  458.    host in any AR.  Again we use the "-" notation to indicate that the
  459.    entry AR is the same as the source AR, in this case the AR writing
  460.    the term.
  461.  
  462.    The ARs numbered 3 and 5 are more interesting.  While 3 is directly
  463.    attached to 2, 5 is not.  Instead, 5 has attached to 3.  If 3 wants
  464.    to use 2 for general transit service, it must provide a term similar
  465.    to the one provided by 1:
  466.  
  467.       AR3: ((*,3,-),(*,*,2),*,*).
  468.  
  469.    If 5 wants to use 2, more terms are required.  Since 2 is not
  470.    directly attached, it cannot be named as the exit AR in a term
  471.    written by 5.  The directly attached AR, 3, is all that can be named:
  472.  
  473.       AR5: ((*,5,-),(*,*,3),*,*).
  474.  
  475.    Then AR3 must agree to carry the transit traffic for 5.
  476.  
  477.       AR3: ((*,5,-),(*,*,2),*,*)
  478.  
  479.    AR3 might not want to carry all forms of transit traffic for 5, but
  480.    only of certain sorts or to certain locations.  This could be
  481.    expressed by restricting the previous term.  For example,
  482.  
  483.       AR3: ((*,5,-),(*,2,-),*,*)
  484.  
  485.    would permit traffic from 5 to cross 3 to reach 2, but only to hosts
  486.    directly in those ARs.
  487.  
  488.    For some further examples, consider AR 4, which might represent the
  489.    AR of a commercial user.  It connects together the hosts of that
  490.    user, for example, H3, and is connected to the other environment to
  491.    permit cross-communication.  Given the terms so far, no traffic will
  492.    flow into this AR.
  493.  
  494.    If AR 1 wants to permit communication with AR 4, it could add:
  495.  
  496.       AR1: ((*,1,-),(*,4,-),*,*)
  497.  
  498.    This would permit communication between hosts directly in each AR,
  499.    but no transit traffic.  In particular, H3 and H2 cannot talk.  There
  500.    are several different terms that would permit them to talk.
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Clark                                                           [Page 9]
  507.  
  508. RFC 1102          Policy Routing in Internet Protocols          May 1989
  509.  
  510.  
  511.    The direct path would be the following:
  512.  
  513.       AR4: ((*,4,-),(H2,3,-),*,*)
  514.       AR3: ((*,3,-),(H3,4,-),*,*).
  515.  
  516.    This would permit direct connection through G4.  Note, for variety,
  517.    that each term has been set up so that any host in the local AR can
  518.    match, but only one host in the other AR.  The combination happens to
  519.    permit only H3 and H2 to communicate.
  520.  
  521.    If G4 were not there, another path would be via AR 2, which could be
  522.    permitted by suitable terms in ARs 1,2,3 and 4.
  523.  
  524.    Even if G3 and G4 exist, no transit traffic will flow across AR 4
  525.    from 1 to 3.  Even if 1 and 3 want it to:
  526.  
  527.       AR1: ((*,1,-),(*,3,4),*,*) and
  528.       AR3: ((*,3,-),(*,1,4),*,*),
  529.  
  530.    the lack of a term for AR4 will prevent a valid PR via that path.
  531.    Only if AR 4 added:
  532.  
  533.       AR4:((*,1,-),(*,3,-),*,*)
  534.  
  535.    would AR 4 start serving AR a transit path from 1 to 3.
  536.  
  537.    If AR4 added:
  538.  
  539.    AR4: ((*,4,-),(*,*,*),*,*), any host in AR 4 could talk to any host
  540.    anywhere else, but AR 4 would still not become a transit service.
  541.  
  542.    These various examples demonstrate how individual ARs can offer
  543.    Policy Terms that can be combined to form a route.  The notation
  544.    proposed here is probably not adequate to express the needed range of
  545.    policies.  For example, it may be desirable to have lists of ARs as
  546.    part of a term, as well as single values and "*".  Other notation
  547.    might be proposed to permit exclusion of a limited set of ARs.  It
  548.    may also be appropriate to write elements that are directional, so
  549.    that connections can be "opened" in one direction but not in others.
  550.    This idea is vague in a connectionless architecture, but seems to
  551.    relate to some real policy requirements.
  552.  
  553.    In general, the problem of expressing policy terms in compact form is
  554.    the same as the problem of constructing compact access control lists.
  555.    There is still an ongoing argument whether access control lists
  556.    should be ordered, and should permit exclusion, and so on.  It would
  557.    seem that the exact same issues arise here. Some experience
  558.    attempting to express real policies may give guidance as to the
  559.  
  560.  
  561.  
  562. Clark                                                          [Page 10]
  563.  
  564. RFC 1102          Policy Routing in Internet Protocols          May 1989
  565.  
  566.  
  567.    expressive power needed.
  568.  
  569. 6. Cost Recovery
  570.  
  571.    Almost all of the existing Internet has been paid for as a capital
  572.    purchase and provided to the users as a free good.  There are limited
  573.    examples of cost recovery, but these are based on an annual
  574.    subscription fee rather than a charge related to the utilization.
  575.    There is a growing body of opinion which says that accounting for
  576.    usage, if not billing for it, is an important component of effective
  577.    resource management.  For this reason, tools for accounting and
  578.    billing must be a central part of any policy mechanism.  However,
  579.    precisely because the administrative regions are autonomous, we
  580.    cannot impose a uniform form of billing policy on all of the regions.
  581.    Some of them may continue to provide service freely, or on the basis
  582.    of an annual fee.  Others may charge on the basis of resources
  583.    consumed, but even here there may be variations in detail, as some
  584.    may charge by the packet and others may charge by the byte.  Again,
  585.    in the telephone analogy, we see a variety of billing policies, with
  586.    both local and long distance carriers selling service either on the
  587.    basis of a monthly fee or on a fee-per-minute of usage, with time of
  588.    day conditions attached.  The billing problem is thus a very
  589.    complicated one, for the user would presumably desire to minimize the
  590.    cost, in the context of the various outstanding conditions.
  591.  
  592.    If we are actually to pay for use of services, there is also the
  593.    problem of collection.  Using the current telephone system as an
  594.    example, there are two strategies for collecting revenues.  One is
  595.    the pre-divestiture mode, in which the source AR (or the destination
  596.    AR in the case of a collect call) serves as a single collection point
  597.    for all of the ARs involved in the call.  After divestiture, we see
  598.    another paradigm, in which the transit AR separately bills the
  599.    customer.
  600.  
  601.    There are many reasons to support both collection formats.  The
  602.    primary reason for separate billing is that not all regions may wish
  603.    to charge the user in the same units of currency.  Some regions may
  604.    wish to charge actual dollars, while others may wish to charge using
  605.    some form of private allocation units.  On the other hand, having a
  606.    single point of collection is very convenient, because it eliminates
  607.    a lot of duplicate effort in collection.  It does, however, require a
  608.    greater degree of trust and coordination among ARs.
  609.  
  610.    Single point collection also simplifies another sticky problem, lost
  611.    packets.  For most types of service, the user would presumably be
  612.    offended if asked to pay for a significant number of packets
  613.    undelivered because they have been lost before reaching the
  614.    destination.  If each region separately bills for its traffic, then
  615.  
  616.  
  617.  
  618. Clark                                                          [Page 11]
  619.  
  620. RFC 1102          Policy Routing in Internet Protocols          May 1989
  621.  
  622.  
  623.    to avoid billing for packets that are lost between that AR and the
  624.    destination, it is necessary to have some form of lost packet
  625.    reporting, which travels backward through system decrementing the
  626.    counters of all the intervening ARs.  If single point collection is
  627.    performed, then the usage meters can be put in the destination AR,
  628.    and periodically propagated to the billing AR, if that is a different
  629.    region.
  630.  
  631.    The discussion of lost packets makes clear an important relationship
  632.    between billing and policy.  If a Policy Route takes packets through
  633.    a region of known unreliability, the regions preceding it on the path
  634.    may be quite unwilling to forgive the charges for packets which have
  635.    successfully crossed their region, only to be lost further down the
  636.    route.  A billing policy is a way of asserting that one region wishes
  637.    to divorce itself from the reliability behavior of another region.
  638.    The conditions in the policy terms, and corresponding policy routes,
  639.    must therefore be able to capture two distinct conditions.  The first
  640.    is whether or not there exists a bilateral agreement between two ARs
  641.    by which one agrees to be the collection agent for the other.  The
  642.    concatenation of a number of these agreements permits a single
  643.    collection point to be used for the entire policy route.  The other
  644.    condition is whether or not the AR will accept packet and byte counts
  645.    from the next AR downstream as the basis of billing, or whether the
  646.    AR insists that the billing be based on the counts at the exit point
  647.    of this AR.  This condition allows an AR to build a wall between it
  648.    and a subsequent unreliable AR.  One can imagine certain regions
  649.    agreeing to carry traffic into unreliable regions, but only
  650.    grudgingly, knowing that the result is going to be user frustration
  651.    which may be directed to all the ARs indiscriminately.  The use of a
  652.    specific policy condition can make clear to the end user which ARs do
  653.    not view themselves as interworking harmoniously.
  654.  
  655.    To enforce these mechanisms, the abstract PR which is included in the
  656.    packet must be augmented with a number of conditions.  First, for
  657.    each AR there is a 3-way flag which describes whether the billing
  658.    should be separately collected for the region, propagated back to the
  659.    source (which corresponds to the normal telephone company paradigm),
  660.    or propagated towards the destination (which corresponds to a collect
  661.    call).  Second, there is a flag which indicates whether the region is
  662.    expected to accept from the next region downstream the packet and
  663.    byte counts as the basis of billing.  Third, there must be a charge
  664.    code, a unique number somewhat resembling a credit card number to
  665.    which bills may be sent.  The Policy Terms in the Gateways must
  666.    similarly be augmented to permit verification.  The management of the
  667.    charge code, insuring its uniqueness and preventing its abuse, is
  668.    discussed later.
  669.  
  670.    These conditions, which relate to agreements between two ARs, are
  671.  
  672.  
  673.  
  674. Clark                                                          [Page 12]
  675.  
  676. RFC 1102          Policy Routing in Internet Protocols          May 1989
  677.  
  678.  
  679.    somewhat different from the conditions previously discussed, such as
  680.    time of day.  Conditions relating to AR agreements will be called
  681.    "bilateral conditions," while the others are called "global
  682.    conditions."  Note that even though bilateral conditions relate to
  683.    the agreement between two ARs, they can have global effects.
  684.  
  685. 7. Gateway Selection
  686.  
  687.    In Section Two, this memo proposed that the end point should specify
  688.    an abstract Policy Route, as a series of ARs, and the Policy Gateway
  689.    at the entry to each AR should convert the next hop to a concrete
  690.    route, selecting the Policy Gateway to exit from this region into the
  691.    next.  It turns out that this selection is not entirely devoid of
  692.    policy concerns, and some additional conditions are required in the
  693.    Policy Terms in order to make this operate properly.
  694.  
  695.    In order that each Policy Gateway be able to select the next Policy
  696.    Gateway on the route, it is necessary to have a table which lists all
  697.    of the potential Policy Gateways that connect together adjacent
  698.    regions.  Presumably, this information is very slowly changing, and
  699.    is not difficult to propagate.  The more dynamic information that is
  700.    needed is whether each of these gateways is up.  It is therefore
  701.    necessary that all of the Policy Gateways attached to a given AR must
  702.    run a local up-down algorithm, one which hopefully can determine not
  703.    only that each of the other gateways is up, but that its interfaces
  704.    are up and that it is properly forwarding traffic.  It is slightly
  705.    complicated to design such a test.  However, we do not have to design
  706.    a strategy for propagating this information globally, because it is
  707.    only needed by the other Policy Gateways attached to each region.
  708.  
  709.    The policy matter related to concrete routes arises if there are
  710.    several gateways connecting two administrative regions.  As described
  711.    so far, the exit Policy Gateway from any region (which is the entry
  712.    Policy Gateway for the next region) is selected by the entry Policy
  713.    Gateway for that region.  In other words, each region may select its
  714.    exit gateway, but has no control over its entry gateway.  There are
  715.    certain circumstances where a particular region might insist on being
  716.    able to control the entry gateway used.  Imagine two parallel transit
  717.    regions, one which charges incrementally for service, the other of
  718.    which provides its service as a free good.  Obviously, from the point
  719.    of view of the user, it is desirable to minimize the use of the
  720.    charging AR, and maximize the use of the free AR.  But this may lead
  721.    to gross overloads in the free AR, and apparent discrimination
  722.    against the charging AR.  The owner of the free AR, therefore, might
  723.    choose to impose a policy which says that it can be used only to
  724.    reach certain points which are not directly connected to the AR which
  725.    bills for its service, and the traffic must enter the free AR at the
  726.    closest point to the destination.  In other words, the free AR
  727.  
  728.  
  729.  
  730. Clark                                                          [Page 13]
  731.  
  732. RFC 1102          Policy Routing in Internet Protocols          May 1989
  733.  
  734.  
  735.    requires that it be allowed to choose its entry gateway so that it
  736.    minimizes its costs (which are not, in fact, being billed), with the
  737.    intent of shifting as much as possible of the cost onto the other
  738.    network.
  739.  
  740.    By adding more bilateral conditions to the Policy Terms and the
  741.    Policy Route in the packet, it is possible to control the various
  742.    options for Policy Gateway selection.  At each boundary between ARs,
  743.    there are only a limited number of ways to select the Policy Gateway.
  744.    Either it is selected by the entry side, by the exit side, or by some
  745.    collaborative algorithm specified through a bilateral agreement.
  746.    (There might be several such algorithms, which requires the
  747.    possibility of more complexity in the specification.  In particular,
  748.    if two adjacent ARs have agreed to use a common routing metric for
  749.    some type of service, they may agree to make a common routing based
  750.    on this metric.)
  751.  
  752.    Allowing the policy gateway to be selected by the AR which is on the
  753.    far side of the gateway represents an interesting implementation
  754.    problem.  It would be possible to send some message in advance of the
  755.    packet, which requests the next AR to select its entry gateway.  To
  756.    do this, it would figure out what its exit gateway would be, and then
  757.    figure backwards to minimize its costs (for example) to select the
  758.    potential entry gateway back into the immediate region.  This is
  759.    complicated to describe, and would probably be complicated to
  760.    implement.  One way to focus the problem is to observe that routes
  761.    are bi-directional, because a packet flow is bi-directional, and it
  762.    is very desirable that the packets from both directions follow the
  763.    same route.  Once a packet has come back along the reverse route, the
  764.    gateway from which it emerges is precisely the gateway which should
  765.    be used for future traffic in the other direction.  But each gateway,
  766.    in either the forward or reverse direction, must remember a decision
  767.    made by another AR.
  768.  
  769.    For this to work it is necessary that gateways not be stateless.  If
  770.    each Policy Gateway maintains a cache of recently computed Policy
  771.    Routes, in particular remembering the result of computing the gateway
  772.    for each abstract route, then by simply determining whether or not
  773.    the forward direction or the reverse direction is allowed to
  774.    constrain the gateway across this boundary, both policies can be
  775.    enforced.  But this requires building gateways with state, which has
  776.    not been culturally acceptable in the Internet.  I therefore consider
  777.    as a separate topic the virtues of state in Policy Gateways. I
  778.    believe that fairly simple algorithms exist to set up the required
  779.    bindings in the Policy Gateways, but that problem is a matter for
  780.    later study.
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Clark                                                          [Page 14]
  787.  
  788. RFC 1102          Policy Routing in Internet Protocols          May 1989
  789.  
  790.  
  791. 8. Flow States
  792.  
  793.    The previous section suggested that the gateway needed to maintain
  794.    state in order to tie together the forward and reverse halves of a
  795.    flow.  This solved the particular problem of tying together the
  796.    routing decision which had been made in each direction, so that they
  797.    could be used in the other.  There are, in fact, a number of reasons
  798.    why the two halves of the flow should be tied together.
  799.  
  800.    - There is considerable overhead in accounting and collecting for the
  801.      usage.  It is clearly desirable to have both halves of the flow
  802.      metered jointly.
  803.  
  804.    - If the route is not bi-directional, then a failure in the node
  805.      produces a uni-directional link.  Uni-directional links are known
  806.      to cause anomalous behavior in protocols.
  807.  
  808.    - As part of resource management, it may be desirable for
  809.      intermediate nodes to pass flow control information back to the
  810.      source of the flow.  If identifiable reverse-direction packets
  811.      are passing through the gateway, then this information can be
  812.      piggy-backed onto those packets.
  813.  
  814.    An additional advantage of maintaining state in the gateway is that
  815.    it will greatly reduce the overhead of dealing with incoming packets.
  816.    There are a number of decisions which the Policy Gateway must make
  817.    which are a part of forwarding a packet: it must validate the Policy
  818.    Route against its terms, it must create or modify an accounting
  819.    record, and it must select the next Policy Gateway.  It is
  820.    unreasonable to imagine performing these tasks from scratch for each
  821.    incoming packet.  Once these decisions have been made, the results
  822.    should be cached, so that they can be used for subsequent packets.
  823.  
  824.    The stateless gateway was proposed as part of the Internet design in
  825.    order to insure a robust architecture.  If the gateway has no state,
  826.    then a crash of a gateway cannot endanger an on-going connection.  If
  827.    there is state in a gateway, and that state information is lost
  828.    because of a crash, then it is possible that a flow would be
  829.    disrupted.
  830.  
  831.    In moving from a gateway with no state to a gateway which caches
  832.    information, it is necessary to ensure that the cached information
  833.    can be lost and reconstructed.  The idea of keeping in gateways only
  834.    that state which can be easily reconstructed I call "soft state."
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Clark                                                          [Page 15]
  843.  
  844. RFC 1102          Policy Routing in Internet Protocols          May 1989
  845.  
  846.  
  847. 9. Synthesis and Selection of Policy Routes
  848.  
  849.    In this proposal, a packet contains a Policy Route, which is verified
  850.    by each Policy Gateway along the way.  This section discusses how the
  851.    Policy Route is created in the first place.
  852.  
  853.    PR creation cannot be done totally automatically by the system, but
  854.    will in general require human judgment.  Policies, after all, are
  855.    matters of human concern.  The approach to PR creation is thus a
  856.    joint one, in which the system provides support to the persons
  857.    setting policy.
  858.  
  859.    Most commonly, the desired PR will be selected from among those
  860.    available by first finding all valid PRs, and then picking one that
  861.    meets the requirements of the user and has the lowest real cost.
  862.    These two stages will be called synthesis and selection.
  863.  
  864.    To synthesize a PR across a sequence of ARs, one must find a Policy
  865.    Term in each AR that would permit such a PR.  The Policy Terms in
  866.    each adjacent AR must be compatible in their billing conditions and
  867.    other particulars.  One can imagine finding a sequence of Policy
  868.    Terms that match, rather like dominoes, and reach from the source to
  869.    the destination.
  870.  
  871.    For a Policy Term at some AR to be acceptable as a part of a PR, the
  872.    following must be true:
  873.  
  874.    - The Source and Destination Host address and UCI must match the
  875.      term,
  876.  
  877.    - The Source and Destination AR must match the term,
  878.  
  879.    - The Entry and Exit AR must match the adjacent AR in the route,
  880.  
  881.    - The conditions in the term relating to the adjacent AR (e.g.,
  882.      billing) must match the conditions in the term from that region.
  883.  
  884.    These conditions, of course, are exactly what the Policy Gateway
  885.    would test in validating the PR when it is used.
  886.  
  887.    As the route is synthesized from matching terms, the global
  888.    conditions of each term are noted, and the combination of these
  889.    become the condition under which the PR is valid.  As a starting
  890.    point of the synthesis the user may have indicated constraints on the
  891.    acceptable conditions in order to limit the candidate terms in the
  892.    synthesis.
  893.  
  894.    The result of PR synthesis, which is somewhat similar to the
  895.  
  896.  
  897.  
  898. Clark                                                          [Page 16]
  899.  
  900. RFC 1102          Policy Routing in Internet Protocols          May 1989
  901.  
  902.  
  903.    computation in a link-state routing algorithm where each Policy Term
  904.    represents an abstract link, is a potentially long list of possible
  905.    PRs to each destination AR, each with attached conditions.  The
  906.    selection process must identify one of these which is actually to be
  907.    used.  The selection can be based on the conditions, and on the cost
  908.    of each PR.
  909.  
  910.    To determine the cost, it must be possible to ask each AR to identify
  911.    the cost of using that Policy Term in the context of this particular
  912.    set of Entry and Exit ARs.  Either there must be an architected
  913.    protocol for reporting these costs, or the task of cost determination
  914.    must be left to humans to perform outside the system.  The problem
  915.    with architected cost reporting is that while some ARs may bill using
  916.    real dollars, others may bill in terms of abstract usage
  917.    authorizations which have no meaning outside that AR.  Even so, I
  918.    believe that we should attempt to define a representation for
  919.    reporting the billing basis associated with each AR.  This is a
  920.    matter for later study.
  921.  
  922.    While PR synthesis may be an automated process, selection probably is
  923.    not.  While cost minimization will help prune the list, and some
  924.    routes may be rejected automatically on the basis of conditions, part
  925.    of the selection will in general require human judgment.  This
  926.    observation, together with the observation that PR synthesis may be
  927.    costly, suggests first that synthesis and selection cannot be done
  928.    for each packet or indeed each time a transport connection is
  929.    established, and second that it should not be done separately for
  930.    each host in the AR.
  931.  
  932.    Instead, each AR should have one (or more) Policy Servers, servers
  933.    inside the AR which support the management of PRs.  The Policy Server
  934.    would perform a number of functions.
  935.  
  936.    - It would store the Policy Terms for the AR, and make them available
  937.      to the Policy Gateways and the Servers of other ARs as appropriate.
  938.  
  939.    - It would synthesize potential PRs to reach other ARs, and remember
  940.      which of these have been selected for use.
  941.  
  942.    - It will respond to requests from hosts in the AR for PRs, and
  943.      return them so that they can be included in outgoing packets.
  944.  
  945.    - It will participate on behalf of the AR in AR up-down protocols,
  946.      and other inter-AR routing algorithms.
  947.  
  948.    - It will remember the location of all Policy Gateways attached to
  949.      this AR.
  950.  
  951.  
  952.  
  953.  
  954. Clark                                                          [Page 17]
  955.  
  956. RFC 1102          Policy Routing in Internet Protocols          May 1989
  957.  
  958.  
  959.    - It will provide the management interface for those persons who must
  960.      establish AR policy: setting of local Policy Terms, selection of
  961.      Policy Routes, and so on.
  962.  
  963.    A host wishing to send packets outside the local AR must first obtain
  964.    a PR to put into the packets.  In the normal case, it would do so by
  965.    directing a request to the local Policy Server, supplying the desired
  966.    destination and other negotiable conditions.  (For example, the TOS
  967.    is negotiable, the current time is not.)  The Server, based on this
  968.    input, must select the most appropriate PR and return it.
  969.  
  970.    At this point in the process, human intervention is not reasonable,
  971.    as it would take much too long.  By now, sufficient selection must
  972.    have been done so that automated PR selection is possible.  The most
  973.    direct implementation is that the manual selection process should
  974.    yield an ordered (or partially ordered) list of potential PRs, and
  975.    the list is searched in order until a PR is found that matches the
  976.    destination and conditions.  That PR is then returned.
  977.  
  978. 10. Security
  979.  
  980.    There are a number of aspects of this scheme which present
  981.    opportunities for abuse.  In essentially all cases, the possible
  982.    abuse is theft of network resources or improper charging.  They thus
  983.    have a somewhat different nature than problems related to corruption
  984.    or disclosure of data.  Mechanism to insure proper use and charging
  985.    of resources often tolerate minor abuse in exchange for ease of
  986.    operation.  Also, control is often based on detection and recovery
  987.    rather than prevention.  Assumptions of this sort are probably
  988.    acceptable here as well.  An isolated packet, which is not a part of
  989.    any sequence of packets, may be too small an item to account for or
  990.    control.  But if a significant stream of packets goes unaccounted,
  991.    this is less acceptable.
  992.  
  993.    There are three general options for abuse.  One is to falsify the
  994.    user identification information in the PR, the source and destination
  995.    host, the User Class Id and the charge code.  Another is to take a
  996.    valid PR and misuse it intact.  And the third is to read out a valid
  997.    charge code from a PR and then make additional charges against it.
  998.  
  999.    To protect against putting false user identification information into
  1000.    a PR, the PRs should be sealed or signed, using a crypto sealing
  1001.    technique.  Since Policy Servers are the source of PRs, the sealing
  1002.    can be done by the Server.  This would require that the seal or
  1003.    digital signature of each Server be known, but avoids the need to
  1004.    have each host known.  The Server would be trusted to seal only valid
  1005.    PRs.  It must only put User Class Ids and charge codes into PRs from
  1006.    a source permitted to use them, for example.
  1007.  
  1008.  
  1009.  
  1010. Clark                                                          [Page 18]
  1011.  
  1012. RFC 1102          Policy Routing in Internet Protocols          May 1989
  1013.  
  1014.  
  1015.    Assuming a public key system, each Policy Server could have a
  1016.    separate key pair, the public half of which was advertised in some
  1017.    way.  It is a matter for further study exactly what parts of the PR
  1018.    need be sealed.
  1019.  
  1020.    If the Policy Server violates this trust, and uses a UCI or charge
  1021.    code with an unauthorized host, there are two sub-cases: the false
  1022.    source host is in the same AS, or is outside it.  If it is outside,
  1023.    this can be detected by inspection of the PR, since the relation
  1024.    between AR and network number is (almost) static.  One approach is to
  1025.    make an AR identifier part of the charge code, so that use of the
  1026.    code can be rejected unless that AR is the source AR for the packet.
  1027.    This works, but prevents using charge codes from a foreign location.
  1028.    Other more general techniques could probably be proposed.
  1029.  
  1030.    If the false source host is inside the AR, then further steps are
  1031.    required to prevent the problem.  One general solution is to note
  1032.    that a PR is valid only if sealed by a Policy Server.  Any AR
  1033.    attempting to collect for usage should be required to keep a copy of
  1034.    the PR as proof that the route was used.  If there seems to be
  1035.    unauthorized use of a charge code, the owner can ask to see the PR
  1036.    which generated the charge, which will show the Policy Server which
  1037.    constructed the route.  If this is an unauthorized use, action can be
  1038.    taken against the AR owning that Server, with the sealed PR as
  1039.    evidence. In other words, detection and redress may be more effective
  1040.    than prevention.
  1041.  
  1042.    If we can assume that the Policy Server for a particular region is as
  1043.    trustworthy as that AR requires, there is still the problem of a
  1044.    Server of one region trying to steal from another AR.  This could be
  1045.    done, for example, by taking a valid PR, and sending data forward
  1046.    along it from the "middle" of the route, so that what appears to be
  1047.    coming from one source is actually coming from another in a different
  1048.    AR.
  1049.  
  1050.    This would require that packets coming back along the route towards
  1051.    the original source be rerouted to the false source, which would
  1052.    require that the whole routing function within the AR be corrupted.
  1053.    It is unlikely that this would go long undetected, but if direct
  1054.    control of this class of fraud is needed, it could be achieved by
  1055.    requiring any AR intending to charge against a particular PR to
  1056.    obtain from time to time a confirmation, sealed by the Server of the
  1057.    source AR, that its policy gateway has in fact forwarded some number
  1058.    of packets using this PR. This sort of function is probably overkill,
  1059.    but this class of fraud needs to be considered.
  1060.  
  1061.    Obviously, a more detailed study will be required of the problem of
  1062.    resource theft, but I believe that a mechanism can be made to work
  1063.  
  1064.  
  1065.  
  1066. Clark                                                          [Page 19]
  1067.  
  1068. RFC 1102          Policy Routing in Internet Protocols          May 1989
  1069.  
  1070.  
  1071.    based on:
  1072.  
  1073.    - Local trust of the Policy Server within each AR.
  1074.  
  1075.    - Sealing of the PR by the Server.
  1076.  
  1077.    - Selective validation of the seal at the Policy Gateway.
  1078.  
  1079.    - Selective consistency checking of the PR at the Policy Gateway.
  1080.  
  1081.    - Use of seal on PR as evidence of the source of the PR.
  1082.  
  1083. 11. An Experimental Program -- Migration to Policy Routing
  1084.  
  1085.    The proposal above calls for several Internet components not present
  1086.    today: the Policy Route IP option, Policy Gateways, Policy Servers,
  1087.    and support protocols such as the global AS up-down protocol and the
  1088.    local (to the AS) Policy Gateway up-down protocol.  Any plan for
  1089.    introduction of policy routing must provide a method to experiment
  1090.    with the concept without changing all the hosts and the gateways now
  1091.    in place.
  1092.  
  1093.    Since the Policy Server is a new component which can be added to the
  1094.    Internet without changing any existing components, it is easy to put
  1095.    that facility in place.  This, then, becomes the central part of an
  1096.    experimental plan. Later, it is possible to imagine adding the policy
  1097.    controls to some of the gateways.  Most difficult will be modifying
  1098.    all the hosts to use the PR IP option.  Based on our experience with
  1099.    adding minor features such as IP subnetworks, it will never be
  1100.    possible to get the PR option into all the hosts, and policy routing
  1101.    must be made to work anyway.
  1102.  
  1103.    Taking into account these difficulties, here is a concrete
  1104.    experimental plan, in three phases.
  1105.  
  1106.    In Phase I, software for a Policy Server is created, and made
  1107.    available to all potential ARs.  As a part of its function, it has
  1108.    two "temporary" feature, to mimic the function of the missing host
  1109.    and gateway support.
  1110.  
  1111.    To mimic the function of the policy gateway, two policy Servers are
  1112.    placed "near" a current function gateway which happens to connect the
  1113.    two ARs, one on each side of the current gateway, and representing
  1114.    their respective ARs.  These two Servers then proceed to fool the
  1115.    current gateway as follows.
  1116.  
  1117.    - The current gateway is given the two Servers as neighbors in its
  1118.      routing exchanges.  In this way, the Servers can control which
  1119.  
  1120.  
  1121.  
  1122. Clark                                                          [Page 20]
  1123.  
  1124. RFC 1102          Policy Routing in Internet Protocols          May 1989
  1125.  
  1126.  
  1127.      network numbers are advertised.  This is similar to the way "gated"
  1128.      is used today to control routes.
  1129.  
  1130.    - A packet entering the AR is directed to the "near" Server inside
  1131.      the AR, which performs the functions of the Policy Gateway and
  1132.      then resends the packet.  This may require the use of a regular
  1133.      source route in some cases, but can probably just be done by
  1134.      rewriting the destination IP address in the packet.  (Note that
  1135.      the IP PR option proposed in the Appendix has fields for the
  1136.      original IP source and destination, so that these fields can be
  1137.      reused in forwarding the packet from gateway to gateway.)
  1138.  
  1139.    To deal with the lack of host support for the PR option, we again
  1140.    make use of the Server.  Since the Server is the recipient of all
  1141.    routing information coming into the AR (since it has been set up as
  1142.    the neighbor of the current gateway at the actual AR boundary) it
  1143.    alone knows the proper routes out.  Internally, it advertises itself
  1144.    as the default gateway to all networks outside the AR, so that it
  1145.    receives all the packets intending to leave the region.  It, rather
  1146.    than the host, adds the PR option and then sends the packet on the
  1147.    Policy Gateway (or the matching Server in the next AR playing its
  1148.    part) for relaying.
  1149.  
  1150.    By controlling how routes are propagated by the regular gateways, it
  1151.    is possible to prevent hosts from manually setting up routes to
  1152.    bypass the Servers.  In any event, enforcement is not the primary
  1153.    concern in Phase I of the experiment.
  1154.  
  1155.    In Phase II, certain of the current gateways are augmented with the
  1156.    Policy Gateway functions.  This will make enforcement easier, and
  1157.    eliminate the extra hop which the packet had make in Phase I, as it
  1158.    passed from one Server to another through the current gateway.  At
  1159.    the same time, some of the hosts are modified to insert the IP PR
  1160.    option into the packet at the source.  This will explore the problems
  1161.    of PR selection.
  1162.  
  1163.    In Phase III, the PR design is proposed for general implementation.
  1164.  
  1165. 12. Policy Route Setup
  1166.  
  1167.    One objection to this scheme is the large size of the IP PR option.
  1168.    With all the information proposed in this memo, it is larger than the
  1169.    IP header itself.  However, this problem can easily be avoided; the
  1170.    PR option seldom need be sent.
  1171.  
  1172.    Since the Policy Gateways are going to cache the result of processing
  1173.    the PR, the cache holds the equivalent of the PR.  All that is
  1174.    required is a very short option in the packet which is a handle that
  1175.  
  1176.  
  1177.  
  1178. Clark                                                          [Page 21]
  1179.  
  1180. RFC 1102          Policy Routing in Internet Protocols          May 1989
  1181.  
  1182.  
  1183.    permits the gateway to find the correct cache entry.  This handle
  1184.    would be included in the original IP PR option, and then repeated in
  1185.    every packet.  The Policy Server which generated the PR could select
  1186.    the handle, so it would be unique for each AR.  Perhaps the AR id and
  1187.    a 16 bit UID would be sufficient.
  1188.  
  1189.    The full PR option needs to be in the packet only if the cached
  1190.    Information in the gateway is lost.  If a gateway crashes or the
  1191.    route changes, the end point must reconstruct the caches in the
  1192.    series of gateways that form the route.  The end point could
  1193.    determine that this was necessary either when a gateway reports
  1194.    explicitly that it does not have an entry corresponding to a handle,
  1195.    or when the host determines that it is not getting the desired
  1196.    service.
  1197.  
  1198.    This sort of action can be thought of as an extension to the idea of
  1199.    retransmitting.  In transport protocols such as TCP, the host keeps
  1200.    track of the behavior of the network, and if it believes that
  1201.    something is wrong (e.g., there is a lack of an acknowledgment), it
  1202.    takes action to restore the desired service.  Other examples include
  1203.    switching to another gateway if the currently active adjacent gateway
  1204.    seems to be down.  Sending the full PR option in the packet is just
  1205.    another example of allowing the end node to restore the state of the
  1206.    connection if it seems to be broken.
  1207.  
  1208.    Using this model, most packets would have only a short option
  1209.    (perhaps 12 bytes).
  1210.  
  1211.    This idea of restoring the state in the gateway as needed achieves
  1212.    the idea of "soft state" mentioned earlier, and allows gateways with
  1213.    state to achieve the same robustness associated with datagram
  1214.    networks.
  1215.  
  1216. Author's Address
  1217.  
  1218.    David D. Clark
  1219.    Massachusetts Institute of Technology
  1220.    Laboratory for Computer Science
  1221.    545 Main Street
  1222.    Cambridge, MA 02139
  1223.  
  1224.    Phone: (617) 253-6003
  1225.  
  1226.    Email: ddc@LCS.MIT.EDU
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Clark                                                          [Page 22]
  1235.