Scroll to navigation

EXABGP.CONF(5) File Formats Manual EXABGP.CONF(5)

NAME

exabgp.conf
Configuration file controlling the BGP configuration for exabgp(1).

DESCRIPTION

CONFIGURATION FILE SYNTAX

group <groupname> { 
  // Most if not all the attributes under neighbor can be defined 
  // at the group level as well, and the settings will be inherited 
  // unless overridden in the neighbor section 
  neighbor <ip-address> { 
    description <text>; 
    router-id <router-id>; 
    local-address <ip-address>; 
    local-as <asn>; 
    peer-as <asn>; 
    passive; 
    hold-time <seconds>; 
    md5 <md5-secret>; 
    ttl-security; 
    group-updates; 
    aigp <truthvalue>; 
    route-refresh <truthvalue>; 
    graceful-restart <...>; 
    multi-session <truthvalue); 
    add-path <path>; 
    auto-flush <truthvalue>; 
    adj-rib-out <truthvalue>; 
    // Can also have the groups listed under group <gn> { } below: 
    static { 
    } 
    flow { 
    } 
    l2vpn { 
    } 
    process { 
    } 
    family { 
    } 
    capability { 
    } 
    operational { 
    } 
  } 
  static { 
    route <ip-address>/<prefixlength> { 
      next-hop <ip-address>; // only mandatory attribute 
      origin ( IGP | EGP | INCOMPLETE ); 
      as-path [ <as-sequence-asn> | ( <as-set ) ]; 
      as-sequence 
      med <med>; 
      aigp <aigp>; 
      local-preference <preference>; 
      atomic-aggregate; 
      aggregator <asn>:<ip-address>; 
      path-information <ip-address>; 
      community ( <community> | [ <community> <community> ... ] ); 
      originator-id <ip-address>; 
      cluster-list ( <ip-address> | [ <ip-address> <ip-address> ... ] ); 
      extended-community ( <extended-community> | 
			   [ <extended-community> 
			     <extended-community> ... ] ); 
      split /<prefixlength>; 
      label ( <label> | [ <label> <label> ... ] ); 
      ( rd | route-distinguisher ) <route-distinguisher>; 
      watchdog <watchdog-name>; 
      withdraw; 
    } 
    // or alternatively 
    route <ip-address>/<prefixlength> <attribute-sequence>; 
    // where <attribute-sequence> is a sequence of 
    // any of the attributes above 
  } 
  flow { 
    route <route-name> { 
      (rd | route-distinguisher ) <route-distinguisher>; 
      next-hop <ip-address>; // for redirect-to-nexthop 
      match { 
	// one or more match terms 
        source <ip-address>/<prefixlength>; 
        destination <ip-address>/<prefixlength>; 
        port <portnumber>; 
        source-port <portnumber>; 
        destination-port <portnumber-expression>; 
        protocol [ udp | tcp ]; // IPv4 only 
        next-header [ udp | tcp ]; // IPv6 only 
        tcp-flags [ fin | syn | rst | push | ack | urgent ]; 
        icmp-type [ echo-reply | echo-request | info-reply | 
		    info-request | mask-reply | mask-request | 
		    parameter-problem | redirect | router-advertisment | 
		    router-solicit | source-quench | time-exceeded | 
		    timestamp | timestamp-reply | unreachable ]; 
        icmp-code [ communication-prohibited-by-filtering | 
		    destination-host-prohibited | 
		    destination-host-unknown | 
		    destination-network-unknown | 
		    fragmentation-needed | host-precedence-violation | 
		    ip-header-bad | network-unreachable | 
		    network-unreachable-for-tos | port-unreachable | 
		    redirect-for-host | redirect-for-network | 
		    redirect-for-tos-and-host | 
		    redirect-for-tos-and-net | 
		    required-option-missing | source-host-isolated | 
		    source-route-failed | 
		    ttl-eq-zero-during-reassembly | 
		    ttl-eq-zero-during-transit ]; 
        fragment [ not-a-fragment | dont-fragment | is-fragment | 
		   first-fragment | last-fragment ]; 
	// fragment is IPv4 only, poorly tested 
        dscp <dscp-value>; 
        traffic-class <traffic-class>; 
        packet-length <packet-length-expression>; 
        flow-label <flow-label-expression>; // IPv6 only 
      } 
      then { 
	// one action only 
        accept; 
        discard; 
        rate-limit <ratelimit>; 
        redirect ( <route-distinguisher> | <ip-address> ); 
        redirect-to-nexthop; // Ref. next-hop above 
        copy <ip-address>; 
        mark <mark>; 
        action ( sample | terminal | sample-terminal ); 
        community 
        extended-community 
      } 
    } 
  } 
  l2vpn { 
    vpls <site-name> { 
      next-hop <ip-address>; 
      origin ( IGP | EGP | INCOMPLETE ); 
      as-path [ <as-sequence-asn> | ( <as-set ) ]; 
      med <med>; 
      local-preference <preference>; 
      community ( <community> | [ <community> <community> ... ] ); 
      originator-id <ip-address>; 
      cluster-list [ <ip-address> <ip-address> ... ]; 
      extended-community ( <extended-community> | 
			   [ <extended-community> 
			     <extended-community> ... ] ); 
      ( rd | route-distinguisher ) <route-distinguisher>; 
      withdraw; 
      endpoint ( <vpls-endpoint> | <integer> ); 
      offset ( <block-offset> | <integer> ); 
      size ( <block-size> | <integer> ); 
      base ( <label-base> | <integer> ); 
      name <route-name>; 
  } 
  process { 
    run <command> <args>; 
  } 
  family { 
    all; // default, or a list of the below 
    minimal; // use AFI/SAFI required to announce routes in config 
    ipv4 unicast; 
    ipv4 multicast; 
    ipv4 nlri-mpls; 
    ipv4 mpls-vpn; 
    ipv4 flow; 
    ipv4 flow-vpn; 
    ipv6 unicast; 
    ipv6 flow; 
    ipv6 flow-vpn; 
  } 
  capability { 
    graceful-restart <seconds>; 
    asn4 ( enable | disable ); 
    add-path ( disable | send | receive | send/receive ); 
    multi-session ( enable | disable ); 
    operational ( enable | disable ); 
  } 
  operational { 
    // ?? 
  } 
} 
neighbor <ip-address> { 
  // Attributes and sections as for under 
  // group <groupname> { neighbor <neighbor> { 
  // ref. above 
}
Please note that multi-line sections really do need to be written as multiple lines: the first one ending in "{", and ending with a line with a "}" by itself.

SEE ALSO

exabgp(1).
February 26, 2015