home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2650.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  55.4 KB  |  1,460 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           D. Meyer
  8. Request for Comments: 2650                                 Cisco Systems
  9. Category: Informational                                       J. Schmitz
  10.                                                          America On-Line
  11.                                                                C. Orange
  12.                                                                 RIPE NCC
  13.                                                                 M. Prior
  14.                                                                  Connect
  15.                                                          C. Alaettinoglu
  16.                                                                  USC/ISI
  17.                                                              August 1999
  18.  
  19.  
  20.                          Using RPSL in Practice
  21.  
  22. Status of this Memo
  23.  
  24.    This memo provides information for the Internet community.  It does
  25.    not specify an Internet standard of any kind.  Distribution of this
  26.    memo is unlimited.
  27.  
  28. Copyright Notice
  29.  
  30.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  31.  
  32. Abstract
  33.  
  34.    This document is a tutorial on using the Routing Policy Specification
  35.    Language (RPSL) to describe routing policies in the Internet Routing
  36.    Registry (IRR). We explain how to specify various routing policies
  37.    and configurations using RPSL, how to register these policies in the
  38.    IRR, and how to analyze them using the routing policy analysis tools,
  39.    for example to generate vendor specific router configurations.
  40.  
  41. 1 Introduction
  42.  
  43.    This document is a tutorial on RPSL and is targeted towards an
  44.    Internet/Network Service Provider (ISP/NSP) engineer who understands
  45.    Internet routing, but is new to RPSL and to the IRR. Readers are
  46.    referred to the RPSL reference document (RFC 2622) [1] for
  47.    completeness.  It is also good to have that document at hand while
  48.    working through this tutorial.
  49.  
  50.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  51.    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  52.    document are to be interpreted as described in RFC 2119.
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Meyer, et al.                Informational                      [Page 1]
  59.  
  60. RFC 2650                 Using RPSL in Practice              August 1999
  61.  
  62.  
  63.    The IRR is a repository of routing policies.  Currently, the IRR
  64.    repository is a set of five repositories maintained at the following
  65.    sites:  the CA*Net registry in Canada, the ANS, CW and RADB
  66.    registries in the United States of America, and the RIPE registry in
  67.    Europe.  The five repositories are run independently.  However, each
  68.    site exchanges its data with the others regularly (at least once a
  69.    day and as often as every ten minutes).  CW, CA*Net and ANS are
  70.    private registries which contain the routing policies of the networks
  71.    and the customer networks of CW, CA*Net, and ANS respectively.  RADB
  72.    and RIPE are both public registries, and any ISP can publish their
  73.    policies in these registries.
  74.  
  75.    The registries all maintain up-to-date copies of one another's data.
  76.    At any of the sites, the five registries can be inspected as a set.
  77.    One should refrain from registering his/her data in more than one of
  78.    the registries, as this practice leads almost invariably to
  79.    inconsistencies in the data.  The user trying to interpret the data
  80.    is left in a confusing (at best) situation.  CW, ANS and CA*Net
  81.    customers are generally required to register their policies in their
  82.    provider's registry.  Others may register policies either at the RIPE
  83.    or RADB registry, as preferred.
  84.  
  85.    RPSL is based on RIPE-181 [2, 3], a language used to register routing
  86.    policies and configurations in the IRR. Operational use of RIPE-181
  87.    has shown that it is sometimes difficult (or impossible) to express a
  88.    routing policy which is used in practice.  RPSL has been developed to
  89.    address these shortcomings and to provide a language which can be
  90.    further extended as the need arises.  RPSL obsoletes RIPE-181.
  91.  
  92.    RPSL constructs are expressed in one or more database "objects" which
  93.    are registered in one of the registries described above.  Each
  94.    database object contains some routing policy information and some
  95.    necessary administrative data.  For example, an address prefix routed
  96.    in the inter-domain mesh is specified in a route object, and the
  97.    peering policies of an AS are specified in an aut-num object.  The
  98.    database objects are related to each other by reference.  For
  99.    example, a route object must refer to the aut-num object for the AS
  100.    in which it is originated.  Implicitly, these relationships define
  101.    sets of objects, which can be used to specify policies effecting all
  102.    members.  For example, we can specify a policy for all routes of an
  103.    ISP, by referring to the AS number in which the routes are registered
  104.    to be originated.
  105.  
  106.    When objects are registered in the IRR, they become available for
  107.    others to query using a whois service.  Figure 1 illustrates the use
  108.    of the whois command to obtain the route object for 128.223.0.0/16.
  109.    The output of the whois command is the ASCII representation of the
  110.    route object.  The syntax and semantics of the route object are
  111.  
  112.  
  113.  
  114. Meyer, et al.                Informational                      [Page 2]
  115.  
  116. RFC 2650                 Using RPSL in Practice              August 1999
  117.  
  118.  
  119.    described in Appendix A.3.  Registered policies can also be compared
  120.    with others for consistency and they can be used to diagnose
  121.    operational routing problems in the Internet.
  122.  
  123.       % whois -h whois.ra.net 128.223.0.0/16
  124.         route:       128.223.0.0/16
  125.         descr:       UONet
  126.         descr:       University of Oregon
  127.         descr:       Computing Center
  128.         descr:       Eugene, OR 97403-1212
  129.         descr:       USA
  130.         origin:      AS3582
  131.         mnt-by:      MAINT-AS3582
  132.         changed:     meyer@ns.uoregon.edu 19960222
  133.         source:      RADB
  134.  
  135.       Figure 1:  whois command and a route object.
  136.  
  137.    The RAToolSet [6] is a suite of tools which can be used to analyze
  138.    the routing registry data.  It includes tools to configure routers
  139.    (RtConfig), tools to analyze paths on the Internet (prpath and
  140.    prtraceroute), and tools to compare, validate and register RPSL
  141.    objects (roe, aoe and prcheck).
  142.  
  143.    In the following section, we will describe how common routing
  144.    policies can be expressed in RPSL. The objects themselves are
  145.    described in Appendix A.  Authoritative information on the IRR
  146.    objects, however, should be sought in RFC-2622, and authoritative
  147.    information on general database objects (person, role, and
  148.    maintainers) and on querying and updating the registry databases,
  149.    should be sought in RIPE-157 [4].  Section 3.2 describes the use of
  150.    RtConfig to generate vendor specific router configurations.
  151.  
  152. 2 Specifying Policy in RPSL
  153.  
  154.    The key purpose of RPSL is to allow you to specify your routing
  155.    configuration in the public Internet Routing Registry (IRR), so that
  156.    you and others can check your policies and announcements for
  157.    consistency.  Moreover, in the process of setting policies and
  158.    configuring routers, you take the policies and configurations of
  159.    others into account.
  160.  
  161.    In this section, we begin by showing how some simple peering policies
  162.    can be expressed in RPSL. We will build on that to introduce various
  163.    database objects that will be needed in order to register policies in
  164.    the IRR, and to show how more complex policies can be expressed.
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Meyer, et al.                Informational                      [Page 3]
  171.  
  172. RFC 2650                 Using RPSL in Practice              August 1999
  173.  
  174.  
  175. 2.1 Common Peering Policies
  176.  
  177.    The peering policies of an AS are registered in an aut-num object
  178.    which looks something like that in Figure 2.  We will focus on the
  179.    semantics of the import and export attributes in which peering
  180.    policies are expressed.  We will also describe some of the other key
  181.    attributes in the aut-num object, but the reader should refer to
  182.    RFC-2622 or to RIPE-157 for the definitive descriptions.
  183.  
  184.       aut-num:     AS2
  185.       as-name:     CAT-NET
  186.       descr:       Catatonic State University
  187.       import:      from AS1 accept ANY
  188.       import:      from AS3 accept <^AS3+$>
  189.       export:      to AS3 announce ANY
  190.       export:      to AS1 announce AS2 AS3
  191.       admin-c:     AO36-RIPE
  192.       tech-c:      CO19-RIPE
  193.       mnt-by:      OPS4-RIPE
  194.       changed:     orange@ripe.net
  195.       source:      RIPE
  196.  
  197.       Figure 2:  Autonomous System Object
  198.  
  199.    Now consider Figure 3 (AS4 and AS5 in the figure will be discussed
  200.    later).  The peering policies expressed in the AS2 aut-num object in
  201.    Figure 2 are typical for a small service provider providing
  202.    connectivity for a customer AS3 and using AS1 for transit.  That is,
  203.    AS2 only accepts announcements from AS3 which:
  204.  
  205.    o  are originated in AS3; and
  206.  
  207.    o  have paths composed of only AS3's (^ in <^AS3+$> means that AS3 is
  208.       the first member of the path, + means that AS3 occurs one or more
  209.       times in the path, and $ means that no other AS can be present in
  210.       the path after AS3) (1).
  211.  
  212.    To AS1, AS2 announces only those routes which originate in their AS
  213.    or in their customer's AS.
  214.  
  215.       AS1--------AS2--------AS3
  216.                   |          |
  217.                   |          |
  218.                  AS4--------AS5
  219.  
  220.       Figure 3:  Some Neighboring ASes.
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Meyer, et al.                Informational                      [Page 4]
  227.  
  228. RFC 2650                 Using RPSL in Practice              August 1999
  229.  
  230.  
  231.    In the example above, "accept ANY" in the import attribute indicates
  232.    that AS2 will accept any announcements that AS1 sends, and "announce
  233.    ANY" in the export attribute indicates that any route that AS2 has in
  234.    its routing table will be passed on to AS3.  Assuming that AS1
  235.    announces "ANY" to AS2, AS2 is taking full routing from AS1.
  236.  
  237.    Note that with this peering arrangement, if AS1 adds or deletes route
  238.    objects, there is no need to update any of the aut-num objects to
  239.    continue the full routing policy.  Added (or deleted) route objects
  240.    will implicitly update AS1's and AS2's policies.
  241.  
  242.    While the peering policy specified in Figure 2 for AS2 is common, in
  243.    practice many peering agreements are more complex.  Before we
  244.    consider more examples, however, let's first consider the aut-num
  245.    object itself.  Note that it is just a set of attribute labels and
  246.    values which can be submitted to one of the registry databases.  This
  247.    particular object is specified as being in (or headed for) the RIPE
  248.    registry (see the last line in Figure 2).  The source should be
  249.    specified as one of ANS, CANET, CW, RADB, or RIPE depending on the
  250.    registry in which the object is maintained.  The source attribute
  251.    must be specified in every database object.
  252.  
  253.    It is also worth noting that this object is "maintained by" OPS4-RIPE
  254.    (the value of the mnt-by attribute), which references a "mntner"
  255.    object.  Because the aut-num object may be used for router
  256.    configuration and other operational purposes, the readers need to be
  257.    able to count on the validity of its contents.  It is therefore
  258.    required that a mntner be specified in the aut-num and in most other
  259.    database objects, which means you must create a mntner object before
  260.    you can register your peering policies.  For brief information on the
  261.    "mntner" object and object writeability, see Appendix A of this
  262.    document.  For more extensive information on how to set up and use a
  263.    mntner to protect your database objects, see Section 2.3 of RIPE-157.
  264.  
  265. 2.2 ISP Customer - Transit Provider Policies
  266.  
  267.    It is not uncommon for an ISP to acquire connectivity from a transit
  268.    provider which announces all routes to it, which it in turn passes on
  269.    to its customers to allow them to access hosts on the global
  270.    Internet.  Meanwhile, the ISP will generally announce the routes of
  271.    its customers networks to the transit ISP, making them accessible on
  272.    the global Internet.  This is the service that is specified in Figure
  273.    2 for AS3.
  274.  
  275.    Consider again Figure 3.  Suppose now that AS2 wants to provide the
  276.    same service to AS4.  Clearly, it would be easy to modify the import
  277.    and export lines in the aut-num object for AS2 (Figure 2) to those
  278.    shown in Figure 4.
  279.  
  280.  
  281.  
  282. Meyer, et al.                Informational                      [Page 5]
  283.  
  284. RFC 2650                 Using RPSL in Practice              August 1999
  285.  
  286.  
  287.       import:      from AS1 accept ANY
  288.       import:      from AS3 accept <^AS3+$>
  289.       import:      from AS4 accept <^AS4+$>
  290.       export:      to AS3 announce ANY
  291.       export:      to AS4 announce ANY
  292.       export:      to AS1 announce AS2 AS3 AS4
  293.  
  294.       Figure 4:  Policy for AS3 and AS4 in the AS2 as-num object
  295.  
  296.    These changes are trivial to make of course, but clearly as the
  297.    number of AS2 customers grows, it becomes more difficult to keep
  298.    track of, and to prevent errors.  Note also that if AS1 is selective
  299.    about only accepting routes from the customers of AS2 from AS2, the
  300.    aut-num object for AS1 would have to be adjusted to accommodate AS2's
  301.    new customer.
  302.  
  303.    By using the RPSL "as-set" object, we can simplify this
  304.    significantly.  In Figure 5, we describe the customers of AS2.
  305.    Having this set to work with, we can now rewrite the policies in
  306.    Figure 2 as shown in Figure 6.
  307.  
  308.       as-set:      AS2:AS-CUSTOMERS
  309.       members:     AS3 AS4
  310.       changed:     orange@ripe.net
  311.       source:      RIPE
  312.  
  313.       Figure 5:  The as-set object
  314.  
  315.       import:      from AS1 accept ANY
  316.       import:      from AS2:AS-CUSTOMERS accept <^AS2:AS-CUSTOMERS+$>
  317.       export:      to AS2:AS-CUSTOMERS announce ANY
  318.       export:      to AS1 announce AS2 AS2:AS-CUSTOMERS
  319.  
  320.       Figure 6:  Policy in the AS2 aut-num object for all AS2 customers
  321.  
  322.    Note that if the aut-num object for AS1 contains the line:
  323.  
  324.       import:      from AS2 accept <^AS2+ AS2:AS-CUSTOMERS*$>
  325.  
  326.    then no changes will need to be made to the aut-num objects for AS1
  327.    or AS2 as the AS2 customer base grows.  The AS numbers for new
  328.    customers can simply be added to the as-set AS2:AS-CUSTOMERS, and
  329.    everything will work as for the existing customers.  Clearly in terms
  330.    of readability, scalability and maintainability, this is a far better
  331.    mechanism when compared to adding policy for the customer AS's to the
  332.    aut-num objects directly.  The policy in this particular example
  333.    states that AS1 will accept route announcements from AS2 in which the
  334.    first element of the path is AS2, followed by more occurrences of
  335.  
  336.  
  337.  
  338. Meyer, et al.                Informational                      [Page 6]
  339.  
  340. RFC 2650                 Using RPSL in Practice              August 1999
  341.  
  342.  
  343.    AS2, and then 0 or more occurrences of any AS2 customer (e.g.  any
  344.    member of the as-set AS2:AS-CUSTOMERS).
  345.  
  346.    Alternatively, one may wish to limit the routes one accepts from a
  347.    peer, especially if the peer is a customer.  This is recommended for
  348.    several reasons, such as preventing the improper use of unassigned
  349.    address space, and of course malicious use of another organization's
  350.    address space.
  351.  
  352.    Such filtering can be expressed in various ways in RPSL. Suppose the
  353.    address space 7.7.0.0/16 has been allocated to the ISP managing AS3
  354.    for assignment to its customers.  AS3 may want to announce part or
  355.    all of this block on the global Internet.  Suppose AS2 wants to be
  356.    certain that it only accepts announcements from AS3 for address space
  357.    that has been properly allocated to AS3.  AS2 might then modify the
  358.    AS3 import line in Figure 2 to read:
  359.  
  360.       import:      from AS3 accept { 7.7.0.0/16^16-19 }
  361.  
  362.    which states that route announcements for this address block will be
  363.    accepted from AS3 if they are of length upto /19.  This of course
  364.    will have to be modified if and when AS3 gets more address space.
  365.    Moreover, it is again clear that for an ISP with a growing or
  366.    changing customer base, this mechanism will not scale well.
  367.  
  368.       route-set:   AS2:RS-ROUTES:AS3
  369.       members:     7.7.0.0/16^16-19
  370.       changed:     orange@ripe.net
  371.       source:      RIPE
  372.  
  373.       Figure 7:  The route-set object
  374.  
  375.    Luckily RPSL supports the notion of a "route-set" which, as shown in
  376.    Figure 7, can be used to specify the set of routes that will be
  377.    accepted from a given customer.  Given this set (and a similar one
  378.    for AS4), the manager of AS2 can now filter on the address space that
  379.    will be accepted from their customers by modifying the import lines
  380.    in the AS2 aut-num object as shown in Figure 8.
  381.  
  382.       import:      from AS1 accept ANY
  383.       import:      from AS3 accept AS2:RS-ROUTES:AS3
  384.       import:      from AS4 accept AS2:RS-ROUTES:AS4
  385.       export:      to AS2:AS-CUSTOMERS announce ANY
  386.       export:      to AS1 announce AS2 AS2:AS-CUSTOMERS
  387.  
  388.       Figure 8:  Policy in the AS2 aut-num object for address based
  389.                  filtering on AS2 customers
  390.  
  391.  
  392.  
  393.  
  394. Meyer, et al.                Informational                      [Page 7]
  395.  
  396. RFC 2650                 Using RPSL in Practice              August 1999
  397.  
  398.  
  399.    Note that this is now only slightly more complex than the example in
  400.    Figure 6.  Furthermore, nothing need be changed in the AS2 aut-num
  401.    object due to address space changes for a customer, and this
  402.    filtering can be supported without any changes to the AS1 aut-num
  403.    object.  The additional complexity is due to the two route set names
  404.    being different, otherwise we could have combined the two import
  405.    statements into one.  Please note that the set names are constructed
  406.    hierarchically.  The first AS number denotes whose sets these are,
  407.    and the last AS number parameterize these sets for each peer.  RPSL
  408.    allows the peer's AS number to be replaced by the keyword PeerAS.
  409.  
  410.    Hence,
  411.  
  412.       import:      from AS3 accept AS2:RS-ROUTES:PeerAS
  413.       import:      from AS4 accept AS2:RS-ROUTES:PeerAS
  414.  
  415.    has the same meaning as the corresponding import statements in Figure
  416.    6.  This lets us combine the two import statements into one as shown
  417.    in Figure 9.
  418.  
  419.       import:      from AS1 accept ANY
  420.       import:      from AS2:AS-CUSTOMERS accept AS2:RS-ROUTES:PeerAS
  421.       export:      to AS2:AS-CUSTOMERS announce ANY
  422.       export:      to AS1 announce AS2 AS2:AS-CUSTOMERS
  423.  
  424.       Figure 9:  Policy in the AS2 aut-num object using PeerAS
  425.  
  426. 2.3 Including Interfaces in Peering Definitions
  427.  
  428.    In the above examples peerings were only given among ASes.  However,
  429.    the peerings may be described in much more detail by RPSL, where
  430.    peerings can be specified between physical routers using IP addresses
  431.    in the import and export attributes.  Figure 10 shows a simple
  432.    example in which AS1 and AS2 are connected to an exchange point IX.
  433.    While AS1 has only one connection to the exchange point via a router
  434.    interface with IP address 7.7.7.1, AS2 has two different connections
  435.    with IP address 7.7.7.2 and 7.7.7.3.  The first AS may then define
  436.    its routing policy in more detail by specifying its boundary router.
  437.  
  438.       +--------------------+                +--------------------+
  439.       |            7.7.7.1 |-----+    +-----| 7.7.7.2            |
  440.       |                    |     |    |     |                    |
  441.       | AS1                |    ========    |                AS2 |
  442.       |                    |    IX    |     |                    |
  443.       |                    |          +-----| 7.7.7.3            |
  444.       +--------------------+                +--------------------+
  445.  
  446.       Figure 10:  Including interfaces in peerings definitions
  447.  
  448.  
  449.  
  450. Meyer, et al.                Informational                      [Page 8]
  451.  
  452. RFC 2650                 Using RPSL in Practice              August 1999
  453.  
  454.  
  455.       aut-num:   AS1
  456.       import:    from AS2 at 7.7.7.1 accept <^AS2+$>
  457.  
  458.    Because AS1 has only one connection to the exchange point in this
  459.    example, this specification does not differ from that in which no
  460.    boundary router is specified.  However, AS1 might want to choose to
  461.    accept only those announcements from AS2 which come from the router
  462.    with IP address 7.7.7.2 and disregard those announcements from router
  463.    7.7.7.3.  AS1 can specify this routing policy as follows:
  464.  
  465.       aut-num:   AS1
  466.       import:    from AS2 7.7.7.2 at 7.7.7.1 accept <^AS2+$>
  467.  
  468.    By selecting certain pairs of routers in a peering specification,
  469.    others can be denied.  If no routers are included in a policy clause
  470.    then it is assumed that the policy applies to all peerings among the
  471.    ASes involved.
  472.  
  473. 2.4 Describing Simple Backup Connections
  474.  
  475.    The specification of peerings among ASes is not limited to one router
  476.    for each AS. In figure 10 one of the two connections of AS2 to the
  477.    exchange point IX might be used as backup in case the other
  478.    connection fails.  Let us assume that AS1 wants to use the connection
  479.    to router 7.7.7.2 of AS2 during regular operations, and router
  480.    7.7.7.3 as backup.  In a router configuration this may be done by
  481.    setting a local preference.  The equivalent in RPSL is a
  482.    corresponding action definition in the peering description.  The
  483.    action definitions are inserted directly before the accept keyword.
  484.  
  485.       aut-num:   AS1
  486.       import:    from AS2 7.7.7.2 at 7.7.7.1 action pref=10;
  487.                  from AS2 7.7.7.3 at 7.7.7.1 action pref=20;
  488.                  accept <^AS2+$>
  489.  
  490.    pref is opposite to local-pref in that the smaller values are
  491.    preferred over larger values.  Actions may also be defined without
  492.    specifying IP addresses of routers.  If no routers are included in
  493.    the policy clause then it is assumed that the actions are carried out
  494.    for all peerings among the ASes involved.
  495.  
  496.    In the previous example AS1 controls where it sends its traffic and
  497.    which connection is used as backup.  However, AS2 may also define a
  498.    backup connection in an export clause:
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Meyer, et al.                Informational                      [Page 9]
  507.  
  508. RFC 2650                 Using RPSL in Practice              August 1999
  509.  
  510.  
  511.       aut-num:   AS2
  512.       export:    to AS1 7.7.7.1 at 7.7.7.2 action med=10;
  513.                  to AS1 7.7.7.1 at 7.7.7.3 action med=20;
  514.                  announce <^AS2+$>
  515.  
  516.    The definition given here for AS2 is the symmetric counterpart to the
  517.    routing policy of AS1.  The selection of routing information is done
  518.    by setting the multi exit discriminator metric med.  Actually, med
  519.    metrics will not be used in practice like this; they are more
  520.    suitable for load balancing including backups.  For more details on
  521.    med metrics refer to the BGP-4 RFC [7].  To use the med to achieve
  522.    load balancing, one often sets it to the "IGP metric".  This is
  523.    specified in RPSL as:
  524.  
  525.       aut-num:   AS2
  526.       export:    to AS1 action med=igp_cost; announce <^AS2+$>
  527.  
  528.    Hence, both routers will set the med to the IGP metric at that
  529.    router, causing some routes to be preferred at one of the routers and
  530.    other routes at the other router.
  531.  
  532. 2.5 Multi-Home Routing Policies using the community Attribute
  533.  
  534.    RFC 1998 [9] describes the use of the BGP community attribute to
  535.    provide support for load balancing and backup connections of multi-
  536.    homed autonomous systems.  In this section, we use stepwise
  537.    refinement of an example to illustrate how those policies might be
  538.    specified using RPSL.
  539.  
  540.    The basic premise of RFC 1998 is to use the BGP community attribute
  541.    to allow a customer to configure the BGP "LOCAL_PREF" on a provider's
  542.    routers.  This will allow the customer to influence the provider's
  543.    route selection, normally by lowering the BGP "LOCAL_PREF" to
  544.    indicate backup arrangements.
  545.  
  546.    In this example, we illustrate how AS1 (the provider) might specify
  547.    their policy so that a customer (AS4) connected to two of AS1's
  548.    direct customers (AS2 and AS3) might signal to AS1 which connection
  549.    is to be preferred.
  550.  
  551.    AS1's base policy is to only accept routes from customers that are
  552.    originated by the customer, or by the customer's customers.  This
  553.    leads to a policy such as:
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Meyer, et al.                Informational                     [Page 10]
  563.  
  564. RFC 2650                 Using RPSL in Practice              August 1999
  565.  
  566.  
  567.       aut-num:     AS1
  568.       import:      from AS2
  569.                    accept (AS2 OR AS4) AND <^AS2+ AS4*$>
  570.       import:      from AS3
  571.                    accept (AS3 OR AS4) AND <^AS3+ AS4*$>
  572.       import:      from AS5
  573.                    accept AS5 AND <^AS5+$>
  574.  
  575.    Note that AS4 is a customer of AS2 and AS3, and AS5 does not have its
  576.    own customers.
  577.  
  578.    Now suppose we want to add some policy to describe that if a customer
  579.    tags a route with community 1:1 then AS1 will act on this to reduce
  580.    the BGP "LOCAL_PREF" by 10.
  581.  
  582.    aut-num: AS1
  583.    import:  from AS2
  584.             action pref=10;
  585.             accept (AS2 OR AS4) AND <^AS2+ AS4*$>
  586.                     AND community.contains(1:1)
  587.    import:  from AS2
  588.             action pref=0;
  589.             accept (AS2 OR AS4) AND <^AS2+ AS4*$>
  590.    import:  from AS3
  591.             action pref=10;
  592.             accept (AS3 OR AS4) AND <^AS3+ AS4*$>
  593.                     AND community.contains(1:1)
  594.    import:  from AS3
  595.             action pref=0;
  596.             accept (AS3 OR AS4) AND <^AS3+ AS4*$>
  597.    import:  from AS5
  598.             action pref=10;
  599.             accept AS5 AND <^AS5+$> AND community.contains(1:1)
  600.    import:  from AS5
  601.             action pref=0;
  602.             accept AS5 AND <^AS5+$>
  603.  
  604.    We can see here that basically we are adding identical statements for
  605.    each peering to the policy.  This is the ideal candidate for RPSL's
  606.    refine statement.  This will make the policy more concise and avoid
  607.    some of the potential for errors as more peering statements are added
  608.    in the future:
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Meyer, et al.                Informational                     [Page 11]
  619.  
  620. RFC 2650                 Using RPSL in Practice              August 1999
  621.  
  622.  
  623.       aut-num:     AS1
  624.       import: {
  625.                    from AS-ANY
  626.                         action pref=10;
  627.                         accept community.contains(1:1);
  628.                    from AS-ANY
  629.                         action pref=0;
  630.                         accept ANY;
  631.                } refine {
  632.                    from AS2 accept (AS2 OR AS4) AND <^AS2+ AS4*$>;
  633.                    from AS3 accept (AS3 OR AS4) AND <^AS3+ AS4*$>;
  634.                    from AS5 accept AS5 AND <^AS5+$>;
  635.                }
  636.  
  637.    Now, we can clearly see that any route that has been accepted from a
  638.    customer that contains the community 1:1 will have it's local
  639.    preference value reduced by 10.
  640.  
  641.    The refinement has cleaned up some of the policy but we still have a
  642.    large number of individual policies representing the same basic
  643.    provider policy "from the customer, accept customer routes".  These
  644.    can be simplified by using AS sets.
  645.  
  646.    First, we will collect together all of AS1's customers into a single
  647.    AS set, AS1:AS-CUSTOMERS. We use a hierarchical set name that start
  648.    with AS1 to avoid possible set name clashes in IRR with other ASes:
  649.  
  650.     as-set:      AS1:AS-CUSTOMERS
  651.     members:     AS2, AS3, AS5
  652.  
  653.    We also define one set for each customer which lists the AS numbers
  654.    of any of their customers.
  655.  
  656.     as-set:      AS1:AS-CUSTOMERS:AS2
  657.     members:     AS4
  658.  
  659.     as-set:      AS1:AS-CUSTOMERS:AS3
  660.     members:     AS4
  661.  
  662.     as-set:      AS1:AS-CUSTOMERS:AS5
  663.     members:     # AS5 has no customers yet, so keep blank for now
  664.  
  665.    We can now use the keyword PeerAS with these AS sets to simplify the
  666.    policy further:
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Meyer, et al.                Informational                     [Page 12]
  675.  
  676. RFC 2650                 Using RPSL in Practice              August 1999
  677.  
  678.  
  679.       aut-num:     AS1
  680.       import: {
  681.                    from AS-ANY
  682.                         action pref=10;
  683.                         accept community.contains(1:1);
  684.                    from AS-ANY
  685.                         action pref=0;
  686.                         accept ANY;
  687.               } refine {
  688.                    from AS1:AS-CUSTOMERS
  689.                         accept (PeerAS OR AS1:AS-CUSTOMER:PeerAS)
  690.                                AND <^PeerAS+ AS1:AS-CUSTOMER:PeerAS*$>
  691.               }
  692.  
  693.    The use of PeerAS with AS1:AS-CUSTOMERS is basically equivalent to
  694.    looping over the members of AS1:AS-CUSTOMERS, expanding the policy by
  695.    replacing PeerAS with a member from the set AS1:AS-CUSTOMERS.
  696.  
  697.    To illustrate how this policy might be utilised by AS4, we present
  698.    the following policy fragment:
  699.  
  700.       aut-num: AS4
  701.       export: to AS2
  702.               action community.append(1:1);
  703.               announce AS1
  704.       export: to AS3
  705.               announce AS1
  706.  
  707.    Here, AS4 is signalling AS1 to prefer the routes from AS3.
  708.  
  709. 3 Tools
  710.  
  711.    In this section, we briefly introduce a number of tools which can be
  712.    used to inspect data in the database, to determine optimal routing
  713.    policies, and enter new data.
  714.  
  715. 3.1 The aut-num Object Editor
  716.  
  717.    All the examples shown in the previous sections may well be edited by
  718.    hand.  They may be extracted one by one from the IRR using the whois
  719.    program, edited, and then handed back to the registry robots.
  720.    However, again the RAToolSet [6] provides a very nice tool which
  721.    makes working with aut-num objects much easier:  the aut-num object
  722.    editor aoe.
  723.  
  724.    The aut-num object editor has a graphical user interface to view and
  725.    manipulate aut-num objects registered at any IRR. New aut-num objects
  726.    may be generated using templates and submitted to the registries.
  727.  
  728.  
  729.  
  730. Meyer, et al.                Informational                     [Page 13]
  731.  
  732. RFC 2650                 Using RPSL in Practice              August 1999
  733.  
  734.  
  735.    Moreover, the routing policy from the databases may be compared to
  736.    real life peerings.  Therefore, aoe is highly recommended as an
  737.    interface to the IRR for aut-num objects.  Further information on aoe
  738.    is available together with the RAToolSet [6].
  739.  
  740. 3.2 Router Configuration Using RtConfig
  741.  
  742.    RtConfig is a tool developed by the Routing Arbiter project [8] to
  743.    generate vendor specific router configurations from the policy data
  744.    held in the various IRRs.  RtConfig currently supports Cisco, gated
  745.    and RSd configuration formats.  It has been publicly available since
  746.    late 1994, and is currently being used by many sites for router
  747.    configuration.  The next section describes a methodology for
  748.    generating vendor specific router configurations using RtConfig (2).
  749.  
  750. 3.3 Using RtConfig
  751.  
  752.    The general paradigm for using RtConfig involves registering policy
  753.    in an IRR, building a RtConfig source file, then running running
  754.    RtConfig against the source file and the IRR database to create
  755.    vendor specific router configuration for the specified policy.  The
  756.    source file will contain vendor specific commands as well as RtConfig
  757.    commands.  To make a source file, pick up one of your router
  758.    configuration files and replace the vendor specific policy
  759.    configuration commands with the RtConfig commands.
  760.  
  761.    Commands beginning with @RtConfig instruct RtConfig to perform
  762.    special operations.  An example source file is shown in Figure 11.
  763.    In this example, commands such as "@RtConfig import AS3582
  764.    198.32.162.1 AS3701 198.32.162.2" instruct RtConfig to generate
  765.    vendor specific import policies where the router 198.32.162.1 in
  766.    AS3582 is importing routes from router 198.32.162.2 in AS3701.  The
  767.    other @RtConfig commands instruct the RtConfig to use certain names
  768.    and numbers in the output that it generates (please refer to RtConfig
  769.    manual [8] for additional information).
  770.  
  771.    Once a source file is created, the file is processed by RtConfig (the
  772.    default IRR is the RADB, and the default vendor is Cisco; however,
  773.    command line options can be used to override these values).  The
  774.    result of running RtConfig on the source file in Figure 11 is shown
  775.    in Figure 19 in Appendix B.
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Meyer, et al.                Informational                     [Page 14]
  787.  
  788. RFC 2650                 Using RPSL in Practice              August 1999
  789.  
  790.  
  791.       router    bgp 3582
  792.       network   128.223.0.0
  793.       !
  794.       !       Start with access-list 100
  795.       !
  796.       @RtConfig set cisco_access_list_no = 100
  797.       !
  798.       !       NERO
  799.       neighbor 198.32.162.2 remote-as 3701
  800.       @RtConfig set cisco_map_name = "AS3701-EXPORT"
  801.       @RtConfig export AS3582 198.32.162.1 AS3701 198.32.162.2
  802.       @RtConfig set cisco_map_name = "AS3701-IMPORT"
  803.       @RtConfig import AS3582 198.32.162.1 AS3701 198.32.162.2
  804.       !
  805.       !       WNA/VERIO
  806.       neighbor 198.32.162.6 remote-as 2914
  807.       @RtConfig set cisco_map_name = "AS2914-EXPORT"
  808.       @RtConfig export AS3582 198.32.162.1 AS2914 198.32.162.6
  809.       @RtConfig set cisco_map_name = "AS2914-IMPORT"
  810.       @RtConfig import AS3582 198.32.162.1 AS2914 198.32.162.6
  811.  
  812.       Figure 11:  RtConfig Template File
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Meyer, et al.                Informational                     [Page 15]
  843.  
  844. RFC 2650                 Using RPSL in Practice              August 1999
  845.  
  846.  
  847. A RPSL Database Objects
  848.  
  849.       In this appendix, we introduce the RPSL objects required to implement many
  850.       typical Internet routing policies.  RFC-2622 and RIPE-157 provide the
  851.       authoritative description for these objects and for the RPSL syntax, but
  852.       this appendix will often be sufficient in practice.
  853.  
  854.    The frequently needed objects are:
  855.  
  856.       o  maintainer objects (mntner)
  857.  
  858.       o  autonomous system number objects (aut-num)
  859.  
  860.       o  route objects (route)
  861.  
  862.       o  set objects (as-set, route-set)
  863.  
  864.    and they are described in the following sections.  To make your
  865.    routing policies and configuration public, these objects should be
  866.    registered in exactly one of the IRR registries.
  867.  
  868.    In general, you can register your information by sending the
  869.    appropriate objects to an email address for the registry you use.
  870.    The email should consist of the objects you want to have registered
  871.    or modified, separated by empty lines, and preceded by some kind of
  872.    authentication details (see below).  The registry robot processes
  873.    your mail and enters new objects into the database, deletes old ones
  874.    (upon request), or makes the requested modifications.
  875.  
  876.    You will receive a response indicating the status of your submission.
  877.    As the emails are handled automatically, the response is generally
  878.    very fast.  However, it should be remembered that a significant
  879.    number of updates are also sometimes submitted to the database (by
  880.    other robots), so the response time cannot be guaranteed.  The email
  881.    addresses for submitting objects to the existing registries are
  882.    listed in Figure 12.
  883.  
  884.                ANS    auto-dbm@ans.net
  885.                CANET  auto-dbm@canet.net
  886.                CW     auto-rr@cw.net
  887.                RADB   auto-dbm@ra.net
  888.                RIPE   auto-dbm@ripe.net
  889.  
  890.       Figure 12:  Email addresses to register policy objects in IRR.
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Meyer, et al.                Informational                     [Page 16]
  899.  
  900. RFC 2650                 Using RPSL in Practice              August 1999
  901.  
  902.  
  903.    Because it is required that a maintainer be specified in many of the
  904.    database objects, a mntner is usually the first to be created.  To
  905.    have it properly authenticated, a mntner object is added manually by
  906.    registry staff.  Thereafter, all database submissions, deletions and
  907.    modifications should be done through the registry robot.
  908.  
  909.    Each of the registries can provide additional information and support
  910.    for users.  For the public registries this support is available from
  911.    the email addresses listed in Figure 13.
  912.  
  913.                RADB  db-admin@ra.net
  914.                RIPE  ripe-dbm@ripe.net
  915.  
  916.             Figure 13:  Support email addresses.
  917.  
  918.    If you are using one of the private registries, your service provider
  919.    should be able to address your questions.
  920.  
  921. A.1 The Maintainer Object
  922.  
  923.    The maintainer object is used to introduce some kind of authorization
  924.    for registrations.  It lists various contact persons and describes
  925.    security mechanisms that will be applied when updating objects in the
  926.    IRR.  Registering a mntner object is the first step in creating
  927.    policies for an AS. An example is shown in Figure 14.  The maintainer
  928.    is called MAINT-AS3701.  The contact person here is the same for
  929.    administrative (admin-c) and technical (tech-c) issues and is
  930.    referenced by the NIC-handle DMM65.  NIC-handles are unique
  931.    identifiers for persons in registries.  Refer to registry
  932.    documentation for further details on person objects and usage of
  933.    NIC-handles.
  934.  
  935.    The example shows two authentication mechanisms:  CRYPT-PW and MAIL-
  936.    FROM.  CRYPT-PW takes as its argument a password that is encrypted
  937.    with Unix crypt (3) routine.  When sending updates, the maintainer
  938.    adds the field password:  <cleartext password> to the beginning of
  939.    any requests that are to be authenticated.  MAIL-FROM takes an
  940.    argument that is a regular expression which covers a set of mail
  941.    addresses.  Only users with any of these mail addresses are
  942.    authorized to work with objects secured by the corresponding
  943.    maintainer (3).
  944.  
  945.    The security mechanisms of the mntner object will only be applied on
  946.    those objects referencing a specific mntner object.  The reference is
  947.    done by adding the attribute mnt-by to an object using the name of
  948.    the mntner object as its value.  In Figure 14, the maintainer MAINT-
  949.    AS3701 is maintained by itself.
  950.  
  951.  
  952.  
  953.  
  954. Meyer, et al.                Informational                     [Page 17]
  955.  
  956. RFC 2650                 Using RPSL in Practice              August 1999
  957.  
  958.  
  959.       mntner:      MAINT-AS3701
  960.       descr:       Network for Research and Engineering in Oregon
  961.       remark:      Internal Backbone
  962.       admin-c:     DMM65
  963.       tech-c:      DMM65
  964.       upd-to:      noc@nero.net
  965.       auth:        CRYPT-PW  949WK1mirBy6c
  966.       auth:        MAIL-FROM .*@nero.net
  967.       notify:      noc@nero.net
  968.       mnt-by:      MAINT-AS3701
  969.       changed:     meyer@antc.uoregon.edu 970318
  970.       source:      RADB
  971.  
  972.       Figure 14:  Maintainer Object
  973.  
  974. A.2 The Autonomous System Object
  975.  
  976.    The autonomous system object describes the import and export policies
  977.    of an AS. Each organization registers an autonomous system object
  978.    (aut-num) in the IRR for its AS. Figure 15 shows the aut-num for
  979.    AS3582 (UONET).
  980.  
  981.    The autonomous system object lists contacts (admin-c, tech-c) and is
  982.    maintained by (mnt-by) MAINT-AS3701 which is the maintainer displayed
  983.    in Figure 14.
  984.  
  985.    The most important attributes of the aut-num object are import and
  986.    export.  The import clause of an aut-num specifies import policies,
  987.    while the export clause specifies export policies.  The corresponding
  988.    clauses allow a very detailed description of the routing policy of
  989.    the AS specified.  The details are given in section 2.
  990.  
  991.    With these clauses, an aut-num object shows its relationship to other
  992.    autonomous systems by describing its peerings.  In addition, it also
  993.    defines a routing entity comprising a group of IP networks which are
  994.    handled according to the rules defined in the aut-num object.
  995.    Therefore, it is closely linked to route objects.
  996.  
  997.    In this example, AS3582 imports all routes from AS3701 by using the
  998.    keyword ANY. AS3582 imports only internal routes from AS4222, AS5650,
  999.    and AS1798.  The import policy for for AS2914 is slightly more
  1000.    complex.  Since AS2914 provides transit to various other ASes, AS3582
  1001.    accepts routes with ASPATHs that begin with AS2194 followed by
  1002.    members of AS-WNA, which is an as set (see section A.4.1 below)
  1003.    describing those customers that transit AS2914.
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Meyer, et al.                Informational                     [Page 18]
  1011.  
  1012. RFC 2650                 Using RPSL in Practice              August 1999
  1013.  
  1014.  
  1015.    Since AS3582 is a multi-homed stub AS (i.e., it does not provide
  1016.    transit), its export policy consists simply of "announce AS3582"
  1017.    clauses; that is, announce internal routes of AS3582.  These routes
  1018.    are those in route objects where the origin attribute is AS3582.
  1019.  
  1020.       aut-num:     AS3582
  1021.       as-name:     UONET
  1022.       descr:       University of Oregon, Eugene OR
  1023.       import:      from AS3701 accept ANY
  1024.       import:      from AS4222 accept <^AS4222+$>
  1025.       import:      from AS5650 accept <^AS5650+$>
  1026.       import:      from AS2914 accept <^AS2914+ (AS-WNA)*$>
  1027.       import:      from AS1798 accept <^AS1798+$>
  1028.       export:      to AS3701 announce AS3582
  1029.       export:      to AS4222 announce AS3582
  1030.       export:      to AS5650 announce AS3582
  1031.       export:      to AS2914 announce AS3582
  1032.       export:      to AS1798 announce AS3582
  1033.       admin-c:     DMM65
  1034.       tech-c:      DMM65
  1035.       notify:      nethelp@ns.uoregon.edu
  1036.       mnt-by:      MAINT-AS3582
  1037.       changed:     meyer@antc.uoregon.edu 970316
  1038.       source:      RADB
  1039.  
  1040.       Figure 15:  Autonomous System Object
  1041.  
  1042.    The aut-num object forms the basis of a scalable and maintainable
  1043.    router
  1044.  
  1045.       route:       128.223.0.0/16
  1046.       origin:      AS3582
  1047.       descr:       UONet
  1048.       descr:       University of Oregon
  1049.       descr:       Computing Center
  1050.       descr:       Eugene, OR 97403-1212
  1051.       descr:       USA
  1052.       mnt-by:      MAINT-AS3582
  1053.       changed:     meyer@ns.uoregon.edu 960222
  1054.       source:      RADB
  1055.  
  1056.       Figure 16:  Example of a route object
  1057.  
  1058.    configuration system.  For example, if AS3582 originates a new route,
  1059.    it need only create a route object for that route with origin AS3582.
  1060.    AS3582 can now build configuration using this route object without
  1061.    changing its aut-num object.
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Meyer, et al.                Informational                     [Page 19]
  1067.  
  1068. RFC 2650                 Using RPSL in Practice              August 1999
  1069.  
  1070.  
  1071.    Similarly, if for example, AS3701 originates a new route, it need
  1072.    only create a route object for that route with origin AS3701.  Both
  1073.    AS3701 and AS3582 can now build configuration using this route object
  1074.    without modifying its aut-num object.
  1075.  
  1076. A.3 The Route Object
  1077.  
  1078.    In contrast to aut-num objects which describe propagation of routing
  1079.    information for an autonomous system as a whole, route objects define
  1080.    single routes from an AS. An example is given in Figure 16.
  1081.  
  1082.    This route object is maintained by MAINT-AS3582 and references AS3582
  1083.    by the origin attribute.  By this reference it is grouped together
  1084.    with other routes of the same origin AS, becoming member of the
  1085.    routing entity denoted by AS3582.  The routing policies can then be
  1086.    defined in the aut-num objects for this group of routes.
  1087.  
  1088.    Consequently, the route objects give the routes from this AS which
  1089.    are distributed to peer ASes according to the rules of the routing
  1090.    policy.  Therefore, for any route in the routing tables of the
  1091.    backbone routers a route object must exist in one of the registries
  1092.    in IRR. route objects must be registered in the IRR only for the
  1093.    routes seen outside your AS. Normally, this set of external routes is
  1094.    different from the routes internally visible within your AS. One of
  1095.    the major reasons is that external peers need no information at all
  1096.    about your internal routing specifics.  Therefore, external routes
  1097.    are in general aggregated combinations of internal routes, having
  1098.    shorter IP prefixes where applicable according to the CIDR rules.
  1099.    Please see the CIDR FAQ [5] for a tutorial introduction to CIDR. It
  1100.    is strongly recommended that you aggregate your routes as much as
  1101.    possible, thereby minimizing the number of routes you inject into the
  1102.    global routing table and at the same time reducing the corresponding
  1103.    number of route objects in the IRR.
  1104.  
  1105.    While you may easily query single route objects using the whois
  1106.    program, and submit objects via mail to the registry robots, this
  1107.    becomes kind of awkward for larger sets.  The RAToolSet [6] offers
  1108.    several tools to make handling of route objects easier.  If you want
  1109.    to read policy data from the IRR and process it by other programs,
  1110.    you might be interested in using peval which is a low level policy
  1111.    evaluation tool.  As an example, the command
  1112.  
  1113.       peval -h whois.ra.net AS3582
  1114.  
  1115.    will give you all route objects from AS3582 registered with RADB.
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Meyer, et al.                Informational                     [Page 20]
  1123.  
  1124. RFC 2650                 Using RPSL in Practice              August 1999
  1125.  
  1126.  
  1127.    A much more sophisticated tool from the RAToolSet to handle route
  1128.    objects interactively is the route object editor roe.  It has a
  1129.    graphical user interface to view and manipulate route objects
  1130.    registered at any IRR. New route objects may be generated from
  1131.    templates and submitted to the registries.  Moreover, the route
  1132.    objects from the databases may be compared to real life routes.
  1133.    Therefore, roe is highly recommended as an interface to the IRR for
  1134.    route objects.  Further information on peval and roe is available
  1135.    together with the RAToolSet [6].
  1136.  
  1137. A.4 Set Objects
  1138.  
  1139.    With routing policies it is often necessary to reference groups of
  1140.    autonomous systems or routes which have identical properties
  1141.    regarding a specific policy.  To make working with such groups easier
  1142.    RPSL allows to combine them in set objects.  There are two basic
  1143.    types of predefined set objects, as-set, and route-set.  The RPSL set
  1144.    objects are described below.
  1145.  
  1146. A.4.1 AS-SET Object
  1147.  
  1148.    Autonomous system set objects (as-set) are used to group autonomous
  1149.    system objects into named sets.  An as-set has an RPSL name that
  1150.    starts with "AS-".  In the example in Figure 17, an as-set called
  1151.    AS-NERO-PARTNERS and containing AS3701, AS4201, AS3582, AS4222,
  1152.    AS1798 is defined.  The as-set is the RPSL replacement for the RIPE-
  1153.    181 as-macro.  It has been extended to include ASes in the set
  1154.    indirectly by referencing as set names in the aut-num objects.
  1155.  
  1156.    AS-SETs are particularly useful when specifying policies for groups
  1157.    such as customers, providers, or for transit.  You are encouraged to
  1158.    register sets for these groups because it is most likely that you
  1159.    will treat them alike, i.e. you will have a very similar routing
  1160.    policy for all your customers which have an autonomous system of
  1161.    their own.  You may as well discover that this is also true for the
  1162.    providers you are peering with, and it is most convenient to have the
  1163.    ASes combined in one as-set for which you offer transit.  For
  1164.    example, if a transit provider specifies its import policy using its
  1165.    customer's as-set (i.e., its import clause for the customer contains
  1166.    the customer's as-set), then that customer can modify the set of ASes
  1167.    that its transit provider accepts from it.  Again, this can be
  1168.    accomplished without requiring the customer or the transit provider
  1169.    to modify its aut-num object.
  1170.  
  1171.       as-set:    AS3582:AS-PARTNERS
  1172.       members:   AS3701, AS4201, AS3582, AS4222, AS1798
  1173.  
  1174.                           Figure 17:  as-set Object
  1175.  
  1176.  
  1177.  
  1178. Meyer, et al.                Informational                     [Page 21]
  1179.  
  1180. RFC 2650                 Using RPSL in Practice              August 1999
  1181.  
  1182.  
  1183.    The ASes of the set are simply compiled in a comma delimited list
  1184.    following the members attribute of the as-set.  This list may also
  1185.    contain other AS-SET names.
  1186.  
  1187. A.4.2 ROUTE-SET Object
  1188.  
  1189.    A route-set is a way to name a group of routes.  The syntax is
  1190.    similar to the as-set.  A route-set has an RPSL name that starts with
  1191.    "RS-".  The members attribute lists the members of the set.  The
  1192.    value of a members attribute is a list of address prefixes, or
  1193.    route-set names.  The members of the route-set are the address
  1194.    prefixes or the names of other route sets specified.
  1195.  
  1196.    Figure 18 presents some example route-set objects.  The set rs-uo
  1197.    contains two address prefixes, namely 128.223.0.0/16 and
  1198.    198.32.162.0/24.  The set rs-bar contains the members of the set rs-
  1199.    uo and the address prefix 128.7.0.0/16.  The set rs-martians
  1200.    illustrate the use of range operators.  0.0.0.0/0^32 are the length
  1201.    32 more specifics of 0.0.0.0/0, i.e. the host routes; 224.0.0.0/3^+
  1202.    are the more specifics of 224.0.0.0/3, i.e. the routes falling into
  1203.    the multicast address space.  For more complete list of range
  1204.    operators please refer to RFC-2622.
  1205.  
  1206.       route-set: rs-uo
  1207.       members: 128.223.0.0/16, 198.32.162.0/24
  1208.  
  1209.       route-set: rs-bar
  1210.       members: 128.7.0.0/16, rs-uo
  1211.  
  1212.       route-set: rs-martians
  1213.       remarks: routes not accepted from any peer
  1214.       members: 0.0.0.0/0,              # default route
  1215.                0.0.0.0/0^32,           # host routes
  1216.                224.0.0.0/3^+,          # multicast routes
  1217.                127.0.0.0/8^9-32, . . .
  1218.  
  1219.                         Figure 18:  route-set Objects
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Meyer, et al.                Informational                     [Page 22]
  1235.  
  1236. RFC 2650                 Using RPSL in Practice              August 1999
  1237.  
  1238.  
  1239. B Output of RtConfig:  An Example
  1240.  
  1241.       In Figure 19, you see the result of running RtConfig on the source
  1242.       file in Figure 11.
  1243.  
  1244.       router    bgp 3582
  1245.       network   128.223.0.0
  1246.       !
  1247.       !       NERO
  1248.       neighbor 198.32.162.2 remote-as 3701
  1249.  
  1250.       no access-list 100
  1251.       access-list 100 permit ip 128.223.0.0   0.0.0.0   255.255.0.0   0.0.0.0
  1252.       access-list 100 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255
  1253.       !
  1254.       no route-map AS3701-EXPORT
  1255.       route-map AS3701-EXPORT permit 1
  1256.        match ip address 100
  1257.       !
  1258.       router bgp 3582
  1259.       neighbor 198.32.162.2 route-map AS3701-EXPORT out
  1260.       !
  1261.       no route-map AS3701-IMPORT
  1262.       route-map AS3701-IMPORT permit 1
  1263.        set local-preference 1000
  1264.       !
  1265.       router bgp 3582
  1266.       neighbor 198.32.162.2 route-map AS3701-IMPORT in
  1267.       !
  1268.       !       WNA/VERIO
  1269.       neighbor 198.32.162.6 remote-as 2914
  1270.       !
  1271.       no route-map AS2914-EXPORT
  1272.       route-map AS2914-EXPORT permit 1
  1273.        match ip address 100
  1274.       !
  1275.       router bgp 3582
  1276.       neighbor 198.32.162.6 route-map AS2914-EXPORT out
  1277.       no ip as-path access-list  100
  1278.       ip as-path access-list 100 permit ^_2914(((_[0-9]+))*_             \
  1279.             (13|22|97|132|175|668|1914|2905|2914|3361|3381|3791|3937|    \
  1280.              4178|4354|4571|4674|4683|5091|5303|5798|5855|5856|5881|6083 \
  1281.              |6188|6971|7790|7951|8028))?$
  1282.       !
  1283.       no route-map AS2914-IMPORT
  1284.       route-map AS2914-IMPORT permit 1
  1285.        match as-path 100
  1286.        set local-preference 998
  1287.  
  1288.  
  1289.  
  1290. Meyer, et al.                Informational                     [Page 23]
  1291.  
  1292. RFC 2650                 Using RPSL in Practice              August 1999
  1293.  
  1294.  
  1295.       !
  1296.       router bgp 3582
  1297.       neighbor 198.32.162.6 route-map AS2914-IMPORT in
  1298.  
  1299.                         Figure 19:  Output of RtConfig
  1300.  
  1301.  
  1302. Security Considerations
  1303.  
  1304.       This document is a tutorial to RPSL, it does not define protocols or
  1305.       standards that need to be secured.
  1306.  
  1307. Endnotes
  1308.  
  1309.    (1) AS-PATH regular expressions are POSIX compliant regular
  1310.        expressions.
  1311.  
  1312.    (2) Discussion of RtConfig internals is beyond the scope of this
  1313.        document.
  1314.  
  1315.    (3) Clearly, neither of these mechanisms is sufficient to provide
  1316.        strong authentication or authorization.  Other public key (e.g.,
  1317.        PGP) authentication mechanisms are available from some of the
  1318.        IRRs.
  1319.  
  1320. References
  1321.  
  1322.    [1] Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D., Meyer,
  1323.        D., Bates, T., Karrenberg, D. and M. Terpstra, "Routing Policy
  1324.        Specification Language (RPSL)", RFC 2622, June 1999.
  1325.  
  1326.    [2] Bates, T., Jouanigot, J-M., Karrenberg, D., Lothberg, P. and M.
  1327.        Terpstra, "Representation of IP Routing Policies in the RIPE
  1328.        database", Technical Report ripe-81, RIPE, RIPE NCC, Amsterdam,
  1329.        Netherlands, February 1993.
  1330.  
  1331.    [3] T. Bates, E. Gerich, J. Joncharay, J-M. Jouanigot, D. Karrenberg,
  1332.        M.  Terpstra, and J. Yu. Representation of IP Routing Policies in
  1333.        a Routing Registry, Technical Report ripe-181, RIPE, RIPE NCC,
  1334.        Amsterdam, Netherlands, October 1994.
  1335.  
  1336.    [4] A. M. R. Magee. RIPE NCC Database Documentation. Technical Report
  1337.        RIPE-157, RIPE NCC, Amsterdam, Netherlands, May 1997.
  1338.  
  1339.    [5] Hank Nussbacher. The CIDR FAQ. Tel Aviv University and IBM
  1340.        Israel.  http://www.ibm.net.il/~hank/cidr.html
  1341.  
  1342.    [6] The RAToolSet. http://www.ra.net/ra/RAToolSet/
  1343.  
  1344.  
  1345.  
  1346. Meyer, et al.                Informational                     [Page 24]
  1347.  
  1348. RFC 2650                 Using RPSL in Practice              August 1999
  1349.  
  1350.  
  1351.    [7] Rekhter Y. and T. Li, "A Border Gateway Protocol 4 (BGP-4)", RFC
  1352.        1654, July 1994.
  1353.  
  1354.    [8] RtConfig as part of the RAToolSet.
  1355.        http://www.ra.net/ra/RAToolSet/RtConfig.html
  1356.  
  1357.    [9] Chen, E. and T. Bates, "An Application of the BGP Community
  1358.        Attribute in Multi-Home Routing", RFC 1998, August 1996.
  1359.  
  1360. Authors' Addresses
  1361.  
  1362.    David Meyer
  1363.    Cisco Systems
  1364.  
  1365.    EMail: dmm@cisco.com
  1366.  
  1367.  
  1368.    Joachim Schmitz
  1369.    America On-Line
  1370.  
  1371.    EMail: SchmitzJo@aol.com
  1372.  
  1373.  
  1374.    Carol Orange
  1375.    RIPE NCC
  1376.  
  1377.    EMail: orange@spiritone.com
  1378.  
  1379.  
  1380.    Mark Prior
  1381.    connect.com.au pty ltd
  1382.  
  1383.    EMail: mrp@connect.com.au
  1384.  
  1385.  
  1386.    Cengiz Alaettinoglu
  1387.    USC/Information Sciences Institute
  1388.  
  1389.    EMail: cengiz@isi.edu
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Meyer, et al.                Informational                     [Page 25]
  1403.  
  1404. RFC 2650                 Using RPSL in Practice              August 1999
  1405.  
  1406.  
  1407. Full Copyright Statement
  1408.  
  1409.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  1410.  
  1411.    This document and translations of it may be copied and furnished to
  1412.    others, and derivative works that comment on or otherwise explain it
  1413.    or assist in its implementation may be prepared, copied, published
  1414.    and distributed, in whole or in part, without restriction of any
  1415.    kind, provided that the above copyright notice and this paragraph are
  1416.    included on all such copies and derivative works.  However, this
  1417.    document itself may not be modified in any way, such as by removing
  1418.    the copyright notice or references to the Internet Society or other
  1419.    Internet organizations, except as needed for the purpose of
  1420.    developing Internet standards in which case the procedures for
  1421.    copyrights defined in the Internet Standards process must be
  1422.    followed, or as required to translate it into languages other than
  1423.    English.
  1424.  
  1425.    The limited permissions granted above are perpetual and will not be
  1426.    revoked by the Internet Society or its successors or assigns.
  1427.  
  1428.    This document and the information contained herein is provided on an
  1429.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1430.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1431.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1432.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1433.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1434.  
  1435. Acknowledgement
  1436.  
  1437.    Funding for the RFC Editor function is currently provided by the
  1438.    Internet Society.
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Meyer, et al.                Informational                     [Page 26]
  1459.  
  1460.