Internet Draft                                           Cengiz Alaettinoglu
Expires  May 20, 1998                                                USC/ISI
draft-ietf-rps-extending-00.txt                                  David Meyer
                                                        University of Oregon
                                                               David Kessens
                                                                     USC/ISI
                                                           November 20, 1997


                       Guidelines for Extending RPSL





Status of this Memo


This document is  an Internet  Draft, and  can be  found as  draft-ietf-rps-
extending-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 Internet Draft  describes guidelines for  extending the Routing  Policy
Specification Language  (RPSL) [3,  4].    Our  experiences with  PRDB  [2],
RIPE-81 [6], and  RIPE-181 [5]  taught us  that RPSL had  to be  extensible.
These languages were not  extensible and each transition  to a new  language
turned out to be quite  painful.  As a  result, extensibility was a  primary
design goal for  RPSL. New  routing protocols  or new  features to  existing
routing protocols can be easily handled using RPSL's dictionary class.   New
classes or new attributes to the existing classes can also be added.

Objects specified in the policy language are stored in the Internet  Routing
Registry (IRR)  [1, 7,  4].    Replacing  the specification  language  often
involves re-registering the existing objects in  the new syntax.   Software,
Internet Draft                Extending RPSL               November 20, 1997

either public domain or in-house, needs to be updated to understand the  new
syntax.   And the user  community needs to  be informed and  trained of  the
changes.

The initial RPSL dictionary object can be used to express most or all of the
policies being used in the Internet today.  However, extensions to RPSL will
be necessary as new  routing protocols or new  features to existing  routing
protocols are introduced.   This document provides guidelines for  extending
RPSL. These guidelines are designed with an eye toward maintaining  backward
compatibility with existing tools and databases.


2 Guidelines


In this section, we list the  available options for extending RPSL. We  list
them from the most preferred to the least preferred order.


2.1 Extensions by changing the dictionary class


Before proceeding  with  any  extensions,  the dictionary  class  should  be
studied in depth.   The dictionary class  is the primary mechanism  provided
to extend RPSL. Dictionary objects define routing policy attributes,  types,
and routing protocols.  Routing  policy attributes may correspond to  actual
protocol attributes, such as the  BGP path attributes (e.g. community,  dpa,
and AS-path), or they may correspond to router features (e.g. BGP route flap
damping).

We recommend  updating the  RPSL dictionary  object to  include  appropriate
rp-attribute and protocol  definitions when  new path  attributes or  router
features are introduced.   For example,  in an earlier  version of the  RPSL
document, it  was only  possible to  specify that  a router  performs  route
flap damping on a peer,  but it was not  possible to specify the  parameters
of route flap  damping.   Later the  parameters were added  by changing  the
dictionary.

When changing the dictionary, full compatibility should be maintained.   For
example, in  our flap  damping  case, we  made the  parameter  specification
optional in case this level  of detail was not desired  by some ISPs.   This
also achieved compatibility.   Any object registered without the  parameters
will continue  to be  valid.   Any  tool based  on RPSL  is expected  to  do
a default action on  routing policy attributes that  they do not  understand
(e.g. issue  a  warning and  otherwise  ignore).    Hence,  old  tools  upon
encountering a flap  damping specification with  parameters will ignore  the
parameters.






Alaettinoglu et.  al.             Expires  May 20, 1998             [Page 2]


Internet Draft                Extending RPSL               November 20, 1997

2.2 Extensions by adding new attributes to existing classes


New attributes  can  easily  be  added  to  any  class.     To  ensure  full
compatibility, new attributes should be  optional and should not  contradict
the semantics of  the objects  they are  attached to.   Any  tool that  uses
the IRR should  be designed so  that it ignores  attributes that it  doesn't
understand.  Most existing tools adhere to this design principle.

We recommend adding new attributes to existing classes when a new aspect  of
a class is discovered.  For  example, RPSL route class extends its  RIPE-181
predecessor by including  several new attributes  that enable aggregate  and
static route specification.


2.3 Extensions by adding new classes


New classes  can  be added  to  RPSL to  store  new types  of  policy  data.
Providing full compatibility is straight forward as long as existing classes
are still  understood.   Since  a tool  should only  query the  IRR for  the
classes that it  understand, full compatibility  should not be  an issue  in
this case.

New classes should  be added  with care.   Before  adding a  new class,  one
should question  if the  information contained  in the  objects of  the  new
class could have  better belonged  to some  other class.    For example,  if
the geographic location of  a router needs  to be stored in  IRR, it may  be
tempting to add a new class called, say router-location class.  However, the
information better belongs to the inet-rtr class, perhaps in a new attribute
called geographic-loc.

RPSL added several  new classes  to RIPE-181.    For example,  we added  the
route-set class which assigns a name to a set of address prefixes.   None of
the classes in RIPE-181 were appropriate for storing this binding.


2.4 Extensions by changing the syntax of existing RPSL attributes


If all of the methods described above fail to provide the desired  extension
or extensions,  it  may be  necessary  to change  the  syntax of  RPSL.  Any
change in  RPSL syntax  must  provide backwards  compatibility,  and  should
be considered only  as a  last resort since  full compatibility  may not  be
achievable.   That  is, old  tools may  break when  they  encounter the  new
syntax.  However, we require that the old syntax to be still valid.

One of the innocent  changes we made  to RIPE-181 was  to add comments  that
started on a hash  character (i.e. '#')  and ended at the  end of the  line.
These comments can be inserted anywhere.  However, this innocent new feature
is expected to break some of the  existing tools since they are not  written


Alaettinoglu et.  al.             Expires  May 20, 1998             [Page 3]


Internet Draft                Extending RPSL               November 20, 1997

to skip over comments.


3 Conclusions


In this document, we have  provided guidelines for extending RPSL.  However,
for extensions to be  adapted, IRRs may  need to deploy new  software.   The
ISPs need  to learn  of  the extensions.    Hence,  the extensions  must  be
documented, most preferable as  an IETF standards  RFC. Registries may  also
require some proof of user interest in the extensions before proceeding.



References


[1] Internet            Routing            Registry.             Procedures.
    http://www.ra.net/RADB.tools.docs/, http://www.ripe.net/db/doc.html.

[2] NSFNET   Policy   Routing   Database   (PRDB).   Maintained   by   MERIT
    Network   Inc.,   Ann   Arbor,   Michigan.   Contents   available   from
    nic.merit.edu.:/nsfnet/announced.networks/nets.tag.now   by    anonymous
    ftp.

[3] C.  Alaettinouglu,  T.  Bates,  E.  Gerich,   D. Karrenberg,   D.  Meyer,
    M. Terpstra,  and C. Villamizer.  Routing Policy Specification  Language
    (RPSL).  Internet  Draft  draft-ietf-rps-rpsl-04,   Network  Information
    Center, November 1997.

[4] C.  Alaettinouglu,  D. Meyer,  and  J. Schmitz.  Application  of  Routing
    Policy  Specification Language (RPSL)  on the  Internet. Internet  Draft
    draft-ietf-rps-appl-rpsl-01, July 1997. Work in progress.

[5] T.  Bates,  E. Gerich,  L.  Joncheray, J-M.  Jouanigot,  D.  Karrenberg,
    M.  Terpstra,  and J.  Yu.  Representation  of IP  Routing  Policies  in
    a  Routing  Registry.  Technical Report  RFC-1786,  Network  Information
    Center, March 1995.

[6] 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.

[7] A.  M. R.  Magee.  RIPE  NCC Database  Documentation.  Technical  Report
    RIPE-157, RIPE, RIPE NCC, Amsterdam, Netherlands, May 1997.








Alaettinoglu et.  al.             Expires  May 20, 1998             [Page 4]