Difference between revisions of "Manual:Routing/BGP"

From MikroTik Wiki
Jump to: navigation, search
Line 7: Line 7:
 
MikroTik RouterOS supports BGP Version 4, as defined in RFC 1771 -> RFC 4271 <br />
 
MikroTik RouterOS supports BGP Version 4, as defined in RFC 1771 -> RFC 4271 <br />
 
<br />
 
<br />
Standards and Technologies: <ul>
+
Standards and Technologies: <ul class="bullets">
:<li>RFC 4271 Border Gateway Protocol 4
+
<li>RFC 4271 Border Gateway Protocol 4
:<li>RFC 4456 BGP Route Reflection
+
<li>RFC 4456 BGP Route Reflection
:<li>RFC 1965 Autonomous System Confederations for BGP
+
<li>RFC 1965 Autonomous System Confederations for BGP
:<li>RFC 1997 BGP Communities Attribute
+
<li>RFC 1997 BGP Communities Attribute
:<li>RFC 2385 TCP MD5 Authentication for BGPv4
+
<li>RFC 2385 TCP MD5 Authentication for BGPv4
:<li>RFC 3392 Capabilities Advertisement with BGP-4
+
<li>RFC 3392 Capabilities Advertisement with BGP-4
:<li>RFC 2918 Route Refresh Capability
+
<li>RFC 2918 Route Refresh Capability
:<li>RFC 2858 Multiprotocol Extensions for BGP-4
+
<li>RFC 2858 Multiprotocol Extensions for BGP-4
:<li>RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
+
<li>RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
 
</ul>
 
</ul>
 
</p>
 
</p>
Line 120: Line 120:
 
then the BGP connection to the peer will be closed. The minimal hold-time value of both peers will be actually used
 
then the BGP connection to the peer will be closed. The minimal hold-time value of both peers will be actually used
 
(note that the special value 0 or 'infinity' is lower than any other values)
 
(note that the special value 0 or 'infinity' is lower than any other values)
:<var>infinity</var> - never expire the connection and never send keepalive messages.</td>
+
<ul class="bullets">
 +
<li> <var>infinity</var> - never expire the connection and never send keepalive messages.
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Line 140: Line 143:
 
<tr>
 
<tr>
 
     <td><var><b>max-prefix-restart-time</b></var> (<em>time 1 minute .. 10 days | infinity</em>; Default: <b>infinity</b>)</td>
 
     <td><var><b>max-prefix-restart-time</b></var> (<em>time 1 minute .. 10 days | infinity</em>; Default: <b>infinity</b>)</td>
     <td> minimum time interval after which peers can reestablish BGP session. <br />
+
     <td> minimum time interval after which peers can reestablish BGP session.
:<var>infinity</var> - session is not reestablished until administrator's intervention.</td>
+
<ul class="bullets">
 +
<li> <var>infinity</var> - session is not reestablished until administrator's intervention.
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Line 147: Line 153:
 
     <td> specifies whether the remote peer is more than one hop away.<br />
 
     <td> specifies whether the remote peer is more than one hop away.<br />
 
This option affects outgoing nexthop selection as described in RFC 4271 (for EBGP only, excluding EBGP peers local to the confederation).
 
This option affects outgoing nexthop selection as described in RFC 4271 (for EBGP only, excluding EBGP peers local to the confederation).
It also affects <br />
+
It also affects
:- whether to accept connections from peers that are not in the same network (the remote address of the connection  is used for this check) <br />
+
<ul  class="bullets">
:- and whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection.</td>
+
<li> whether to accept connections from peers that are not in the same network (the remote address of the connection  is used for this check)
 +
<li> and whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection.
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Line 157: Line 166:
 
<tr>
 
<tr>
 
     <td><var><b>nexthop-choice</b></var> (<em>default | force-self | propagate</em>; Default: <b>default</b>)</td>
 
     <td><var><b>nexthop-choice</b></var> (<em>default | force-self | propagate</em>; Default: <b>default</b>)</td>
     <td> Affects the outgoing <b>NEXT_HOP</b> attribute selection.  Note that nexthops set in filters always takes precedence. Also note that nexthop is not changed on route reflection, expect when it's set in filter.<br />
+
     <td> Affects the outgoing <b>NEXT_HOP</b> attribute selection.  Note that nexthops set in filters always takes precedence. Also note that nexthop is not changed on route reflection, expect when it's set in filter.
:<var>default</var> - select the nexthop as described in RFC 4271<br />
+
<ul class="bullets">
:<var>force-self</var> - always use a local address of the interface that used to connect to the peer as the nexthop;<br />
+
<li><var>default</var> - select the nexthop as described in RFC 4271<br />
:<var>propagate</var> - try to propagate further the nexthop received; i.e. if the route has BGP <b>NEXT_HOP</b> attribute, then use it as the nexthop, otherwise fall back to the default case</td>
+
<li><var>force-self</var> - always use a local address of the interface that used to connect to the peer as the nexthop;<br />
 +
<li><var>propagate</var> - try to propagate further the nexthop received; i.e. if the route has BGP <b>NEXT_HOP</b> attribute, then use it as the nexthop, otherwise fall back to the default case
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Line 189: Line 201:
 
     <td><var><b>ttl</b></var> (<em>integer: 1..255 | default</em>; Default: <b>default</b>)</td>
 
     <td><var><b>ttl</b></var> (<em>integer: 1..255 | default</em>; Default: <b>default</b>)</td>
 
     <td> Time To Leave, the hop limit for TCP connection. For example, if 'ttl=1' then only single
 
     <td> Time To Leave, the hop limit for TCP connection. For example, if 'ttl=1' then only single
hop neighbors will be able to establish the connection. This property only affects EBGP peers. <br />
+
hop neighbors will be able to establish the connection. This property only affects EBGP peers.
:<var>default</var> - system's default TTL value is used</td>
+
<ul class="bullets">
 +
<li> <var>default</var> - system's default TTL value is used
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
Line 407: Line 422:
 
     <td><var><b>routes-used</b></var> (<em>integer</em>)</td>
 
     <td><var><b>routes-used</b></var> (<em>integer</em>)</td>
 
     <td> aggregated route statistics.
 
     <td> aggregated route statistics.
:in console- list of route console IDs used;<br />
+
<ul class="bullets">
:in winbox- number of routes used.</td>
+
<li> in console- list of route console IDs used;
 +
<li> in winbox- number of routes used.
 +
</ul>
 +
</td>
 
</tr>
 
</tr>
  
Line 416: Line 434:
 
<h3>Terminology</h3>
 
<h3>Terminology</h3>
 
<p>
 
<p>
::<var>aggregated routes</var> - all routes, that fall within the range of this aggregate; they possibly are suppressed;
+
<ul class="bullets">
::<var>aggregate route</var> - route created by aggregation.
+
<li><var>aggregated routes</var> - all routes, that fall within the range of this aggregate; they possibly are suppressed;
 +
<li><var>aggregate route</var> - route created by aggregation.
 +
</ul>
 
</p>
 
</p>
 
<h3>Notes</h3>
 
<h3>Notes</h3>
Line 508: Line 528:
  
 
[[Category:Manual]]
 
[[Category:Manual]]
[[Category:Unfinished]]
 

Revision as of 11:00, 15 October 2009

Summary

The Border Gateway Protocol (BGP) allows setting up an interdomain dynamic routing system that automatically updates routing tables of devices running BGP in case of network topology changes.

MikroTik RouterOS supports BGP Version 4, as defined in RFC 1771 -> RFC 4271

Standards and Technologies:

  • RFC 4271 Border Gateway Protocol 4
  • RFC 4456 BGP Route Reflection
  • RFC 1965 Autonomous System Confederations for BGP
  • RFC 1997 BGP Communities Attribute
  • RFC 2385 TCP MD5 Authentication for BGPv4
  • RFC 3392 Capabilities Advertisement with BGP-4
  • RFC 2918 Route Refresh Capability
  • RFC 2858 Multiprotocol Extensions for BGP-4
  • RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing

Instance

Sub-menu: /routing bgp instance


Property Description
as (integer: 0..4294967295; Default: ) 32-bit BGP autonomous system number
client-to-client-reflection (yes | no; Default: yes) in case this instance is a route reflector: whether to redistribute routes learned from one routing reflection client to other clients
cluster-id (IP address;) in case this instance is a route reflector: cluster ID of the router reflector cluster this instance belongs to. This attribute helps to recognize routing updates that comes from another route reflector in this cluster and avoid routing information looping. Note that normally there is only one route reflector in a cluster; this case 'cluster-id' does not need to be configured and BGP router ID is used instead
confederation (integer: 0..4294967295;) in case of BGP confederations: autonomous system number that identifies the [local] confederation as a whole
confederation-peers (integer: 0..4294967295;) in case of BGP confederations: list of BGP peers internal to the [local] confederation
ignore-as-path-len (yes | no; Default: no) whether to ignore AS_PATH attribute in BGP route selection algorithm
name (string;) BGP instance name
out-filter (string;) the output routing filter used by all BGP peers belonging to this instance
redistribute-connected (yes | no; Default: no) if enabled, this BGP instance will redistribute the information about connected routes, i.e., routes to the networks that can be directly reached
redistribute-ospf (yes | no; Default: no) if enabled, this BGP instance will redistribute the information about routes learned by OSPF
redistribute-other-bgp (yes | no; Default: no) if enabled, this BGP instance will redistribute the information about routes learned by other BGP instances
redistribute-rip (yes | no; Default: no) if enabled, this BGP instance will redistribute the information about routes learned by RIP
redistribute-static (yes | no; Default: no) if enabled, the router will redistribute the information about static routes added to its routing database, i.e., routes that have been created using the '/ip route add' command on the router
router-id (IP address; Default: 0.0.0.0) the BGP Router ID (for this instance). If not specified, BGP will use one of router's IP addresses.
vrf (string;) List of VRFs used for vpnv4 routes


Peer

Sub-menu: /routing bgp peer


Property Description
address-families (ip | ipv6 | l2vpn | l2vpn-cisco | vpnv4; Default: ip) list of address families about which this peer will exchange routing information. The remote peer must support (they usually do) BGP capabilities optional parameter to negotiate any other families than IP
allowas-in (string;)
default-originate (always | if-installed | never;) specifies how to distribute default route
hold-time (time; Default: ) specifies the BGP Hold Time value to use when negotiating with peers.

According to the BGP specification, if router does not receive successive KEEPALIVE and/or UPDATE and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the BGP connection to the peer will be closed. The minimal hold-time value of both peers will be actually used (note that the special value 0 or 'infinity' is lower than any other values)

  • infinity - never expire the connection and never send keepalive messages.
in-filter (string;) name of the routing filter that is applied to the incoming routing information
instance (string;) the instance this peer belongs to
interface (string | unspecified; Default: unspecified) if specified, then outgoing connection will be made using only this interface; important if you want to run BGP using IPv6 link-local addresses
max-prefix-limit (integer;) maximum number of prefixes to accept from a specific peer. When this limit is exceeded, TCP connection between peers is tear down
max-prefix-restart-time (time 1 minute .. 10 days | infinity; Default: infinity) minimum time interval after which peers can reestablish BGP session.
  • infinity - session is not reestablished until administrator's intervention.
multihop (yes | no; Default: no) specifies whether the remote peer is more than one hop away.

This option affects outgoing nexthop selection as described in RFC 4271 (for EBGP only, excluding EBGP peers local to the confederation). It also affects

  • whether to accept connections from peers that are not in the same network (the remote address of the connection is used for this check)
  • and whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection.
name (string;) the name of the peer
nexthop-choice (default | force-self | propagate; Default: default) Affects the outgoing NEXT_HOP attribute selection. Note that nexthops set in filters always takes precedence. Also note that nexthop is not changed on route reflection, expect when it's set in filter.
  • default - select the nexthop as described in RFC 4271
  • force-self - always use a local address of the interface that used to connect to the peer as the nexthop;
  • propagate - try to propagate further the nexthop received; i.e. if the route has BGP NEXT_HOP attribute, then use it as the nexthop, otherwise fall back to the default case
out-filter (string;) name of the routing filter that is applied to the outgoing routing information, if instance has also configured out-filter, then first will be applied instance filters and only then peer's filters.
remote-address (IP address;) address of the remote peer
remote-as (integer: 0..4294967295;) 32-bit AS number of the remote peer
remote-port (integer; Default: 179) Remote peers port to establish tcp session
route-reflect (yes | no; Default: no) specifies whether this peer is route reflection client
tcp-md5-key (string;) key used to authenticate the connection with TCP MD5 signature as described in RFC 2385
ttl (integer: 1..255 | default; Default: default) Time To Leave, the hop limit for TCP connection. For example, if 'ttl=1' then only single

hop neighbors will be able to establish the connection. This property only affects EBGP peers.

  • default - system's default TTL value is used
update-source (IP address | interface name;) If address is specified, this address is used as the source address of the outgoing TCP connection.

If interface name is specified, an address belonging to the interface is used as described.

This property is ignored, if the value specified is not a valid address of the router or name an interface with active addresses.


Read only status properties:

Property Description
remote-id (IP address) BGP router ID of the remote end
local-address (IP address) local address used for TCP connection
uptime (time) how long the connection has been in established state
prefix-count (integer) number routing prefixes received from this peer currently in routing table
updates-sent (integer) total number of reachable routing prefixes advertised
updates-received (integer) total number of reachable routing prefixes received
withdrawn-sent (integer) total number of withdrawn routing prefixes advertised
withdrawn-received (integer) total number of withdrawn routing prefixes received
remote-hold-time (time) hold time value offered by the remote end
used-hold-time (time) negotiated hold time value
used-keepalive-time (time) negotiated keepalive message interval (used-hold-time / 3)
refresh-capability (yes | no)
as4-capability (yes | no) set to yes if peer supports 4-byte AS numbers
used-keepalive-time (time) negotiated keepalive message interval (used-hold-time / 3)
state (idle | connect | active | opensent | openconfirm | established) BGP protocol state


Advertisements

Sub-menu: /routing bgp advertisements


Read only information about outgoing routing information currently advertised.

This information is calculated dynamically after 'print' command is issued. As a result, it may not correspond to the information that at the exact moment has been sent out. Especially if in case of slow connection, routing information prepared for output will spend long time in buffers. 'advertisements print' will show as things should be, not as they are!

Property Description
prefix (IP prefix) the NLRI prefix sent out
nexthop (IP address) the NEXT_HOP attribute value sent out
as-path (string) the AS_PATH attribute value sent out
origin (igp | egp | incomplete) the ORIGIN attribute value sent out
local-pref (integer) the LOCAL_PREF attribute value sent out
med (integer) the MULTI_EXIT_DISC attribute value sent out
atomic-aggregate (yes | no) the ATOMIC_AGGREGATE attribute value sent out
aggregator (IP address) the AGGREGATOR attribute value sent out
originator-id (IP address) the ORIGINATOR_ID attribute value sent out
cluster-list (string) the CLUSTER_LIST attribute value sent out
peer (string) the peer this information is advertised to


Network

Sub-menu: /routing bgp network


BGP network configuration. BGP Networks is a list of IP prefixes to be advertised.

Property Description
network (IP prefix;) the aggregate prefix
synchronize (yes | no; Default: no) install a route for this network only when there are some IGP routes falling under the range of this network

Note: Since v3.28 synchronize option is removed. Matching IGP route in routing table is required, otherwise BGP network will not be advertised.

Aggregate

Sub-menu: /routing bgp aggregate


BGP allows the aggregation of specific routes into one route with. This menu ('/routing bgp aggregate') allows to specify which routes you want to aggregate, and what attributes to use for the route created by aggregation.


Property Description
advertise-filter (string;) name of the filter chain used to select the routes from which to inherit attributes
attribute-filter (string;) name of the filter chain used to set the attributes of the aggregate route
inherit-attributes (yes | no; Default: yes) whether to inherit BGP attributes from aggregated routes
instance (string;) the instance this network belongs to
prefix (IP prefix;) the aggregate prefix
summary-only (yes | no; Default: yes) whether to suppress advertisements of all routes that fall within the range of this aggregate
suppress-filter (string;) name of the filter chain used to select the routes to be suppressed


Read only status property:

routes-used (integer) aggregated route statistics.
  • in console- list of route console IDs used;
  • in winbox- number of routes used.

Terminology

  • aggregated routes - all routes, that fall within the range of this aggregate; they possibly are suppressed;
  • aggregate route - route created by aggregation.

Notes

Each aggregate will only affect routes coming from peers that belong to it's instance.
'suppress-filter' is useful only if 'summary-only=no'; 'advertise-filter' is useful only if 'inherit-attributes=yes'

If result 'attribute-filter' match 'reject' or 'discard', the aggregate route is not created.


Vpnv4 route

Sub-menu: /routing bgp vpnv4-route


Read only information about vpnv4 routing information currently advertised.


Property Description
bgp-as-path (string;) the AS_PATH attribute value
bgp-atomic-aggregate (string;) the ATOMIC_AGGREGATE attribute value
bgp-communities (;)
bgp-ext-communities (string;)
bgp-local-pref (string;) the LOCAL_PREF attribute value
bgp-med (string;) the MULTI_EXIT_DISC attribute value
bgp-origin (igp|egp|incomplete;) the ORIGIN attribute value
bgp-prepend (string;)
bgp-weight (string;)
dst-address (string;)
gateway (string;)
in-label (integer;) assigned MPLS in label
interface (string;)
out-label (integer;) assigned MPLS out label
route-distinguisher (string;)