File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / routemap.texi
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:11 2016 UTC (7 years, 7 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: @node Route Map
    2: @chapter Route Map
    3: 
    4: Route maps provide a means to both filter and/or apply actions to
    5: route, hence allowing policy to be applied to routes.
    6: 
    7: @menu
    8: * Route Map Command::           
    9: * Route Map Match Command::     
   10: * Route Map Set Command::
   11: * Route Map Call Command::
   12: * Route Map Exit Action Command::
   13: * Route Map Examples::
   14: @end menu
   15: 
   16: Route-maps are an ordered list of route-map entries. Each entry may
   17: specify up to four distincts sets of clauses:
   18: 
   19: @table @samp
   20: @item Matching Policy
   21: 
   22: This specifies the policy implied if the @samp{Matching Conditions} are
   23: met or not met, and which actions of the route-map are to be taken, if
   24: any. The two possibilities are:
   25: 
   26: @itemize @minus
   27: @item
   28: @samp{permit}: If the entry matches, then carry out the @samp{Set
   29: Actions}. Then finish processing the route-map, permitting the route,
   30: unless an @samp{Exit Action} indicates otherwise.
   31: 
   32: @item
   33: @samp{deny}: If the entry matches, then finish processing the route-map and
   34: deny the route (return @samp{deny}).
   35: @end itemize
   36: 
   37: The @samp{Matching Policy} is specified as part of the command which
   38: defines the ordered entry in the route-map. See below.
   39: 
   40: @item Matching Conditions
   41: 
   42: A route-map entry may, optionally, specify one or more conditions which
   43: must be matched if the entry is to be considered further, as governed
   44: by the Match Policy. If a route-map entry does not explicitely specify
   45: any matching conditions, then it always matches.
   46: 
   47: @item Set Actions
   48: 
   49: A route-map entry may, optionally, specify one or more @samp{Set
   50: Actions} to set or modify attributes of the route.
   51: 
   52: @item Call Action
   53: 
   54: Call to another route-map, after any @samp{Set Actions} have been
   55: carried out. If the route-map called returns @samp{deny} then
   56: processing of the route-map finishes and the route is denied,
   57: regardless of the @samp{Matching Policy} or the @samp{Exit Policy}. If
   58: the called route-map returns @samp{permit}, then @samp{Matching Policy}
   59: and @samp{Exit Policy} govern further behaviour, as normal.
   60: 
   61: @item Exit Policy
   62: 
   63: An entry may, optionally, specify an alternative @samp{Exit Policy} to
   64: take if the entry matched, rather than the normal policy of exiting the
   65: route-map and permitting the route. The two possibilities are:
   66: 
   67: @itemize @minus 
   68: @item
   69: @samp{next}: Continue on with processing of the route-map entries.
   70: 
   71: @item
   72: @samp{goto N}: Jump ahead to the first route-map entry whose order in
   73: the route-map is >= N. Jumping to a previous entry is not permitted.
   74: @end itemize
   75: @end table
   76: 
   77: The default action of a route-map, if no entries match, is to deny.
   78: I.e. a route-map essentially has as its last entry an empty @samp{deny}
   79: entry, which matches all routes. To change this behaviour, one must
   80: specify an empty @samp{permit} entry as the last entry in the route-map.
   81: 
   82: To summarise the above:
   83: 
   84: @multitable {permit} {action} {No Match}
   85: @headitem           @tab Match  @tab No Match
   86: @item @emph{Permit} @tab action @tab cont
   87: @item @emph{Deny}   @tab deny   @tab cont
   88: @end multitable
   89: 
   90: @table @samp
   91: 
   92: @item action
   93: @itemize @minus
   94: @item
   95: Apply @emph{set} statements
   96: 
   97: @item
   98: If @emph{call} is present, call given route-map. If that returns a @samp{deny}, finish
   99: processing and return @samp{deny}.
  100: 
  101: @item
  102: If @samp{Exit Policy} is @emph{next}, goto next route-map entry
  103: 
  104: @item
  105: If @samp{Exit Policy} is @emph{goto}, goto first entry whose order in the list
  106: is >= the given order.
  107: 
  108: @item
  109: Finish processing the route-map and permit the route.
  110: @end itemize
  111: 
  112: @item deny
  113: @itemize @minus
  114: @item
  115: The route is denied by the route-map (return @samp{deny}).
  116: @end itemize
  117: 
  118: @item cont
  119: @itemize @minus
  120: @item
  121: goto next route-map entry
  122: @end itemize
  123: @end table
  124: 
  125: @node Route Map Command
  126: @section Route Map Command
  127: 
  128: @deffn {Command} {route-map @var{route-map-name} (permit|deny) @var{order}} {}
  129: 
  130: Configure the @var{order}'th entry in @var{route-map-name} with
  131: @samp{Match Policy} of either @emph{permit} or @emph{deny}.
  132: 
  133: @end deffn
  134: 
  135: @node Route Map Match Command
  136: @section Route Map Match Command
  137: 
  138: @deffn {Route-map Command} {match ip address @var{access_list}} {}
  139: Matches the specified @var{access_list}
  140: @end deffn
  141: 
  142: @deffn {Route-map Command} {match ip next-hop @var{ipv4_addr}} {}
  143: Matches the specified @var{ipv4_addr}.
  144: @end deffn
  145: 
  146: @deffn {Route-map Command} {match aspath @var{as_path}} {}
  147: Matches the specified @var{as_path}.
  148: @end deffn
  149: 
  150: @deffn {Route-map Command} {match metric @var{metric}} {}
  151: Matches the specified @var{metric}.
  152: @end deffn
  153: 
  154: @deffn {Route-map Command} {match community @var{community_list}} {}
  155: Matches the specified  @var{community_list}
  156: @end deffn
  157: 
  158: @node Route Map Set Command
  159: @section Route Map Set Command
  160: 
  161: @deffn {Route-map Command} {set ip next-hop @var{ipv4_address}} {}
  162: Set the BGP nexthop address.
  163: @end deffn
  164: 
  165: @deffn {Route-map Command} {set local-preference @var{local_pref}} {}
  166: Set the BGP local preference.
  167: @end deffn
  168: 
  169: @deffn {Route-map Command} {set weight @var{weight}} {}
  170: Set the route's weight.
  171: @end deffn
  172: 
  173: @deffn {Route-map Command} {set metric @var{metric}} {}
  174: @anchor{routemap set metric}
  175: Set the BGP attribute MED.
  176: @end deffn
  177: 
  178: @deffn {Route-map Command} {set as-path prepend @var{as_path}} {}
  179: Set the BGP AS path to prepend.
  180: @end deffn
  181: 
  182: @deffn {Route-map Command} {set community @var{community}} {}
  183: Set the BGP community attribute.
  184: @end deffn
  185: 
  186: @deffn {Route-map Command} {set ipv6 next-hop global @var{ipv6_address}} {}
  187: Set the BGP-4+ global IPv6 nexthop address.
  188: @end deffn
  189: 
  190: @deffn {Route-map Command} {set ipv6 next-hop local @var{ipv6_address}} {}
  191: Set the BGP-4+ link local IPv6 nexthop address.
  192: @end deffn
  193: 
  194: @node Route Map Call Command
  195: @section Route Map Call Command
  196: 
  197: @deffn {Route-map Command} {call @var{name}} {}
  198: Call route-map @var{name}. If it returns deny, deny the route and
  199: finish processing the route-map.
  200: @end deffn
  201: 
  202: @node Route Map Exit Action Command
  203: @section Route Map Exit Action Command
  204: 
  205: @deffn {Route-map Command} {on-match next} {}
  206: @deffnx {Route-map Command} {continue} {}
  207: Proceed on to the next entry in the route-map.
  208: @end deffn
  209: 
  210: @deffn {Route-map Command} {on-match goto @var{N}} {}
  211: @deffnx {Route-map Command} {continue @var{N}} {}
  212: Proceed processing the route-map at the first entry whose order is >= N
  213: @end deffn
  214: 
  215: @node Route Map Examples
  216: @section Route Map Examples
  217: 
  218: A simple example of a route-map:
  219: 
  220: @example
  221: @group
  222: route-map test permit 10
  223:  match ip address 10
  224:  set local-preference 200
  225: @end group
  226: @end example
  227: 
  228: This means that if a route matches ip access-list number 10 it's
  229: local-preference value is set to 200.
  230: 
  231: See @ref{BGP Configuration Examples} for examples of more sophisticated
  232: useage of route-maps, including of the @samp{call} action.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>