# Matching AS paths

An AS path is a list of autonomous_systems that routing information has passed through to get to this router, and an indicator of the origin of the AS path. This information can be used to prefer one path to a destination network over another. The primary method for doing this with GateD is to specify a list of patterns to be applied to AS paths when importing and exporting routes.

Each autonomous system that a route passed through prepends it's AS number to the beginning of the AS path.

The origin information details the completeness of AS path information. An origin of igp indicates the route was learned from an interior routing protocol and is most likely complete. An origin of egp indicates the route was learned from an exterior routing protocol that does not support AS paths (EGP for example) and the path is most likely not complete. When the path information is definitely not complete, an origin of incomplete is used.

AS path regular expressions are defined in RFC 1164 section 4.2.

## AS path matching syntax

An AS path is matched using the following syntax.

    aspath aspath_regexp origin any | ( [ igp ] [egp ] [ incomplete ] )

This specifies that an AS matching the aspath_regexp with the specified origin is matched.

## AS path regular expressions

Technically, an AS path regular expression is a regular expression with the alphabet being the set of AS numbers. An AS path regular expression is composed of one or more AS paths expressions. An AS path expressions is composed of AS path terms and AS path operators.

### AS path terms

An AS path term is one of the following three objects:

        autonomous_system
        .
        ( aspath_regexp )

autonomous_system
  Is any valid autonomous system number, from one through 65534 inclusive.
.
  matches any autonomous system number.
( aspath_regexp )
  parentheses group subexpressions--an operator, such as `*` or `?` works on a single element or on a regular expression enclosed in parentheses

### AS path operators

An AS path operator is one of the following:

        aspath_term {m,n}
        aspath_term {m}
        aspath_term {m,}
        aspath_term *
        aspath_term +
        aspath_term ?
        aspath_term | aspath_term

aspath_term {m,n}
  a regular expression followed by `{m,n}` (where m and n are both non-negative integers and m <= n) means at least m and at most n repetitions.
aspath_term {m}
  a regular expression followed by `{m}` (where m is a positive integer) means exactly m repetitions.
aspath_term {m,}
  a regular expression followed by `{m,}` (where m is a positive integer) means m or more repetitions.
aspath_term *
  an AS path term followed by `*` means zero or more repetitions. This is shorthand for `{0,}`.
aspath_term +
  a regular expression followed by `+` means one or more repetitions. This is shorthand for `{1,}`.
aspath_term ?
  a regular expression followed by `?` means zero or one repetition. This is shorthand for `{0,1}`.
aspath_term | aspath_term
  matches the AS term on the left, or the AS term on the right.

Last updated 1994/03/16 21:38:07.