summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2280.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc2280.txt')
-rw-r--r--doc/rfc/rfc2280.txt2971
1 files changed, 2971 insertions, 0 deletions
diff --git a/doc/rfc/rfc2280.txt b/doc/rfc/rfc2280.txt
new file mode 100644
index 0000000..0b01d3b
--- /dev/null
+++ b/doc/rfc/rfc2280.txt
@@ -0,0 +1,2971 @@
+
+
+
+
+
+
+Network Working Group C. Alaettinoglu
+Request for Comments: 2280 USC/Information Sciences Institute
+Category: Standards Track T. Bates
+ Cisco Systems
+ E. Gerich
+ At Home Network
+ D. Karrenberg
+ RIPE
+ D. Meyer
+ University of Oregon
+ M. Terpstra
+ Bay Networks
+ C. Villamizar
+ ANS
+ January 1998
+
+ Routing Policy Specification Language (RPSL)
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1998). All Rights Reserved.
+
+ Table of Contents
+
+ 1 Introduction 2
+ 2 RPSL Names, Reserved Words, and Representation 3
+ 3 Contact Information 6
+ 3.1 mntner Class . . . . . . . . . . . . . . . . . . . . . . . 6
+ 3.2 person Class . . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.3 role Class . . . . . . . . . . . . . . . . . . . . . . . . 9
+ 4 route Class 10
+ 5 Set Classes 12
+ 5.1 route-set Class . . . . . . . . . . . . . . . . . . . . . . 12
+ 5.2 as-set Class . . . . . . . . . . . . . . . . . . . . . . . 14
+ 5.3 Predefined Set Objects . . . . . . . . . . . . . . . . . . 15
+ 5.4 Hierarchical Set Names . . . . . . . . . . . . . . . . . . 15
+ 6 aut-num Class 16
+ 6.1 import Attribute: Import Policy Specification . . . . . . 16
+ 6.1.1 Peering Specification . . . . . . . . . . . . . . . . . 17
+ 6.1.2 Action Specification . . . . . . . . . . . . . . . . . 19
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 1]
+
+RFC 2280 RPSL January 1998
+
+
+ 6.1.3 Filter Specification . . . . . . . . . . . . . . . . . 20
+ 6.1.4 Example Policy Expressions . . . . . . . . . . . . . . 24
+ 6.2 export Attribute: Export Policy Specification . . . . . . 24
+ 6.3 Other Routing Protocols, Multi-Protocol Routing
+ Protocols, and Injecting Routes Between Protocols . . . . . 25
+ 6.4 Ambiguity Resolution . . . . . . . . . . . . . . . . . . . 26
+ 6.5 default Attribute: Default Policy Specification . . . . . 28
+ 6.6 Structured Policy Specification . . . . . . . . . . . . . . 29
+ 7 dictionary Class 33
+ 7.1 Initial RPSL Dictionary and Example Policy Actions
+ and Filters . . . . . . . . . . . . . . . . . . . . . . . . . 36
+ 8 Advanced route Class 41
+ 8.1 Specifying Aggregate Routes . . . . . . . . . . . . . . . . 41
+ 8.1.1 Interaction with policies in aut-num class . . . . . . 45
+ 8.1.2 Ambiguity resolution with overlapping aggregates . . . 46
+ 8.2 Specifying Static Routes . . . . . . . . . . . . . . . . . 47
+ 9 inet-rtr Class 48
+ 10 Security Considerations 49
+ 11 Acknowledgements 50
+ A Routing Registry Sites 51
+ B Authors' Addresses 52
+ C Full Copyright Statement 53
+
+1 Introduction
+
+ This memo is the reference document for the Routing Policy
+ Specification Language (RPSL). RPSL allows a network operator to be
+ able to specify routing policies at various levels in the Internet
+ hierarchy; for example at the Autonomous System (AS) level. At the
+ same time, policies can be specified with sufficient detail in RPSL
+ so that low level router configurations can be generated from them.
+ RPSL is extensible; new routing protocols and new protocol features
+ can be introduced at any time.
+
+ RPSL is a replacement for the current Internet policy specification
+ language known as RIPE-181 [4] or RFC-1786 [5]. RIPE-81 [6] was the
+ first language deployed in the Internet for specifying routing
+ policies. It was later replaced by RIPE-181 [4]. Through
+ operational use of RIPE-181 it has become apparent that certain
+ policies cannot be specified and a need for an enhanced and more
+ generalized language is needed. RPSL addresses RIPE-181's
+ limitations.
+
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 2]
+
+RFC 2280 RPSL January 1998
+
+
+ RPSL was designed so that a view of the global routing policy can be
+ contained in a single cooperatively maintained distributed database
+ to improve the integrity of Internet's routing. RPSL is not designed
+ to be a router configuration language. RPSL is designed so that
+ router configurations can be generated from the description of the
+ policy for one autonomous system (aut-num class) combined with the
+ description of a router (inet-rtr class), mainly providing router ID,
+ autonomous system number of the router, interfaces and peers of the
+ router, and combined with a global database mappings from AS sets to
+ ASes (as-set class), and from origin ASes and route sets to route
+ prefixes (route and route-set classes). The accurate population of
+ the RPSL database can help contribute toward such goals as router
+ configurations that protect against accidental (or malicious)
+ distribution of inaccurate routing information, verification of
+ Internet's routing, and aggregation boundaries beyond a single AS.
+
+ RPSL is object oriented; that is, objects contain pieces of policy
+ and administrative information. These objects are registered in the
+ Internet Routing Registry (IRR) by the authorized organizations. The
+ registration process is beyond the scope of this document. Please
+ refer to [1, 15, 2] for more details on the IRR.
+
+ In the following sections, we present the classes that are used to
+ define various policy and administrative objects. The "mntner" class
+ defines entities authorized to add, delete and modify a set of
+ objects. The "person" and "role" classes describes technical and
+ administrative contact personnel. Autonomous systems (ASes) are
+ specified using the "aut-num" class. Routes are specified using the
+ "route" class. Sets of ASes and routes can be defined using the
+ "as-set" and "route-set" classes. The "dictionary" class provides
+ the extensibility to the language. The "inet-rtr" class is used to
+ specify routers. Many of these classes were originally defined in
+ earlier documents [4, 11, 14, 10, 3] and have all been enhanced.
+
+ This document is self-contained. However, the reader is encouraged
+ to read RIPE-181 [5] and the associated documents [11, 14, 10, 3] as
+ they provide significant background as to the motivation and
+ underlying principles behind RIPE-181 and consequently, RPSL. For a
+ tutorial on RPSL, the reader should read the RPSL applications
+ document [2].
+
+2 RPSL Names, Reserved Words, and Representation
+
+ Each class has a set of attributes which store a piece of information
+ about the objects of the class. Attributes can be mandatory or
+ optional: A mandatory attribute has to be defined for all objects of
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 3]
+
+RFC 2280 RPSL January 1998
+
+
+ the class; optional attributes can be skipped. Attributes can also
+ be single or multiple valued. Each object is uniquely identified by
+ a set of attributes, referred to as the class "key".
+
+ The value of an attribute has a type. The following types are most
+ widely used. Note that RPSL is case insensitive and only the
+ characters from the ASCII character set can be used.
+
+ <object-name>Many objects in RPSL have a name. An <object-name>
+ is made up of letters, digits, the character underscore "_", and
+ the character hyphen "-"; the first character of a name must be a
+ letter, and the last character of a name must be a letter or a
+ digit. The following words are reserved by RPSL, and they can
+ not be used as names:
+
+ any as-any rs-any peeras
+ and or not
+ atomic from to at action accept announce except refine
+ networks into inbound outbound
+
+ Names starting with certain prefixes are reserved for certain
+ object types. Names starting with "as-" are reserved for as set
+ names. Names starting with "rs-" are reserved for route set
+ names.
+
+ <as-number>An AS number x is represented as the string "ASx". That
+ is, the AS 226 is represented as AS226.
+
+ <ipv4-address>An IPv4 address is represented as a sequence of four
+ integers in the range from 0 to 255 separated by the character
+ dot ".". For example, 128.9.128.5 represents a valid IPv4
+ address. In the rest of this document, we may refer to IPv4
+ addresses as IP addresses.
+
+ <address-prefix>An address prefix is represented as an IPv4
+ address followed by the character slash "/" followed by an
+ integer in the range from 0 to 32. The following are valid
+ address prefixes: 128.9.128.5/32, 128.9.0.0/16, 0.0.0.0/0; and
+ the following address prefixes are invalid: 0/0, 128.9/16 since 0
+ or 128.9 are not strings containing four integers.
+
+ <address-prefix-range>An address prefix range is an address
+ prefix followed by one of the following range operators:
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 4]
+
+RFC 2280 RPSL January 1998
+
+
+ ^- is the exclusive more specifics operator; it stands
+ for the more specifics of the address prefix excluding the
+ address prefix itself. For example, 128.9.0.0/16^- contains
+ all the more specifics of 128.9.0.0/16 excluding
+ 128.9.0.0/16.
+
+ ^+ is the inclusive more specifics operator; it stands
+ for the more specifics of the address prefix including the
+ address prefix itself. For example, 5.0.0.0/8^+ contains all
+ the more specifics of 5.0.0.0/8 including 5.0.0.0/8.
+
+ ^n where n is an integer, stands for all the length n specifics
+ of the address prefix. For example, 30.0.0.0/8^16 contains
+ all the more specifics of 30.0.0.0/8 which are of length 16
+ such as 30.9.0.0/16.
+
+ ^n-m where n and m are integers, stands for all the length n to
+ length m specifics of the address prefix. For example,
+ 30.0.0.0/8^24-32 contains all the more specifics of
+ 30.0.0.0/8 which are of length 24 to 32 such as 30.9.9.96/28.
+
+ Range operators can also be applied to address prefix sets. In
+ this case, they distribute over the members of the set. For
+ example, for a route-set (defined later) rs-foo, rs-foo^+
+ contains all the inclusive more specifics of all the prefixes in
+ rs-foo.
+
+ <date>A date is represented as an eight digit integer of the
+ form YYYYMMDD where YYYY represents the year, MM represents the
+ month of the year (01 through 12), and DD represents the day of
+ the month (01 through 31). For example, June 24, 1996 is
+ represented as 19960624.
+
+ <email-address>is as described in RFC-822[8].
+
+ <dns-name>is as described in RFC-1034[16].
+
+ <nic-handle>is a uniquely assigned identifier[13] used by routing,
+ address allocation, and other registries to unambiguously refer
+ to contact information. person and role classes map NIC handles
+ to actual person names, and contact information.
+
+ <free-form>is a sequence of ASCII characters.
+
+ <X-name>is a name of an object of type X. That is <mntner-name>
+ is a name of a mntner object.
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 5]
+
+RFC 2280 RPSL January 1998
+
+
+ <registry-name>is a name of an IRR registry. The routing
+ registries are listed in Appendix A.
+
+ A value of an attribute may also be a list of one of these types. A
+ list is represented by separating the list members by commas ",".
+ For example, "AS1, AS2, AS3, AS4" is a list of AS numbers. Note that
+ being list valued and being multiple valued are orthogonal. A
+ multiple valued attribute has more than one value, each of which may
+ or may not be a list. On the other hand a single valued attribute
+ may have a list value.
+
+ An RPSL object is textually represented as a list of attribute-value
+ pairs. Each attribute-value pair is written on a separate line. The
+ attribute name starts at column 0, followed by character ":" and
+ followed by the value of the attribute. The object's representation
+ ends when a blank line is encountered. An attribute's value can be
+ split over multiple lines, by starting the continuation lines with a
+ white-space (" " or tab) character. The order of attribute-value
+ pairs is significant.
+
+ An object's description may contain comments. A comment can be
+ anywhere in an object's definition, it starts at the first "#"
+ character on a line and ends at the first end-of-line character.
+ White space characters can be used to improve readability.
+
+3 Contact Information
+
+ The mntner, person and role classes, admin-c, tech-c, mnt-by,
+ changed, and source attributes of all classes describe contact
+ information. The mntner class also specifies what entities can
+ create, delete and update other objects. These classes do not
+ specify routing policies and each registry may have different or
+ additional requirements on them. Here we present the common
+ denominator for completeness which is the RIPE database
+ implementation[15]. Please consult your routing registry for the
+ latest specification of these classes and attributes.
+
+3.1 mntner Class
+
+ The mntner class defines entities that can create, delete and update
+ RPSL objects. A provider, before he/she can create RPSL objects,
+ first needs to create a mntner object. The attributes of the mntner
+ class are shown in Figure 1. The mntner class was first described in
+ [11].
+
+ The mntner attribute is mandatory and is the class key attribute.
+ Its value is an RPSL name. The auth attribute specifies the scheme
+ that will be used
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 6]
+
+RFC 2280 RPSL January 1998
+
+
+Attribute Value Type
+mntner <object-name> mandatory, single-valued, class key
+descr <free-form> mandatory, single-valued
+auth see description in text mandatory, multi-valued
+upd-to <email-address> mandatory, multi-valued
+mnt-nfy <email-address> optional, multi-valued
+tech-c <nic-handle> mandatory, multi-valued
+admin-c <nic-handle> mandatory, multi-valued
+remarks <free-form> optional, multi-valued
+notify <email-address> optional, multi-valued
+mnt-by list of <mntner-name> mandatory, multi-valued
+changed <email-address> <date> mandatory, multi-valued
+source <registry-name> mandatory, single-valued
+
+ to identify and authenticate update requests from this maintainer.
+ It has the following syntax:
+
+ auth: <scheme-id> <auth-info>
+
+ E.g.
+ auth: NONE
+ auth: CRYPT-PW dhjsdfhruewf
+ auth: MAIL-FROM .*@ripe\.net
+
+ The <scheme-id>'s currently defined are: NONE, MAIL-FROM, PGP and
+ CRYPT-PW. The <auth-info> is additional information required by a
+ particular scheme: in the case of MAIL-FROM, it is a regular
+ expression matching valid email addresses; in the case of CRYPT-PW,
+ it is a password in UNIX crypt format; and in the case of PGP, it is
+ a PGP public key. If multiple auth attributes are specified, an
+ update request satisfying any one of them is authenticated to be from
+ the maintainer.
+
+ The upd-to attribute is an email address. On an unauthorized update
+ attempt of an object maintained by this maintainer, an email message
+ will be sent to this address. The mnt-nfy attribute is an email
+ address. A notification message will be forwarded to this email
+ address whenever an object maintained by this maintainer is added,
+ changed or deleted.
+
+ The descr attribute is a short, free-form textual description of the
+ object. The tech-c attribute is a technical contact NIC handle.
+ This is someone to be contacted for technical problems such as
+ misconfiguration. The admin-c attribute is an administrative contact
+ NIC handle. The remarks attribute is a free text explanation or
+ clarification. The notify attribute is an email address to which
+ notifications of changes to this object should be sent. The mnt-by
+ attribute is a list of mntner object names. The authorization for
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 7]
+
+RFC 2280 RPSL January 1998
+
+
+ changes to this object is governed by any of the maintainer objects
+ referenced. The changed attribute documents who last changed this
+ object, and when this change was made. Its syntax has the following
+ form:
+
+ changed: <email-address> <YYYYMMDD>
+
+ E.g.
+ changed: johndoe@terabit-labs.nn 19900401
+
+ The <email-address> identifies the person who made the last change.
+ <YYYYMMDD> is the date of the change. The source attribute specifies
+ the registry where the object is registered. Figure 2 shows an
+ example mntner object. In the example, UNIX crypt format password
+ authentication is used.
+
+ mntner: RIPE-NCC-MNT
+ descr: RIPE-NCC Maintainer
+ admin-c: DK58
+ tech-c: OPS4-RIPE
+ upd-to: ops@ripe.net
+ mnt-nfy: ops-fyi@ripe.net
+ auth: CRYPT-PW lz1A7/JnfkTtI
+ mnt-by: RIPE-NCC-MNT
+ changed: ripe-dbm@ripe.net 19970820
+ source: RIPE
+
+ Figure 2: An example mntner object.
+
+ The descr, tech-c, admin-c, remarks, notify, mnt-by, changed and
+ source attributes are attributes of all RPSL classes. Their syntax,
+ semantics, and mandatory, optional, multi-valued, or single-valued
+ status are the same for for all RPSL classes. We do not further
+ discuss them in other sections.
+
+3.2 person Class
+
+ A person class is used to describe information about people. Even
+ though it does not describe routing policy, we still describe it here
+ briefly since many policy objects make reference to person objects.
+ The person class was first described in [14].
+
+ The attributes of the person class are shown in Figure 3. The person
+ attribute is the full name of the person. The phone and the fax-no
+ attributes have the following syntax:
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 8]
+
+RFC 2280 RPSL January 1998
+
+
+Attribute Value Type
+person <free-form> mandatory, single-valued
+nic-hdl <nic-handle> mandatory, single-valued, class key
+address <free-form> mandatory, multi-valued
+phone see description in text mandatory, multi-valued
+fax-no same as phone optional, multi-valued
+e-mail <email-address> mandatory, multi-valued
+
+
+ Figure 3: person Class Attributes
+
+ phone: +<country-code> <city> <subscriber> [ext. <extension>]
+
+ E.g.:
+ phone: +31 20 12334676
+ phone: +44 123 987654 ext. 4711
+
+
+ Figure 4 shows an example person object.
+
+
+ person: Daniel Karrenberg
+ address: RIPE Network Coordination Centre (NCC)
+ address: Singel 258
+ address: NL-1016 AB Amsterdam
+ address: Netherlands
+ phone: +31 20 535 4444
+ fax-no: +31 20 535 4445
+ e-mail: Daniel.Karrenberg@ripe.net
+ nic-hdl: DK58
+ changed: Daniel.Karrenberg@ripe.net 19970616
+ source: RIPE
+
+
+ Figure 4: An example person object.
+
+3.3 role Class
+
+ The role class is similar to the person object. However, instead of
+ describing a human being, it describes a role performed by one or
+ more human beings. Examples include help desks, network monitoring
+ centers, system administrators, etc. Role object is particularly
+ useful since often a person performing a role may change, however the
+ role itself remains.
+
+ The attributes of the role class are shown in Figure 5. The nic-hdl
+ attributes of the person and role classes share the same name space.
+ The
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 9]
+
+RFC 2280 RPSL January 1998
+
+
+ Attribute Value Type
+ role <free-form> mandatory, single-valued
+ nic-hdl <nic-handle> mandatory, single-valued, class key
+ trouble <free-form> optional, multi-valued
+ address <free-form> mandatory, multi-valued
+ phone see description in text mandatory, multi-valued
+ fax-no same as phone optional, multi-valued
+ e-mail <email-address> mandatory, multi-valued
+
+
+ Figure 5: role Class Attributes
+
+ NIC handle of a role object cannot be used in an admin-c field. The
+ trouble attribute of role object may contain additional contact
+ information to be used when a problem arises in any object that
+ references this role object. Figure 6 shows an example role object.
+
+ role: RIPE NCC Operations
+ address: Singel 258
+ address: 1016 AB Amsterdam
+ address: The Netherlands
+ phone: +31 20 535 4444
+ fax-no: +31 20 545 4445
+ e-mail: ops@ripe.net
+ admin-c: CO19-RIPE
+ tech-c: RW488-RIPE
+ tech-c: JLSD1-RIPE
+ nic-hdl: OPS4-RIPE
+ notify: ops@ripe.net
+ changed: roderik@ripe.net 19970926
+ source: RIPE
+
+
+ Figure 6: An example role object.
+
+4 route Class
+
+ Each interAS route (also referred to as an interdomain route)
+ originated by an AS is specified using a route object. The
+ attributes of the route class are shown in Figure 7. The route
+ attribute is the address prefix of the route and the origin attribute
+ is the AS number of the AS that originates the route into the interAS
+ routing system. The route and origin attribute pair is the class
+ key.
+
+ Figure 8 shows examples of four route objects (we do not include
+ contact.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 10]
+
+RFC 2280 RPSL January 1998
+
+
+Attribute Value Type
+route <address-prefix> mandatory, single-valued,
+ class key
+origin <as-number> mandatory, single-valued,
+ class key
+withdrawn <date> optional, single-valued
+member-of list of <route-set-names> optional, single-valued
+ see Section 5
+inject see Section 8 optional, multi-valued
+components see Section 8 optional, single-valued
+aggr-bndry see Section 8 optional, single-valued
+aggr-mtd see Section 8 optional, single-valued
+export-comps see Section 8 optional, single-valued
+holes see Section 8 optional, single-valued
+
+
+ Figure 7: route Class Attributes
+
+ attributes such as admin-c, tech-c for brevity). Note that the last
+ two route objects have the same address prefix, namely 128.8.0.0/16.
+ However, they are different route objects since they are originated
+ by different ASes (i.e. they have different keys).
+
+ route: 128.9.0.0/16
+ origin: AS226
+
+ route: 128.99.0.0/16
+ origin: AS226
+
+ route: 128.8.0.0/16
+ origin: AS1
+
+ route: 128.8.0.0/16
+ origin: AS2
+ withdrawn: 19960624
+
+
+ Figure 8: Route Objects
+
+ The withdrawn attribute, if present, signifies that the originator AS
+ no longer originates this address prefix in the Internet. Its value
+ is a date indicating the date of withdrawal. In Figure 8, the last
+ route object is withdrawn (i.e. no longer originated by AS2) on June
+ 24, 1996.
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 11]
+
+RFC 2280 RPSL January 1998
+
+
+5 Set Classes
+
+ To specify policies, it is often useful to define sets of objects.
+ For this purpose we define two classes: route-set and as-set. These
+ classes define a named set. The members of these sets can be
+ specified by either explicitly listing them in the set object's
+ definition, or implicitly by having route and aut-num objects refer
+ to the set names, or a combination of both methods.
+
+5.1 route-set Class
+
+ The attributes of the route-set class are shown in Figure 9. The
+ route-set attribute defines the name of the set. It is an RPSL name
+ that starts with "rs-". The members attribute lists the members of
+ the set. The members attribute is a list of address prefixes or
+ other route-set names. Note that, the route-set class is a set of
+ route prefixes, not of RPSL route objects.
+
+ Attribute Value Type
+ route-set <object-name> mandatory, single-valued,
+ class key
+ members list of <address-prefixes> or optional, single-valued
+ <route-set-names>
+ mbrs-by-ref list of <mntner-names> optional, single-valued
+
+
+ Figure 9: route-set Class Attributes
+
+ Figure 10 presents some example route-set objects. The set rs-foo
+ contains two address prefixes, namely 128.9.0.0/16 and 128.9.0.0/16.
+ The set rs-bar contains the members of the set rs-foo and the address
+ prefix 128.7.0.0/16. The set rs-empty contains no members.
+
+ route-set: rs-foo
+ members: 128.9.0.0/16, 128.9.0.0/24
+
+ route-set: rs-bar
+ members: 128.7.0.0/16, rs-foo
+
+ route-set: rs-empty
+
+
+ Figure 10: route-set Objects
+
+ An address prefix or a route-set name in a members attribute can be
+ optionally followed by a range operator. For example, the following
+ set
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 12]
+
+RFC 2280 RPSL January 1998
+
+
+ route-set: rs-bar
+ members: 5.0.0.0/8^+, 30.0.0.0/8^24-32, rs-foo^+
+
+ contains all the more specifics of 5.0.0.0/8 including 5.0.0.0/8, all
+ the more specifics of 30.0.0.0/8 which are of length 24 to 32 such as
+ 30.9.9.96/28, and all the more specifics of address prefixes in route
+ set rs-foo.
+
+ The mbrs-by-ref attribute is a list of maintainer names or the
+ keyword ANY. If this attribute is used, the route set also includes
+ address prefixes whose route objects are registered by one of these
+ maintainers and whose member-of attribute refers to the name of this
+ route set. If the value of a mbrs-by-ref attribute is ANY, any route
+ object referring to the route set name is a member. If the mbrs-by-
+ ref attribute is missing, only the address prefixes listed in the
+ members attribute are members of the set.
+
+ route-set: rs-foo
+ mbrs-by-ref: MNTR-ME, MNTR-YOU
+
+ route-set: rs-bar
+ members: 128.7.0.0/16
+ mbrs-by-ref: MNTR-YOU
+
+ route: 128.9.0.0/16
+ origin: AS1
+ member-of: rs-foo
+ mnt-by: MNTR-ME
+
+ route: 128.8.0.0/16
+ origin: AS2
+ member-of: rs-foo, rs-bar
+ mnt-by: MNTR-YOU
+
+
+ Figure 11: route-set objects.
+
+ Figure 11 presents example route-set objects that use the mbrs-by-ref
+ attribute. The set rs-foo contains two address prefixes, namely
+ 128.8.0.0/16 and 128.9.0.0/16 since the route objects for
+ 128.8.0.0/16 and 128.9.0.0/16 refer to the set name rs-foo in their
+ member-of attribute. The set rs-bar contains the address prefixes
+ 128.7.0.0/16 and 128.8.0.0/16. The route 128.7.0.0/16 is explicitly
+ listed in the members attribute of rs-bar, and the route object for
+ 128.8.0.0/16 refer to the set name rs-bar in its member-of attribute.
+
+ Note that, if an address prefix is listed in a members attribute of a
+ route set, it is a member of that route set. The route object
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 13]
+
+RFC 2280 RPSL January 1998
+
+
+ corresponding to this address prefix does not need to contain a
+ member-of attribute referring to this set name. The member-of
+ attribute of the route class is an additional mechanism for
+ specifying the members indirectly.
+
+5.2 as-set Class
+
+ The attributes of the as-set class are shown in Figure 12. The as-
+ set attribute defines the name of the set. It is an RPSL name that
+ starts with "as-". The members attribute lists the members of the
+ set. The members attribute is a list of AS numbers, or other as-set
+ names.
+
+ Attribute Value Type
+ as-set <object-name> mandatory, single-valued,
+ class key
+ members list of <as-numbers> or optional, single-valued
+ <as-set-names>
+ mbrs-by-ref list of <mntner-names> optional, single-valued
+
+
+ Figure 12: as-set Class Attributes
+
+ Figure 13 presents two as-set objects. The set as-foo contains two
+ ASes, namely AS1 and AS2. The set as-bar contains the members of the
+ set as-foo and AS3, that is it contains AS1, AS2, AS3.
+
+ as-set: as-foo as-set: as-bar
+ members: AS1, AS2 members: AS3, as-foo
+
+
+ Figure 13: as-set objects.
+
+
+ The mbrs-by-ref attribute is a list of maintainer names or the
+ keyword ANY. If this attribute is used, the AS set also includes
+ ASes whose aut-num objects are registered by one of these maintainers
+ and whose member-of attribute refers to the name of this AS set. If
+ the value of a mbrs-by-ref attribute is ANY, any AS object referring
+ to the AS set is a member of the set. If the mbrs-by-ref attribute
+ is missing, only the ASes listed in the members attribute are members
+ of the set.
+
+ Figure 14 presents an example as-set object that uses the mbrs-by-ref
+ attribute. The set as-foo contains AS1, AS2 and AS3. AS4 is not a
+ member of the set as-foo even though the aut-num object references
+ as-foo. This is because MNTR-OTHER is not listed in the as-foo's
+ mbrs-by-ref attribute.
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 14]
+
+RFC 2280 RPSL January 1998
+
+
+ as-set: as-foo
+ members: AS1, AS2
+ mbrs-by-ref: MNTR-ME
+
+ aut-num: AS3 aut-num: AS4
+ member-of: as-foo member-of: as-foo
+ mnt-by: MNTR-ME mnt-by: MNTR-OTHER
+
+
+ Figure 14: as-set objects.
+
+5.3 Predefined Set Objects
+
+
+ In a context that expects a route set (e.g. members attribute of the
+ route-set class), an AS number ASx defines the set of routes that are
+ originated by ASx; and an as-set AS-X defines the set of routes that
+ are originated by the ASes in AS-X. A route p is said to be
+ originated by ASx if there is a route object for p with ASx as the
+ value of the origin attribute. For example, in Figure 15, the route
+ set rs-special contains 128.9.0.0/16, routes of AS1 and AS2, and
+ routes of the ASes in AS set AS-FOO.
+
+ route-set: rs-special
+ members: 128.9.0.0/16, AS1, AS2, AS-FOO
+
+
+ Figure 15: Use of AS numbers and AS sets in route sets.
+
+ The set rs-any contains all routes registered in IRR. The set as-any
+ contains all ASes registered in IRR.
+
+5.4 Hierarchical Set Names
+
+ Set names can be hierarchical. A hierarchical set name is a sequence
+ of set names and AS numbers separated by colons ":". For example,
+ the following names are valid: AS1:AS-CUSTOMERS, AS1:RS-EXCEPTIONS,
+ AS1:RS-EXPORT:AS2, RS-EXCEPTIONS:RS-BOGUS. All components of an
+ hierarchical set name which are not AS numbers should start with
+ "as-" or "rs-" for as sets and route sets respectively.
+
+ A set object with name X1:...:Xn-1:Xn can only be created by the
+ maintainer of the object with name X1:...:Xn-1. That is, only the
+ maintainer of AS1 can create a set with name AS1:AS-FOO; and only the
+ maintainer of AS1:AS-FOO can create a set with name AS1:AS-FOO:AS-
+ BAR.
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 15]
+
+RFC 2280 RPSL January 1998
+
+
+ The purpose of an hierarchical set name is to partition the set name
+ space so that the controllers of the set name X1 controls the whole
+ set name space under X1, i.e. X1:...:Xn-1. This is important since
+ anyone can create a set named AS-MCI-CUSTOMERS but only the people
+ created AS3561 can create AS3561:AS-CUSTOMERS. In the former, it is
+ not clear if the set AS-MCI-CUSTOMERS has any relationship with MCI.
+ In the latter, we can guarantee that AS3561:AS-CUSTOMERS and AS3561
+ are created by the same entity.
+
+6 aut-num Class
+
+ ASes are specified using the aut-num class. The attributes of the
+ aut-num class are shown in Figure 16. The value of the aut-num
+ attribute is the AS number of the AS described by this object. The
+ as-name attribute is a symbolic name (in RPSL name syntax) of the AS.
+ The import, export and default routing policies of the AS are
+ specified using import, export and default attributes respectively.
+
+ Attribute Value Type
+ aut-num <as-number> mandatory, single-valued, class key
+ as-name <object-name> mandatory, single-valued
+ member-of list of <as-set-names> optional, single-valued
+ import see Section 6.1 optional, multi valued
+ export see Section 6.2 optional, multi valued
+ default see Section 6.5 optional, multi valued
+
+ Figure 16: aut-num Class Attributes
+
+6.1 import Attribute: Import Policy Specification
+
+ Figure 17 shows a typical interconnection of ASes that we will be
+ using in our examples throughout this section. In this example
+ topology, there are three ASes, AS1, AS2, and AS3; two exchange
+ points, EX1 and EX2; and six routers. Routers connected to the same
+ exchange point peer with each other, i.e. open a connection for
+ exchanging routing information. Each router would export a subset of
+ the routes it has to its peer routers. Peer routers would import a
+ subset of these routes. A router while importing routes would set
+ some route attributes. For example, AS1 can assign higher preference
+ values to the routes it imports from AS2 so that it prefers AS2 over
+ AS3. While exporting routes, a router may also set some route
+ attributes in order to affect route selection by its peers. For
+ example, AS2 may set the MULTI-EXIT-DISCRIMINATOR BGP attribute so
+ that AS1 prefers to use the router 9.9.9.2. Most interAS policies
+ are specified by specifying what route subsets can be imported or
+ exported, and how the various BGP route attributes are set and used.
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 16]
+
+RFC 2280 RPSL January 1998
+
+
+ ---------------------- ----------------------
+ | 7.7.7.1 |-------| |-------| 7.7.7.2 |
+ | | ======== | |
+ | AS1 | EX1 |-------| 7.7.7.3 AS2 |
+ | | | |
+ | 9.9.9.1 |------ ------| 9.9.9.2 |
+ ---------------------- | | ----------------------
+ ===========
+ | EX2
+ ---------------------- |
+ | 9.9.9.3 |---------
+ | |
+ | AS3 |
+ ----------------------
+
+ Figure 17: Example topology consisting of three ASes, AS1, AS2, and
+ AS3; two exchange points, EX1 and EX2; and six routers.
+
+ In RPSL, an import policy is divided into import policy expressions.
+ Each import policy expression is specified using an import attribute.
+ The import attribute has the following syntax (we will extend this
+ syntax later in Sections 6.3 and 6.6):
+
+ import: from <peering-1> [action <action-1>]
+ . . .
+ from <peering-N> [action <action-N>]
+ accept <filter>
+
+ The action specification is optional. The semantics of an import
+ attribute is as follows: the set of routes that are matched by
+ <filter> are imported from all the peers in <peerings>; while
+ importing routes at <peering-M>, <action-M> is executed.
+
+
+ E.g.
+ aut-num: AS1
+ import: from AS2 action pref = 1; accept { 128.9.0.0/16 }
+
+ This example states that the route 128.9.0.0/16 is accepted from AS2
+ with preference 1. In the next few subsections, we will describe how
+ peerings, actions and filters are specified.
+
+6.1.1 Peering Specification
+
+ Our example above used an AS number to specify peerings. The
+ peerings can be specified at different granularities. The syntax of
+ a peering specification has two forms. The first one is as follows:
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 17]
+
+RFC 2280 RPSL January 1998
+
+
+ <peer-as> [<peer-router>] [at <local-router>]
+
+ where <local-router> and <peer-router> are IP addresses of routers,
+ <peer-as> is an AS number. <peer-as> must be the AS number of
+ <peer-router>. Both <local-router> and <peer-router> are optional.
+ If both <local-router> and <peer-router> are specified, this peering
+ specification identifies only the peering between these two routers.
+ If only <local-router> is specified, this peering specification
+ identifies all the peerings between <local-router> and any of its
+ peer routers in <peer-as>. If only <peer-router> is specified, this
+ peering specification identifies all the peerings between any router
+ in the local AS and <peer-router>. If neither <local-router> nor
+ <peer-router> is specified, this peering specification identifies all
+ the peerings between any router in the local AS and any router in
+ <peer-as>.
+
+ We next give examples. Consider the topology of Figure 17 where
+ 7.7.7.1, 7.7.7.2 and 7.7.7.3 peer with each other; 9.9.9.1, 9.9.9.2
+ and 9.9.9.3 peer with each other. In the following example 7.7.7.1
+ imports 128.9.0.0/16 from 7.7.7.2.
+
+ (1) aut-num: AS1
+ import: from AS2 7.7.7.2 at 7.7.7.1 accept { 128.9.0.0/16 }
+
+ In the following example 7.7.7.1 imports 128.9.0.0/16 from 7.7.7.2
+ and 7.7.7.3.
+
+ (2) aut-num: AS1
+ import: from AS2 at 7.7.7.1 accept { 128.9.0.0/16 }
+
+ In the following example 7.7.7.1 imports 128.9.0.0/16 from 7.7.7.2
+ and 7.7.7.3, and 9.9.9.1 imports 128.9.0.0/16 from 9.9.9.2.
+
+ (3) aut-num: AS1
+ import: from AS2 accept { 128.9.0.0/16 }
+
+ The second form of <peering> specification has the following syntax:
+
+ <as-expression> [at <router-expression>]
+
+ where <as-expression> is an expression over AS numbers and sets using
+ operators AND, OR, and NOT, and <router-expression> is an expression
+ over router IP addresses and DNS names using operators AND, OR, and
+ NOT. The DNS name can only be used if there is an inet-rtr object for
+ that name that binds the name to IP addresses. This form identifies
+ all the peerings between any local router in <router-expression> to
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 18]
+
+RFC 2280 RPSL January 1998
+
+
+ any of their peer routers in the ASes in <as-expression>. If
+ <router-expression> is not specified, it defaults to all routers of
+ the local AS.
+
+ In the following example 9.9.9.1 imports 128.9.0.0/16 from 9.9.9.2
+ and 9.9.9.3.
+
+ (4) as-set: AS-FOO
+ members: AS2, AS3
+ aut-num: AS1
+ import: from AS-FOO at 9.9.9.1 accept { 128.9.0.0/16 }
+
+ In the following example 9.9.9.1 imports 128.9.0.0/16 from 9.9.9.2
+ and 9.9.9.3, and 7.7.7.1 imports 128.9.0.0/16 from 7.7.7.2 and
+ 7.7.7.3.
+
+ (5) aut-num: AS1
+ import: from AS-FOO accept { 128.9.0.0/16 }
+
+ In the following example AS1 imports 128.9.0.0/16 from AS3 at router
+ 9.9.9.1
+
+ (6) aut-num: AS1
+ import: from AS-FOO and not AS2
+ at not 7.7.7.1
+ accept { 128.9.0.0/16 }
+
+ This is because "AS-FOO and not AS2" equals AS3 and "not 7.7.7.1"
+ equals 9.9.9.1.
+
+6.1.2 Action Specification
+
+ Policy actions in RPSL either set or modify route attributes, such as
+ assigning a preference to a route, adding a BGP community to the BGP
+ community path attribute, or setting the MULTI-EXIT-DISCRIMINATOR
+ attribute. Policy actions can also instruct routers to perform
+ special operations, such as route flap damping.
+
+ The routing policy attributes whose values can be modified in policy
+ actions are specified in the RPSL dictionary. Please refer to
+ Section 7 for a list of these attributes. Each action in RPSL is
+ terminated by the character ';'. It is possible to form composite
+ policy actions by listing them one after the other. In a composite
+ policy action, the actions are executed left to right. For example,
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 19]
+
+RFC 2280 RPSL January 1998
+
+
+aut-num: AS1
+import: from AS2
+ action pref = 10; med = 0; community.append(10250, {3561,10});
+ accept { 128.9.0.0/16 }
+
+ sets pref to 10, med to 0, and then appends 10250 and {3561,10} to
+ the community path attribute.
+
+6.1.3 Filter Specification
+
+ A policy filter is a logical expression which when applied to a set
+ of routes returns a subset of these routes. We say that the policy
+ filter matches the subset returned. The policy filter can match
+ routes using any path attribute, such as the destination address
+ prefix (or NLRI), AS-path, or community attributes.
+
+ The policy filters can be composite by using the operators AND, OR,
+ and NOT. The following policy filters can be used to select a subset
+ of routes:
+
+ ANY The filter-keyword ANY matches all routes.
+
+ Address-Prefix Set This is an explicit list of address prefixes
+ enclosed in braces '{' and '}'. The policy filter matches the set of
+ routes whose destination address-prefix is in the set. For example:
+
+ { 0.0.0.0/0 }
+ { 128.9.0.0/16, 128.8.0.0/16, 128.7.128.0/17, 5.0.0.0/8 }
+ { }
+
+ An address prefix can be optionally followed by a range operator
+ (i.e. '^-', '^+', '^n', or '^n-m'). For example, the set
+
+ { 5.0.0.0/8^+, 128.9.0.0/16^-, 30.0.0.0/8^16, 30.0.0.0/8^24-32 }
+
+ contains all the more specifics of 5.0.0.0/8 including 5.0.0.0/8, all
+ the more specifics of 128.9.0.0/16 excluding 128.9.0.0/16, all the
+ more specifics of 30.0.0.0/8 which are of length 16 such as
+ 30.9.0.0/16, and all the more specifics of 30.0.0.0/8 which are of
+ length 24 to 32 such as 30.9.9.96/28.
+
+ Route Set Name A route set name matches the set of routes that are
+ members of the set. A route set name may be a name of a route-set
+ object, an AS number, or a name of an as-set object (AS numbers and
+ as-set names implicitly define route sets; please see Section 5.3).
+ For example:
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 20]
+
+RFC 2280 RPSL January 1998
+
+
+ aut-num: AS1
+ import: from AS2 action pref = 1; accept AS2
+ import: from AS2 action pref = 1; accept AS-FOO
+ import: from AS2 action pref = 1; accept RS-FOO
+
+ The keyword PeerAS can be used instead of the AS number of the peer
+ AS. PeerAS is particularly useful when the peering is specified
+ using an AS expression. For example:
+
+ as-set: AS-FOO
+ members: AS2, AS3
+
+ aut-num: AS1
+ import: from AS-FOO action pref = 1; accept PeerAS
+
+ is same as:
+
+ aut-num: AS1
+ import: from AS2 action pref = 1; accept AS2
+ import: from AS3 action pref = 1; accept AS3
+
+ A route set name can also be followed by one of the operators '^-',
+ '^+', '^n' or '^n-m'. These operators are distributive over the
+ route sets. For example, { 5.0.0.0/8, 6.0.0.0/8 }^+ equals {
+ 5.0.0.0/8^+, 6.0.0.0/8^+ }, and AS1^- equals all the exclusive more
+ specifics of routes originated by AS1.
+
+ AS Path Regular Expressions An AS-path regular expression can be used
+ as a policy filter by enclosing the expression in `<' and `>'. An
+ AS-path policy filter matches the set of routes which traverses a
+ sequence of ASes matched by the AS-path regular expression. A router
+ can check this using the AS_PATH attribute in the Border Gateway
+ Protocol [18], or the RD_PATH attribute in the Inter-Domain Routing
+ Protocol[17].
+
+ AS-path Regular Expressions are POSIX compliant regular expressions
+ over the alphabet of AS numbers. The regular expression constructs
+ are as follows:
+
+ ASN where ASN is an AS number. ASN matches the AS-path
+ that is of length 1 and contains the corresponding AS
+ number (e.g. AS-path regular expression AS1 matches the
+ AS-path "1").
+
+ The keyword PeerAS can be used instead of the AS number
+ of the peer AS.
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 21]
+
+RFC 2280 RPSL January 1998
+
+
+ AS-set where AS-set is an AS set name. AS-set matches the AS-paths
+ that is matched by one of the ASes in the AS-set.
+
+ . matches the AS-paths matched by any AS number.
+
+ [...] is an AS number set. It matches the AS-paths matched by
+ the AS numbers listed between the brackets. The AS
+ numbers in the set are separated by white space
+ characters. If a `-' is used between two AS numbers in
+ this set, all AS numbers between the two AS numbers are
+ included in the set. If an as-set name is listed, all
+ AS numbers in the as-set are included.
+
+ [^...] is a complemented AS number set. It matches any AS-path
+ which is not matched by the AS numbers in the set.
+
+ ^ Matches the empty string at the beginning of an AS-path.
+
+ $ Matches the empty string at the end of an AS-path.
+
+ We next list the regular expression operators in the decreasing order
+ of evaluation. These operators are left associative, i.e. performed
+ left to right.
+
+ Unary postfix operators * + ? {m} {m,n} {m,}
+ For a regular expression A, A* matches zero or more
+ occurrences of A; A+ matches one or more occurrences of
+ A; A? matches zero or one occurrence of A; A{m} matches
+ m occurrence of A; A{m,n} matches m to n occurrence of
+ A; A{m,} matches m or more occurrence of A. For example,
+ [AS1 AS2]{2} matches AS1 AS1, AS1 AS2, AS2 AS1, and AS2
+ AS2.
+
+ Unary postfix operators ~* ~+ ~{m} ~{m,n} ~{m,}
+ These operators have similar functionality as the
+ corresponding operators listed above, but all
+ occurrences of the regular expression has to match the
+ same pattern. For example, [AS1 AS2]~{2} matches AS1
+ AS1 and AS2 AS2, but it does not match AS1 AS2 and AS2
+ AS1.
+
+ Binary catenation operator
+ This is an implicit operator and exists between two
+ regular expressions A and B when no other explicit
+ operator is specified. The resulting expression A B
+ matches an AS-path if A matches some prefix of the AS-
+ path and B matches the rest of the AS-path.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 22]
+
+RFC 2280 RPSL January 1998
+
+
+ Binary alternative (or) operator |
+ For a regular expressions A and B, A | B matches any
+ AS-path that is matched by A or B.
+
+ Parenthesis can be used to override the default order of evaluation.
+ White spaces can be used to increase readability.
+
+ The following are examples of AS-path filters:
+
+ <AS3>
+ <^AS1>
+ <AS2$>
+ <^AS1 AS2 AS3$>
+ <^AS1 .* AS2$>.
+
+ The first example matches any route whose AS-path contains AS3, the
+ second matches routes whose AS-path starts with AS1, the third
+ matches routes whose AS-path ends with AS2, the fourth matches routes
+ whose AS-path is exactly "1 2 3", and the fifth matches routes whose
+ AS-path starts with AS1 and ends in AS2 with any number of AS numbers
+ in between.
+
+ Composite Policy Filters The following operators (in decreasing order
+ of evaluation) can be used to form composite policy filters:
+
+ NOT Given a policy filter x, NOT x matches the set of routes that are
+ not matched by x. That is it is the negation of policy filter x.
+
+ AND Given two policy filters x and y, x AND y matches the
+ intersection of the routes that are matched by x and that are
+ matched by y.
+
+ OR Given two policy filters x and y, x OR y matches the union of
+ the routes that are matched by x and that are matched by y.
+
+ Note that an OR operator can be implicit, that is `x y' is equivalent
+ to `x OR y'.
+
+ E.g.
+
+ NOT {128.9.0.0/16, 128.8.0.0/16}
+ AS226 AS227 OR AS228
+ AS226 AND NOT {128.9.0.0/16}
+ AS226 AND {0.0.0.0/0^0-18}
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 23]
+
+RFC 2280 RPSL January 1998
+
+
+ The first example matches any route except 128.9.0.0/16 and
+ 128.8.0.0/16. The second example matches the routes of AS226, AS227
+ and AS228. The third example matches the routes of AS226 except
+ 128.9.0.0/16. The fourth example matches the routes of AS226 whose
+ length are not longer than 18.
+
+ Routing Policy Attributes Policy filters can also use the values of
+ other attributes for comparison. The attributes whose values can be
+ used in policy filters are specified in the RPSL dictionary. Please
+ refer to Section 7 for details. An example using the the BGP
+ community attribute is shown below:
+
+ aut-num: AS1
+ export: to AS2 announce AS1 AND NOT community.contains(NO_EXPORT)
+
+ Filters using the routing policy attributes defined in the dictionary
+ are evaluated before evaluating the operators AND, OR and NOT.
+
+6.1.4 Example Policy Expressions
+
+ aut-num: AS1
+ import: from AS2 action pref = 1;
+ from AS3 action pref = 2;
+ accept AS4
+
+ The above example states that AS4's routes are accepted from AS2 with
+ preference 1, and from AS3 with preference 2 (routes with lower
+ integer preference values are preferred over routes with higher
+ integer preference values).
+
+ aut-num: AS1
+ import: from AS2 7.7.7.2 at 7.7.7.1 action pref = 1;
+ from AS2 action pref = 2;
+ accept AS4
+
+ The above example states that AS4's routes are accepted from AS2 on
+ peering 7.7.7.1-7.7.7.2 with preference 1, and on any other peering
+ with AS2 with preference 2.
+
+6.2 export Attribute: Export Policy Specification
+
+ Similarly, an export policy expression is specified using an export
+ attribute. The export attribute has the following syntax:
+
+ export: to <peering-1> [action <action-1>]
+ . . .
+ to <peering-N> [action <action-N>]
+ announce <filter>
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 24]
+
+RFC 2280 RPSL January 1998
+
+
+ The action specification is optional. The semantics of an export
+ attribute is as follows: the set of routes that are matched by
+ <filter> are exported to all the peers specified in <peerings>; while
+ exporting routes at <peering-M>, <action-M> is executed.
+
+ E.g.
+ aut-num: AS1
+ export: to AS2 action med = 5; community .= 70;
+ announce AS4
+
+ In this example, AS4's routes are announced to AS2 with the med
+ attribute's value set to 5 and community 70 added to the community
+ list.
+
+ Example:
+
+ aut-num: AS1
+ export: to AS-FOO announce ANY
+
+ In this example, AS1 announces all of its routes to the ASes in the
+ set AS-FOO.
+
+6.3 Other Routing Protocols, Multi-Protocol Routing Protocols, and
+ Injecting Routes Between Protocols
+
+ The more complete syntax of the import and export attributes are as
+ follows:
+
+ import: [protocol <protocol-1>] [into <protocol-2>]
+ from <peering-1> [action <action-1>]
+ . . .
+ from <peering-N> [action <action-N>]
+ accept <filter>
+ export: [protocol <protocol-1>] [into <protocol-2>]
+ to <peering-1> [action <action-1>]
+ . . .
+ to <peering-N> [action <action-N>]
+ announce <filter>
+
+ Where the optional protocol specifications can be used for specifying
+ policies for other routing protocols, or for injecting routes of one
+ protocol into another protocol, or for multi-protocol routing
+ policies. The valid protocol names are defined in the dictionary.
+ The <protocol-1> is the name of the protocol whose routes are being
+ exchanged. The <protocol-2> is the name of the protocol which is
+ receiving these routes. Both <protocol-1> and <protocol-2> default
+ to the Internet Exterior Gateway Protocol, currently BGP.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 25]
+
+RFC 2280 RPSL January 1998
+
+
+ In the following example, all interAS routes are injected into RIP.
+
+ aut-num: AS1
+ import: from AS2 accept AS2
+ export: protocol BGP4 into RIP
+ to AS1 announce ANY
+
+ In the following example, AS1 accepts AS2's routes including any more
+ specifics of AS2's routes, but does not inject these extra more
+ specific routes into OSPF.
+
+ aut-num: AS1
+ import: from AS2 accept AS2^+
+ export: protocol BGP4 into OSPF
+ to AS1 announce AS2
+
+ In the following example, AS1 injects its static routes (routes which
+ are members of the set AS1:RS-STATIC-ROUTES) to the interAS routing
+ protocol and appends AS1 twice to their AS paths.
+
+ aut-num: AS1
+ import: protocol STATIC into BGP4
+ from AS1 action aspath.prepend(AS1, AS1);
+ accept AS1:RS-STATIC-ROUTES
+
+ In the following example, AS1 imports different set of unicast routes
+ for multicast reverse path forwarding from AS2:
+
+ aut-num: AS1
+ import: from AS2 accept AS2
+ import: protocol IDMR
+ from AS2 accept AS2:RS-RPF-ROUTES
+
+6.4 Ambiguity Resolution
+
+ It is possible that the same peering can be covered by more that one
+ peering specification in a policy expression. For example:
+
+ aut-num: AS1
+ import: from AS2 7.7.7.2 at 7.7.7.1 action pref = 2;
+ from AS2 7.7.7.2 at 7.7.7.1 action pref = 1;
+ accept AS4
+
+ This is not an error, though definitely not desirable. To break the
+ ambiguity, the action corresponding to the first peering
+ specification is used. That is the routes are accepted with
+ preference 2. We call this rule as the specification-order rule.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 26]
+
+RFC 2280 RPSL January 1998
+
+
+ Consider the example:
+
+ aut-num: AS1
+ import: from AS2 action pref = 2;
+ from AS2 7.7.7.2 at 7.7.7.1 action pref = 1; dpa = 5;
+ accept AS4
+
+ where both peering specifications cover the peering 7.7.7.1-7.7.7.2,
+ though the second one covers it more specifically. The specification
+ order rule still applies, and only the action "pref = 2" is executed.
+ In fact, the second peering-action pair has no use since the first
+ peering-action pair always covers it. If the intended policy was to
+ accept these routes with preference 1 on this particular peering and
+ with preference 2 in all other peerings, the user should have
+ specified:
+
+ aut-num: AS1
+ import: from AS2 7.7.7.2 at 7.7.7.1 action pref = 1; dpa = 5;
+ from AS2 action pref = 2;
+ accept AS4
+
+ It is also possible that more than one policy expression can cover
+ the same set of routes for the same peering. For example:
+
+ aut-num: AS1
+ import: from AS2 action pref = 2; accept AS4
+ import: from AS2 action pref = 1; accept AS4
+
+ In this case, the specification-order rule is still used. That is,
+ AS4's routes are accepted from AS2 with preference 2. If the filters
+ were overlapping but not exactly the same:
+
+ aut-num: AS1
+ import: from AS2 action pref = 2; accept AS4
+ import: from AS2 action pref = 1; accept AS4 OR AS5
+
+ the AS4's routes are accepted from AS2 with preference 2 and however
+ AS5's routes are also accepted, but with preference 1.
+
+ We next give the general specification order rule for the benefit of
+ the RPSL implementors. Consider two policy expressions:
+
+ aut-num: AS1
+ import: from peerings-1 action action-1 accept filter-1
+ import: from peerings-2 action action-2 accept filter-2
+
+ The above policy expressions are equivalent to the following three
+ expressions where there is no ambiguity:
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 27]
+
+RFC 2280 RPSL January 1998
+
+
+aut-num: AS1
+import: from peerings-1 action action-1 accept filter-1
+import: from peerings-3 action action-2 accept filter-2 AND NOT filter-1
+import: from peerings-4 action action-2 accept filter-2
+
+ where peerings-3 are those that are covered by both peerings-1 and
+ peerings-2, and peerings-4 are those that are covered by peerings-2
+ but not by peerings-1 ("filter-2 AND NOT filter-1" matches the routes
+ that are matched by filter-2 but not by filter-1).
+
+ Example:
+
+ aut-num: AS1
+ import: from AS2 7.7.7.2 at 7.7.7.1
+ action pref = 2;
+ accept {128.9.0.0/16}
+ import: from AS2
+ action pref = 1;
+ accept {128.9.0.0/16, 75.0.0.0/8}
+
+ Lets consider two peerings with AS2, 7.7.7.1-7.7.7.2 and 9.9.9.1-
+ 9.9.9.2. Both policy expressions cover 7.7.7.1-7.7.7.2. On this
+ peering, the route 128.9.0.0/16 is accepted with preference 2, and
+ the route 75.0.0.0/8 is accepted with preference 1. The peering
+ 9.9.9.1-9.9.9.2 is only covered by the second policy expressions.
+ Hence, both the route 128.9.0.0/16 and the route 75.0.0.0/8 are
+ accepted with preference 1 on peering 9.9.9.1-9.9.9.2.
+
+ Note that the same ambiguity resolution rules also apply to export
+ and default policy expressions.
+
+6.5 default Attribute: Default Policy Specification
+
+ Default routing policies are specified using the default attribute.
+ The default attribute has the following syntax:
+
+ default: to <peering> [action <action>] [networks <filter>]
+
+ The <action> and <filter> specifications are optional. The semantics
+ are as follows: The <peering> specification indicates the AS (and the
+ router if present) is being defaulted to; the <action> specification,
+ if present, indicates various attributes of defaulting, for example a
+ relative preference if multiple defaults are specified; and the
+ <filter> specifications, if present, is a policy filter. A router
+ chooses a default router from the routes in its routing table that
+ matches this <filter>.
+
+ In the following example, AS1 defaults to AS2 for routing.
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 28]
+
+RFC 2280 RPSL January 1998
+
+
+ aut-num: AS1
+ default: to AS2
+
+ In the following example, router 7.7.7.1 in AS1 defaults to router
+ 7.7.7.2 in AS2.
+
+ aut-num: AS1
+ default: to AS2 7.7.7.2 at 7.7.7.1
+
+ In the following example, AS1 defaults to AS2 and AS3, but prefers
+ AS2 over AS3.
+
+ aut-num: AS1
+ default: to AS2 action pref = 1;
+ default: to AS3 action pref = 2;
+
+ In the following example, AS1 defaults to AS2 and uses 128.9.0.0/16
+ as the default network.
+
+ aut-num: AS1
+ default: to AS2 networks { 128.9.0.0/16 }
+
+6.6 Structured Policy Specification
+
+ The import and export policies can be structured. We only reccomend
+ structured policies to advanced RPSL users. Please feel free to skip
+ this section.
+
+ The syntax for a structured policy specification is the following:
+
+ <import-factor> ::= from <peering-1> [action <action-1>]
+ . . .
+ from <peering-N> [action <action-N>]
+ accept <filter>;
+
+ <import-term> ::= <import-factor> |
+ LEFT-BRACE
+ <import-factor>
+ . . .
+ <import-factor>
+ RIGHT-BRACE
+
+ <import-expression> ::= <import-term> |
+ <import-term> EXCEPT <import-expression> |
+ <import-term> REFINE <import-expression>
+
+ import: [protocol <protocol1>] [into <protocol2>]
+ <import-expression>
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 29]
+
+RFC 2280 RPSL January 1998
+
+
+ Please note the semicolon at the end of an <import-factor>. If the
+ policy specification is not structured (as in all the examples in
+ other sections), this semicolon is optional. The syntax and
+ semantics for an <import-factor> is already defined in Section 6.1.
+
+ An <import-term> is either a sequence of <import-factor>'s enclosed
+ within matching braces (i.e. `{' and `}') or just a single <import-
+ factor>. The semantics of an <import-term> is the union of <import-
+ factor>'s using the specification order rule. An <import-expression>
+ is either a single <import-term> or an <import-term> followed by one
+ of the keywords "except" and "refine", followed by another <import-
+ expression>. Note that our definition allows nested expressions.
+ Hence there can be exceptions to exceptions, refinements to
+ refinements, or even refinements to exceptions, and so on.
+
+ The semantics for the except operator is as follows: The result of an
+ except operation is another <import-term>. The resulting policy set
+ contains the policies of the right hand side but their filters are
+ modified to only include the routes also matched by the left hand
+ side. The policies of the left hand side are included afterwards and
+ their filters are modified to exclude the routes matched by the right
+ hand side. Please note that the filters are modified during this
+ process but the actions are copied verbatim. When there are multiple
+ levels of nesting, the operations (both except and refine) are
+ performed right to left.
+
+ Consider the following example:
+
+ import: from AS1 action pref = 1; accept as-foo;
+ except {
+ from AS2 action pref = 2; accept AS226;
+ except {
+ from AS3 action pref = 3; accept {128.9.0.0/16};
+ }
+ }
+
+ where the route 128.9.0.0/16 is originated by AS226, and AS226 is a
+ member of the as set as-foo. In this example, the route 128.9.0.0/16
+ is accepted from AS3, any other route (not 128.9.0.0/16) originated
+ by AS226 is accepted from AS2, and any other ASes' routes in as-foo
+ is accepted from AS1.
+
+ We can come to the same conclusion using the algebra defined above.
+ Consider the inner exception specification:
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 30]
+
+RFC 2280 RPSL January 1998
+
+
+ from AS2 action pref = 2; accept AS226;
+ except {
+ from AS3 action pref = 3; accept {128.9.0.0/16};
+ }
+
+ is equivalent to
+
+ {
+ from AS3 action pref = 3; accept AS226 AND {128.9.0.0/16};
+ from AS2 action pref = 2; accept AS226 AND NOT {128.9.0.0/16};
+ }
+
+ Hence, the original expression is equivalent to:
+
+ import: from AS1 action pref = 1; accept as-foo;
+ except {
+ from AS3 action pref = 3;
+ accept AS226 AND {128.9.0.0/16};
+ from AS2 action pref = 2;
+ accept AS226 AND NOT {128.9.0.0/16};
+ }
+
+ which is equivalent to
+
+ import: {
+ from AS3 action pref = 3;
+ accept as-foo AND AS226 AND {128.9.0.0/16};
+ from AS2 action pref = 2;
+ accept as-foo AND AS226 AND NOT {128.9.0.0/16};
+ from AS1 action pref = 1;
+ accept as-foo AND NOT
+ (AS226 AND NOT {128.9.0.0/16} OR
+ AS226 AND {128.9.0.0/16});
+ }
+
+ Since AS226 is in as-foo and 128.9.0.0/16 is in AS226, it simplifies to:
+
+ import: {
+ from AS3 action pref = 3; accept {128.9.0.0/16};
+ from AS2 action pref = 2;
+ accept AS226 AND NOT {128.9.0.0/16};
+ from AS1 action pref = 1; accept as-foo AND NOT AS226;
+ }
+
+ In the case of the refine operator, the resulting set is constructed
+ by taking the cartasian product of the two sides as follows: for each
+ policy l in the left hand side and for each policy r in the right
+ hand side, the peerings of the resulting policy are the peerings
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 31]
+
+RFC 2280 RPSL January 1998
+
+
+ common to both r and l; the filter of the resulting policy is the
+ intersection of l's filter and r's filter; and action of the
+ resulting policy is l's action followed by r's action. If there are
+ no common peerings, or if the intersection of filters is empty, a
+ resulting policy is not generated.
+
+ Consider the following example:
+
+ import: { from AS-ANY action pref = 1;
+ accept community.contains({3560,10});
+ from AS-ANY action pref = 2;
+ accept community.contains({3560,20});
+ } refine {
+ from AS1 accept AS1;
+ from AS2 accept AS2;
+ from AS3 accept AS3;
+ }
+
+ Here, any route with community {3560,10} is assigned a preference of
+ 1 and any route with community {3560,20} is assigned a preference of
+ 2 regardless of whom they are imported from. However, only AS1's
+ routes are imported from AS1, and only AS2's routes are imported from
+ AS2, and only AS3's routes are imported form AS3, and no routes are
+ imported from any other AS. We can reach the same conclusion using
+ the above algebra. That is, our example is equivalent to:
+
+ import: {
+ from AS1 action pref = 1;
+ accept community.contains({3560,10}) AND AS1;
+ from AS1 action pref = 2;
+ accept community.contains({3560,20}) AND AS1;
+ from AS2 action pref = 1;
+ accept community.contains({3560,10}) AND AS2;
+ from AS2 action pref = 2;
+ accept community.contains({3560,20}) AND AS2;
+ from AS3 action pref = 1;
+ accept community.contains({3560,10}) AND AS3;
+ from AS3 action pref = 2;
+ accept community.contains({3560,20}) AND AS3;
+ }
+
+ Note that the common peerings between "from AS1" and "from AS-ANY"
+ are those peerings in "from AS1". Even though we do not formally
+ define "common peerings", it is straight forward to deduce the
+ definition from the definitions of peerings (please see Section
+ 6.1.1).
+
+ Consider the following example:
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 32]
+
+RFC 2280 RPSL January 1998
+
+
+ import: {
+ from AS-ANY action med = 0; accept {0.0.0.0/0^0-18};
+ } refine {
+ from AS1 at 7.7.7.1 action pref = 1; accept AS1;
+ from AS1 action pref = 2; accept AS1;
+ }
+
+ where only routes of length 0 to 18 are accepted and med's value is
+ set to 0 to disable med's effect for all peerings; In addition, from
+ AS1 only AS1's routes are imported, and AS1's routes imported at
+ 7.7.7.1 are preferred over other peerings. This is equivalent to:
+
+ import: {
+ from AS1 at 7.7.7.1 action med=0; pref=1;
+ accept {0.0.0.0/0^0-18} AND AS1;
+ from AS1 action med=0; pref=2; accept {0.0.0.0/0^0-18} AND AS1;
+
+ The above syntax and semantics also apply equally to structured
+ export policies with "from" replaced with "to" and "accept" is
+ replaced with "announce".
+
+7 dictionary Class
+
+ The dictionary class provides extensibility to RPSL. Dictionary
+ objects define routing policy attributes, types, and routing
+ protocols. Routing policy attributes, henceforth called rp-
+ 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). As new
+ protocols, new protocol attributes, or new router features are
+ introduced, the dictionary object is updated to include appropriate
+ rp-attribute and protocol definitions.
+
+ An rp-attribute is an abstract class; that is a data representation
+ is not available. Instead, they are accessed through access methods.
+ For example, the rp-attribute for the BGP AS-path attribute is called
+ aspath; and it has an access method called prepend which stuffs extra
+ AS numbers to the AS-path attributes. Access methods can take
+ arguments. Arguments are strongly typed. For example, the method
+ prepend above takes AS numbers as argument.
+
+ Once an rp-attribute is defined in the dictionary, it can be used to
+ describe policy filters and actions. Policy analysis tools are
+ required to fetch the dictionary object and recognize newly defined
+ rp-attributes, types, and protocols. The analysis tools may
+ approximate policy analyses on rp-attributes that they do not
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 33]
+
+RFC 2280 RPSL January 1998
+
+
+ understand: a filter method may always match, and an action method
+ may always perform no-operation. Analysis tools may even download
+ code to perform appropriate operations using mechanisms outside the
+ scope of RPSL.
+
+ We next describe the syntax and semantics of the dictionary class.
+ This description is not essential for understanding dictionary
+ objects (but it is essential for creating one). Please feel free to
+ skip to the RPSL Initial Dictionary subsection (Section 7.1).
+
+ The attributes of the dictionary class are shown in Figure 18. The
+ dictionary attribute is the name of the dictionary object, obeying
+ the RPSL naming rules. There can be many dictionary objects, however
+ there is always one well-known dictionary object "RPSL". All tools
+ use this dictionary by default.
+
+ The rp-attribute attribute has the following syntax:
+
+ Attribute Value Type
+ dictionary <object-name> mandatory, single-valued,
+ class key
+ rp-attribute see description in text optional, multi valued
+ typedef see description in text optional, multi valued
+ protocol see description in text optional, multi valued
+
+
+ Figure 18: dictionary Class Attributes
+
+
+ rp-attribute: <name>
+ <method-1>(<type-1-1>, ..., <type-1-N1> [, "..."])
+ ...
+ <method-M>(<type-M-1>, ..., <type-M-NM> [, "..."])
+
+ where <name> is the name of the rp-attribute; and <method-i> is the
+ name of an access method for the rp-attribute, taking Ni arguments
+ where the j-th argument is of type <type-i-j>. A method name is
+ either an RPSL name or one of the operators defined in Figure 19.
+ The operator methods with the exception of operator() and operator[]
+ can take only one argument.
+
+
+
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 34]
+
+RFC 2280 RPSL January 1998
+
+
+ operator= operator==
+ operator<<= operator<
+ operator>>= operator>
+ operator+= operator>=
+ operator-= operator<=
+ operator*= operator!=
+ operator/= operator()
+ operator.= operator[]
+
+
+ Figure 19: Operators
+
+ An rp-attribute can have many methods defined for it. Some of the
+ methods may even have the same name, in which case their arguments
+ are of different types. If the argument list is followed by "...",
+ the method takes a variable number of arguments. In this case, the
+ actual arguments after the Nth argument are of type <type-N>.
+
+ Arguments are strongly typed. A type of an argument can be one of
+ the predefined types or one of the dictionary defined types. The
+ predefined type names are listed in Figure 20. The integer and the
+ real types can be followed by a lower and an upper bound to specify
+ the set of valid values of the argument. The range specification is
+ optional. We use the ANSI C language conventions for representing
+ integer, real and string values. The enum type is followed by a list
+ of RPSL names which are the valid values of the type. The boolean
+ type can take the values true or false. as_number, ipv4_address,
+ address_prefix and dns_name types are as in Section 2. filter type
+ is a policy filter as in Section 6.
+
+ integer[lower, upper] as_number
+ real[lower, upper] ipv4_address
+ enum[name, name, ...] address_prefix
+ string address_prefix_range
+ boolean dns_name
+ rpsl_word filter
+ free_text as_set_name
+ email route_set_name
+
+
+ Figure 20: Predefined Types
+
+ The typedef attribute specifies a dictionary defined type. Its
+ syntax is as follows:
+
+ typedef: <name> union <type-1>, ... , <type-N>
+ | <name> list [<min_elems>:<max_elems>] of <type>
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 35]
+
+RFC 2280 RPSL January 1998
+
+
+ where <name> is the name of the type being defined and <type-M> is
+ another type name, either predefined or dictionary defined. In the
+ first form, the type defined is either of the types <type-1> through
+ <type-N> (analogous to unions in C[12]). In the second form, the
+ type defined is a list type where the list elements are of <type> and
+ the list contains at least <min_elems> and at most <max_elems>
+ elements. The size specification is optional. In this case, there
+ is no restriction in the number of list elements. A value of a list
+ type is represented as a sequence of elements separated by the
+ character "," and enclosed by the characters "{" and "}".
+
+ A protocol attribute of the dictionary class defines a protocol and a
+ set of peering options for that protocol (which are used in inet-rtr
+ class in Section 9). Its syntax is as follows:
+
+ protocol: <name>
+ MANDATORY | OPTIONAL <option-1>(<type-1-1>, ...,
+ <type-1-N1> [, "..."])
+ ...
+ MANDATORY | OPTIONAL <option-M>(<type-M-1>, ...,
+ <type-M-NM> [, "..."])
+
+ where <name> is the name of the protocol; MANDATORY and OPTIONAL are
+ keywords; and <option-i> is a peering option for this protocol,
+ taking Ni many arguments. The syntax and semantics of the arguments
+ are as in the rp-attribute. If the keyword MANDATORY is used the
+ option is mandatory and needs to be specified for each peering of
+ this protocol. If the keyword OPTIONAL is used the option can be
+ skipped.
+
+7.1 Initial RPSL Dictionary and Example Policy Actions and Filters
+
+dictionary: RPSL
+rp-attribute: # preference, smaller values represent higher preferences
+ pref
+ operator=(integer[0, 65535])
+rp-attribute: # BGP multi_exit_discriminator attribute
+ med
+ operator=(integer[0, 65535])
+ # to set med to the IGP metric: med = igp_cost;
+ operator=(enum[igp_cost])
+rp-attribute: # BGP destination preference attribute (dpa)
+ dpa
+ operator=(integer[0, 65535])
+rp-attribute: # BGP aspath attribute
+ aspath
+ # prepends AS numbers from last to first order
+ prepend(as_number, ...)
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 36]
+
+RFC 2280 RPSL January 1998
+
+
+typedef: # a community value in RPSL is either
+ # - a 4 byte integer
+ # - internet, no_export, no_advertise (see RFC-1997)
+ # - two 2-byte integers to be concatanated eg. {3561,70}
+ community_elm union
+ integer[1, 4294967200],
+ enum[internet, no_export, no_advertise],
+ list[2:2] of integer[0, 65535]
+typedef: # list of community values { 40, no_export, {3561,70}}
+ community_list
+ list of community_elm
+rp-attribute: # BGP community attribute
+ community
+ # set to a list of communities
+ operator=(community_list)
+ # order independent equality comparison
+ operator==(community_list)
+ # append community values
+ operator.=(community_elm)
+ append(community_elm, ...)
+ # delete community values
+ delete(community_elm, ...)
+ # a filter: true if one of community values is contained
+ contains(community_elm, ...)
+ # shortcut to contains: community(no_export, {3561,70})
+ operator()(community_elm, ...)
+rp-attribute: # next hop router in a static route
+ next-hop
+ operator=(ipv4_address) # a router address
+ operator=(enum[self]) # router's own address
+rp-attribute: # cost of a static route
+ cost
+ operator=(integer[0, 65535])
+protocol: BGP4
+ # as number of the peer router
+ MANDATORY asno(as_number)
+ # enable flap damping
+ OPTIONAL flap_damp()
+ OPTIONAL flap_damp(integer[0,65535],# penalty per flap
+ integer[0,65535],
+ # penalty value for supression
+ integer[0,65535],# penalty value for reuse
+ integer[0,65535],# halflife in secs when up
+ integer[0,65535],
+ # halflife in secs when down
+ integer[0,65535])# maximum penalty
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 37]
+
+RFC 2280 RPSL January 1998
+
+
+protocol: OSPF
+protocol: RIP
+protocol: IGRP
+protocol: IS-IS
+protocol: STATIC
+protocol: RIPng
+protocol: DVMRP
+protocol: PIM-DM
+protocol: PIM-SM
+protocol: CBT
+protocol: MOSPF
+
+
+ Figure 21: RPSL Dictionary
+
+ Figure 21 shows the initial RPSL dictionary. It has seven rp-
+ attributes: pref to assign local preference to the routes accepted;
+ med to assign a value to the MULTI_EXIT_DISCRIMINATOR BGP attribute;
+ dpa to assign a value to the DPA BGP attribute; aspath to prepend a
+ value to the AS_PATH BGP attribute; community to assign a value to or
+ to check the value of the community BGP attribute; next-hop to assign
+ next hop routers to static routes; and cost to assign a cost to
+ static routes. The dictionary defines two types: community_elm and
+ community_list. community_elm type is either a 4-byte unsigned
+ integer, or one of the keywords no_export or no_advertise (defined in
+ [7]), or a list of two 2-byte unsigned integers in which case the two
+ integers are concatenated to form a 4-byte integer. (The last form
+ is often used in the Internet to partition the community number
+ space. A provider uses its AS number as the first two bytes, and
+ assigns a semantics of its choice to the last two bytes.)
+
+ The initial dictionary (Figure 21) defines only options for the
+ Border Gateway Protocol: asno and flap_damp. The mandatory asno
+ option is the AS number of the peer router. The optional flap_damp
+ option instructs the router to damp route flaps[19] when importing
+ routes from the peer router.
+
+ It can be specified with or without parameters. If parameters are
+ missing, they default to:
+
+ flap_damp(1000, 2000, 750, 900, 900, 20000)
+
+ That is, a penalty of 1000 is assigned at each route flap, the route
+ is suppressed when penalty reaches 2000. The penalty is reduced in
+ half after 15 minutes (900 seconds) of stability regardless of
+ whether the route is up or down. A supressed route is reused when
+ the penalty falls below 750. The maximum penalty a route can be
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 38]
+
+RFC 2280 RPSL January 1998
+
+
+ assigned is 20,000 (i.e. the maximum suppress time after a route
+ becomes stable is about 75 minutes). These parameters are consistent
+ with the default flap damping parameters in several routers.
+
+ Policy Actions and Filters Using RP-Attributes
+
+ The syntax of a policy action or a filter using an rp-attribute x is
+ as follows:
+
+ x.method(arguments)
+ x "op" argument
+
+ where method is a method and "op" is an operator method of the rp-
+ attribute x. If an operator method is used in specifying a composite
+ policy filter, it evaluates earlier than the composite policy filter
+ operators (i.e. AND, OR, NOT, and implicit or operator).
+
+ The pref rp-attribute can be assigned a positive integer as follows:
+
+ pref = 10;
+
+ The med rp-attribute can be assigned either a positive integer or the
+ word "igp_cost" as follows:
+
+ med = 0;
+ med = igp_cost;
+
+ The dpa rp-attribute can be assigned a positive integer as follows:
+
+ dpa = 100;
+
+ The BGP community attribute is list-valued, that is it is a list of
+ 4-byte integers each representing a "community". The following
+ examples demonstrate how to add communities to this rp-attribute:
+
+ community .= 100;
+ community .= NO_EXPORT;
+ community .= {3561,10};
+
+ In the last case, a 4-byte integer is constructed where the more
+ significant two bytes equal 3561 and the less significant two bytes
+ equal 10. The following examples demonstrate how to delete
+ communities from the community rp-attribute:
+
+ community.delete(100, NO_EXPORT, {3561,10});
+
+ Filters that use the community rp-attribute can be defined as
+ demonstrated by the following examples:
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 39]
+
+RFC 2280 RPSL January 1998
+
+
+ community.contains(100, NO_EXPORT, {3561,10});
+ community(100, NO_EXPORT, {3561,10}); # shortcut
+
+ The community rp-attribute can be set to a list of communities as
+ follows:
+
+ community = {100, NO_EXPORT, {3561,10}, 200};
+ community = {};
+
+ In this first case, the community rp-attribute contains the
+ communities 100, NO_EXPORT, {3561,10}, and 200. In the latter case,
+ the community rp-attribute is cleared. The community rp-attribute
+ can be compared against a list of communities as follows:
+
+ community == {100, NO_EXPORT, {3561,10}, 200}; # exact match
+
+ To influence the route selection, the BGP as_path rp-attribute can be
+ made longer by prepending AS numbers to it as follows:
+
+ aspath.prepend(AS1);
+ aspath.prepend(AS1, AS1, AS1);
+
+ The following examples are invalid:
+
+ med = -50; # -50 is not in the range
+ med = igp; # igp is not one of the enum values
+ med.assign(10); # method assign is not defined
+ community.append({AS3561,20}); # the first argument should be 3561
+
+ Figure 22 shows a more advanced example using the rp-attribute
+ community. In this example, AS3561 bases its route selection
+ preference on the community attribute. Other ASes may indirectly
+ affect AS3561's route selection by including the appropriate
+ communities in their route announcements.
+
+ aut-num: AS1
+ export: to AS2 action community.={3561,90};
+ to AS3 action community.={3561,80};
+ announce AS1
+
+ as-set: AS3561:AS-PEERS
+ members: AS2, AS3
+
+ aut-num: AS3561
+ import: from AS3561:AS-PEERS
+ action pref = 10;
+ accept community.contains({3561,90})
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 40]
+
+RFC 2280 RPSL January 1998
+
+
+ import: from AS3561:AS-PEERS
+ action pref = 20;
+ accept community.contains({3561,80})
+ import: from AS3561:AS-PEERS
+ action pref = 20;
+ accept community.contains({3561,70})
+ import: from AS3561:AS-PEERS
+ action pref = 0;
+ accept ANY
+
+
+ Figure 22: Policy example using the community rp-attribute.
+
+8 Advanced route Class
+
+8.1 Specifying Aggregate Routes
+
+ The components, aggr-bndry, aggr-mtd, export-comps, inject, and holes
+ attributes are used for specifying aggregate routes [9]. A route
+ object specifies an aggregate route if any of these attributes, with
+ the exception of inject, is specified. The origin attribute for an
+ aggregate route is the AS performing the aggregation, i.e. the
+ aggregator AS. In this section, we used the term "aggregate" to refer
+ to the route generated, the term "component" to refer to the routes
+ used to generate the path attributes of the aggregate, and the term
+ "more specifics" to refer to any route which is a more specific of
+ the aggregate regardless of whether it was used to form the path
+ attributes.
+
+ The components attribute defines what component routes are used to
+ form the aggregate. Its syntax is as follows:
+
+ components: [ATOMIC] [[protocol <protocol>] <filter>
+ [protocol <protocol> <filter> ...]]
+
+ where <protocol> is a routing protocol name such as BGP, OSPF or RIP
+ (valid names are defined in the dictionary) and <filter> is a policy
+ expression. The routes that match one of these filters and are
+ learned from the corresponding protocol are used to form the
+ aggregate. If <protocol> is omitted, it defaults to any protocol.
+ <filter> implicitly contains an "AND" term with the more specifics of
+ the aggregate so that only the component routes are selected. If the
+ keyword ATOMIC is used, the aggregation is done atomically [9]. If a
+ <filter> is not specified it defaults to more specifics. If the
+ components attribute is missing, all more specifics without the
+ ATOMIC keyword is used.
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 41]
+
+RFC 2280 RPSL January 1998
+
+
+ route: 128.8.0.0/15
+ origin: AS1
+ components: <^AS2>
+
+ route: 128.8.0.0/15
+ origin: AS1
+ components: protocol BGP {128.8.0.0/16^+}
+ protocol OSPF {128.9.0.0/16^+}
+
+
+ Figure 23: Two aggregate route objects.
+
+
+ Figure 23 shows two route objects. In the first example, more
+ specifics of 128.8.0.0/15 with AS paths starting with AS2 are
+ aggregated. In the second example, some routes learned from BGP and
+ some routes learned form OSPF are aggregated.
+
+ The aggr-bndry attribute is an expression over AS numbers and sets
+ using operators AND, OR, and NOT. The result defines the set of ASes
+ which form the aggregation boundary. If the aggr-bndry attribute is
+ missing, the origin AS is the sole aggregation boundary. Outside the
+ aggregation boundary, only the aggregate is exported and more
+ specifics are suppressed. However, within the boundary, the more
+ specifics are also exchanged.
+
+ The aggr-mtd attribute specifies how the aggregate is generated. Its
+ syntax is as follow:
+
+ aggr-mtd: inbound
+ | outbound [<as-expression>]
+
+ where <as-expression> is an expression over AS numbers and sets using
+ operators AND, OR, and NOT. If <as-expression> is missing, it
+ defaults to AS-ANY. If outbound aggregation is specified, the more
+ specifics of the aggregate will be present within the AS and the
+ aggregate will be formed at all inter-AS boundaries with ASes in
+ <as-expression> before export, except for ASes that are within the
+ aggregating boundary (i.e. aggr-bndry is enforced regardless of
+ <as-expression>). If inbound aggregation is specified, the aggregate
+ is formed at all inter-AS boundaries prior to importing routes into
+ the aggregator AS. Note that <as-expression> can not be specified
+ with inbound aggregation. If aggr-mtd attribute is missing, it
+ defaults to "outbound AS-ANY".
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 42]
+
+RFC 2280 RPSL January 1998
+
+
+ route: 128.8.0.0/15 route: 128.8.0.0/15
+ origin: AS1 origin: AS2
+ components: {128.8.0.0/15^-} components: {128.8.0.0/15^-}
+ aggr-bndry: AS1 OR AS2 aggr-bndry: AS1 OR AS2
+ aggr-mtd: outbound AS-ANY aggr-mtd: outbound AS-ANY
+
+
+ Figure 24: Outbound multi-AS aggregation example.
+
+ Figure 24 shows an example of an outbound aggregation. In this
+ example, AS1 and AS2 are coordinating aggregation and announcing only
+ the less specific 128.8.0.0/15 to outside world, but exchanging more
+ specifics between each other. This form of aggregation is useful
+ when some of the components are within AS1 and some are within AS2.
+
+ When a set of routes are aggregated, the intent is to export only the
+ aggregate route and suppress exporting of the more specifics outside
+ the aggregation boundary. However, to satisfy certain policy and
+ topology constraints (e.g. a multi-homed component), it is often
+ required to export some of the components. The export-comps
+ attribute equals an RPSL filter that matches the more specifics that
+ need to be exported outside the aggregation boundary. If this
+ attribute is missing, more specifics are not exported outside the
+ aggregation boundary. Note that, the export-comps filter contains an
+ implicit "AND" term with the more specifics of the aggregate.
+
+ Figure 25 shows an example of an outbound aggregation. In this
+ example, the more specific 128.8.8.0/24 is exported outside AS1 in
+ addition to the aggregate. This is useful, when 128.8.8.0/24 is
+ multi-homed site to AS1 with some other AS.
+
+ route: 128.8.0.0/15
+ origin: AS1
+ components: {128.8.0.0/15^-}
+ aggr-mtd: outbound AS-ANY
+ export-comps: {128.8.8.0/24}
+
+
+ Figure 25: Outbound aggregation with export exception.
+
+ The inject attribute specifies which routers perform the aggregation
+ and when they perform it. Its syntax is as follow:
+
+ inject: [at <router-expression>] ...
+ [action <action>]
+ [upon <condition>]
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 43]
+
+RFC 2280 RPSL January 1998
+
+
+ where <action> is an action specification (see Section 6.1.2),
+ <condition> is a boolean expression described below, and<router-
+ expression> is an expression over router IP addresses and DNS names
+ using operators AND, OR, and NOT. The DNS name can only be used if
+ there is an inet-rtr object for that name that binds the name to IP
+ addresses.
+
+ All routers in <router-expression> and in the aggregator AS perform
+ the aggregation. If a <router-expression> is not specified, all
+ routers inside the aggregator AS perform the aggregation. The
+ <action> specification may set path attributes of the aggregate, such
+ as assign a preferences to the aggregate.
+
+ The upon clause is a boolean condition. The aggregate is generated
+ if and only if this condition is true. <condition> is a boolean
+ expression using the logical operators AND and OR (i.e. operator NOT
+ is not allowed) over:
+
+ HAVE-COMPONENTS { list of prefixes }
+ EXCLUDE { list of prefixes }
+ STATIC
+
+ The list of prefixes in HAVE-COMPONENTS can only be more specifics of
+ the aggregate. It evaluates to true when all the prefixes listed are
+ present in the routing table of the aggregating router. The list can
+ also include prefix ranges (i.e. using operators ^-, ^+, ^n, and ^n-
+ m). In this case, at least one prefix from each prefix range needs
+ to be present in the routing table for the condition to be true. The
+ list of prefixes in EXCLUDE can be arbitrary. It evaluates to true
+ when none of the prefixes listed is present in the routing table.
+ The list can also include prefix ranges, and no prefix in that range
+ should be present in the routing table. The keyword static always
+ evaluates to true. If no upon clause is specified the aggregate is
+ generated if an only if there is a component in the routing table
+ (i.e. a more specific that matches the filter in the components
+ attribute).
+
+ route: 128.8.0.0/15
+ origin: AS1
+ components: {128.8.0.0/15^-}
+ aggr-mtd: outbound AS-ANY
+ inject: at 1.1.1.1 action dpa = 100;
+ inject: at 1.1.1.2 action dpa = 110;
+
+ route: 128.8.0.0/15
+ origin: AS1
+ components: {128.8.0.0/15^-}
+ aggr-mtd: outbound AS-ANY
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 44]
+
+RFC 2280 RPSL January 1998
+
+
+ inject: upon HAVE-COMPONENTS {128.8.0.0/16, 128.9.0.0/16}
+ holes: 128.8.8.0/24
+
+
+ Figure 26: Examples of inject.
+
+ Figure 26 shows two examples. In the first case, the aggregate is
+ injected at two routers each one setting the dpa path attribute
+ differently. In the second case, the aggregate is generated only if
+ both 128.8.0.0/16 and 128.9.0.0/16 are present in the routing table,
+ as opposed to the first case where the presence of just one of them
+ is sufficient for injection.
+
+ The holes attribute lists the component address prefixes which are
+ not reachable through the aggregate route (perhaps that part of the
+ address space is unallocated). The holes attribute is useful for
+ diagnosis purposes. In Figure 26, the second example has a hole,
+ namely 128.8.8.0/24. This may be due to a customer changing
+ providers and taking this part of the address space with it.
+
+8.1.1 Interaction with policies in aut-num class
+
+ An aggregate formed is announced to other ASes only if the export
+ policies of the AS allows exporting the aggregate. When the
+ aggregate is formed, the more specifics are suppressed from being
+ exported except to the ASes in aggr-bndry and except the components
+ in export-comps. For such exceptions to happen, the export policies
+ of the AS should explicitly allow exporting of these exceptions.
+
+ If an aggregate is not formed (due to the upon clause), then the more
+ specifics of the aggregate can be exported to other ASes, but only if
+ the export policies of the AS allows it. In other words, before a
+ route (aggregate or more specific) is exported it is filtered twice,
+ once based on the route objects, and once based on the export
+ policies of the AS.
+
+ route: 128.8.0.0/16
+ origin: AS1
+
+ route: 128.9.0.0/16
+ origin: AS1
+
+ route: 128.8.0.0/15
+ origin: AS1
+ aggr-bndry: AS1 or AS2 or AS3
+ aggr-mtd: outbound AS3 or AS4 or AS5
+ components: {128.8.0.0/16, 128.9.0.0/16}
+ inject: upon HAVE-COMPONENTS {128.9.0.0/16, 128.8.0.0/16}
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 45]
+
+RFC 2280 RPSL January 1998
+
+
+ aut-num: AS1
+ export: to AS2 announce AS1
+ export: to AS3 announce AS1 and not {128.9.0.0/16}
+ export: to AS4 announce AS1
+ export: to AS5 announce AS1
+ export: to AS6 announce AS1
+
+
+ Figure 27: Interaction with policies in aut-num class.
+
+ In Figure 27 shows an interaction example. By examining the route
+ objects, the more specifics 128.8.0.0/16 and 128.9.0.0/16 should be
+ exchanged between AS1, AS2 and AS3 (i.e. the aggregation boundary).
+ Outbound aggregation is done to AS4 and AS5 and not to AS3, since AS3
+ is in the aggregation boundary. The aut-num object allows exporting
+ both components to AS2, but only the component 128.8.0.0/16 to AS3.
+ The aggregate can only be formed if both components are available.
+ In this case, only the aggregate is announced to AS4 and AS5.
+ However, if one of the components is not available the aggregate will
+ not be formed, and any available component or more specific will be
+ exported to AS4 and AS5. Regardless of aggregation is performed or
+ not, only the more specifics will be exported to AS6 (it is not
+ listed in the aggr-mtd attribute).
+
+ When doing an inbound aggregation, configuration generators may
+ eliminating the aggregation statements on routers where import policy
+ of the AS prohibits importing of any more specifics.
+
+8.1.2 Ambiguity resolution with overlapping aggregates
+
+ When several aggregate routes are specified and they overlap, i.e.
+ one is less specific of the other, they must be evaluated more
+ specific to less specific order. When an aggregation is performed,
+ the aggregate and the components listed in the export-comps attribute
+ are available for generating the next less specific aggregate. The
+ components that are not specified in the export-comps attribute are
+ not available. A route is exportable to an AS if it is the least
+ specific aggregate exportable to that AS or it is listed in the
+ export-comps attribute of an exportable route. Note that this is a
+ recursive definition.
+
+ route: 128.8.0.0/15
+ origin: AS1
+ aggr-bndry: AS1 or AS2
+ aggr-mtd: outbound
+ inject: upon HAVE-COMPONENTS {128.8.0.0/16, 128.9.0.0/16}
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 46]
+
+RFC 2280 RPSL January 1998
+
+
+ route: 128.10.0.0/15
+ origin: AS1
+ aggr-bndry: AS1 or AS3
+ aggr-mtd: outbound
+ inject: upon HAVE-COMPONENTS {128.10.0.0/16, 128.11.0.0/16}
+ export-comps: {128.11.0.0/16}
+
+ route: 128.8.0.0/14
+ origin: AS1
+ aggr-bndry: AS1 or AS2 or AS3
+ aggr-mtd: outbound
+ inject: upon HAVE-COMPONENTS {128.8.0.0/15, 128.10.0.0/15}
+ export-comps: {128.10.0.0/15}
+
+
+ Figure 28: Overlapping aggregations.
+
+ In Figure 28, AS1 together with AS2 aggregates 128.8.0.0/16 and
+ 128.9.0.0/16 into 128.8.0.0/15. Together with AS3, AS1 aggregates
+ 128.10.0.0/16 and 128.11.0.0/16 into 128.10.0.0/15. But altogether
+ they aggregate these four routes into 128.8.0.0/14. Assuming all
+ four components are available, a router in AS1 for an outside AS, say
+ AS4, will first generate 128.8.0.0/15 and 128.10.0.0/15. This will
+ make 128.8.0.0/15, 128.10.0.0/15 and its exception 128.11.0.0/16
+ available for generating 128.8.0.0/14. The router will then generate
+ 128.8.0.0/14 from these three routes. Hence for AS4, 128.8.0.0/14
+ and its exception 128.10.0.0/15 and its exception 128.11.0.0/16 will
+ be exportable.
+
+ For AS2, a router in AS1 will only generate 128.10.0.0/15. Hence,
+ 128.10.0.0/15 and its exception 128.11.0.0/16 will be exportable.
+ Note that 128.8.0.0/16 and 128.9.0.0/16 are also exportable since
+ they did not participate in an aggregate exportable to AS2.
+
+ Similarly, for AS3, a router in AS1 will only generate 128.8.0.0/15.
+ In this case 128.8.0.0/15, 128.10.0.0/16, 128.11.0.0/16 are
+ exportable.
+
+8.2 Specifying Static Routes
+
+ The inject attribute can be used to specify static routes by using
+ "upon static" as the condition:
+
+ inject: [at <router>] ...
+ [action <action>]
+ upon static
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 47]
+
+RFC 2280 RPSL January 1998
+
+
+ In this case, the <router> executes the <action> and injects the
+ route to the interAS routing system statically. <action> may set
+ certain route attributes such as a next-hop router or a cost.
+
+ In the following example, the router 7.7.7.1 injects the route
+ 128.7.0.0/16. The next-hop routers (in this example, there are two
+ next-hop routers) for this route are 7.7.7.2 and 7.7.7.3 and the
+ route has a cost of 10 over 7.7.7.2 and 20 over 7.7.7.3.
+
+ route: 128.7.0.0/16
+ origin: AS1
+ inject: at 7.7.7.1 action next-hop = 7.7.7.2; cost = 10; upon static
+ inject: at 7.7.7.1 action next-hop = 7.7.7.3; cost = 20; upon static
+
+9 inet-rtr Class
+
+ Routers are specified using the inet-rtr class. The attributes of
+ the inet-rtr class are shown in Figure 29. The inet-rtr attribute is
+ a valid DNS name of the router described. Each alias attribute, if
+ present, is a canonical DNS name for the router. The local-as
+ attribute specifies the AS number of the AS which owns/operates this
+ router.
+
+ Attribute Value Type
+ inet-rtr <dns-name> mandatory, single-valued,
+ class key
+ alias <dns-name> optional, multi-valued
+ local-as <as-number> mandatory, single-valued
+ ifaddr see description in text mandatory, multi-valued
+ peer see description in text optional, multi-valued
+
+
+ Figure 29: inet-rtr Class Attributes
+
+ The value of an ifaddr attribute has the following syntax:
+
+ <ipv4-address> masklen <integer> [action <action>]
+
+ The IP address and the mask length are mandatory for each interface.
+ Optionally an action can be specified to set other parameters of this
+ interface.
+
+ Figure 30 presents an example inet-rtr object. The name of the
+ router is "amsterdam.ripe.net". "amsterdam1.ripe.net" is a canonical
+ name for the router. The router is connected to 4 networks. Its IP
+ addresses and mask lengths in those networks are specified in the
+ ifaddr attributes.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 48]
+
+RFC 2280 RPSL January 1998
+
+
+ inet-rtr: Amsterdam.ripe.net
+ alias: amsterdam1.ripe.net
+ local-as: AS3333
+ ifaddr: 192.87.45.190 masklen 24
+ ifaddr: 192.87.4.28 masklen 24
+ ifaddr: 193.0.0.222 masklen 27
+ ifaddr: 193.0.0.158 masklen 27
+ peer: BGP4 192.87.45.195 asno(AS3334), flap_damp()
+
+
+ Figure 30: inet-rtr Objects
+
+ Each peer attribute, if present, specifies a protocol peering with
+ another router. The value of a peer attribute has the following
+ syntax:
+
+ <protocol> <ipv4-address> <options>
+
+ where <protocol> is a protocol name, <ipv4-address> is the IP address
+ of the peer router, and <options> is a comma separated list of
+ peering options for <protocol>. Possible protocol names and
+ attributes are defined in the dictionary (please see Section 7). In
+ the above example, the router has a BGP peering with the router
+ 192.87.45.195 in AS3334 and turns the flap damping on when importing
+ routes from this router.
+
+10 Security Considerations
+
+ This document describes RPSL, a language for expressing routing
+ policies. The language defines a maintainer (mntner class) object
+ which is the entity which controls or "maintains" the objects stored
+ in a database expressed by RPSL. Requests from maintainers can be
+ authenticated with various techniques as defined by the "auth"
+ attribute of the maintainer object.
+
+ The exact protocols used by IRR's to communicate RPSL objects is
+ beyond the scope of this document, but it is envisioned that several
+ techniques may be used, ranging from interactive query/update
+ protocols to store and forward protocols similar to or based on
+ electronic mail (or even voice telephone calls). Regardless of which
+ protocols are used in a given situation, it is expected that
+ appropriate security techniques such as IPSEC, TLS or PGP/MIME will
+ be utilized.
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 49]
+
+RFC 2280 RPSL January 1998
+
+
+11 Acknowledgements
+
+ We would like to thank Jessica Yu, Randy Bush, Alan Barrett, David
+ Kessens, Bill Manning, Sue Hares, Ramesh Govindan, Kannan Varadhan,
+ Satish Kumar, Craig Labovitz, Rusty Eddy, David J. LeRoy, David
+ Whipple, Jon Postel, Deborah Estrin, Elliot Schwartz, Joachim
+ Schmitz, Mark Prior, Tony Przygienda, David Woodgate, and the
+ participants of the IETF RPS Working Group for various comments and
+ suggestions.
+
+References
+
+ [1] Internet Routing Registry. Procedures.
+ http://www.ra.net/RADB.tools.docs/,
+ http://www.ripe.net/db/doc.html.
+
+ [2] Alaettinouglu, C., Meyer, D., and J. Schmitz, "Application of
+ Routing Policy Specification Language (RPSL) on the Internet",
+ Work in Progress.
+
+ [3] T. Bates. Specifying an `Internet Router' in the Routing
+ Registry. Technical Report RIPE-122, RIPE, RIPE NCC, Amsterdam,
+ Netherlands, October 1994.
+
+ [4] 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 ripe-
+ 181, RIPE, RIPE NCC, Amsterdam, Netherlands, October 1994.
+
+ [5] Bates, T., Gerich, E., Joncheray, L., Jouanigot, J.M.,
+ Karrenberg, D., Terpstra, M., and J. Yu, "Representation of IP
+ Routing Policies in a Routing Registry," RFC 1786, 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] Chandra, R., Traina, P., and T. Li, "BGP Communities Attribute,"
+ RFC 1997, August 1996.
+
+ [8] Crocker, D., "Standard for the format of ARPA Internet text
+ messages, STD 11, RFC 822, August 1982.
+
+ [9] V. Fuller, T. Li, J. Yu, and K. Varadhan. Classless Inter-
+ Domain Routing (CIDR): an Address Assignment and Aggregation
+ Strategy, 1993.
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 50]
+
+RFC 2280 RPSL January 1998
+
+
+ [10] D. Karrenberg and T. Bates. Description of Inter-AS Networks
+ in the RIPE Routing Registry. Technical Report RIPE-104, RIPE,
+ RIPE NCC, Amsterdam, Netherlands, December 1993.
+
+ [11] D. Karrenberg and M. Terpstra. Authorisation and
+ Notification of Changes in the RIPE Database. Technical Report
+ ripe-120, RIPE, RIPE NCC, Amsterdam, Netherlands, October 1994.
+
+ [12] B. W. Kernighan and D. M. Ritchie. The C Programming
+ Language. Prentice-Hall, 1978.
+
+ [13] Kessens, D., Woeber, W., and D. Conrad, "RIDE referencing",
+ Work in Progress.
+
+ [14] A. Lord and M. Terpstra. RIPE Database Template for
+ Networks and Persons. Technical Report ripe-119, RIPE, RIPE
+ NCC, Amsterdam, Netherlands, October 1994.
+
+ [15] A. M. R. Magee. RIPE NCC Database Documentation. Technical
+ Report RIPE-157, RIPE, RIPE NCC, Amsterdam, Netherlands, May
+ 1997.
+
+ [16] Mockapetris, P., "Domain names - concepts and facilities,"
+ STD 13, RFC 1034, November 1987.
+
+ [17] Y. Rekhter. Inter-Domain Routing Protocol (IDRP). Journal
+ of Internetworking Research and Experience, 4:61--80, 1993.
+
+ [18] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 (BGP-4),"
+ RFC 1771, March 1995.
+
+ [19] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route
+ Flap Damping", Work in Progress.
+
+A Routing Registry Sites
+
+ The set of routing registries as of November 1996 are RIPE, RADB,
+ CANet, MCI and ANS. You may contact one of these registries to find
+ out the current list of registries.
+
+
+
+
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 51]
+
+RFC 2280 RPSL January 1998
+
+
+B Authors' Addresses
+
+ Cengiz Alaettinoglu
+ USC Information Sciences Institute
+ 4676 Admiralty Way, Suite 1001
+ Marina del Rey, CA 90292
+ EMail: cengiz@isi.edu
+
+
+ Tony Bates
+ Cisco Systems, Inc.
+ 170 West Tasman Drive
+ San Jose, CA 95134
+ EMail: tbates@cisco.com
+
+
+ Elise Gerich
+ At Home Network
+ 385 Ravendale Drive
+ Mountain View, CA 94043
+ EMail: epg@home.net
+
+
+ Daniel Karrenberg
+ RIPE Network Coordination Centre (NCC)
+ Kruislaan 409
+ NL-1098 SJ Amsterdam
+ Netherlands
+ EMail: dfk@ripe.net
+
+
+ David Meyer
+ University of Oregon
+ Eugene, OR 97403
+ EMail: meyer@antc.uoregon.edu
+
+
+ Marten Terpstra
+ c/o Bay Networks, Inc.
+ 2 Federal St
+ Billerica MA 01821
+ EMail: marten@BayNetworks.com
+
+
+ Curtis Villamizar
+ ANS
+ EMail: curtis@ans.net
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 52]
+
+RFC 2280 RPSL January 1998
+
+
+C Full Copyright Statement
+
+ Copyright (C) The Internet Society (1998). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Alaettinoglu, et. al. Standards Track [Page 53]
+