Manual:Routing/BGP: Difference between revisions

From MikroTik Wiki
Jump to navigation Jump to search
 
(11 intermediate revisions by 2 users not shown)
Line 24: Line 24:


==Instance==
==Instance==
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp instance</code></p>
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp instance</code></p>
<br />
<table class="styled_table">
<tr>
  <th width="40%">Property</th>
  <th >Description</th>
</tr>
<tr>
    <td><var><b>as</b></var> (<em>integer: 0..4294967295</em>; Default: <b></b>)</td>
    <td> 32-bit BGP autonomous system number</td>
</tr>
<tr>
    <td><var><b>client-to-client-reflection</b></var> (<em>yes | no</em>; Default: <b>yes</b>)</td>
    <td> in case this instance is a route reflector: whether to redistribute routes learned from one routing reflection client to other clients</td>
</tr>
<tr>
    <td><var><b>cluster-id</b></var> (<em>IP address</em>;)</td>
    <td> 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</td>
</tr>
<tr>
    <td><var><b>confederation</b></var> (<em>integer: 0..4294967295</em>;)</td>
    <td> in case of BGP confederations: autonomous system number that identifies the [local] confederation as a whole</td>
</tr>
<tr>
    <td><var><b>confederation-peers</b></var> (<em>integer: 0..4294967295</em>;)</td>
    <td> in case of BGP confederations: list of BGP peers internal to the [local] confederation</td>
</tr>
<tr>
    <td><var><b>ignore-as-path-len</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> whether to ignore <b>AS_PATH</b> attribute in BGP route selection algorithm</td>
</tr>
<tr>
    <td><var><b>name</b></var> (<em>string</em>;)</td>
    <td> BGP instance name</td>
</tr>
<tr>
    <td><var><b>out-filter</b></var> (<em>string</em>;)</td>
    <td> the output routing filter used by all BGP peers belonging to this instance</td>
</tr>
<tr>
    <td><var><b>redistribute-connected</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> if enabled, this BGP instance will redistribute the information about connected routes, i.e., routes to the networks that can be directly reached</td>
</tr>
<tr>
    <td><var><b>redistribute-ospf</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> if enabled, this BGP instance will redistribute the information about routes learned by OSPF </td>
</tr>
<tr>
    <td><var><b>redistribute-other-bgp</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> if enabled, this BGP instance will redistribute the information about routes learned by other BGP instances</td>
</tr>
<tr>
    <td><var><b>redistribute-rip</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> if enabled, this BGP instance will redistribute the information about routes learned by RIP</td>
</tr>
<tr>
    <td><var><b>redistribute-static</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
    <td> 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</td>
</tr>
<tr>
    <td><var><b>router-id</b></var> (<em>IP address</em>; Default: <b>0.0.0.0</b>)</td>
    <td> the BGP Router ID (for this instance). If not specified, BGP will use one of router's IP addresses.</td>
</tr>
<tr>
    <td><var><b>routing-table</b></var> (<em>string</em>; Default: <b></b>)</td>
    <td> Name of routing table this BGP instance operates on.
Non-default routing-table and list of VRFs cannot be configured for the same instance at the same time. Available starting from v4.3</td>
</tr>
<tr>
    <td><var><b>vrf</b></var> (<em>string</em>;)</td>
    <td> List of [[Virtual_Routing_and_Forwarding| VRFs]] used for vpnv4 routes</td>
</tr>
</table>


<br />
 
 
{{Mr-arg-table-h
|prop=Property
|desc=Description
}}
 
{{Mr-arg-table
|arg=as
|type=integer [0..4294967295]
|default=
|desc=32-bit BGP autonomous system number. Value can be entered in AS-Plain and AS-Dot formats.
}}
 
{{Mr-arg-table
|arg=client-to-client-reflection
|type=yes {{!}} no
|default=yes
|desc=In case this instance is a route reflector: whether to redistribute routes learned from one routing reflection client to other clients.
}}
 
{{Mr-arg-table
|arg=cluster-id
|type=IP address
|default=
|desc=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
}}
 
{{Mr-arg-table
|arg=comment
|type=string
|default=
|desc=Short description of the instance.
}}
 
{{Mr-arg-table
|arg=confederation
|type=integer [0..4294967295]
|default=
|desc=In case of BGP confederations: autonomous system number that identifies the [local] confederation as a whole.
}}
 
{{Mr-arg-table
|arg=confederation-peers
|type=list/range of integer[0..4294967295]
|default=
|desc=In case of BGP confederations: list of AS numbers internal to the [local] confederation. Range of as numbers are also supported. For example 10,20,30-50.
}}
 
{{Mr-arg-table
|arg=disabled
|type=yes {{!}} no
|default=no
|desc=Whether instance is disabled.
}}
 
{{Mr-arg-table
|arg=ignore-as-path-len
|type=yes {{!}} no
|default=no
|desc=Whether to ignore '''AS_PATH''' attribute in BGP route selection algorithm
}}
 
{{Mr-arg-table
|arg=name
|type=string
|default=
|desc=BGP instance name
}}
 
{{Mr-arg-table
|arg=out-filter
|type=string
|default=
|desc=Output [[M:Routing/Routing_filters | routing filter]] chain used by all BGP peers belonging to this instance. Due to known problems in ROS v6, it is not recommended to use instance out-filter, instead use out-filter on peer.
}}
 
{{Mr-arg-table
|arg=redistribute-connected
|type=yes {{!}} no
|default=no
|desc=If enabled, this BGP instance will redistribute the information about connected routes, i.e., routes to the networks that can be directly reached.
}}
 
{{Mr-arg-table
|arg=redistribute-ospf
|type=yes {{!}} no
|default=no
|desc=If enabled, this BGP instance will redistribute the information about routes learned by OSPF
}}
 
{{Mr-arg-table
|arg=redistribute-other-bgp
|type=yes {{!}} no
|default=no
|desc=If enabled, this BGP instance will redistribute the information about routes learned by other BGP instances
}}
 
{{Mr-arg-table
|arg=redistribute-rip
|type=yes {{!}} no
|default=no
|desc=If enabled, this BGP instance will redistribute the information about routes learned by RIP
}}
 
{{Mr-arg-table
|arg=redistribute-static
|type=yes {{!}} no
|default=no
|desc=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
}}
 
{{Mr-arg-table
|arg=router-id
|type=IP
|default=0.0.0.0
|desc=BGP Router ID (for this instance). If set to 0.0.0.0, BGP will use one of router's IP addresses.
}}
 
{{Mr-arg-table-end
|arg=routing-table
|type=string
|default=
|desc=Name of routing table this BGP instance operates on.
Non-default routing-table and list of VRFs cannot be configured for the same instance at the same time.
 
Available starting from v4.3
}}
 
 
 
===VRF===
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp instance vrf</code></p>
 
Instance related VRF configuration
 
 
{{Mr-arg-table-h
|prop=Property
|desc=Description
}}
 
{{Mr-arg-table
|arg=comment
|type=string
|default=
|desc=Short description of the VRF.
}}
 
{{Mr-arg-table
|arg=disabled
|type=yes {{!}} no
|default=no
|desc=
}}
 
{{Mr-arg-table
|arg=in-filter
|type=string
|default=
|desc=Name of the routing filter chain that is applied to the incoming routing information
}}
 
{{Mr-arg-table
|arg=instance
|type=string
|default=
|desc=Name of the instance this configuration applies to.
}}
 
{{Mr-arg-table
|arg=out-filter
|type=string
|default=
|desc=Name of the routing filter chain that is applied to the outgoing routing information
}}
 
{{Mr-arg-table
|arg=redistribute-connected
|type=yes {{!}} no
|default=no
|desc=Redistribute connected routes that belongs to VRF.
}}
 
{{Mr-arg-table
|arg=redistribute-ospf
|type=yes {{!}} no
|default=no
|desc=Redistribute OSPF routes that belongs to VRF.
}}
 
{{Mr-arg-table
|arg=redistribute-other-bgp
|type=yes {{!}} no
|default=no
|desc=Redistribute BGP routes that belongs to VRF received from other BGP instance.
}}
 
{{Mr-arg-table
|arg=redistribute-rip
|type=yes {{!}} no
|default=no
|desc=Redistribute RIP routes that belongs to VRF.
}}
 
{{Mr-arg-table
|arg=redistribute-static
|type=yes {{!}} no
|default=no
|desc=Redistribute static routes that belongs to VRF.
}}
 
{{Mr-arg-table-end
|arg=routing-mark
|type=string
|default=
|desc=Name of the routing-mark used by VRF configured in ''/ip route vrf'''menu.
}}


==Peer==
==Peer==
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp peer</code></p>
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp peer</code></p>
<br />


<table class="styled_table">
<tr>
  <th width="40%">Property</th>
  <th >Description</th>
</tr>
<tr>
    <td><var><b>address-families</b></var> (<em>ip | ipv6 | l2vpn | l2vpn-cisco | vpnv4</em>; Default: <b>ip</b>)</td>
    <td> 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</td>
</tr>
<tr>
    <td><var><b>allowas-in</b></var> (<em>string</em>;)</td>
    <td> </td>
</tr>
<tr>
    <td><var><b>as-override</b></var> (<em>yes | no</em>;)</td>
    <td>If set, then all instances of remote peer's AS number in BGP AS PATH attribute are replaced with local AS number before sending route update to that peer. Happens before routing filters and prepending.</td>
</tr>


<tr>
 
    <td><var><b>default-originate</b></var> (<em>always | if-installed | never</em>;)</td>
{{Mr-arg-table-h
    <td> specifies how to distribute default route</td>
|prop=Property
</tr>
|desc=Description
<tr>
}}
    <td><var><b>hold-time</b></var> (<em>time</em>; Default: <b></b>)</td>
 
    <td> specifies the BGP Hold Time value to use when negotiating with peers.
{{Mr-arg-table
According to the BGP specification, if router does not receive successive <b>KEEPALIVE</b> and/or <b>UPDATE</b>
|arg=address-families
and/or <b>NOTIFICATION</b> messages within the period specified in the Hold Time field of the <b>OPEN</b> message,
|type=ip {{!}} ipv6 {{!}} l2vpn {{!}} l2vpn-cisco {{!}} vpnv4
then the BGP connection to the peer will be closed. The minimal hold-time value of both peers will be actually used
|default=ip
(note that the special value 0 or 'infinity' is lower than any other values)
|desc=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.
<ul class="bullets">
}}
<li> <var>infinity</var> - never expire the connection and never send keepalive messages.
 
</ul>
{{Mr-arg-table
</td>
|arg=allow-as-in
</tr>
|type=integer [0..10]
<tr>
|default=
    <td><var><b>in-filter</b></var> (<em>string</em>;)</td>
|desc=How many times to allow own AS number in AS-PATH, before discarding a prefix.
    <td> name of the routing filter that is applied to the incoming routing information</td>
}}
</tr>
 
<tr>
{{Mr-arg-table
    <td><var><b>instance</b></var> (<em>string</em>;)</td>
|arg=as-override
    <td> the instance this peer belongs to</td>
|type=yes {{!}} no
</tr>
|default=no
<tr>
|desc=If set, then all instances of remote peer's AS number in BGP AS PATH attribute are replaced with local AS number before sending route update to that peer. Happens before routing filters and prepending.
    <td><var><b>interface</b></var> (<em>string | unspecified</em>; Default: <b>unspecified</b>)</td>
}}
    <td> if specified, then outgoing connection will be made using only this interface; socket is directly bind to specified interface. Important if you want to run BGP using IPv6 link-local addresses. Do not specify name of interface that is added as a bridge port here!</td>
 
</tr>
{{Mr-arg-table
<tr>
|arg=cisco-vpls-nlri-len-fmt
    <td><var><b>max-prefix-limit</b></var> (<em>integer</em>;)</td>
|type=auto-bits {{!}} auto-bytes {{!}} bits {{!}} bytes
    <td> maximum number of prefixes to accept from a specific peer. When this limit is exceeded, TCP connection between peers is tear down</td>
|default=
</tr>
|desc=VPLS NLRI length format type. Used for compatibility with Cisco VPLS.  [[Read more>>]].
<tr>
}}
    <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.
{{Mr-arg-table
<ul class="bullets">
|arg=comment
<li> <var>infinity</var> - session is not reestablished until administrator's intervention.
|type=string
</ul>
|default=
</td>
|desc=Description of the peer.
</tr>
}}
<tr>
 
    <td><var><b>multihop</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
{{Mr-arg-table
    <td> specifies whether the remote peer is more than one hop away.<br />
|arg=default-originate
|type=always {{!}} if-installed {{!}} never
|default=never
|desc=Specifies how to distribute default route
}}
 
{{Mr-arg-table
|arg=disabled
|type=yes {{!}} no
|default=no
|desc=Whether peer is disabled.
}}
 
{{Mr-arg-table
|arg=hold-time
|type=time[3s..1h] {{!}} infinity
|default=3m
|desc=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)
* <var>infinity</var> - never expire the connection and never send keepalive messages.
}}
 
 
{{Mr-arg-table
|arg=in-filter
|type=string
|default=
|desc=Name of the [[M:Routing/Routing_filters | routing filter]] chain that is applied to the incoming routing information
}}
 
{{Mr-arg-table
|arg=instance
|type=string
|default=default
|desc=Name of the instance this peer belongs to.
}}
 
{{Mr-arg-table
|arg=keepalive-time
|type=time [1s..30m]
|default=
|desc=
}}
 
{{Mr-arg-table
|arg=max-prefix-limit
|type=integer [0..4294967295]
|default=
|desc=Maximum number of prefixes to accept from a specific peer. When this limit is exceeded, TCP connection between peers is closed.
}}
 
{{Mr-arg-table
|arg=max-prefix-restart-time
|type=time [1m..1w3d] {{!}} infinity
|default=
|desc=Minimum time interval after which peers can reestablish BGP session.
* <var>infinity</var> - session is not reestablished until administrator's intervention.
}}
 
{{Mr-arg-table
|arg=multihop
|type=yes {{!}} no
|default=no
|desc=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).
This option affects outgoing nexthop selection as described in RFC 4271 (for EBGP only, excluding EBGP peers local to the confederation).
It also affects
<ul  class="bullets">
<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> whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection;
<li> the target-scope of the routes installed from this peer; routes from multi-hop or IBGP peers resolve their nexthops through IGP routes by default.
</ul>
</td>
</tr>
<tr>
    <td><var><b>name</b></var> (<em>string</em>;)</td>
    <td> the name of the peer</td>
</tr>
<tr>
    <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.
<ul class="bullets">
<li><var>default</var> - select the nexthop as described in RFC 4271<br />
<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>
    <td><var><b>out-filter</b></var> (<em>string</em>;)</td>
    <td> 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.</td>
</tr>
<tr>
    <td><var><b>passive</b></var> (<em>yes | no</em>;)</td>
    <td>If set to <b>yes</b>, then connection attempts to remote peer are not made.
The remote peer must initialize connection in this case. Available starting from v4.3</td>
</tr>


<tr>
It also affects:
    <td><var><b>remote-address</b></var> (<em>IP address</em>;)</td>
* whether to accept connections from peers that are not in the same network (the remote address of the connection is used for this check);
    <td> address of the remote peer</td>
* whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection;
</tr>
* the target-scope of the routes installed from this peer; routes from multi-hop or IBGP peers resolve their nexthops through IGP routes by default.
<tr>
}}
    <td><var><b>remote-as</b></var> (<em>integer: 0..4294967295</em>;)</td>
 
    <td> 32-bit AS number of the remote peer</td>
{{Mr-arg-table
</tr>
|arg=name
<tr>
|type=string
    <td><var><b>remote-port</b></var> (<em>integer</em>; Default: <b>179</b>)</td>
|default=
    <td> Remote peers port to establish tcp session</td>
|desc=Descriptive name of the peer
</tr>
}}
<tr>
 
    <td><var><b>remove-private-as</b></var> (<em>yes | no</em>; Default: <b></b>)</td>
{{Mr-arg-table
    <td>If set, then if BGP AS PATH attribute contains only private AS numbers, the attribute is removed before sending out route update. The removing happens before routing filters are applied and before local AS  
|arg=nexthop-choice
number is prepended to the AS path. Available starting from v4.3</td>
|type=default {{!}} force-self {{!}} propagate
</tr>
|default=default
<tr>
|desc=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.
    <td><var><b>route-reflect</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
* <var>default</var> - select the nexthop as described in RFC 4271
    <td> specifies whether this peer is [[route reflection]] client</td>
* <var>force-self</var> - always use a local address of the interface that used to connect to the peer as the nexthop;
</tr>
* <var>propagate</var> - 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
<tr>
}}
    <td><var><b>tcp-md5-key</b></var> (<em>string</em>;)</td>
 
    <td> key used to authenticate the connection with TCP MD5 signature as described in RFC 2385</td>
{{Mr-arg-table
</tr>
|arg=out-filter
<tr>
|type=string
    <td><var><b>ttl</b></var> (<em>integer: 1..255 | default</em>; Default: <b>default</b>)</td>
|default=
    <td> Time To Leave, the hop limit for TCP connection. For example, if 'ttl=1' then only single
|desc=Name of the [[M:Routing/Routing_filters | routing filter]] chain that is applied to the outgoing routing information.
If instance has also configured out-filter, then instance filters are applied firs and only then peer's filters.
}}
 
{{Mr-arg-table
|arg=passive
|type=yes {{!}} no
|default=no
|desc=If set to '''yes''', then connection attempts to remote peer are not made.
The remote peer must initialize connection in this case.
Available starting from v4.3
}}
 
{{Mr-arg-table
|arg=remote-address
|type=IP/IPv6 address
|default=
|desc=Address of the remote peer. If remote address is IPv6 [[Manual:IPv6/Address#Link-local_address | link-local address]] then interface must be specified after '%', for example, fe80::21a:4dff:fe5d:8e56'''%ether1'''
}}
 
{{Mr-arg-table
|arg=remote-as
|type=integer [0..4294967295]
|default=
|desc=32-bit AS number of the remote peer. AS number can be specified in AS-Plain and AS-Dot formats.
}}
 
{{Mr-arg-table
|arg=remote-port
|type=integer [0..65535]
|default=
|desc=Remote peers port to establish tcp session. If not set, then default 179 port will be used.
}}
 
{{Mr-arg-table
|arg=remove-private-as
|type=yes {{!}} no
|default=no
|desc=If set, then BGP AS-PATH attribute is removed before sending out route update if attribute contains only private AS numbers.  
removal process happens before routing filters are applied and before local AS  
number is prepended to the AS path. Option is available starting from v4.3. Currently works only with 16-bit ASNs.
}}
 
{{Mr-arg-table
|arg=route-reflect
|type=yes {{!}} no
|default=no
|desc=Specifies whether this peer is [[route reflection]] client.
}}
 
{{Mr-arg-table
|arg=tcp-md5-key
|type=string
|default=
|desc=Key used to authenticate the connection with TCP MD5 signature as described in RFC 2385. If not specified, authentication is not used.
}}
 
{{Mr-arg-table
|arg=ttl
|type=integer [1..255] {{!}} default
|default=default
|desc=Time To Live, 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.
hop neighbors will be able to establish the connection. This property only affects EBGP peers.
<ul class="bullets">
* <var>default</var> - system's default TTL value is used
<li> <var>default</var> - system's default TTL value is used
}}
</ul>
 
</td>
{{Mr-arg-table
</tr>
|arg=update-source
<tr>
|type=IPv4 {{!}} IPv6 {{!}} Interface {{!}} none
    <td><var><b>update-source</b></var> (<em>IP address | interface name</em>;)</td>
|default=
    <td> If address is specified, this address is used as the source address of the outgoing TCP connection.<br />
|desc=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.<br />
 
This property is ignored, if the value specified is not a valid address of the router or name an interface with active addresses. Do not specify name of interface that is added as a bridge port here!</td>
If interface name is specified, an address belonging to the interface is used as described.
</tr>
 
</table>
This property is ignored, if the value specified is not a valid address of the router or name an interface with active addresses. Do not specify name of interface that is added as a bridge port here!
<br />
}}
 
{{Mr-arg-table-end
|arg=use-bfd
|type=yes {{!}} no
|default=no
|desc=Whether to use [[BFD]] protocol for fast state detection.
}}
 
 
 
Read only status properties:
Read only status properties:
<table class="styled_table">
<tr>
  <th width="40%">Property</th>
  <th >Description</th>
</tr>
<tr>
    <td><var><b>remote-id</b></var> (<em>IP address</em>)</td>
    <td> BGP router ID of the remote end</td>
</tr>
<tr>
    <td><var><b>local-address</b></var> (<em>IP address</em>)</td>
    <td> local address used for TCP connection</td>
</tr>
<tr>
    <td><var><b>uptime</b></var> (<em>time</em>)</td>
    <td> how long the connection has been in established state</td>
</tr>
<tr>
    <td><var><b>prefix-count</b></var> (<em>integer</em>)</td>
    <td> number routing prefixes received from this peer currently in routing table</td>
</tr>
<tr>
    <td><var><b>updates-sent</b></var> (<em>integer</em>)</td>
    <td> total number of reachable routing prefixes advertised</td>
</tr>
<tr>
    <td><var><b>updates-received</b></var> (<em>integer</em>)</td>
    <td> total number of reachable routing prefixes received</td>
</tr>
<tr>
    <td><var><b>withdrawn-sent</b></var> (<em>integer</em>)</td>
    <td> total number of withdrawn routing prefixes advertised</td>
</tr>
<tr>
    <td><var><b>withdrawn-received</b></var> (<em>integer</em>)</td>
    <td> total number of withdrawn routing prefixes received</td>
</tr>
<tr>
    <td><var><b>remote-hold-time</b></var> (<em>time</em>)</td>
    <td> hold time value offered by the remote end</td>
</tr>
<tr>
    <td><var><b>used-hold-time</b></var> (<em>time</em>)</td>
    <td> negotiated hold time value</td>
</tr>
<tr>
    <td><var><b>used-keepalive-time</b></var> (<em>time</em>)</td>
    <td> negotiated keepalive message interval (used-hold-time / 3)</td>
</tr>
<tr>
    <td><var><b>refresh-capability</b></var> (<em>yes | no</em>)</td>
    <td> </td>
</tr>
<tr>
    <td><var><b>as4-capability</b></var> (<em>yes | no</em>)</td>
    <td> set to yes if peer supports 4-byte AS numbers</td>
</tr>
<tr>
    <td><var><b>used-keepalive-time</b></var> (<em>time</em>)</td>
    <td> negotiated keepalive message interval (used-hold-time / 3)</td>
</tr>
<tr>
    <td><var><b>state</b></var> (<em>idle | connect | active | opensent | openconfirm | established)</em></td>
    <td> BGP protocol state</td>
</tr>
</table>


<br />
{{Mr-arg-table-h
|prop=Property
|desc=Description
}}
 
{{Mr-arg-ro-table
|arg=as4-capability
|type=yes {{!}} no
|desc=Shows whether peer has 4-byte AS support
}}
 
{{Mr-arg-ro-table
|arg=established
|type=yes {{!}} no
|desc=Set to yes if BGP peering is established.
}}
 
{{Mr-arg-ro-table
|arg=local-address
|type=IP {{!}} IPv6
|desc=Address that is used as source address of BGP packets.
}}
 
{{Mr-arg-ro-table
|arg=prefix-count
|type=integer
|desc=Number of routing prefixes received from this peer currently in routing table.
}}
 
{{Mr-arg-ro-table
|arg=refresh-capability
|type=yes {{!}} no
|desc=Whether '''route refresh''' is supported by the peer
}}
 
{{Mr-arg-ro-table
|arg=remote-hold-time
|type=time
|desc=Hold time set on remote peer.
}}
 
{{Mr-arg-ro-table
|arg=remote-id
|type=IP
|desc=Remote peer's instance ID.
}}
 
{{Mr-arg-ro-table
|arg=state
|type=idle {{!}} connect {{!}} active {{!}} opensent {{!}} openconfirm {{!}} established
|desc= BGP protocol state.
}}
 
{{Mr-arg-ro-table
|arg=updates-received
|type=integer
|desc=Total number of reachable routing prefixes received
}}
 
{{Mr-arg-ro-table
|arg=updates-sent
|type=integer
|desc= Total number of reachable routing prefixes sent
}}
 
{{Mr-arg-ro-table
|arg=uptime
|type=time
|desc=Shows how long BGP has established state.
}}
 
{{Mr-arg-ro-table
|arg=used-hold-time
|type=time
|desc=Negotiated and used hold time on both peers
}}
 
{{Mr-arg-ro-table
|arg=used-keepalive-time
|type=time
|desc=Negotiated and used keepalive time on both peers (used-hold-time / 3)
}}
 
{{Mr-arg-ro-table
|arg=withdraws-received
|type=integer
|desc=Total number of withdrawn routing prefixes received.
}}
 
{{Mr-arg-ro-table-end
|arg=withdraws-sent
|type=integer
|desc=Total number of withdrawn routing prefixes advertised
}}


==Advertisements==
==Advertisements==
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp advertisements</code></p>
<p id="shbox"><b>Sub-menu:</b> <code>/routing bgp advertisements</code></p>
<br />
 
<p>
 
Read only information about outgoing routing information currently advertised.
Read only information about outgoing routing information currently advertised.
</p>
<p>
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!
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!
</p>
 
{{ Note | At the moment AS-PATH attribute for advertised routes is shown without prepends. }}
{{ Note | At the moment AS-PATH attribute for advertised routes is shown without prepends. }}


<table class="styled_table">
<tr>
  <th width="40%">Property</th>
  <th >Description</th>
</tr>
<tr>
    <td><var><b>prefix</b></var> (<em>IP prefix</em>)</td>
    <td> the NLRI prefix sent out</td>
</tr>
<tr>
    <td><var><b>nexthop</b></var> (<em>IP address</em>)</td>
    <td> the <b>NEXT_HOP</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>as-path</b></var> (<em>string</em>)</td>
    <td> the <b>AS_PATH</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>origin</b></var> (<em>igp | egp | incomplete</em>)</td>
    <td> the <b>ORIGIN</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>local-pref</b></var> (<em>integer</em>)</td>
    <td> the <b>LOCAL_PREF</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>med</b></var> (<em>integer</em>)</td>
    <td> the <b>MULTI_EXIT_DISC</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>atomic-aggregate</b></var> (<em>yes | no</em>)</td>
    <td> the <b>ATOMIC_AGGREGATE</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>aggregator</b></var> (<em>IP address</em>)</td>
    <td> the <b>AGGREGATOR</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>originator-id</b></var> (<em>IP address</em>)</td>
    <td> the <b>ORIGINATOR_ID</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>cluster-list</b></var> (<em>string</em>)</td>
    <td> the <b>CLUSTER_LIST</b> attribute value sent out</td>
</tr>
<tr>
    <td><var><b>peer</b></var> (<em>string</em>)</td>
    <td> the peer this information is advertised to</td>
</tr>


</table>
 
<br />
{{Mr-arg-table-h
|prop=Property
|desc=Description
}}
 
{{Mr-arg-ro-table
|arg=aggregator
|type=IP
|desc=Advertised <b>AGGREGATOR</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=as-path
|type=string
|desc=Advertised <b>AS_PATH</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=atomic-aggregate
|type=yes {{!}} no
|desc=Advertised <b>ATOMIC_AGGREGATE</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=bgp-ext-communities
|type=
|desc=
}}
 
{{Mr-arg-ro-table
|arg=cluster-list
|type=string
|desc=Advertised <b>CLUSTER_LIST</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=communities
|type=
|desc=
}}
 
{{Mr-arg-ro-table
|arg=local-pref
|type=integer
|desc=Advertised <b>LOCAL_PREF</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=med
|type=integer
|desc=Advertised <b>MULTI_EXIT_DISC</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=nexthop
|type=IP {{!}} IPv6
|desc= Advertised '''NEXT_HOP''' attribute value
}}
 
{{Mr-arg-ro-table
|arg=origin
|type=igp {{!}} egp {{!}} incomplete
|desc=Advertised  <b>ORIGIN</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=originator-id
|type=IP
|desc=Advertised  <b>ORIGINATOR_ID</b> attribute value
}}
 
{{Mr-arg-ro-table
|arg=peer
|type=string
|desc=Name of the peer this information is advertised to
}}
 
{{Mr-arg-ro-table-end
|arg=prefix
|type=IPv4 {{!}} IPv6 prefix
|desc=Advertised NLRI prefix
}}


==Network==
==Network==
Line 391: Line 685:
</tr>
</tr>
<tr>
<tr>
     <td><var><b>synchronize</b></var> (<em>yes | no</em>; Default: <b>no</b>)</td>
     <td><var><b>synchronize</b></var> (<em>yes | no</em>; Default: <b>yes</b>)</td>
     <td> install a route for this network only when there is an active IGP route matching this network</td>
     <td> install a route for this network only when there is an active IGP route matching this network</td>
</tr>
</tr>
Line 470: Line 764:
</ul>
</ul>
</p>
</p>
===Notes===
 
<p>
{{Note | Each aggregate will only affect routes coming from peers that belong to it's instance. ''suppress-filter'' is useful only if ''<nowiki>summary-only=no</nowiki>'';  
Each aggregate will only affect routes coming from peers that belong to it's instance. <br />
''advertise-filter'' is useful only if ''<nowiki>inherit-attributes=yes</nowiki>''. <br />
'suppress-filter' is useful only if 'summary-only=no'; 'advertise-filter' is useful only if 'inherit-attributes=yes' <br />
 
<br />
If result ''attribute-filter'' match '''reject''' or '''discard''', the aggregate route is not created.
If result 'attribute-filter' match 'reject' or 'discard', the aggregate route is not created.
}}
</p>
<br />


==Vpnv4 route==
==Vpnv4 route==

Latest revision as of 12:04, 6 January 2020

Applies to RouterOS: v3, v4 +

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 4271

Standards and Technologies:

  • RFC 4271 Border Gateway Protocol 4
  • RFC 4456 BGP Route Reflection
  • RFC 5065 Autonomous System Confederations for BGP
  • RFC 1997 BGP Communities Attribute
  • RFC 2385 TCP MD5 Authentication for BGPv4
  • RFC 5492 Capabilities Advertisement with BGP-4
  • RFC 2918 Route Refresh Capability
  • RFC 4760 Multiprotocol Extensions for BGP-4
  • RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
  • RFC 4893 BGP Support for Four-octet AS Number Space

Instance

Sub-menu: /routing bgp instance


Property Description
as (integer [0..4294967295]; Default: ) 32-bit BGP autonomous system number. Value can be entered in AS-Plain and AS-Dot formats.
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; Default: ) 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
comment (string; Default: ) Short description of the instance.
confederation (integer [0..4294967295]; Default: ) In case of BGP confederations: autonomous system number that identifies the [local] confederation as a whole.
confederation-peers (list/range of integer[0..4294967295]; Default: ) In case of BGP confederations: list of AS numbers internal to the [local] confederation. Range of as numbers are also supported. For example 10,20,30-50.
disabled (yes | no; Default: no) Whether instance is disabled.
ignore-as-path-len (yes | no; Default: no) Whether to ignore AS_PATH attribute in BGP route selection algorithm
name (string; Default: ) BGP instance name
out-filter (string; Default: ) Output routing filter chain used by all BGP peers belonging to this instance. Due to known problems in ROS v6, it is not recommended to use instance out-filter, instead use out-filter on peer.
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; Default: 0.0.0.0) BGP Router ID (for this instance). If set to 0.0.0.0, BGP will use one of router's IP addresses.
routing-table (string; Default: ) Name of routing table this BGP instance operates on.

Non-default routing-table and list of VRFs cannot be configured for the same instance at the same time.

Available starting from v4.3


VRF

Sub-menu: /routing bgp instance vrf

Instance related VRF configuration


Property Description
comment (string; Default: ) Short description of the VRF.
disabled (yes | no; Default: no)
in-filter (string; Default: ) Name of the routing filter chain that is applied to the incoming routing information
instance (string; Default: ) Name of the instance this configuration applies to.
out-filter (string; Default: ) Name of the routing filter chain that is applied to the outgoing routing information
redistribute-connected (yes | no; Default: no) Redistribute connected routes that belongs to VRF.
redistribute-ospf (yes | no; Default: no) Redistribute OSPF routes that belongs to VRF.
redistribute-other-bgp (yes | no; Default: no) Redistribute BGP routes that belongs to VRF received from other BGP instance.
redistribute-rip (yes | no; Default: no) Redistribute RIP routes that belongs to VRF.
redistribute-static (yes | no; Default: no) Redistribute static routes that belongs to VRF.
routing-mark (string; Default: ) Name of the routing-mark used by VRF configured in /ip route vrf'menu.

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.
allow-as-in (integer [0..10]; Default: ) How many times to allow own AS number in AS-PATH, before discarding a prefix.
as-override (yes | no; Default: no) If set, then all instances of remote peer's AS number in BGP AS PATH attribute are replaced with local AS number before sending route update to that peer. Happens before routing filters and prepending.
cisco-vpls-nlri-len-fmt (auto-bits | auto-bytes | bits | bytes; Default: ) VPLS NLRI length format type. Used for compatibility with Cisco VPLS. [[Read more>>]].
comment (string; Default: ) Description of the peer.
default-originate (always | if-installed | never; Default: never) Specifies how to distribute default route
disabled (yes | no; Default: no) Whether peer is disabled.
hold-time (time[3s..1h] | infinity; Default: 3m) 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; Default: ) Name of the routing filter chain that is applied to the incoming routing information
instance (string; Default: default) Name of the instance this peer belongs to.
keepalive-time (time [1s..30m]; Default: )
max-prefix-limit (integer [0..4294967295]; Default: ) Maximum number of prefixes to accept from a specific peer. When this limit is exceeded, TCP connection between peers is closed.
max-prefix-restart-time (time [1m..1w3d] | infinity; Default: ) 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);
  • whether to accept incoming routes with NEXT_HOP attribute that is not in the same network as the address used to establish the connection;
  • the target-scope of the routes installed from this peer; routes from multi-hop or IBGP peers resolve their nexthops through IGP routes by default.
name (string; Default: ) Descriptive 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; Default: ) Name of the routing filter chain that is applied to the outgoing routing information. If instance has also configured out-filter, then instance filters are applied firs and only then peer's filters.
passive (yes | no; Default: no) If set to yes, then connection attempts to remote peer are not made.

The remote peer must initialize connection in this case.

Available starting from v4.3
remote-address (IP/IPv6 address; Default: ) Address of the remote peer. If remote address is IPv6 link-local address then interface must be specified after '%', for example, fe80::21a:4dff:fe5d:8e56%ether1
remote-as (integer [0..4294967295]; Default: ) 32-bit AS number of the remote peer. AS number can be specified in AS-Plain and AS-Dot formats.
remote-port (integer [0..65535]; Default: ) Remote peers port to establish tcp session. If not set, then default 179 port will be used.
remove-private-as (yes | no; Default: no) If set, then BGP AS-PATH attribute is removed before sending out route update if attribute contains only private AS numbers.

removal process happens before routing filters are applied and before local AS

number is prepended to the AS path. Option is available starting from v4.3. Currently works only with 16-bit ASNs.
route-reflect (yes | no; Default: no) Specifies whether this peer is route reflection client.
tcp-md5-key (string; Default: ) Key used to authenticate the connection with TCP MD5 signature as described in RFC 2385. If not specified, authentication is not used.
ttl (integer [1..255] | default; Default: default) Time To Live, 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 (IPv4 | IPv6 | Interface | none; Default: ) 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. Do not specify name of interface that is added as a bridge port here!
use-bfd (yes | no; Default: no) Whether to use BFD protocol for fast state detection.


Read only status properties:

Property Description
as4-capability (yes | no) Shows whether peer has 4-byte AS support
established (yes | no) Set to yes if BGP peering is established.
local-address (IP | IPv6) Address that is used as source address of BGP packets.
prefix-count (integer) Number of routing prefixes received from this peer currently in routing table.
refresh-capability (yes | no) Whether route refresh is supported by the peer
remote-hold-time (time) Hold time set on remote peer.
remote-id (IP) Remote peer's instance ID.
state (idle | connect | active | opensent | openconfirm | established) BGP protocol state.
updates-received (integer) Total number of reachable routing prefixes received
updates-sent (integer) Total number of reachable routing prefixes sent
uptime (time) Shows how long BGP has established state.
used-hold-time (time) Negotiated and used hold time on both peers
used-keepalive-time (time) Negotiated and used keepalive time on both peers (used-hold-time / 3)
withdraws-received (integer) Total number of withdrawn routing prefixes received.
withdraws-sent (integer) Total number of withdrawn routing prefixes advertised

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!

Note: At the moment AS-PATH attribute for advertised routes is shown without prepends.



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

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: yes) install a route for this network only when there is an active IGP route matching this network


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
include-igp (yes | no; Default: ) By default, BGP aggregate takes into account only BGP routes. Use this option to take IGP and connected routes into consideration.
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.

Note: 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;)


[ Top | Back to Content ]