Internet Draft                                           Cengiz Alaettinoglu
Expires  September 26, 1997                                          USC/ISI
draft-ietf-rps-appl-rpsl-00.txt                                  David Meyer
                                                        University of Oregon
                                                             Joachim Schmitz
                                                                     DFN-NOC
                                                              March 26, 1997



Application of Routing Policy Specification Language (RPSL) on the Internet




Status of this Memo


This document is an Internet Draft, and can be found as
draft-ietf-rps-appl-rpsl-00.txt in any standard internet drafts
repository.  Internet Drafts are working documents of the
Internet Engineering Task Force (IETF), its  Areas, and its
Working Groups.  Note that other groups may also distribute
working documents as Internet Drafts.

Internet Drafts  are draft  documents valid  for a  maximum of
six  months. Internet Drafts may be  updated, replaced, or
obsoleted by other  documents at any time.   It  is not
appropriate  to use Internet  Drafts as  reference material, or
to cite  them other than  as a ``working  draft'' or ``work  in
progress.''

Please check  the I-D  abstract  listing contained  in each
Internet  Draft directory to learn the current status of this or
any other Internet Draft.


1 Introduction


This document  is  a tutorial  on  using the  Routing  Policy
Specification Language (RPSL) to specify routing policies.  It
covers registering policies in an Internet Routing Registry
(IRR) using RPSL, and  the use of tools  to generate vendor
specific router  configuration.  It  is targeted towards  an
Internet/Network Service  Provider (ISP/NSP)  engineer who  is
new  to  RPSL and to IRR.  Readers are  referred to the  RPSL
reference  document [1]  for completeness.    We  recommend
reading this  document  before  reading  the reference document.
We hope  that for  many cases, this  document will  be
sufficient.

IRR is a  repository of routing  policies.   It currently
consists of  five sites:  CA*Net  registry in  Canada,  ANS, MCI
and RADB  registries in  the

Internet Draft Application of RPSL              March 26, 1997

United States  of America,  and RIPE  registry in  Europe.
Each of  these sites run independent  of each  other.   However,
each  site exchanges  its data with each other at some frequency
(at  least once a day or as often  as every ten minutes).  MCI,
Ca*Net and ANS are private registries and  contain routing
policies  of MCI,  Ca*Net, ANS,  and their  customers
respectively. RADB and RIPE are public registries, and any ISP
can publish their  policies in these registries.   Since
registries exchange  their data regularly,  you need to  register
your policies  in  only one  of  them.    If you  are  an MCI,
ANS or CA*Net  customer, we recommend you  register your policies
with them.  Otherwise, please register your  policies either at
the RIPE or  RADB registry, whichever is closer to you.   We
recommend against registering  in multiple registries since  it
often  eventually leads  to inconsistent  data between the
registries.

Routing policies registered in IRR are  specified using
RPSL. RPSL is  based on an earlier language known as RIPE-181 [2,
3].  Through operational use of RIPE-181 it has become  apparent
that certain  policies cannot be  specified and a  need for  an
enhanced  and more  general language  is needed. RPSL addresses
RIPE-181's limitations.  RPSL obsoletes RIPE-181 [2, 3].

RPSL is  object oriented;  that is,  objects  contain pieces  of
policy  and administrative information.  For example, each
address prefix routed in  the inter-domain mesh is specified in a
route object and policies of each AS are specified in an aut-num
object.  Objects have relations between each  other. For example,
all route objects of an ISP refer to the Autonomous System (AS)
number of the ISP. These  relations form sets of objects.   We
can then  use these set names to specify policies collectively to
all their members. For example, we can use the  AS number of an
ISP  to specify policy against  all of its routes.   In the
following sections, we  will describe each of  these objects
(rather object classes)  in more detail  and give numerous
examples for you to create your own  objects.  In most  cases,
you should be able  to cut and paste our examples to create your
own objects.

Once you register  your policies in  IRR, they are  available for
others  to query using a  whois service.   For  example, to  see
the  route object  for 128.223.0.0/16, please try the following
UNIX command:


    % whois -h radb.ra.net 128.223.0.0/16
      route:       128.223.0.0/16
      descr:       UONet
      descr:       University of Oregon
      descr:       Computing Center
      descr:       Eugene, OR 97403-1212
      descr:       USA
      origin:      AS3582
      mnt-by:      MAINT-AS3582
      changed:     meyer@ns.uoregon.edu 960222
      source:      RADB




Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 2]


Internet Draft               Application of RPSL             March 26, 1997

The output of the  command is the ASCII  representation of the
route  object whose details will be  covered in Section 2.3.
That is  not all, once  you register your policies in IRR, they
can be analyzed for consistency or  used to diagnose Internet's
operational routing problems.   RAToolSet  [5] is  a suite of
tools for  analyzing this data.   It  contains tools (RtConfig)
to configure routers, tools (prpath and  prtraceroute) to analyse
paths on  the Internet, tools (roe,  aoe and  prcheck) to
compare,  validate and  register RPSL objects, and others.

The remainder  of  this  document  is  organized  as  follows:
Section  2 introduces the fundamental RPSL objects.  Section 3
discusses implementation of various common policies using
RPSL. Finally, Section 4 describes the  use of RtConfig to
generate vendor specific router configurations.


2 RPSL Objects


This section introduces the fundamental RPSL objects required to
implement many typical Internet routing policies.  The basic
elements are


 o  maintainer objects (mntner)

 o  autonomous system number objects (aut-num)

 o  route objects (route)

 o  set objects (as-set, route-set)


and they are described  in the following  sections.   These
objects must  be registered in the IRR, in only one of the
existing registries.  In  general, registration is  done  by
sending  mail  to a  registry  robot. The  mail addresses are
different for different registries.  The contents of the  mail
consists of the  objects you  want to  have registered,
separated by  empty lines, and  often some  kind of
authorization (see  below).   The  registry robot automatically
processes your  mail,  entering  new objects  into  the database,
deleting old ones, or activating  changes.  Moreover, it may
send notifications and replies with an error or success report
about its actions. The first object which  has to be  registered,
normally is the  mntner.   In general, to have  it properly
authenticated, a maintainer  object is  added manually by
registry staff.   Afterwards, all  other actions should be  done
through the registry robot.  Each registry provides documentation
on how  to use it.  If problems arise your registry staff is
willing to assist you.



Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 3]


Internet Draft               Application of RPSL              March 26, 1997

2.1 The Maintainer Object


The maintainer object is  used to introduce some  kind of
authorization  for registrations.   It  lists various  contact
persons  and describes  security mechanisms that  will be
applied when  updating other  objects in  an  IRR. Registering a
mntner object  is the  first step  in creating  policies  for an
AS.  An  example  is shown  in  Figure  1.    The  maintainer  is
called MAINT-AS3701.   The  contact  person here  is  the same
for  administrative admin-c and  technical tech-c  issues and  is
referenced  by the  NIC-handle DMM65.  NIC-handles are unique
identifiers for persons in registries.  Refer to registry
documentation for further details on person objects and usage of
NIC-handles.

The example shows  two authentication mechanisms:   CRYPT-PW and
MAIL-FROM. CRYPT-PW takes  as its  argument  a password  that  is
encrypted  with  Unix crypt(3) routine.    When sending  updates,
the  maintainer adds  the  field password:  <cleartext password>
to the beginning of any requests that are to be authenticated.
MAIL-FROM takes an argument that is a regular  expression which
covers a set  of mail addresses.   Only users with  any of these
mail addresses are authorized to work  with objects secured by
the  corresponding maintainer(1).

The security mechanisms of the mntner  object will only be
applied on  those objects referencing a  specific mntner  object.
The reference  is done  by adding the attribute mnt-by to an
object using the name of the mntner object as its value.   In
Figure  1, the maintainer  MAINT-AS3701 is maintained  by itself.


2.2 The Autonomous System Object


The autonomous system object describes the import and export
policies of an AS. Each organization registers an autonomous
system object (aut-num) in the IRR for its AS. Figure 2 shows the
aut-num for AS3582 (UONET).

The autonomous system object  lists contacts (admin-c,  tech-c)
and here  is maintained by  mnt-by: MAINT-AS3701  which is  the
maintainer  displayed  in Figure 2.

The most important attributes  of the aut-num object  are as-in
and  as-out. The as-in clause of an aut-num  specifies import
policies, while the  as-out clause specifies export policies.
The corresponding  clauses allow a  very detailed description of
the routing policy of the AS specified.  The details are given in
section 3.

------------------------------
 1.  Clearly,  neither  of   these  mechanisms  is  sufficient
     to provide strong authentication  or  authorization.
     Other public  key  (e.g.,  PGP) authentication mechanisms
     are available from some of the IRRs.


Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 4]


Internet Draft               Application of RPSL              March 26, 1997



  mntner:      MAINT-AS3701
  descr:       Network for Research and Engineering in Oregon
  remark:      Internal Backbone
  admin-c:     DMM65
  tech-c:      DMM65
  upd-to:      noc@nero.net
  auth:        CRYPT-PW  949WK1mirBy6c
  auth:        MAIL-FROM .*@nero.net
  notify:      noc@nero.net
  mnt-by:      MAINT-AS3701
  changed:     meyer@antc.uoregon.edu 970318
  source:      RADB


                        Figure 1:  Maintainer Object



With these  clauses  the aut-num  object  shows the  relationship
to  other autonomous systems by describing the peerings.  In
addition, it also defines a routing  entity  comprising a  group
of  IP networks  which  are  handled according to the  rules
defined in  the aut-num  object.   Therefore, it  is closely
linked to route objects.

In this example, AS3582 imports all routes from AS3701 by using
the  keyword ANY. AS3582 imports only  internal routes from
AS4222, AS5650, and  AS1798. The import policy for  for AS2914 is
slightly more complex.   Since  AS2914 provides transit to
various <other  ASs, AS3582 accepts routes with  ASPATHs that
begin with  AS2194 followed by  members of AS-WNA,  which is an
AS-SET (see section 2.4.1 below) describing those customers that
transit AS2914.

Since AS3582 is a multi-homed stub  AS (i.e., it does not provide
transit), its export policy consists simply of ``announce
AS3582'' clauses.

The aut-num object  forms the basis  of a scalable  and
maintainable  router configuration system. For example,  if
AS3582 originates  a new route,  it need only create a route
object for  that route with origin AS3582.   AS3582 can now build
configuration using  this route object  without changing  its
aut-num object.

Similarly, if  for example,  AS3701 originates  a new  route,  it
need  only create a route object for  that route with origin
AS3701. Both AS3701 and AS3582 can now build configuration using
this route object without modifying its aut-num object.


Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 5]


Internet Draft               Application of RPSL              March 26, 1997



      aut-num:     AS3582
      as-name:     UONET
      descr:       University of Oregon, Eugene OR
      as-in:       from AS3701  100 accept ANY
      as-in:       from AS4222  100 accept <^AS4222$>
      as-in:       from AS5650  100 accept <^AS5650$>
      as-in:       from AS2914  100 accept <^AS2914+ (AS-WNA)*$>
      as-in:       from AS1798  100 accept <^AS1798$>
      as-out:      to AS3701 announce AS3582
      as-out:      to AS4222 announce AS3582
      as-out:      to AS5650 announce AS3582
      as-out:      to AS2914 announce AS3582
      as-out:      to AS1798 announce AS3582
      guardian:    meyer@antc.uoregon.edu
      admin-c:     DMM65
      tech-c:      DMM65
      notify:      nethelp@ns.uoregon.edu
      mnt-by:      MAINT-AS3582
      changed:     meyer@antc.uoregon.edu 970316
      source:      RADB


                    Figure 2:  Autonomous System Object


      route:       128.223.0.0/16
      descr:       UONet
      descr:       University of Oregon
      descr:       Computing Center
      descr:       Eugene, OR 97403-1212
      descr:       USA
      origin:      AS3582
      mnt-by:      MAINT-AS3582
      changed:     meyer@ns.uoregon.edu 960222
      source:      RADB

                    Figure 3:  Example of a route object


2.3 The Route Object

In contrast  to  aut-num  objects  which  describe propagation
of  routing information for an autonomous system as a whole,
route objects define single routes from an AS. An example was
already given in the introduction:



Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 6]


Internet Draft               Application of RPSL              March 26, 1997

This route object is maintained by MAINT-AS3582 and references
AS3582 by the origin attribute.  By  this reference it is
grouped together with other  IP networks of same origin,
becoming member of the  routing entity denoted  by the
corresponding AS  number.   The routing  policy is then defined
in the aut-num object for this group of routes.

Consequently, the  route objects  give the  routes from  this AS
which  are distributed to  peer ASs  according  to the  rules  of
the  routing  policy. Therefore, for  any route  in the  global
routing  table of  the real  world a route object  must exist in
one registry  of the IRR.  Since routes  from the global routing
table come  from external  peerings alone,  as they  are
described in the aut-num  object, only route objects  must be
registered  in the IRR which should be seen outside your
AS. Normally, this set of external routes is different from the
routes  internally visible within your AS.  One of the major
reasons is that external peers need no information at all about
your internal routing specifics.  Therefore, external routes are
in  general aggregated combinations of internal routes, having
shorter IP prefixes where applicable according to the CIDR rules.
Please see the CIDR FAQ [4] for  a tutorial introduction to
CIDR. It is strongly recommended that you aggregate your routes
as  much as possible,  thereby minimizing the  number of  routes
you inject into the global routing table  and at the same time
reducing  the corresponding number of route objects in the IRR.

While you may easily query single route objects using the whois
program, and submit objects via mail to the registry robots, this
becomes kind of awkward for larger sets.  The RAToolSet [5]
offers several tools to make handling of route objects easier.
If  you want to  read policy data  from the IRR  and process it
by other programs, you  might be interested in using peval  which
is a low level policy evaluation tool.  As an example, the
command

    peval -h radb.ra.net -expand_all AS3582

will give you all route objects from AS3582 registered with
RADB.

A much more sophisticated  tool from the RAToolSet  to handle
route  objects interactively is the  route object editor roe.
It has a graphical  user interface to  view  and manipulate
route objects registered  at  any  IRR. New route  objects may
be generated  from templates  and submitted  to  the registries.
Moreover, the route objects from the databases may be  compared
to real life routes.  Therefore,  roe is highly recommended as an
interface to the IRR  for route  objects.   Further information
on peval  and roe  is available together with the RAToolSet [5].

2.4 Set Objects

With  routing  policies it is often  necessary  to  reference
groups  of autonomous systems or  routes which  have identical
properties regarding  a


Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 7]


Internet Draft               Application of RPSL              March 26, 1997

specific policy. To make working  with such groups  easier RPSL
allows  to combine them in set objects.   There are two  basic
types of predefined  set objects, as-set, and route-set.  The
RPSL set objects are described below.

2.4.1 AS-SET Object

Autonomous system set objects (as-set)  are used to group
autonomous  system objects into  named sets. An as-set  has an
RPSL name  that starts  with ``AS-''.  In the example in Figure
4, an as-set called AS-NERO-PARTNERS  and containing AS3701,
AS4201, AS3582, AS4222, AS1798 is defined.  The as-set is the
RPSL replacement for the RIPE-181  as-macro.  Functionality is
the  same but syntax is different.

AS-SETs are particularly  useful when  specifying policies  for
groups  such as customers, providers, or for transit. You  are
encouraged to  register sets for these groups  because it is
most likely that  you will treat  them alike, i.e.  you  will
have  a  very similar  routing  policy for  all  your customers
which have an  autonomous system of  their own.   You may as
well discover that this is also true for the providers you are
peering with,  and it is most  convenient to  have the  ASs
combined in one  as-set for  which you offer  transit.    For
example, if a transit provider  specifies  its import policy
using its customer's as-set (i.e., its  as-in clause for  the
customer contains the customer's as-set), then that customer can
modify  the set of ASs  that its  transit provider accepts  from
it. Again, this  can be accomplished without requiring  the
customer or  the transit provider  to modify its aut-num object.


   as-set:    AS-NERO-PARTNERS
   members:   AS3701, AS4201, AS3582, AS4222, AS1798

   aut-num:   AS3701
   member-of: AS-NERO-PARTNERS
   ...

   aut-num:   AS4201
   member-of: AS-NERO-PARTNERS
   ...
   [etc]


                          Figure 4:  as-set Object


The ASs of the set are simply compiled in a comma delimited list
following the members attribute of the  as-set. This  list may
also contain  other AS-SETs. For an AS being member of an as-set
is indicated by  the member-of attribute of the aut-num object.



Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 8]


Internet Draft                Application of RPSL            March 26, 1997

2.4.2 ROUTE-SET Object

A route-set is a way to  name a group of routes. The syntax is
similar  to the as-set. A route-set has an  RPSL name that
starts  with ``RS-''. The members attribute lists  the members of
the set.   The value  of a  members attribute is a list of
address prefixes, or route-set  names.  The  members of the
route-set are the address prefixes  or the names of other route
sets specified.

Figure 5 presents some  example route-set objects. The set
rs-uo  contains two address  prefixes, namely 128.223.0.0/16
and 198.32.162.0/24. The set rs-bar contains  the members  of the
set  rs-uo and  the address  prefix 128.7.0.0/16.  The set
rs-empty contains no members.


   route-set: rs-uo
   members: 128.223.0.0/16, 198.32.162.0/24

   route-set: rs-bar
   members: 128.7.0.0/16, rs-uo

   route-set: rs-empty


                        Figure 5:  route-set Objects


3 Specifying Policies using RPSL

In this section we show how the various RPSL objects can be used
to  specify typical Internet policies.


3.1 Provider-Customer Policies


In typical customer-provider  relationships,  the customer
imports all  the routes that the provider has  and exports its
routes to  the provider.   The provider's policies are
symmetrical in the sense that it exports all  routes that it has
to the  customer,  and it  imports only  the customers
routes. Figure 6 illustrates one way of  expressing these
policies using RPSL  where AS3701 is the provider and  AS3582 is
the customer.   Refer to Figure 2  for AS3582's aut-num.

In this example, ``announce ANY'' means  export any route  that
AS3701  has registered, and  ``accept <^AS3582$>'' means  accept
only  AS3582's  routes (i.e., that  have AS-PATHs of length
one, where the AS in the path is


Alaettinoglu et.  al.          Expires  September 26, 1997          [Page 9]


Internet Draft                Application of RPSL            March 26, 1997


  aut-num:     AS3701
  as-name:     NERO-NET
  descr:       Network for Engineering and Research in Oregon
  ...
  as-in:       from AS3582 100 accept <^AS3582$>
  as-out:      to AS3582 announce ANY
  ...
  guardian:    meyer@antc.uoregon.edu
  admin-c:     DMM65
  tech-c:      DMM65
  notify:      noc@nero.net
  mnt-by:      MAINT-AS3701
  changed:     meyer@antc.uoregon.edu 970316
  source:      RADB


               Figure 6:  Provider-Customer Policies in RPSL

AS3582)(2). Note that  AS3582 is  taking full  routing from
AS3701;  this can be seen in  that AS3701 is announcing  ``ANY'',
and AS3582 is  accepting ``ANY''. The  important point  in this
example is  that if  AS3582 adds  or deletes route objects, there
is no need to update the aut-num objects.   The added (or
deleted) objects  will implicitly  update AS3582's  and  AS3701's
policies, and thus affect their router configuration files.

As mentioned  above, if  the customer  is  itself a  provider,
i.e.  it  has its own  customers,  the  set of  routes  passed to
the  provider  includes its customers'  routes  as  illustrated
in  Figure  7. In  this  example, ``accept AS-NERO-PARTNERS''
means that for each  AS X in the set defined  by AS-NERO-PARTNERS
accept AS X's routes.

In this case shown in Figure 7, if AS3701 gets a new customer,
then it  can update the definition  of the AS-NERO-PARTNERS  set
to include  the new  AS. The policies specified in the aut-num
objects for AS4600 and AS3701 do  not change.


3.2 Inter-Provider Policies


In this  case, the  policies  of both  providers are  to export
only  their customer routes  to the  other provider,  and to
import only  the  customer routes of the  other provider.   This
is commonly referred  to as  peerage. Figure 8 illustrates  how
this is  expressed using RPSL  where both AS  3701 and AS AS2914
are providers.   In this  example, AS3701 advertises only  the
------------------------------
 2. AS-PATH regular expressions are POSIX compliant regular expressions, see
section 3.3.



Alaettinoglu et.  al.         Expires  September 26, 1997          [Page 10]


Internet Draft               Application of RPSL              March 26, 1997


  aut-num:     AS4600
  as-name:     NERO-TRANSIT
  descr:       Network for Engineering and Research in Oregon
  ...
  as-in:       from AS3701 100 accept <^A3701+ (AS-NERO-PARTNERS)*$>
  as-out:      to AS3701 announce ANY
  ...
  guardian:    meyer@antc.uoregon.edu
  admin-c:     DMM65
  tech-c:      DMM65
  notify:      noc@nero.net
  mnt-by:      MAINT-AS4600
  changed:     meyer@antc.uoregon.edu 970316
  source:      RADB


               Figure 7:  Provider-Customer Policies in RPSL

AS paths described by the  AS-SET AS-NERO-PARTNERS (i.e.,
customer  routes). Likewise, we  filter routes  that  come from
AS2914, accepting  only  those defined by the  filter ``<^AS2914+
(AS-WNA)*$>'', i.e.,  those routes  whose AS-PATH attribute ends
with an AS in the set defined by the AS-WNA AS-SET.


  aut-num:     AS3701
  as-name:     NERO-NET
  descr:       Network for Engineering and Research in Oregon
  ...
  as-in:       from AS2914 100 accept <^AS2914+ (AS-WNA)*$>
  as-out:      to AS2914 announce AS-NERO-PARTNERS
  ...
  guardian:    meyer@antc.uoregon.edu
  admin-c:     DMM65
  tech-c:      DMM65
  notify:      noc@nero.net
  mnt-by:      MAINT-AS3701
  changed:     meyer@antc.uoregon.edu 970316
  source:      RADB


                 Figure 8:  Inter-Provider Policies in RPSL



3.3 AS-PATHS


In previous  examples  of routing  policies  special expressions
have  been used to describe  the ASs accepted  from or announced
to peering  partners. Actually, these expressions do  not only
cover the  ASs themselves but  also


Alaettinoglu et.  al.         Expires  September 26, 1997          [Page 11]


Internet Draft               Application of RPSL              March 26, 1997


    +--------------------+                +--------------------+
    |            7.7.7.1 |-----+    +-----| 7.7.7.2            |
    |                    |     |    |     |                    |
    | AS1                |    ========    |                AS2 |
    |                    |    IX    |     |                    |
    |                    |          +-----| 7.7.7.3            |
    +--------------------+                +--------------------+


          Figure 9:  Including interfaces in peerings definitions

their number  and sequence. This  is achieved  by  a mechanism
known  as regular expressions.  Those familiar with the UNIX
world or with programming languages like C or perl will most
likely already understood the details  of the AS-PATHS displayed
in the examples. RPSL uses POSIX compliant regular expressions.

Regular expressions follow certain rules. Several characters
have  special meanings, e.g.  ``^'' denotes  the beginning  of a
string,  ``$'' its  end. Then it becomes obvious that the AS-PATH
<^AS3582$> accepted from AS3582  in Figure 7 has length one and
consists of AS3582 only.

Besides these positional indicators there are also operators,
e.g. the unary postfix operators ``+'' or ``*'' as seen in figure
8 which ASs are  accepted by AS2914:   <^AS2914+ (AS-WNA)*$>.
These operators  work on the  directly preceding regular
expressions, i.e. + only affects AS2914, and * only  works on
(AS-WNA). Operator ``+''  means one or  more occurrences,
operator  ``*'' means zero or more occurrences.   Now it  becomes
obvious that the  AS-PATHS accepted start with at least one
AS2914 but may as well be stuffed  allowing several occurrences
of AS2914.   Then the AS-PATH  continues with no or  any number
of any ASs out of the as-set AS-WNA. No other ASs may then
follow.

Apparently, quite complicated AS-PATHS  can be  expressed in  a
very  handy and short way. For a  complete list of  operators and
rules for  regular expressions applicable to AS-PATHS in RPSL
refer to the RPSL document [1].

3.4 Including Interfaces in Peering Definitions


In the above  examples peerings were  only given  among ASs.
However,  the peerings may be described  in much more detail  by
RPSL. Actually,  peerings are introduced among physical  routers
using real IP  addresses.  These  can be specified in the as-in
and as-out attributes.   Figure 9 shows a  simple example of two
ASs AS1 and  AS2 which  are connected to  an exchange  point
IX. While AS1 has  only one connection  to the exchange  point
via a  router interface with IP address  7.7.7.1, AS2 has  two
different connections  with IP address 7.7.7.2 and 7.7.7.3.   The
first AS  may then define its  routing policy in more detail by
specifying its boundary router.



Alaettinoglu et. al.          Expires  September 26, 1997          [Page 12]


Internet Draft               Application of RPSL              March 26, 1997

    aut-num:   AS1
    as-in:     from AS2 at 7.7.7.1 accept <^AS2$>
    ...


This is very simple  and does not  make much of a  difference
compared to  a policy where no boundary router is specified
because AS1 in this example has only one connection  to the
exchange point.    However, AS1  might want  to choose to accept
only announcements  from AS2  which come  from the  router with
IP address 7.7.7.2 and disregard router 7.7.7.3.  AS1 then
defines  the following routing policy towards AS2:


    aut-num:   AS1
    as-in:     from AS2 7.7.7.2 at 7.7.7.1 accept <^AS2$>
    ...


So both routers  involved in  a peering may  be specified  and by
selecting certain pairs of routers other connections can be
denied.  If no routers are included in a policy clause then it
is assumed that the policy is true  for all peerings among the
ASs involved.


3.5 Describing Simple Backup Connections


The specification of  peerings among ASs  is not limited  to one
router  for each AS. In Figure 9 one of the two connections of
AS2 to the exchange point IX might be  used as  backup in case
the other  connection fails.   Let  us assume that AS1 wants to
use the connection to router 7.7.7.2 of AS2  during regular
operations, and router 7.7.7.3 as backup.  In a router
configuration this may be done by setting a local  preference.
The equivalent in RPSL is a corresponding action definition  in
the peering description. The  action definitions are inserted
directly before the accept keyword.

    aut-num:   AS1
    as-in:     from AS2 7.7.7.2 at 7.7.7.1 action pref=10
               from AS2 7.7.7.3 at 7.7.7.1 action pref=20
               accept <^AS2$>
    ...


Actions may also be defined without specifying IP addresses of
routers. If no routers are  included in the  policy clause  then
it is  asumed that  the actions are carried out for all peerings
among the ASs involved.

In the previous example AS1 controls where it  sends its traffic
and  which connection is  used as  backup. However,  AS2 may
also define  a  backup connection in an as-out clause:


Alaettinoglu et. al.          Expires  September 26, 1997          [Page 13]


Internet Draft               Application of RPSL              March 26, 1997

    aut-num:   AS2
    as-out:    to AS1 7.7.7.1 at 7.7.7.2 action med=10
               to AS1 7.7.7.1 at 7.7.7.3 action med=20
               announce <^AS2$>
    ...


The definition  given here for AS2 is  the  symmetric counterpart
to  the routing policy of  AS1. The selection  of routing
information  is done  by setting the multi exit discriminator
metric med. Actually, med metrics will not be used in practice
like this; they are more suitable for load balancing including
backups. For  more details  on med  metrics refer  to the
BGP-4 RFC [6].


3.6 The aut-num Object Editor


All the examples shown in the previous sections may well be
edited by  hand. They may be  extracted one  by one  from the
IRR using  the whois  program, edited, and then handed  back to
the  registry robots.   However, again  the RAToolSet [5]
provides  a very nice  tool which makes  working with  aut-num
objects much easier:  the aut-num object editor aoe.

The aut-num  object  editor has  a  graphical  user interface  to
view  and manipulate aut-num objects registered at any IRR. New
aut-num objects may be generated using templates and  submitted
ot the registries.   Moreover,  the routing policy from  the
databases may  be compared to  real life  peerings. Therefore,
aoe is  highly  recommended  as  an interface  to  the  IRR  for
aut-num objects.  Further information on aoe is available
together with  the RAToolSet [5].


4 Router Configuration Using RtConfig


RtConfig  is  a  tool  developed  by  the  Routing  Arbiter
project  [7]) to generate vendor specific  router configurations
from the  policy data  held in the various  IRRs.   RtConfig
currently supports  Cisco,  gated and  RSd configuration formats.
RtConfig  written in C++,  C, lex,  and yacc.    It has been
publicly  available since late  1994, and is  currently being
used by several sites for  router configuration.   A few  of the
sites  currently using RtConfig include the Routing Arbiter
Project (USA), ANS (USA),  CA*Net (Canada),  IMNet (Japan),
VERIO  (USA),  Oregon-IX  (USA),  IAfrica  (South Africa).   The
next section  describes a methodology  for generating  vendor
specific router configurations using RtConfig.(3)

------------------------------
 3. Discussion of RtConfig internals is beyond the scope of this document.




Alaettinoglu et.  al.         Expires  September 26, 1997          [Page 14]


Internet Draft               Application of RPSL              March 26, 1997

4.1 Using RtConfig


The general paradigm for  using RtConfig involves  registering
policy in  an IRR, building a RtConfig source file, then running
running RtConfig  against the source  file and  the  IRR database
to  create vendor specific router configuration for the
specified policy. The source file will contain vendor specific
commands as well as RtConfig commands;  in particular, the
vendor specific policy configuration  will be  removed and
replaced with  RtConfig commands.  Commands  beginning with
@RtConfig  instruct RtConfig to  perform special operations.   An
example template file  is shown in Figure  10.   In this example,
commands such  as ``@RtConfig  import AS3582  198.32.162.1/32
AS3701 198.32.162.2/32''  instruct  RtConfig  to  generate
vendor  specific import policies where the router 198.32.162.1 in
AS3582 is importing  routes from router 198.32.162.2 in AS3701.
The other @RtConfig commands  instruct the RtConfig  to  use
certain names  and  numbers  in the  output  that  it generates
(please refer to RtConfig manual [7] for additional
information).


  router    bgp 3582
  network   128.223.0.0
  !
  !       Start with access-list 100
  !
  @RtConfig set cisco`access`list`no = 100
  !
  !       NERO
  !
  neighbor 198.32.162.2 remote-as 3701
  @RtConfig set cisco`map`name = "AS3701-EXPORT"
  @RtConfig export AS3582 198.32.162.1/32 AS3701 198.32.162.2/32
  @RtConfig set cisco`map`name = "AS3701-IMPORT"
  @RtConfig import AS3582 198.32.162.1/32 AS3701 198.32.162.2/32
  !
  !       WNA/VERIO
  !
  neighbor 198.32.162.6 remote-as 2914
  @RtConfig set cisco`map`name = "AS2914-EXPORT"
  @RtConfig export AS3582 198.32.162.1/32 AS2914 198.32.162.6/32
  @RtConfig set cisco`map`name = "AS2914-IMPORT"
  @RtConfig import AS3582 198.32.162.1/32 AS2914 198.32.162.6/32
  ...


                     Figure 10:  RtConfig Template File

Once a  source file  is created,  the  file is  processed by
RtConfig  (the default IRR is the RADB, and the default vendor is
Cisco; however,  RtConfig or command line options can be used  to
override these values).  The  result of running RtConfig on the
source file in Figure 10 is shown in Figure 11.



Alaettinoglu et. al.          Expires  September 26, 1997          [Page 15]


Internet Draft               Application of RPSL              March 26, 1997

References


 [1] C. Alaettinoglu, T.  Bates, E. Gerich, D. Karrenberg, M. Terpstra,  and
     C. Villamizer:  Routing Policy Specification Language  (RPSL), Internet
     draft, USC Information Sciences Institute, Work in Progress.

 [2] T. Bates, J-M. Jouanigot, D. Karrenberg, P. Lothberg, and  M. Terpstra.
     Representation of IP  Routing Policies in the RIPE database,  Technical
     Report ripe-81, RIPE, RIPE NCC, Amsterdam, Netherlands, February 1993.

 [3] T.  Bates, E.  Gerich,  J. Joncharay,  J-M. Jouanigot,  D.  Karrenberg,
     M.  Terpstra,  and J.  Yu. Representation  of  IP Routing  Policies  in
     a  Routing  Registry,  Technical  Report  ripe-181,   RIPE,  RIPE  NCC,
     Amsterdam, Netherlands, October 1994.

 [4] Hank  Nussbacher. The CIDR  FAQ. Tel  Aviv University  and IBM  Israel.
     http://www.ibm.net.il/~hank/cidr.html

 [5] The RAToolSet. http://www.ra.net/ra/RAToolSet/

 [6] Y. Rekhter adn T. Li. A Border Gateway Protocol 4 (BGP-4).  Request for
     Comment RFC 1654. Network Information Center, July 1994.

 [7] RtConfig        as         part        of        the         RAToolSet.
     http://www.ra.net/ra/RAToolSet/RtConfig.html






Alaettinoglu et.  al.         Expires  September 26, 1997          [Page 16]


Internet Draft               Application of RPSL             March 26, 1997


  router    bgp 3582
  network   128.223.0.0
  !
  !       NERO
  !
  neighbor 198.32.162.2 remote-as 3701

  no access-list 100
  access-list 100 permit ip 128.223.0.0   0.0.0.0   255.255.0.0   0.0.0.0
  access-list 100 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255
  !
  !
  no route-map AS3701-EXPORT
  route-map AS3701-EXPORT permit 1
   match ip address 100
  !
  router bgp 3582
  neighbor 198.32.162.2 route-map AS3701-EXPORT out
  !
  !
  no route-map AS3701-IMPORT
  route-map AS3701-IMPORT permit 1
   set local-preference 1000
  !
  router bgp 3582
  neighbor 198.32.162.2 route-map AS3701-IMPORT in
  !
  !       WNA/VERIO
  !
  neighbor 198.32.162.6 remote-as 2914
  !
  no route-map AS2914-EXPORT
  route-map AS2914-EXPORT permit 1
   match ip address 100
  !
  router bgp 3582
  neighbor 198.32.162.6 route-map AS2914-EXPORT out
  no ip as-path access-list  100
  ip as-path access-list 100 permit ^_2914(((_[0-9]+))*              \
        (13|22|97|132|175|668|1914|2905|2914|3361|3381|3791|3937|    \
         4178|4354|4571|4674|4683|5091|5303|5798|5855|5856|5881|6083 \
         |6188|6971|7790|7951|8028))?$
  !
  no route-map AS2914-IMPORT
  route-map AS2914-IMPORT permit 1
   match as-path 100
   set local-preference 998
  !
  router bgp 3582
  neighbor 198.32.162.6 route-map AS2914-IMPORT in
  !
  ! other Cisco commands
  !


                         Figure 11:  Output of RtConfig


Alaettinoglu et.  al.        Expires  September 26, 1997          [Page 17]

Internet Draft               Application of RPSL             March 26, 1997