]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/bgp.rst
bgpd: new vty command to dump all bgp per vrf statistics
[mirror_frr.git] / doc / user / bgp.rst
CommitLineData
0efdf0fe 1.. _bgp:
42fc5d26
QY
2
3***
4BGP
5***
6
8fcedbd2 7:abbr:`BGP` stands for Border Gateway Protocol. The latest BGP version is 4.
d1e7591e 8BGP-4 is one of the Exterior Gateway Protocols and the de facto standard
8fcedbd2
QY
9interdomain routing protocol. BGP-4 is described in :rfc:`1771` and updated by
10:rfc:`4271`. :rfc:`2858` adds multiprotocol support to BGP-4.
42fc5d26 11
0efdf0fe 12.. _starting-bgp:
42fc5d26
QY
13
14Starting BGP
15============
16
8fcedbd2
QY
17The default configuration file of *bgpd* is :file:`bgpd.conf`. *bgpd* searches
18the current directory first, followed by |INSTALL_PREFIX_ETC|/bgpd.conf. All of
19*bgpd*'s commands must be configured in :file:`bgpd.conf` when the integrated
20config is not being used.
42fc5d26 21
c1a54c05 22*bgpd* specific invocation options are described below. Common options may also
0efdf0fe 23be specified (:ref:`common-invocation-options`).
42fc5d26 24
c1a54c05 25.. program:: bgpd
42fc5d26 26
c9365894 27.. option:: -p, --bgp_port <port>
42fc5d26 28
db759bb0 29 Set the bgp protocol's port number. When port number is 0, that means do not
30 listen bgp port.
42fc5d26 31
c9365894 32.. option:: -l, --listenon
42fc5d26 33
c0868e8b
QY
34 Specify a specific IP address for bgpd to listen on, rather than its default
35 of ``0.0.0.0`` / ``::``. This can be useful to constrain bgpd to an internal
36 address, or to run multiple bgpd processes on one host.
42fc5d26 37
11a9a236
DS
38.. option:: -n, --no_kernel
39
40 Do not install learned routes into the linux kernel. This option is useful
41 for a route-reflector environment or if you are running multiple bgp
42 processes in the same namespace. This option is different than the --no_zebra
43 option in that a ZAPI connection is made.
44
45.. option:: -S, --skip_runas
46
47 Skip the normal process of checking capabilities and changing user and group
48 information.
49
50.. option:: -e, --ecmp
51
52 Run BGP with a limited ecmp capability, that is different than what BGP
53 was compiled with. The value specified must be greater than 0 and less
54 than or equal to the MULTIPATH_NUM specified on compilation.
55
56.. option:: -Z, --no_zebra
57
58 Do not communicate with zebra at all. This is different than the --no_kernel
59 option in that we do not even open a ZAPI connection to the zebra process.
60
61.. option:: -s, --socket_size
62
63 When opening tcp connections to our peers, set the socket send buffer
64 size that the kernel will use for the peers socket. This option
65 is only really useful at a very large scale. Experimentation should
66 be done to see if this is helping or not at the scale you are running
67 at.
68
69LABEL MANAGER
70-------------
71
72.. option:: -I, --int_num
73
74 Set zclient id. This is required when using Zebra label manager in proxy mode.
75
8fcedbd2 76.. _bgp-basic-concepts:
42fc5d26 77
8fcedbd2
QY
78Basic Concepts
79==============
42fc5d26 80
8fcedbd2 81.. _bgp-autonomous-systems:
c3c5a71f 82
8fcedbd2
QY
83Autonomous Systems
84------------------
42fc5d26 85
c0868e8b
QY
86From :rfc:`1930`:
87
88 An AS is a connected group of one or more IP prefixes run by one or more
89 network operators which has a SINGLE and CLEARLY DEFINED routing policy.
90
91Each AS has an identifying number associated with it called an :abbr:`ASN
92(Autonomous System Number)`. This is a two octet value ranging in value from 1
93to 65535. The AS numbers 64512 through 65535 are defined as private AS numbers.
94Private AS numbers must not be advertised on the global Internet.
95
96The :abbr:`ASN (Autonomous System Number)` is one of the essential elements of
8fcedbd2 97BGP. BGP is a distance vector routing protocol, and the AS-Path framework
c0868e8b 98provides distance vector metric and loop detection to BGP.
42fc5d26 99
c0868e8b 100.. seealso:: :rfc:`1930`
42fc5d26 101
8fcedbd2 102.. _bgp-address-families:
42fc5d26 103
8fcedbd2
QY
104Address Families
105----------------
42fc5d26 106
c0868e8b
QY
107Multiprotocol extensions enable BGP to carry routing information for multiple
108network layer protocols. BGP supports an Address Family Identifier (AFI) for
109IPv4 and IPv6. Support is also provided for multiple sets of per-AFI
110information via the BGP Subsequent Address Family Identifier (SAFI). FRR
111supports SAFIs for unicast information, labeled information (:rfc:`3107` and
112:rfc:`8277`), and Layer 3 VPN information (:rfc:`4364` and :rfc:`4659`).
c3c5a71f 113
8fcedbd2 114.. _bgp-route-selection:
42fc5d26 115
8fcedbd2
QY
116Route Selection
117---------------
42fc5d26 118
8fcedbd2
QY
119The route selection process used by FRR's BGP implementation uses the following
120decision criterion, starting at the top of the list and going towards the
121bottom until one of the factors can be used.
42fc5d26 122
8fcedbd2 1231. **Weight check**
42fc5d26 124
c1a54c05 125 Prefer higher local weight routes to lower routes.
42fc5d26 126
8fcedbd2
QY
1272. **Local preference check**
128
c1a54c05 129 Prefer higher local preference routes to lower.
42fc5d26 130
8fcedbd2
QY
1313. **Local route check**
132
c1a54c05 133 Prefer local routes (statics, aggregates, redistributed) to received routes.
42fc5d26 134
8fcedbd2
QY
1354. **AS path length check**
136
c1a54c05 137 Prefer shortest hop-count AS_PATHs.
42fc5d26 138
8fcedbd2
QY
1395. **Origin check**
140
c1a54c05
QY
141 Prefer the lowest origin type route. That is, prefer IGP origin routes to
142 EGP, to Incomplete routes.
42fc5d26 143
8fcedbd2
QY
1446. **MED check**
145
c1a54c05 146 Where routes with a MED were received from the same AS, prefer the route
0efdf0fe 147 with the lowest MED. :ref:`bgp-med`.
42fc5d26 148
8fcedbd2
QY
1497. **External check**
150
c1a54c05
QY
151 Prefer the route received from an external, eBGP peer over routes received
152 from other types of peers.
42fc5d26 153
8fcedbd2
QY
1548. **IGP cost check**
155
c1a54c05 156 Prefer the route with the lower IGP cost.
42fc5d26 157
8fcedbd2
QY
1589. **Multi-path check**
159
c1a54c05
QY
160 If multi-pathing is enabled, then check whether the routes not yet
161 distinguished in preference may be considered equal. If
9e146a81 162 :clicmd:`bgp bestpath as-path multipath-relax` is set, all such routes are
c1a54c05
QY
163 considered equal, otherwise routes received via iBGP with identical AS_PATHs
164 or routes received from eBGP neighbours in the same AS are considered equal.
42fc5d26 165
8fcedbd2
QY
16610. **Already-selected external check**
167
07738543
QY
168 Where both routes were received from eBGP peers, then prefer the route
169 which is already selected. Note that this check is not applied if
170 :clicmd:`bgp bestpath compare-routerid` is configured. This check can
171 prevent some cases of oscillation.
172
8fcedbd2
QY
17311. **Router-ID check**
174
07738543
QY
175 Prefer the route with the lowest `router-ID`. If the route has an
176 `ORIGINATOR_ID` attribute, through iBGP reflection, then that router ID is
177 used, otherwise the `router-ID` of the peer the route was received from is
178 used.
179
8fcedbd2
QY
18012. **Cluster-List length check**
181
07738543
QY
182 The route with the shortest cluster-list length is used. The cluster-list
183 reflects the iBGP reflection path the route has taken.
184
8fcedbd2
QY
18513. **Peer address**
186
07738543
QY
187 Prefer the route received from the peer with the higher transport layer
188 address, as a last-resort tie-breaker.
42fc5d26 189
8fcedbd2
QY
190.. _bgp-capability-negotiation:
191
192Capability Negotiation
193----------------------
194
195When adding IPv6 routing information exchange feature to BGP. There were some
196proposals. :abbr:`IETF (Internet Engineering Task Force)`
197:abbr:`IDR (Inter Domain Routing)` adopted a proposal called Multiprotocol
198Extension for BGP. The specification is described in :rfc:`2283`. The protocol
199does not define new protocols. It defines new attributes to existing BGP. When
200it is used exchanging IPv6 routing information it is called BGP-4+. When it is
201used for exchanging multicast routing information it is called MBGP.
202
203*bgpd* supports Multiprotocol Extension for BGP. So if a remote peer supports
204the protocol, *bgpd* can exchange IPv6 and/or multicast routing information.
205
206Traditional BGP did not have the feature to detect a remote peer's
207capabilities, e.g. whether it can handle prefix types other than IPv4 unicast
208routes. This was a big problem using Multiprotocol Extension for BGP in an
209operational network. :rfc:`2842` adopted a feature called Capability
210Negotiation. *bgpd* use this Capability Negotiation to detect the remote peer's
211capabilities. If a peer is only configured as an IPv4 unicast neighbor, *bgpd*
212does not send these Capability Negotiation packets (at least not unless other
213optional BGP features require capability negotiation).
214
215By default, FRR will bring up peering with minimal common capability for the
216both sides. For example, if the local router has unicast and multicast
217capabilities and the remote router only has unicast capability the local router
218will establish the connection with unicast only capability. When there are no
219common capabilities, FRR sends Unsupported Capability error and then resets the
220connection.
221
8fcedbd2
QY
222.. _bgp-router-configuration:
223
224BGP Router Configuration
225========================
226
227ASN and Router ID
228-----------------
229
230First of all you must configure BGP router with the :clicmd:`router bgp ASN`
231command. The AS number is an identifier for the autonomous system. The BGP
232protocol uses the AS number for detecting whether the BGP connection is
233internal or external.
234
235.. index:: router bgp ASN
236.. clicmd:: router bgp ASN
237
238 Enable a BGP protocol process with the specified ASN. After
239 this statement you can input any `BGP Commands`.
240
241.. index:: no router bgp ASN
242.. clicmd:: no router bgp ASN
243
244 Destroy a BGP protocol process with the specified ASN.
245
246.. index:: bgp router-id A.B.C.D
247.. clicmd:: bgp router-id A.B.C.D
248
249 This command specifies the router-ID. If *bgpd* connects to *zebra* it gets
250 interface and address information. In that case default router ID value is
251 selected as the largest IP Address of the interfaces. When `router zebra` is
252 not enabled *bgpd* can't get interface information so `router-id` is set to
253 0.0.0.0. So please set router-id by hand.
254
c8a5e5e1
QY
255
256.. _bgp-multiple-autonomous-systems:
257
258Multiple Autonomous Systems
259---------------------------
260
261FRR's BGP implementation is capable of running multiple autonomous systems at
262once. Each configured AS corresponds to a :ref:`zebra-vrf`. In the past, to get
263the same functionality the network administrator had to run a new *bgpd*
264process; using VRFs allows multiple autonomous systems to be handled in a
265single process.
266
267When using multiple autonomous systems, all router config blocks after the
268first one must specify a VRF to be the target of BGP's route selection. This
269VRF must be unique within respect to all other VRFs being used for the same
270purpose, i.e. two different autonomous systems cannot use the same VRF.
271However, the same AS can be used with different VRFs.
272
273.. note::
274
275 The separated nature of VRFs makes it possible to peer a single *bgpd*
edde3ce9
QY
276 process to itself, on one machine. Note that this can be done fully within
277 BGP without a corresponding VRF in the kernel or Zebra, which enables some
278 practical use cases such as :ref:`route reflectors <bgp-route-reflector>`
279 and route servers.
c8a5e5e1
QY
280
281Configuration of additional autonomous systems, or of a router that targets a
282specific VRF, is accomplished with the following command:
283
284.. index:: router bgp ASN vrf VRFNAME
285.. clicmd:: router bgp ASN vrf VRFNAME
286
287 ``VRFNAME`` is matched against VRFs configured in the kernel. When ``vrf
288 VRFNAME`` is not specified, the BGP protocol process belongs to the default
289 VRF.
290
291An example configuration with multiple autonomous systems might look like this:
292
293.. code-block:: frr
294
295 router bgp 1
296 neighbor 10.0.0.1 remote-as 20
297 neighbor 10.0.0.2 remote-as 30
298 !
299 router bgp 2 vrf blue
300 neighbor 10.0.0.3 remote-as 40
301 neighbor 10.0.0.4 remote-as 50
302 !
303 router bgp 3 vrf red
304 neighbor 10.0.0.5 remote-as 60
305 neighbor 10.0.0.6 remote-as 70
306 ...
307
c8a5e5e1
QY
308.. seealso:: :ref:`bgp-vrf-route-leaking`
309.. seealso:: :ref:`zebra-vrf`
310
311
312.. _bgp-views:
313
314Views
315-----
316
317In addition to supporting multiple autonomous systems, FRR's BGP implementation
318also supports *views*.
319
320BGP views are almost the same as normal BGP processes, except that routes
195c7461
QY
321selected by BGP are not installed into the kernel routing table. Each BGP view
322provides an independent set of routing information which is only distributed
323via BGP. Multiple views can be supported, and BGP view information is always
324independent from other routing protocols and Zebra/kernel routes. BGP views use
325the core instance (i.e., default VRF) for communication with peers.
edde3ce9 326
c8a5e5e1
QY
327.. index:: router bgp AS-NUMBER view NAME
328.. clicmd:: router bgp AS-NUMBER view NAME
329
330 Make a new BGP view. You can use an arbitrary word for the ``NAME``. Routes
331 selected by the view are not installed into the kernel routing table.
332
333 With this command, you can setup Route Server like below.
334
335 .. code-block:: frr
336
337 !
338 router bgp 1 view 1
339 neighbor 10.0.0.1 remote-as 2
340 neighbor 10.0.0.2 remote-as 3
341 !
342 router bgp 2 view 2
343 neighbor 10.0.0.3 remote-as 4
344 neighbor 10.0.0.4 remote-as 5
345
346.. index:: show [ip] bgp view NAME
347.. clicmd:: show [ip] bgp view NAME
348
349 Display the routing table of BGP view ``NAME``.
350
351
8fcedbd2
QY
352Route Selection
353---------------
c3c5a71f 354
c1a54c05 355.. index:: bgp bestpath as-path confed
29adcd50 356.. clicmd:: bgp bestpath as-path confed
42fc5d26 357
c1a54c05
QY
358 This command specifies that the length of confederation path sets and
359 sequences should should be taken into account during the BGP best path
360 decision process.
42fc5d26 361
c3c5a71f 362.. index:: bgp bestpath as-path multipath-relax
29adcd50 363.. clicmd:: bgp bestpath as-path multipath-relax
42fc5d26 364
c1a54c05
QY
365 This command specifies that BGP decision process should consider paths
366 of equal AS_PATH length candidates for multipath computation. Without
367 the knob, the entire AS_PATH must match for multipath computation.
c3c5a71f 368
29adcd50 369.. clicmd:: bgp bestpath compare-routerid
42fc5d26 370
c1a54c05
QY
371 Ensure that when comparing routes where both are equal on most metrics,
372 including local-pref, AS_PATH length, IGP cost, MED, that the tie is broken
373 based on router-ID.
42fc5d26 374
c1a54c05
QY
375 If this option is enabled, then the already-selected check, where
376 already selected eBGP routes are preferred, is skipped.
42fc5d26 377
c1a54c05
QY
378 If a route has an `ORIGINATOR_ID` attribute because it has been reflected,
379 that `ORIGINATOR_ID` will be used. Otherwise, the router-ID of the peer the
380 route was received from will be used.
42fc5d26 381
c1a54c05
QY
382 The advantage of this is that the route-selection (at this point) will be
383 more deterministic. The disadvantage is that a few or even one lowest-ID
d1e7591e 384 router may attract all traffic to otherwise-equal paths because of this
c1a54c05
QY
385 check. It may increase the possibility of MED or IGP oscillation, unless
386 other measures were taken to avoid these. The exact behaviour will be
387 sensitive to the iBGP and reflection topology.
42fc5d26 388
8fcedbd2
QY
389.. _bgp-distance:
390
391Administrative Distance Metrics
392-------------------------------
393
394.. index:: distance bgp (1-255) (1-255) (1-255)
395.. clicmd:: distance bgp (1-255) (1-255) (1-255)
396
397 This command change distance value of BGP. The arguments are the distance
398 values for for external routes, internal routes and local routes
399 respectively.
400
401.. index:: distance (1-255) A.B.C.D/M
402.. clicmd:: distance (1-255) A.B.C.D/M
403
404.. index:: distance (1-255) A.B.C.D/M WORD
405.. clicmd:: distance (1-255) A.B.C.D/M WORD
406
407 Sets the administrative distance for a particular route.
42fc5d26 408
713c64dd
DA
409.. _bgp-requires-policy:
410
411Require policy on EBGP
412-------------------------------
413
414.. index:: [no] bgp ebgp-requires-policy
415.. clicmd:: [no] bgp ebgp-requires-policy
416
417 This command requires incoming and outgoing filters to be applied for eBGP sessions. Without the incoming filter, no routes will be accepted. Without the outgoing filter, no routes will be announced.
418
f0c81afe 419Reject routes with AS_SET or AS_CONFED_SET types
5031d886 420------------------------------------------------
f0c81afe
DA
421
422.. index:: [no] bgp reject-as-sets
423.. clicmd:: [no] bgp reject-as-sets
424
425 This command enables rejection of incoming and outgoing routes having AS_SET or AS_CONFED_SET type.
426
835e9c5d
DA
427Disable checking if nexthop is connected on EBGP sessions
428---------------------------------------------------------
429
430.. index:: [no] bgp disable-ebgp-connected-route-check
431.. clicmd:: [no] bgp disable-ebgp-connected-route-check
432
433 This command is used to disable the connection verification process for EBGP peering sessions
434 that are reachable by a single hop but are configured on a loopback interface or otherwise
435 configured with a non-directly connected IP address.
436
0efdf0fe 437.. _bgp-route-flap-dampening:
42fc5d26 438
8fcedbd2
QY
439Route Flap Dampening
440--------------------
42fc5d26 441
c1a54c05
QY
442.. clicmd:: bgp dampening (1-45) (1-20000) (1-20000) (1-255)
443
c1a54c05 444 This command enables BGP route-flap dampening and specifies dampening parameters.
42fc5d26 445
c1a54c05
QY
446 half-life
447 Half-life time for the penalty
42fc5d26 448
c1a54c05
QY
449 reuse-threshold
450 Value to start reusing a route
42fc5d26 451
c1a54c05
QY
452 suppress-threshold
453 Value to start suppressing a route
42fc5d26 454
c1a54c05
QY
455 max-suppress
456 Maximum duration to suppress a stable route
42fc5d26 457
c1a54c05
QY
458 The route-flap damping algorithm is compatible with :rfc:`2439`. The use of
459 this command is not recommended nowadays.
42fc5d26 460
319a7d06
DA
461 At the moment, route-flap dampening is not working per VRF and is working only
462 for IPv4 unicast and multicast.
463
c1a54c05 464.. seealso::
8fcedbd2 465 https://www.ripe.net/publications/docs/ripe-378
42fc5d26 466
0efdf0fe 467.. _bgp-med:
42fc5d26 468
8fcedbd2
QY
469Multi-Exit Discriminator
470------------------------
42fc5d26 471
8fcedbd2 472The BGP :abbr:`MED (Multi-Exit Discriminator)` attribute has properties which
c1a54c05
QY
473can cause subtle convergence problems in BGP. These properties and problems
474have proven to be hard to understand, at least historically, and may still not
475be widely understood. The following attempts to collect together and present
476what is known about MED, to help operators and FRR users in designing and
477configuring their networks.
42fc5d26 478
07a17e6d
QY
479The BGP :abbr:`MED` attribute is intended to allow one AS to indicate its
480preferences for its ingress points to another AS. The MED attribute will not be
481propagated on to another AS by the receiving AS - it is 'non-transitive' in the
482BGP sense.
42fc5d26 483
c1a54c05
QY
484E.g., if AS X and AS Y have 2 different BGP peering points, then AS X might set
485a MED of 100 on routes advertised at one and a MED of 200 at the other. When AS
486Y selects between otherwise equal routes to or via AS X, AS Y should prefer to
487take the path via the lower MED peering of 100 with AS X. Setting the MED
488allows an AS to influence the routing taken to it within another, neighbouring
489AS.
42fc5d26
QY
490
491In this use of MED it is not really meaningful to compare the MED value on
c1a54c05
QY
492routes where the next AS on the paths differs. E.g., if AS Y also had a route
493for some destination via AS Z in addition to the routes from AS X, and AS Z had
494also set a MED, it wouldn't make sense for AS Y to compare AS Z's MED values to
495those of AS X. The MED values have been set by different administrators, with
496different frames of reference.
42fc5d26
QY
497
498The default behaviour of BGP therefore is to not compare MED values across
dc1046f7 499routes received from different neighbouring ASes. In FRR this is done by
c1a54c05
QY
500comparing the neighbouring, left-most AS in the received AS_PATHs of the routes
501and only comparing MED if those are the same.
502
503Unfortunately, this behaviour of MED, of sometimes being compared across routes
504and sometimes not, depending on the properties of those other routes, means MED
505can cause the order of preference over all the routes to be undefined. That is,
506given routes A, B, and C, if A is preferred to B, and B is preferred to C, then
507a well-defined order should mean the preference is transitive (in the sense of
013f9762 508orders [#med-transitivity-rant]_) and that A would be preferred to C.
42fc5d26 509
c3c5a71f
QY
510However, when MED is involved this need not be the case. With MED it is
511possible that C is actually preferred over A. So A is preferred to B, B is
512preferred to C, but C is preferred to A. This can be true even where BGP
c1a54c05
QY
513defines a deterministic 'most preferred' route out of the full set of A,B,C.
514With MED, for any given set of routes there may be a deterministically
515preferred route, but there need not be any way to arrange them into any order
516of preference. With unmodified MED, the order of preference of routes literally
517becomes undefined.
42fc5d26 518
c3c5a71f 519That MED can induce non-transitive preferences over routes can cause issues.
c1a54c05
QY
520Firstly, it may be perceived to cause routing table churn locally at speakers;
521secondly, and more seriously, it may cause routing instability in iBGP
522topologies, where sets of speakers continually oscillate between different
523paths.
42fc5d26 524
c3c5a71f 525The first issue arises from how speakers often implement routing decisions.
c1a54c05
QY
526Though BGP defines a selection process that will deterministically select the
527same route as best at any given speaker, even with MED, that process requires
528evaluating all routes together. For performance and ease of implementation
529reasons, many implementations evaluate route preferences in a pair-wise fashion
530instead. Given there is no well-defined order when MED is involved, the best
531route that will be chosen becomes subject to implementation details, such as
532the order the routes are stored in. That may be (locally) non-deterministic,
533e.g.: it may be the order the routes were received in.
42fc5d26
QY
534
535This indeterminism may be considered undesirable, though it need not cause
c1a54c05
QY
536problems. It may mean additional routing churn is perceived, as sometimes more
537updates may be produced than at other times in reaction to some event .
42fc5d26
QY
538
539This first issue can be fixed with a more deterministic route selection that
c3c5a71f 540ensures routes are ordered by the neighbouring AS during selection.
9e146a81 541:clicmd:`bgp deterministic-med`. This may reduce the number of updates as routes
c1a54c05
QY
542are received, and may in some cases reduce routing churn. Though, it could
543equally deterministically produce the largest possible set of updates in
544response to the most common sequence of received updates.
42fc5d26
QY
545
546A deterministic order of evaluation tends to imply an additional overhead of
c3c5a71f 547sorting over any set of n routes to a destination. The implementation of
dc1046f7 548deterministic MED in FRR scales significantly worse than most sorting
c1a54c05
QY
549algorithms at present, with the number of paths to a given destination. That
550number is often low enough to not cause any issues, but where there are many
551paths, the deterministic comparison may quickly become increasingly expensive
552in terms of CPU.
553
554Deterministic local evaluation can *not* fix the second, more major, issue of
555MED however. Which is that the non-transitive preference of routes MED can
556cause may lead to routing instability or oscillation across multiple speakers
557in iBGP topologies. This can occur with full-mesh iBGP, but is particularly
558problematic in non-full-mesh iBGP topologies that further reduce the routing
559information known to each speaker. This has primarily been documented with iBGP
749afd7d
RF
560:ref:`route-reflection <bgp-route-reflector>` topologies. However, any
561route-hiding technologies potentially could also exacerbate oscillation with MED.
c1a54c05
QY
562
563This second issue occurs where speakers each have only a subset of routes, and
564there are cycles in the preferences between different combinations of routes -
565as the undefined order of preference of MED allows - and the routes are
566distributed in a way that causes the BGP speakers to 'chase' those cycles. This
567can occur even if all speakers use a deterministic order of evaluation in route
568selection.
569
570E.g., speaker 4 in AS A might receive a route from speaker 2 in AS X, and from
571speaker 3 in AS Y; while speaker 5 in AS A might receive that route from
572speaker 1 in AS Y. AS Y might set a MED of 200 at speaker 1, and 100 at speaker
5733. I.e, using ASN:ID:MED to label the speakers:
42fc5d26
QY
574
575::
576
c1a54c05
QY
577 .
578 /---------------\\
42fc5d26 579 X:2------|--A:4-------A:5--|-Y:1:200
c1a54c05
QY
580 Y:3:100--|-/ |
581 \\---------------/
c3c5a71f 582
42fc5d26 583
42fc5d26 584
c1a54c05
QY
585Assuming all other metrics are equal (AS_PATH, ORIGIN, 0 IGP costs), then based
586on the RFC4271 decision process speaker 4 will choose X:2 over Y:3:100, based
587on the lower ID of 2. Speaker 4 advertises X:2 to speaker 5. Speaker 5 will
588continue to prefer Y:1:200 based on the ID, and advertise this to speaker 4.
589Speaker 4 will now have the full set of routes, and the Y:1:200 it receives
590from 5 will beat X:2, but when speaker 4 compares Y:1:200 to Y:3:100 the MED
591check now becomes active as the ASes match, and now Y:3:100 is preferred.
592Speaker 4 therefore now advertises Y:3:100 to 5, which will also agrees that
593Y:3:100 is preferred to Y:1:200, and so withdraws the latter route from 4.
594Speaker 4 now has only X:2 and Y:3:100, and X:2 beats Y:3:100, and so speaker 4
595implicitly updates its route to speaker 5 to X:2. Speaker 5 sees that Y:1:200
596beats X:2 based on the ID, and advertises Y:1:200 to speaker 4, and the cycle
597continues.
42fc5d26
QY
598
599The root cause is the lack of a clear order of preference caused by how MED
600sometimes is and sometimes is not compared, leading to this cycle in the
601preferences between the routes:
602
603::
604
c1a54c05
QY
605 .
606 /---> X:2 ---beats---> Y:3:100 --\\
607 | |
608 | |
609 \\---beats--- Y:1:200 <---beats---/
c3c5a71f 610
42fc5d26 611
42fc5d26
QY
612
613This particular type of oscillation in full-mesh iBGP topologies can be
614avoided by speakers preferring already selected, external routes rather than
c1a54c05
QY
615choosing to update to new a route based on a post-MED metric (e.g. router-ID),
616at the cost of a non-deterministic selection process. FRR implements this, as
617do many other implementations, so long as it is not overridden by setting
9e146a81 618:clicmd:`bgp bestpath compare-routerid`, and see also
8fcedbd2 619:ref:`bgp-route-selection`.
42fc5d26
QY
620
621However, more complex and insidious cycles of oscillation are possible with
c3c5a71f 622iBGP route-reflection, which are not so easily avoided. These have been
c1a54c05
QY
623documented in various places. See, e.g.:
624
625- [bgp-route-osci-cond]_
626- [stable-flexible-ibgp]_
627- [ibgp-correctness]_
628
629for concrete examples and further references.
630
631There is as of this writing *no* known way to use MED for its original purpose;
632*and* reduce routing information in iBGP topologies; *and* be sure to avoid the
633instability problems of MED due the non-transitive routing preferences it can
634induce; in general on arbitrary networks.
635
636There may be iBGP topology specific ways to reduce the instability risks, even
637while using MED, e.g.: by constraining the reflection topology and by tuning
013f9762 638IGP costs between route-reflector clusters, see :rfc:`3345` for details. In the
c1a54c05
QY
639near future, the Add-Path extension to BGP may also solve MED oscillation while
640still allowing MED to be used as intended, by distributing "best-paths per
641neighbour AS". This would be at the cost of distributing at least as many
642routes to all speakers as a full-mesh iBGP would, if not more, while also
643imposing similar CPU overheads as the "Deterministic MED" feature at each
644Add-Path reflector.
42fc5d26
QY
645
646More generally, the instability problems that MED can introduce on more
647complex, non-full-mesh, iBGP topologies may be avoided either by:
648
013f9762 649- Setting :clicmd:`bgp always-compare-med`, however this allows MED to be compared
42fc5d26
QY
650 across values set by different neighbour ASes, which may not produce
651 coherent desirable results, of itself.
4b44467c 652- Effectively ignoring MED by setting MED to the same value (e.g.: 0) using
013f9762
QY
653 :clicmd:`set metric METRIC` on all received routes, in combination with
654 setting :clicmd:`bgp always-compare-med` on all speakers. This is the simplest
42fc5d26
QY
655 and most performant way to avoid MED oscillation issues, where an AS is happy
656 not to allow neighbours to inject this problematic metric.
657
42fc5d26
QY
658As MED is evaluated after the AS_PATH length check, another possible use for
659MED is for intra-AS steering of routes with equal AS_PATH length, as an
c1a54c05
QY
660extension of the last case above. As MED is evaluated before IGP metric, this
661can allow cold-potato routing to be implemented to send traffic to preferred
662hand-offs with neighbours, rather than the closest hand-off according to the
663IGP metric.
664
665Note that even if action is taken to address the MED non-transitivity issues,
666other oscillations may still be possible. E.g., on IGP cost if iBGP and IGP
667topologies are at cross-purposes with each other - see the Flavel and Roughan
668paper above for an example. Hence the guideline that the iBGP topology should
669follow the IGP topology.
670
c3c5a71f 671.. index:: bgp deterministic-med
29adcd50 672.. clicmd:: bgp deterministic-med
42fc5d26 673
c1a54c05
QY
674 Carry out route-selection in way that produces deterministic answers
675 locally, even in the face of MED and the lack of a well-defined order of
676 preference it can induce on routes. Without this option the preferred route
677 with MED may be determined largely by the order that routes were received
678 in.
42fc5d26 679
c1a54c05
QY
680 Setting this option will have a performance cost that may be noticeable when
681 there are many routes for each destination. Currently in FRR it is
682 implemented in a way that scales poorly as the number of routes per
683 destination increases.
42fc5d26 684
c1a54c05 685 The default is that this option is not set.
42fc5d26
QY
686
687Note that there are other sources of indeterminism in the route selection
688process, specifically, the preference for older and already selected routes
8fcedbd2 689from eBGP peers, :ref:`bgp-route-selection`.
42fc5d26 690
c3c5a71f 691.. index:: bgp always-compare-med
29adcd50 692.. clicmd:: bgp always-compare-med
42fc5d26 693
c1a54c05
QY
694 Always compare the MED on routes, even when they were received from
695 different neighbouring ASes. Setting this option makes the order of
696 preference of routes more defined, and should eliminate MED induced
697 oscillations.
42fc5d26 698
c1a54c05 699 If using this option, it may also be desirable to use
9e146a81 700 :clicmd:`set metric METRIC` to set MED to 0 on routes received from external
c1a54c05 701 neighbours.
42fc5d26 702
9e146a81
QY
703 This option can be used, together with :clicmd:`set metric METRIC` to use
704 MED as an intra-AS metric to steer equal-length AS_PATH routes to, e.g.,
705 desired exit points.
42fc5d26 706
efcb2ebb 707
708.. _bgp-graceful-restart:
709
710Graceful Restart
711----------------
712
713BGP graceful restart functionality as defined in
714`RFC-4724 <https://tools.ietf.org/html/rfc4724/>`_ defines the mechanisms that
715allows BGP speaker to continue to forward data packets along known routes
716while the routing protocol information is being restored.
717
718
719Usually, when BGP on a router restarts, all the BGP peers detect that the
720session went down and then came up. This "down/up" transition results in a
721"routing flap" and causes BGP route re-computation, generation of BGP routing
722updates, and unnecessary churn to the forwarding tables.
723
724The following functionality is provided by graceful restart:
725
7261. The feature allows the restarting router to indicate to the helping peer the
727 routes it can preserve in its forwarding plane during control plane restart
728 by sending graceful restart capability in the OPEN message sent during
729 session establishment.
7302. The feature allows helping router to advertise to all other peers the routes
731 received from the restarting router which are preserved in the forwarding
732 plane of the restarting router during control plane restart.
733
734
735::
736
737
738
739 (R1)-----------------------------------------------------------------(R2)
740
741 1. BGP Graceful Restart Capability exchanged between R1 & R2.
742
743 <--------------------------------------------------------------------->
744
745 2. Kill BGP Process at R1.
746
747 ---------------------------------------------------------------------->
748
749 3. R2 Detects the above BGP Restart & verifies BGP Restarting
750 Capability of R1.
751
752 4. Start BGP Process at R1.
753
754 5. Re-establish the BGP session between R1 & R2.
755
756 <--------------------------------------------------------------------->
757
758 6. R2 Send initial route updates, followed by End-Of-Rib.
759
760 <----------------------------------------------------------------------
761
762 7. R1 was waiting for End-Of-Rib from R2 & which has been received
763 now.
764
765 8. R1 now runs BGP Best-Path algorithm. Send Initial BGP Update,
766 followed by End-Of Rib
767
768 <--------------------------------------------------------------------->
769
770
771.. _bgp-end-of-rib-message:
772
773End-of-RIB (EOR) message
774^^^^^^^^^^^^^^^^^^^^^^^^
775
776An UPDATE message with no reachable Network Layer Reachability Information
777(NLRI) and empty withdrawn NLRI is specified as the End-of-RIB marker that can
778be used by a BGP speaker to indicate to its peer the completion of the initial
779routing update after the session is established.
780
781For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message
782with the minimum length. For any other address family, it is an UPDATE message
783that contains only the MP_UNREACH_NLRI attribute with no withdrawn routes for
784that <AFI, SAFI>.
785
786Although the End-of-RIB marker is specified for the purpose of BGP graceful
787restart, it is noted that the generation of such a marker upon completion of
788the initial update would be useful for routing convergence in general, and thus
789the practice is recommended.
790
791.. _bgp-route-selection-deferral-timer:
792
793Route Selection Deferral Timer
794^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
795
796Specifies the time the restarting router defers the route selection process
797after restart.
798
799Restarting Router : The usage of route election deferral timer is specified
800in https://tools.ietf.org/html/rfc4724#section-4.1
801
802Once the session between the Restarting Speaker and the Receiving Speaker is
803re-established, the Restarting Speaker will receive and process BGP messages
804from its peers.
805
806However, it MUST defer route selection for an address family until it either.
807
8081. Receives the End-of-RIB marker from all its peers (excluding the ones with
809 the "Restart State" bit set in the received capability and excluding the ones
810 that do not advertise the graceful restart capability).
8112. The Selection_Deferral_Timer timeout.
812
813.. index:: bgp graceful-restart select-defer-time (0-3600)
814.. clicmd:: bgp graceful-restart select-defer-time (0-3600)
815
816 This is command, will set deferral time to value specified.
817
818
819.. index:: bgp graceful-restart rib-stale-time (1-3600)
820.. clicmd:: bgp graceful-restart rib-stale-time (1-3600)
821
822 This is command, will set the time for which stale routes are kept in RIB.
823
824.. _bgp-per-peer-graceful-restart:
825
826BGP Per Peer Graceful Restart
827^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
828
829Ability to enable and disable graceful restart, helper and no GR at all mode
830functionality at peer level.
831
832So bgp graceful restart can be enabled at modes global BGP level or at per
833peer level. There are two FSM, one for BGP GR global mode and other for peer
834per GR.
835
836Default global mode is helper and default peer per mode is inherit from global.
837If per peer mode is configured, the GR mode of this particular peer will
838override the global mode.
839
2ba1fe69 840.. _bgp-GR-global-mode-cmd:
efcb2ebb 841
842BGP GR Global Mode Commands
843^^^^^^^^^^^^^^^^^^^^^^^^^^^
844
845.. index:: bgp graceful-restart
846.. clicmd:: bgp graceful-restart
847
848 This command will enable BGP graceful restart ifunctionality at the global
849 level.
850
851.. index:: bgp graceful-restart disable
852.. clicmd:: bgp graceful-restart disable
853
854 This command will disable both the functionality graceful restart and helper
855 mode.
856
857
858.. _bgp-GR-peer-mode-cmd:
859
860BGP GR Peer Mode Commands
861^^^^^^^^^^^^^^^^^^^^^^^^^
862
863.. index:: neighbor A.B.C.D graceful-restart
864.. clicmd:: neighbor A.B.C.D graceful-restart
865
866 This command will enable BGP graceful restart ifunctionality at the peer
867 level.
868
869.. index:: neighbor A.B.C.D graceful-restart-helper
870.. clicmd:: neighbor A.B.C.D graceful-restart-helper
871
872 This command will enable BGP graceful restart helper only functionality
873 at the peer level.
874
875.. index:: neighbor A.B.C.D graceful-restart-disable
876.. clicmd:: neighbor A.B.C.D graceful-restart-disable
877
878 This command will disable the entire BGP graceful restart functionality
879 at the peer level.
880
881
0efdf0fe 882.. _bgp-network:
42fc5d26 883
8fcedbd2
QY
884Networks
885--------
42fc5d26 886
c1a54c05
QY
887.. index:: network A.B.C.D/M
888.. clicmd:: network A.B.C.D/M
42fc5d26 889
9eb95b3b 890 This command adds the announcement network.
c3c5a71f 891
9eb95b3b
QY
892 .. code-block:: frr
893
894 router bgp 1
895 address-family ipv4 unicast
896 network 10.0.0.0/8
897 exit-address-family
42fc5d26 898
c1a54c05
QY
899 This configuration example says that network 10.0.0.0/8 will be
900 announced to all neighbors. Some vendors' routers don't advertise
901 routes if they aren't present in their IGP routing tables; `bgpd`
902 doesn't care about IGP routes when announcing its routes.
c3c5a71f 903
c1a54c05
QY
904.. index:: no network A.B.C.D/M
905.. clicmd:: no network A.B.C.D/M
42fc5d26 906
8fcedbd2 907.. _bgp-route-aggregation:
42fc5d26
QY
908
909Route Aggregation
910-----------------
911
5101fece 912.. _bgp-route-aggregation-ipv4:
913
914Route Aggregation-IPv4 Address Family
915^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
916
c1a54c05
QY
917.. index:: aggregate-address A.B.C.D/M
918.. clicmd:: aggregate-address A.B.C.D/M
c3c5a71f 919
c1a54c05 920 This command specifies an aggregate address.
42fc5d26 921
ac2201bb
DA
922.. index:: aggregate-address A.B.C.D/M route-map NAME
923.. clicmd:: aggregate-address A.B.C.D/M route-map NAME
924
925 Apply a route-map for an aggregated prefix.
926
a87d2ef7
DA
927.. index:: aggregate-address A.B.C.D/M origin <egp|igp|incomplete>
928.. clicmd:: aggregate-address A.B.C.D/M origin <egp|igp|incomplete>
929
930 Override ORIGIN for an aggregated prefix.
931
c1a54c05
QY
932.. index:: aggregate-address A.B.C.D/M as-set
933.. clicmd:: aggregate-address A.B.C.D/M as-set
42fc5d26 934
c1a54c05
QY
935 This command specifies an aggregate address. Resulting routes include
936 AS set.
42fc5d26 937
c1a54c05
QY
938.. index:: aggregate-address A.B.C.D/M summary-only
939.. clicmd:: aggregate-address A.B.C.D/M summary-only
c3c5a71f 940
d1e7591e 941 This command specifies an aggregate address. Aggregated routes will
c1a54c05 942 not be announce.
42fc5d26 943
c1a54c05
QY
944.. index:: no aggregate-address A.B.C.D/M
945.. clicmd:: no aggregate-address A.B.C.D/M
ac2201bb 946
5101fece 947 This command removes an aggregate address.
948
949
ac2201bb 950 This configuration example setup the aggregate-address under
5101fece 951 ipv4 address-family.
952
953 .. code-block:: frr
954
955 router bgp 1
956 address-family ipv4 unicast
957 aggregate-address 10.0.0.0/8
958 aggregate-address 20.0.0.0/8 as-set
959 aggregate-address 40.0.0.0/8 summary-only
ac2201bb 960 aggregate-address 50.0.0.0/8 route-map aggr-rmap
5101fece 961 exit-address-family
962
963
964.. _bgp-route-aggregation-ipv6:
965
966Route Aggregation-IPv6 Address Family
967^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
968
969.. index:: aggregate-address X:X::X:X/M
970.. clicmd:: aggregate-address X:X::X:X/M
971
972 This command specifies an aggregate address.
973
ac2201bb
DA
974.. index:: aggregate-address X:X::X:X/M route-map NAME
975.. clicmd:: aggregate-address X:X::X:X/M route-map NAME
976
977 Apply a route-map for an aggregated prefix.
978
a87d2ef7
DA
979.. index:: aggregate-address X:X::X:X/M origin <egp|igp|incomplete>
980.. clicmd:: aggregate-address X:X::X:X/M origin <egp|igp|incomplete>
981
982 Override ORIGIN for an aggregated prefix.
983
5101fece 984.. index:: aggregate-address X:X::X:X/M as-set
985.. clicmd:: aggregate-address X:X::X:X/M as-set
986
987 This command specifies an aggregate address. Resulting routes include
988 AS set.
989
990.. index:: aggregate-address X:X::X:X/M summary-only
991.. clicmd:: aggregate-address X:X::X:X/M summary-only
992
993 This command specifies an aggregate address. Aggregated routes will
994 not be announce.
995
996.. index:: no aggregate-address X:X::X:X/M
997.. clicmd:: no aggregate-address X:X::X:X/M
998
999 This command removes an aggregate address.
1000
1001
ac2201bb
DA
1002 This configuration example setup the aggregate-address under
1003 ipv6 address-family.
5101fece 1004
1005 .. code-block:: frr
1006
1007 router bgp 1
1008 address-family ipv6 unicast
1009 aggregate-address 10::0/64
ac2201bb
DA
1010 aggregate-address 20::0/64 as-set
1011 aggregate-address 40::0/64 summary-only
1012 aggregate-address 50::0/64 route-map aggr-rmap
5101fece 1013 exit-address-family
c3c5a71f 1014
8fcedbd2 1015.. _bgp-redistribute-to-bgp:
42fc5d26 1016
8fcedbd2
QY
1017Redistribution
1018--------------
42fc5d26 1019
c3c5a71f 1020.. index:: redistribute kernel
29adcd50 1021.. clicmd:: redistribute kernel
42fc5d26 1022
c1a54c05 1023 Redistribute kernel route to BGP process.
42fc5d26 1024
c3c5a71f 1025.. index:: redistribute static
29adcd50 1026.. clicmd:: redistribute static
42fc5d26 1027
c1a54c05 1028 Redistribute static route to BGP process.
42fc5d26 1029
c3c5a71f 1030.. index:: redistribute connected
29adcd50 1031.. clicmd:: redistribute connected
42fc5d26 1032
c1a54c05 1033 Redistribute connected route to BGP process.
42fc5d26 1034
c3c5a71f 1035.. index:: redistribute rip
29adcd50 1036.. clicmd:: redistribute rip
42fc5d26 1037
c1a54c05 1038 Redistribute RIP route to BGP process.
42fc5d26 1039
c3c5a71f 1040.. index:: redistribute ospf
29adcd50 1041.. clicmd:: redistribute ospf
42fc5d26 1042
c1a54c05 1043 Redistribute OSPF route to BGP process.
42fc5d26 1044
99ad55e0
DA
1045.. index:: redistribute vnc
1046.. clicmd:: redistribute vnc
42fc5d26 1047
c1a54c05 1048 Redistribute VNC routes to BGP process.
42fc5d26 1049
245d354f
DA
1050.. index:: redistribute vnc-direct
1051.. clicmd:: redistribute vnc-direct
1052
1053 Redistribute VNC direct (not via zebra) routes to BGP process.
1054
c1a54c05
QY
1055.. index:: update-delay MAX-DELAY
1056.. clicmd:: update-delay MAX-DELAY
c3c5a71f 1057
c1a54c05
QY
1058.. index:: update-delay MAX-DELAY ESTABLISH-WAIT
1059.. clicmd:: update-delay MAX-DELAY ESTABLISH-WAIT
c3c5a71f 1060
c1a54c05
QY
1061 This feature is used to enable read-only mode on BGP process restart or when
1062 BGP process is cleared using 'clear ip bgp \*'. When applicable, read-only
1063 mode would begin as soon as the first peer reaches Established status and a
1064 timer for max-delay seconds is started.
42fc5d26 1065
c1a54c05
QY
1066 During this mode BGP doesn't run any best-path or generate any updates to its
1067 peers. This mode continues until:
42fc5d26 1068
c1a54c05
QY
1069 1. All the configured peers, except the shutdown peers, have sent explicit EOR
1070 (End-Of-RIB) or an implicit-EOR. The first keep-alive after BGP has reached
1071 Established is considered an implicit-EOR.
1072 If the establish-wait optional value is given, then BGP will wait for
d1e7591e 1073 peers to reach established from the beginning of the update-delay till the
c1a54c05
QY
1074 establish-wait period is over, i.e. the minimum set of established peers for
1075 which EOR is expected would be peers established during the establish-wait
1076 window, not necessarily all the configured neighbors.
1077 2. max-delay period is over.
42fc5d26 1078
c1a54c05
QY
1079 On hitting any of the above two conditions, BGP resumes the decision process
1080 and generates updates to its peers.
42fc5d26 1081
c1a54c05 1082 Default max-delay is 0, i.e. the feature is off by default.
c3c5a71f 1083
c1a54c05
QY
1084.. index:: table-map ROUTE-MAP-NAME
1085.. clicmd:: table-map ROUTE-MAP-NAME
42fc5d26 1086
c1a54c05
QY
1087 This feature is used to apply a route-map on route updates from BGP to
1088 Zebra. All the applicable match operations are allowed, such as match on
1089 prefix, next-hop, communities, etc. Set operations for this attach-point are
1090 limited to metric and next-hop only. Any operation of this feature does not
1091 affect BGPs internal RIB.
42fc5d26 1092
c1a54c05
QY
1093 Supported for ipv4 and ipv6 address families. It works on multi-paths as
1094 well, however, metric setting is based on the best-path only.
42fc5d26 1095
8fcedbd2 1096.. _bgp-peers:
42fc5d26 1097
8fcedbd2
QY
1098Peers
1099-----
42fc5d26 1100
8fcedbd2 1101.. _bgp-defining-peers:
42fc5d26 1102
8fcedbd2
QY
1103Defining Peers
1104^^^^^^^^^^^^^^
42fc5d26 1105
c1a54c05
QY
1106.. index:: neighbor PEER remote-as ASN
1107.. clicmd:: neighbor PEER remote-as ASN
42fc5d26 1108
c1a54c05 1109 Creates a new neighbor whose remote-as is ASN. PEER can be an IPv4 address
9eb95b3b 1110 or an IPv6 address or an interface to use for the connection.
76bd1499 1111
9eb95b3b
QY
1112 .. code-block:: frr
1113
1114 router bgp 1
1115 neighbor 10.0.0.1 remote-as 2
76bd1499 1116
c1a54c05 1117 In this case my router, in AS-1, is trying to peer with AS-2 at 10.0.0.1.
76bd1499 1118
c1a54c05 1119 This command must be the first command used when configuring a neighbor. If
9eb95b3b 1120 the remote-as is not specified, *bgpd* will complain like this: ::
76bd1499 1121
c1a54c05 1122 can't find neighbor 10.0.0.1
c3c5a71f 1123
5413757f
DS
1124.. index:: neighbor PEER remote-as internal
1125.. clicmd:: neighbor PEER remote-as internal
1126
1127 Create a peer as you would when you specify an ASN, except that if the
1128 peers ASN is different than mine as specified under the :clicmd:`router bgp ASN`
1129 command the connection will be denied.
1130
1131.. index:: neighbor PEER remote-as external
1132.. clicmd:: neighbor PEER remote-as external
1133
1134 Create a peer as you would when you specify an ASN, except that if the
1135 peers ASN is the same as mine as specified under the :clicmd:`router bgp ASN`
1136 command the connection will be denied.
42fc5d26 1137
d7b9898c
DA
1138.. index:: [no] bgp listen range <A.B.C.D/M|X:X::X:X/M> peer-group PGNAME
1139.. clicmd:: [no] bgp listen range <A.B.C.D/M|X:X::X:X/M> peer-group PGNAME
d79e0e08
QY
1140
1141 Accept connections from any peers in the specified prefix. Configuration
1142 from the specified peer-group is used to configure these peers.
1143
1144.. note::
1145
1146 When using BGP listen ranges, if the associated peer group has TCP MD5
1147 authentication configured, your kernel must support this on prefixes. On
1148 Linux, this support was added in kernel version 4.14. If your kernel does
1149 not support this feature you will get a warning in the log file, and the
1150 listen range will only accept connections from peers without MD5 configured.
1151
1152 Additionally, we have observed that when using this option at scale (several
1153 hundred peers) the kernel may hit its option memory limit. In this situation
1154 you will see error messages like:
1155
1156 ``bgpd: sockopt_tcp_signature: setsockopt(23): Cannot allocate memory``
1157
1158 In this case you need to increase the value of the sysctl
1159 ``net.core.optmem_max`` to allow the kernel to allocate the necessary option
1160 memory.
1161
8fcedbd2 1162.. _bgp-configuring-peers:
42fc5d26 1163
8fcedbd2
QY
1164Configuring Peers
1165^^^^^^^^^^^^^^^^^
42fc5d26 1166
c0868e8b
QY
1167.. index:: [no] neighbor PEER shutdown
1168.. clicmd:: [no] neighbor PEER shutdown
c3c5a71f 1169
c1a54c05
QY
1170 Shutdown the peer. We can delete the neighbor's configuration by
1171 ``no neighbor PEER remote-as ASN`` but all configuration of the neighbor
1172 will be deleted. When you want to preserve the configuration, but want to
1173 drop the BGP peer, use this syntax.
c3c5a71f 1174
c0868e8b
QY
1175.. index:: [no] neighbor PEER disable-connected-check
1176.. clicmd:: [no] neighbor PEER disable-connected-check
c3c5a71f 1177
c0868e8b
QY
1178 Allow peerings between directly connected eBGP peers using loopback
1179 addresses.
c3c5a71f 1180
c0868e8b
QY
1181.. index:: [no] neighbor PEER ebgp-multihop
1182.. clicmd:: [no] neighbor PEER ebgp-multihop
42fc5d26 1183
c0868e8b
QY
1184.. index:: [no] neighbor PEER description ...
1185.. clicmd:: [no] neighbor PEER description ...
42fc5d26 1186
c1a54c05 1187 Set description of the peer.
42fc5d26 1188
c0868e8b
QY
1189.. index:: [no] neighbor PEER version VERSION
1190.. clicmd:: [no] neighbor PEER version VERSION
42fc5d26 1191
4da7fda3
QY
1192 Set up the neighbor's BGP version. `version` can be `4`, `4+` or `4-`. BGP
1193 version `4` is the default value used for BGP peering. BGP version `4+`
1194 means that the neighbor supports Multiprotocol Extensions for BGP-4. BGP
1195 version `4-` is similar but the neighbor speaks the old Internet-Draft
1196 revision 00's Multiprotocol Extensions for BGP-4. Some routing software is
1197 still using this version.
42fc5d26 1198
c0868e8b
QY
1199.. index:: [no] neighbor PEER interface IFNAME
1200.. clicmd:: [no] neighbor PEER interface IFNAME
42fc5d26 1201
c1a54c05
QY
1202 When you connect to a BGP peer over an IPv6 link-local address, you have to
1203 specify the IFNAME of the interface used for the connection. To specify
1204 IPv4 session addresses, see the ``neighbor PEER update-source`` command
1205 below.
42fc5d26 1206
c1a54c05
QY
1207 This command is deprecated and may be removed in a future release. Its use
1208 should be avoided.
42fc5d26 1209
c0868e8b
QY
1210.. index:: [no] neighbor PEER next-hop-self [all]
1211.. clicmd:: [no] neighbor PEER next-hop-self [all]
42fc5d26 1212
c1a54c05
QY
1213 This command specifies an announced route's nexthop as being equivalent to
1214 the address of the bgp router if it is learned via eBGP. If the optional
d1e7591e 1215 keyword `all` is specified the modification is done also for routes learned
c1a54c05 1216 via iBGP.
42fc5d26 1217
8b0d734b 1218.. index:: neighbor PEER attribute-unchanged [{as-path|next-hop|med}]
1219.. clicmd:: neighbor PEER attribute-unchanged [{as-path|next-hop|med}]
1220
1221 This command specifies attributes to be left unchanged for advertisements
1222 sent to a peer. Use this to leave the next-hop unchanged in ipv6
1223 configurations, as the route-map directive to leave the next-hop unchanged
1224 is only available for ipv4.
1225
c0868e8b
QY
1226.. index:: [no] neighbor PEER update-source <IFNAME|ADDRESS>
1227.. clicmd:: [no] neighbor PEER update-source <IFNAME|ADDRESS>
42fc5d26 1228
c1a54c05
QY
1229 Specify the IPv4 source address to use for the :abbr:`BGP` session to this
1230 neighbour, may be specified as either an IPv4 address directly or as an
1231 interface name (in which case the *zebra* daemon MUST be running in order
9eb95b3b
QY
1232 for *bgpd* to be able to retrieve interface state).
1233
1234 .. code-block:: frr
42fc5d26 1235
c1a54c05
QY
1236 router bgp 64555
1237 neighbor foo update-source 192.168.0.1
1238 neighbor bar update-source lo0
42fc5d26 1239
42fc5d26 1240
c0868e8b
QY
1241.. index:: [no] neighbor PEER default-originate
1242.. clicmd:: [no] neighbor PEER default-originate
42fc5d26 1243
4da7fda3
QY
1244 *bgpd*'s default is to not announce the default route (0.0.0.0/0) even if it
1245 is in routing table. When you want to announce default routes to the peer,
1246 use this command.
42fc5d26 1247
c1a54c05
QY
1248.. index:: neighbor PEER port PORT
1249.. clicmd:: neighbor PEER port PORT
42fc5d26 1250
e7c105a7
DS
1251.. index:: [no] neighbor PEER password PASSWORD
1252.. clicmd:: [no] neighbor PEER password PASSWORD
1253
1254 Set a MD5 password to be used with the tcp socket that is being used
1255 to connect to the remote peer. Please note if you are using this
1256 command with a large number of peers on linux you should consider
1257 modifying the `net.core.optmem_max` sysctl to a larger value to
1258 avoid out of memory errors from the linux kernel.
1259
c1a54c05
QY
1260.. index:: neighbor PEER send-community
1261.. clicmd:: neighbor PEER send-community
42fc5d26 1262
c0868e8b
QY
1263.. index:: [no] neighbor PEER weight WEIGHT
1264.. clicmd:: [no] neighbor PEER weight WEIGHT
42fc5d26 1265
c1a54c05 1266 This command specifies a default `weight` value for the neighbor's routes.
42fc5d26 1267
c0868e8b
QY
1268.. index:: [no] neighbor PEER maximum-prefix NUMBER
1269.. clicmd:: [no] neighbor PEER maximum-prefix NUMBER
42fc5d26 1270
886026c8
QY
1271 Sets a maximum number of prefixes we can receive from a given peer. If this
1272 number is exceeded, the BGP session will be destroyed.
1273
1274 In practice, it is generally preferable to use a prefix-list to limit what
1275 prefixes are received from the peer instead of using this knob. Tearing down
1276 the BGP session when a limit is exceeded is far more destructive than merely
1277 rejecting undesired prefixes. The prefix-list method is also much more
1278 granular and offers much smarter matching criterion than number of received
1279 prefixes, making it more suited to implementing policy.
1280
edf98aa3
DA
1281.. index:: [no] neighbor PEER maximum-prefix-out NUMBER
1282.. clicmd:: [no] neighbor PEER maximum-prefix-out NUMBER
1283
1284 Sets a maximum number of prefixes we can send to a given peer.
1285
886026c8
QY
1286.. index:: [no] neighbor PEER local-as AS-NUMBER [no-prepend] [replace-as]
1287.. clicmd:: [no] neighbor PEER local-as AS-NUMBER [no-prepend] [replace-as]
42fc5d26 1288
c1a54c05
QY
1289 Specify an alternate AS for this BGP process when interacting with the
1290 specified peer. With no modifiers, the specified local-as is prepended to
1291 the received AS_PATH when receiving routing updates from the peer, and
1292 prepended to the outgoing AS_PATH (after the process local AS) when
1293 transmitting local routes to the peer.
42fc5d26 1294
c1a54c05
QY
1295 If the no-prepend attribute is specified, then the supplied local-as is not
1296 prepended to the received AS_PATH.
c3c5a71f 1297
c1a54c05
QY
1298 If the replace-as attribute is specified, then only the supplied local-as is
1299 prepended to the AS_PATH when transmitting local-route updates to this peer.
c3c5a71f 1300
c1a54c05 1301 Note that replace-as can only be specified if no-prepend is.
c3c5a71f 1302
c1a54c05 1303 This command is only allowed for eBGP peers.
c3c5a71f 1304
c0868e8b
QY
1305.. index:: [no] neighbor PEER ttl-security hops NUMBER
1306.. clicmd:: [no] neighbor PEER ttl-security hops NUMBER
c3c5a71f 1307
c1a54c05
QY
1308 This command enforces Generalized TTL Security Mechanism (GTSM), as
1309 specified in RFC 5082. With this command, only neighbors that are the
1310 specified number of hops away will be allowed to become neighbors. This
d1e7591e 1311 command is mutually exclusive with *ebgp-multihop*.
42fc5d26 1312
19f2b5e8
DS
1313.. index:: [no] neighbor PEER capability extended-nexthop
1314.. clicmd:: [no] neighbor PEER capability extended-nexthop
1315
1316 Allow bgp to negotiate the extended-nexthop capability with it's peer.
1317 If you are peering over a v6 LL address then this capability is turned
1318 on automatically. If you are peering over a v6 Global Address then
1319 turning on this command will allow BGP to install v4 routes with
1320 v6 nexthops if you do not have v4 configured on interfaces.
1321
eb938189
DS
1322.. index:: [no] bgp fast-external-failover
1323.. clicmd:: [no] bgp fast-external-failover
1324
1325 This command causes bgp to not take down ebgp peers immediately
1326 when a link flaps. `bgp fast-external-failover` is the default
1327 and will not be displayed as part of a `show run`. The no form
1328 of the command turns off this ability.
1329
bc132029
DS
1330.. index:: [no] bgp default ipv4-unicast
1331.. clicmd:: [no] bgp default ipv4-unicast
1332
1333 This command allows the user to specify that v4 peering is turned
1334 on by default or not. This command defaults to on and is not displayed.
1335 The `no bgp default ipv4-unicast` form of the command is displayed.
1336
e10dda57
DS
1337.. index:: [no] neighbor PEER advertisement-interval (0-600)
1338.. clicmd:: [no] neighbor PEER advertisement-interval (0-600)
1339
1340 Setup the minimum route advertisement interval(mrai) for the
1341 peer in question. This number is between 0 and 600 seconds,
1342 with the default advertisement interval being 0.
1343
8fcedbd2 1344.. _bgp-peer-filtering:
42fc5d26 1345
8fcedbd2
QY
1346Peer Filtering
1347^^^^^^^^^^^^^^
42fc5d26 1348
c1a54c05
QY
1349.. index:: neighbor PEER distribute-list NAME [in|out]
1350.. clicmd:: neighbor PEER distribute-list NAME [in|out]
42fc5d26 1351
c1a54c05
QY
1352 This command specifies a distribute-list for the peer. `direct` is
1353 ``in`` or ``out``.
42fc5d26 1354
c3c5a71f 1355.. index:: neighbor PEER prefix-list NAME [in|out]
29adcd50 1356.. clicmd:: neighbor PEER prefix-list NAME [in|out]
42fc5d26 1357
c1a54c05 1358.. index:: neighbor PEER filter-list NAME [in|out]
29adcd50 1359.. clicmd:: neighbor PEER filter-list NAME [in|out]
42fc5d26 1360
c1a54c05
QY
1361.. index:: neighbor PEER route-map NAME [in|out]
1362.. clicmd:: neighbor PEER route-map NAME [in|out]
42fc5d26 1363
c1a54c05 1364 Apply a route-map on the neighbor. `direct` must be `in` or `out`.
42fc5d26 1365
c3c5a71f 1366.. index:: bgp route-reflector allow-outbound-policy
29adcd50 1367.. clicmd:: bgp route-reflector allow-outbound-policy
42fc5d26 1368
c1a54c05
QY
1369 By default, attribute modification via route-map policy out is not reflected
1370 on reflected routes. This option allows the modifications to be reflected as
1371 well. Once enabled, it affects all reflected routes.
42fc5d26 1372
583a9fd4
RZ
1373.. index:: [no] neighbor PEER sender-as-path-loop-detection
1374.. clicmd:: [no] neighbor PEER sender-as-path-loop-detection
1375
1376 Enable the detection of sender side AS path loops and filter the
1377 bad routes before they are sent.
1378
1379 This setting is disabled by default.
1380
0efdf0fe 1381.. _bgp-peer-group:
42fc5d26 1382
8fcedbd2
QY
1383Peer Groups
1384^^^^^^^^^^^
42fc5d26 1385
199ad5c4
LB
1386Peer groups are used to help improve scaling by generating the same
1387update information to all members of a peer group. Note that this means
1388that the routes generated by a member of a peer group will be sent back
1389to that originating peer with the originator identifier attribute set to
1390indicated the originating peer. All peers not associated with a
1391specific peer group are treated as belonging to a default peer group,
1392and will share updates.
1393
c1a54c05
QY
1394.. index:: neighbor WORD peer-group
1395.. clicmd:: neighbor WORD peer-group
42fc5d26 1396
c1a54c05 1397 This command defines a new peer group.
42fc5d26 1398
d7b9898c
DA
1399.. index:: neighbor PEER peer-group PGNAME
1400.. clicmd:: neighbor PEER peer-group PGNAME
c3c5a71f 1401
c1a54c05 1402 This command bind specific peer to peer group WORD.
42fc5d26 1403
199ad5c4
LB
1404.. index:: neighbor PEER solo
1405.. clicmd:: neighbor PEER solo
1406
1407 This command is used to indicate that routes advertised by the peer
1408 should not be reflected back to the peer. This command only is only
1409 meaningful when there is a single peer defined in the peer-group.
1410
8fcedbd2
QY
1411Capability Negotiation
1412^^^^^^^^^^^^^^^^^^^^^^
42fc5d26 1413
8fcedbd2
QY
1414.. index:: neighbor PEER strict-capability-match
1415.. clicmd:: neighbor PEER strict-capability-match
42fc5d26 1416
8fcedbd2
QY
1417.. index:: no neighbor PEER strict-capability-match
1418.. clicmd:: no neighbor PEER strict-capability-match
c1a54c05 1419
8fcedbd2
QY
1420 Strictly compares remote capabilities and local capabilities. If
1421 capabilities are different, send Unsupported Capability error then reset
1422 connection.
42fc5d26 1423
8fcedbd2
QY
1424 You may want to disable sending Capability Negotiation OPEN message optional
1425 parameter to the peer when remote peer does not implement Capability
1426 Negotiation. Please use *dont-capability-negotiate* command to disable the
1427 feature.
42fc5d26 1428
7cdc9530
DS
1429.. index:: [no] neighbor PEER dont-capability-negotiate
1430.. clicmd:: [no] neighbor PEER dont-capability-negotiate
42fc5d26 1431
8fcedbd2
QY
1432 Suppress sending Capability Negotiation as OPEN message optional parameter
1433 to the peer. This command only affects the peer is configured other than
1434 IPv4 unicast configuration.
42fc5d26 1435
8fcedbd2
QY
1436 When remote peer does not have capability negotiation feature, remote peer
1437 will not send any capabilities at all. In that case, bgp configures the peer
1438 with configured capabilities.
42fc5d26 1439
8fcedbd2
QY
1440 You may prefer locally configured capabilities more than the negotiated
1441 capabilities even though remote peer sends capabilities. If the peer is
1442 configured by *override-capability*, *bgpd* ignores received capabilities
1443 then override negotiated capabilities with configured values.
42fc5d26 1444
7cdc9530
DS
1445 Additionally the operator should be reminded that this feature fundamentally
1446 disables the ability to use widely deployed BGP features. BGP unnumbered,
1447 hostname support, AS4, Addpath, Route Refresh, ORF, Dynamic Capabilities,
1448 and graceful restart.
1449
8fcedbd2
QY
1450.. index:: neighbor PEER override-capability
1451.. clicmd:: neighbor PEER override-capability
42fc5d26 1452
8fcedbd2
QY
1453.. index:: no neighbor PEER override-capability
1454.. clicmd:: no neighbor PEER override-capability
c1a54c05 1455
8fcedbd2
QY
1456 Override the result of Capability Negotiation with local configuration.
1457 Ignore remote peer's capability value.
42fc5d26 1458
8fcedbd2 1459.. _bgp-as-path-access-lists:
42fc5d26 1460
8fcedbd2
QY
1461AS Path Access Lists
1462--------------------
42fc5d26
QY
1463
1464AS path access list is user defined AS path.
1465
a64e0ee5
DA
1466.. index:: bgp as-path access-list WORD permit|deny LINE
1467.. clicmd:: bgp as-path access-list WORD permit|deny LINE
42fc5d26 1468
c1a54c05 1469 This command defines a new AS path access list.
42fc5d26 1470
a64e0ee5
DA
1471.. index:: no bgp as-path access-list WORD
1472.. clicmd:: no bgp as-path access-list WORD
42fc5d26 1473
a64e0ee5
DA
1474.. index:: no bgp as-path access-list WORD permit|deny LINE
1475.. clicmd:: no bgp as-path access-list WORD permit|deny LINE
42fc5d26 1476
8fcedbd2 1477.. _bgp-using-as-path-in-route-map:
42fc5d26
QY
1478
1479Using AS Path in Route Map
1480--------------------------
1481
eb1f303d
DS
1482.. index:: [no] match as-path WORD
1483.. clicmd:: [no] match as-path WORD
42fc5d26 1484
eb1f303d
DS
1485 For a given as-path, WORD, match it on the BGP as-path given for the prefix
1486 and if it matches do normal route-map actions. The no form of the command
1487 removes this match from the route-map.
42fc5d26 1488
eb1f303d
DS
1489.. index:: [no] set as-path prepend AS-PATH
1490.. clicmd:: [no] set as-path prepend AS-PATH
42fc5d26 1491
eb1f303d
DS
1492 Prepend the given string of AS numbers to the AS_PATH of the BGP path's NLRI.
1493 The no form of this command removes this set operation from the route-map.
42fc5d26 1494
eb1f303d
DS
1495.. index:: [no] set as-path prepend last-as NUM
1496.. clicmd:: [no] set as-path prepend last-as NUM
c1a54c05
QY
1497
1498 Prepend the existing last AS number (the leftmost ASN) to the AS_PATH.
eb1f303d 1499 The no form of this command removes this set operation from the route-map.
42fc5d26 1500
0efdf0fe 1501.. _bgp-communities-attribute:
42fc5d26 1502
8fcedbd2
QY
1503Communities Attribute
1504---------------------
42fc5d26 1505
8fcedbd2 1506The BGP communities attribute is widely used for implementing policy routing.
c1a54c05
QY
1507Network operators can manipulate BGP communities attribute based on their
1508network policy. BGP communities attribute is defined in :rfc:`1997` and
1509:rfc:`1998`. It is an optional transitive attribute, therefore local policy can
1510travel through different autonomous system.
1511
8fcedbd2
QY
1512The communities attribute is a set of communities values. Each community value
1513is 4 octet long. The following format is used to define the community value.
c1a54c05 1514
8fcedbd2 1515``AS:VAL``
c1a54c05
QY
1516 This format represents 4 octet communities value. ``AS`` is high order 2
1517 octet in digit format. ``VAL`` is low order 2 octet in digit format. This
1518 format is useful to define AS oriented policy value. For example,
1519 ``7675:80`` can be used when AS 7675 wants to pass local policy value 80 to
1520 neighboring peer.
1521
8fcedbd2
QY
1522``internet``
1523 ``internet`` represents well-known communities value 0.
c1a54c05 1524
cae770d3
C
1525``graceful-shutdown``
1526 ``graceful-shutdown`` represents well-known communities value
1527 ``GRACEFUL_SHUTDOWN`` ``0xFFFF0000`` ``65535:0``. :rfc:`8326` implements
1528 the purpose Graceful BGP Session Shutdown to reduce the amount of
56f0bea7 1529 lost traffic when taking BGP sessions down for maintenance. The use
cae770d3
C
1530 of the community needs to be supported from your peers side to
1531 actually have any effect.
1532
1533``accept-own``
1534 ``accept-own`` represents well-known communities value ``ACCEPT_OWN``
1535 ``0xFFFF0001`` ``65535:1``. :rfc:`7611` implements a way to signal
1536 to a router to accept routes with a local nexthop address. This
1537 can be the case when doing policing and having traffic having a
1538 nexthop located in another VRF but still local interface to the
1539 router. It is recommended to read the RFC for full details.
1540
1541``route-filter-translated-v4``
1542 ``route-filter-translated-v4`` represents well-known communities value
1543 ``ROUTE_FILTER_TRANSLATED_v4`` ``0xFFFF0002`` ``65535:2``.
1544
1545``route-filter-v4``
1546 ``route-filter-v4`` represents well-known communities value
1547 ``ROUTE_FILTER_v4`` ``0xFFFF0003`` ``65535:3``.
1548
1549``route-filter-translated-v6``
1550 ``route-filter-translated-v6`` represents well-known communities value
1551 ``ROUTE_FILTER_TRANSLATED_v6`` ``0xFFFF0004`` ``65535:4``.
1552
1553``route-filter-v6``
1554 ``route-filter-v6`` represents well-known communities value
1555 ``ROUTE_FILTER_v6`` ``0xFFFF0005`` ``65535:5``.
1556
1557``llgr-stale``
1558 ``llgr-stale`` represents well-known communities value ``LLGR_STALE``
1559 ``0xFFFF0006`` ``65535:6``.
56f0bea7 1560 Assigned and intended only for use with routers supporting the
cae770d3 1561 Long-lived Graceful Restart Capability as described in
49606d58 1562 [Draft-IETF-uttaro-idr-bgp-persistence]_.
56f0bea7 1563 Routers receiving routes with this community may (depending on
cae770d3
C
1564 implementation) choose allow to reject or modify routes on the
1565 presence or absence of this community.
1566
1567``no-llgr``
1568 ``no-llgr`` represents well-known communities value ``NO_LLGR``
1569 ``0xFFFF0007`` ``65535:7``.
56f0bea7 1570 Assigned and intended only for use with routers supporting the
cae770d3 1571 Long-lived Graceful Restart Capability as described in
49606d58 1572 [Draft-IETF-uttaro-idr-bgp-persistence]_.
56f0bea7 1573 Routers receiving routes with this community may (depending on
cae770d3
C
1574 implementation) choose allow to reject or modify routes on the
1575 presence or absence of this community.
1576
1577``accept-own-nexthop``
1578 ``accept-own-nexthop`` represents well-known communities value
1579 ``accept-own-nexthop`` ``0xFFFF0008`` ``65535:8``.
49606d58 1580 [Draft-IETF-agrewal-idr-accept-own-nexthop]_ describes
cae770d3
C
1581 how to tag and label VPN routes to be able to send traffic between VRFs
1582 via an internal layer 2 domain on the same PE device. Refer to
49606d58 1583 [Draft-IETF-agrewal-idr-accept-own-nexthop]_ for full details.
cae770d3
C
1584
1585``blackhole``
1586 ``blackhole`` represents well-known communities value ``BLACKHOLE``
1587 ``0xFFFF029A`` ``65535:666``. :rfc:`7999` documents sending prefixes to
1588 EBGP peers and upstream for the purpose of blackholing traffic.
1589 Prefixes tagged with the this community should normally not be
1590 re-advertised from neighbors of the originating network. It is
1591 recommended upon receiving prefixes tagged with this community to
1592 add ``NO_EXPORT`` and ``NO_ADVERTISE``.
1593
8fcedbd2 1594``no-export``
c1a54c05
QY
1595 ``no-export`` represents well-known communities value ``NO_EXPORT``
1596 ``0xFFFFFF01``. All routes carry this value must not be advertised to
1597 outside a BGP confederation boundary. If neighboring BGP peer is part of BGP
1598 confederation, the peer is considered as inside a BGP confederation
1599 boundary, so the route will be announced to the peer.
1600
8fcedbd2 1601``no-advertise``
c1a54c05
QY
1602 ``no-advertise`` represents well-known communities value ``NO_ADVERTISE``
1603 ``0xFFFFFF02``. All routes carry this value must not be advertise to other
1604 BGP peers.
1605
8fcedbd2 1606``local-AS``
c1a54c05
QY
1607 ``local-AS`` represents well-known communities value ``NO_EXPORT_SUBCONFED``
1608 ``0xFFFFFF03``. All routes carry this value must not be advertised to
1609 external BGP peers. Even if the neighboring router is part of confederation,
1610 it is considered as external BGP peer, so the route will not be announced to
1611 the peer.
1612
cae770d3
C
1613``no-peer``
1614 ``no-peer`` represents well-known communities value ``NOPEER``
1615 ``0xFFFFFF04`` ``65535:65284``. :rfc:`3765` is used to communicate to
1616 another network how the originating network want the prefix propagated.
1617
aa9eafa4
QY
1618When the communities attribute is received duplicate community values in the
1619attribute are ignored and value is sorted in numerical order.
42fc5d26 1620
49606d58
PG
1621.. [Draft-IETF-uttaro-idr-bgp-persistence] <https://tools.ietf.org/id/draft-uttaro-idr-bgp-persistence-04.txt>
1622.. [Draft-IETF-agrewal-idr-accept-own-nexthop] <https://tools.ietf.org/id/draft-agrewal-idr-accept-own-nexthop-00.txt>
1623
0efdf0fe 1624.. _bgp-community-lists:
42fc5d26 1625
8fcedbd2
QY
1626Community Lists
1627^^^^^^^^^^^^^^^
aa9eafa4
QY
1628Community lists are user defined lists of community attribute values. These
1629lists can be used for matching or manipulating the communities attribute in
1630UPDATE messages.
42fc5d26 1631
aa9eafa4 1632There are two types of community list:
c1a54c05 1633
aa9eafa4 1634standard
56f0bea7 1635 This type accepts an explicit value for the attribute.
aa9eafa4
QY
1636
1637expanded
1638 This type accepts a regular expression. Because the regex must be
1639 interpreted on each use expanded community lists are slower than standard
1640 lists.
42fc5d26 1641
a64e0ee5
DA
1642.. index:: bgp community-list standard NAME permit|deny COMMUNITY
1643.. clicmd:: bgp community-list standard NAME permit|deny COMMUNITY
42fc5d26 1644
aa9eafa4
QY
1645 This command defines a new standard community list. ``COMMUNITY`` is
1646 communities value. The ``COMMUNITY`` is compiled into community structure.
1647 We can define multiple community list under same name. In that case match
1648 will happen user defined order. Once the community list matches to
1649 communities attribute in BGP updates it return permit or deny by the
1650 community list definition. When there is no matched entry, deny will be
1651 returned. When ``COMMUNITY`` is empty it matches to any routes.
42fc5d26 1652
a64e0ee5
DA
1653.. index:: bgp community-list expanded NAME permit|deny COMMUNITY
1654.. clicmd:: bgp community-list expanded NAME permit|deny COMMUNITY
42fc5d26 1655
aa9eafa4
QY
1656 This command defines a new expanded community list. ``COMMUNITY`` is a
1657 string expression of communities attribute. ``COMMUNITY`` can be a regular
1658 expression (:ref:`bgp-regular-expressions`) to match the communities
47f47873
PG
1659 attribute in BGP updates. The expanded community is only used to filter,
1660 not `set` actions.
42fc5d26 1661
aa9eafa4
QY
1662.. deprecated:: 5.0
1663 It is recommended to use the more explicit versions of this command.
42fc5d26 1664
a64e0ee5
DA
1665.. index:: bgp community-list NAME permit|deny COMMUNITY
1666.. clicmd:: bgp community-list NAME permit|deny COMMUNITY
aa9eafa4
QY
1667
1668 When the community list type is not specified, the community list type is
1669 automatically detected. If ``COMMUNITY`` can be compiled into communities
1670 attribute, the community list is defined as a standard community list.
1671 Otherwise it is defined as an expanded community list. This feature is left
1672 for backward compatibility. Use of this feature is not recommended.
42fc5d26 1673
42fc5d26 1674
a64e0ee5
DA
1675.. index:: no bgp community-list [standard|expanded] NAME
1676.. clicmd:: no bgp community-list [standard|expanded] NAME
42fc5d26 1677
aa9eafa4
QY
1678 Deletes the community list specified by ``NAME``. All community lists share
1679 the same namespace, so it's not necessary to specify ``standard`` or
1680 ``expanded``; these modifiers are purely aesthetic.
42fc5d26 1681
a64e0ee5
DA
1682.. index:: show bgp community-list [NAME]
1683.. clicmd:: show bgp community-list [NAME]
42fc5d26 1684
aa9eafa4
QY
1685 Displays community list information. When ``NAME`` is specified the
1686 specified community list's information is shown.
c3c5a71f 1687
c1a54c05 1688 ::
76bd1499 1689
a64e0ee5 1690 # show bgp community-list
c1a54c05
QY
1691 Named Community standard list CLIST
1692 permit 7675:80 7675:100 no-export
1693 deny internet
1694 Named Community expanded list EXPAND
1695 permit :
76bd1499 1696
a64e0ee5 1697 # show bgp community-list CLIST
c1a54c05
QY
1698 Named Community standard list CLIST
1699 permit 7675:80 7675:100 no-export
1700 deny internet
42fc5d26 1701
42fc5d26 1702
8fcedbd2 1703.. _bgp-numbered-community-lists:
42fc5d26 1704
8fcedbd2
QY
1705Numbered Community Lists
1706^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26
QY
1707
1708When number is used for BGP community list name, the number has
c3c5a71f
QY
1709special meanings. Community list number in the range from 1 and 99 is
1710standard community list. Community list number in the range from 100
1711to 199 is expanded community list. These community lists are called
1712as numbered community lists. On the other hand normal community lists
42fc5d26
QY
1713is called as named community lists.
1714
a64e0ee5
DA
1715.. index:: bgp community-list (1-99) permit|deny COMMUNITY
1716.. clicmd:: bgp community-list (1-99) permit|deny COMMUNITY
42fc5d26 1717
aa9eafa4
QY
1718 This command defines a new community list. The argument to (1-99) defines
1719 the list identifier.
42fc5d26 1720
a64e0ee5
DA
1721.. index:: bgp community-list (100-199) permit|deny COMMUNITY
1722.. clicmd:: bgp community-list (100-199) permit|deny COMMUNITY
42fc5d26 1723
aa9eafa4
QY
1724 This command defines a new expanded community list. The argument to
1725 (100-199) defines the list identifier.
42fc5d26 1726
8fcedbd2 1727.. _bgp-using-communities-in-route-map:
42fc5d26 1728
8fcedbd2
QY
1729Using Communities in Route Maps
1730^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26 1731
aa9eafa4
QY
1732In :ref:`route-map` we can match on or set the BGP communities attribute. Using
1733this feature network operator can implement their network policy based on BGP
1734communities attribute.
42fc5d26 1735
aa9eafa4 1736The ollowing commands can be used in route maps:
42fc5d26 1737
aa9eafa4
QY
1738.. index:: match community WORD exact-match [exact-match]
1739.. clicmd:: match community WORD exact-match [exact-match]
42fc5d26 1740
c1a54c05
QY
1741 This command perform match to BGP updates using community list WORD. When
1742 the one of BGP communities value match to the one of communities value in
d1e7591e 1743 community list, it is match. When `exact-match` keyword is specified, match
c1a54c05
QY
1744 happen only when BGP updates have completely same communities value
1745 specified in the community list.
42fc5d26 1746
aa9eafa4
QY
1747.. index:: set community <none|COMMUNITY> additive
1748.. clicmd:: set community <none|COMMUNITY> additive
42fc5d26 1749
aa9eafa4
QY
1750 This command sets the community value in BGP updates. If the attribute is
1751 already configured, the newly provided value replaces the old one unless the
1752 ``additive`` keyword is specified, in which case the new value is appended
1753 to the existing value.
42fc5d26 1754
aa9eafa4
QY
1755 If ``none`` is specified as the community value, the communities attribute
1756 is not sent.
42fc5d26 1757
47f47873
PG
1758 It is not possible to set an expanded community list.
1759
c1a54c05 1760.. index:: set comm-list WORD delete
29adcd50 1761.. clicmd:: set comm-list WORD delete
c1a54c05 1762
aa9eafa4
QY
1763 This command remove communities value from BGP communities attribute. The
1764 ``word`` is community list name. When BGP route's communities value matches
1765 to the community list ``word``, the communities value is removed. When all
1766 of communities value is removed eventually, the BGP update's communities
1767 attribute is completely removed.
42fc5d26 1768
8fcedbd2 1769.. _bgp-communities-example:
c1a54c05 1770
8fcedbd2
QY
1771Example Configuration
1772^^^^^^^^^^^^^^^^^^^^^
9eb95b3b 1773
8fcedbd2
QY
1774The following configuration is exemplary of the most typical usage of BGP
1775communities attribute. In the example, AS 7675 provides an upstream Internet
1776connection to AS 100. When the following configuration exists in AS 7675, the
1777network operator of AS 100 can set local preference in AS 7675 network by
1778setting BGP communities attribute to the updates.
9eb95b3b
QY
1779
1780.. code-block:: frr
c1a54c05
QY
1781
1782 router bgp 7675
1783 neighbor 192.168.0.1 remote-as 100
1784 address-family ipv4 unicast
1785 neighbor 192.168.0.1 route-map RMAP in
1786 exit-address-family
1787 !
a64e0ee5
DA
1788 bgp community-list 70 permit 7675:70
1789 bgp community-list 70 deny
1790 bgp community-list 80 permit 7675:80
1791 bgp community-list 80 deny
1792 bgp community-list 90 permit 7675:90
1793 bgp community-list 90 deny
c1a54c05
QY
1794 !
1795 route-map RMAP permit 10
1796 match community 70
1797 set local-preference 70
1798 !
1799 route-map RMAP permit 20
1800 match community 80
1801 set local-preference 80
1802 !
1803 route-map RMAP permit 30
1804 match community 90
1805 set local-preference 90
c3c5a71f 1806
42fc5d26 1807
8fcedbd2
QY
1808The following configuration announces ``10.0.0.0/8`` from AS 100 to AS 7675.
1809The route has communities value ``7675:80`` so when above configuration exists
1810in AS 7675, the announced routes' local preference value will be set to 80.
9eb95b3b
QY
1811
1812.. code-block:: frr
c1a54c05
QY
1813
1814 router bgp 100
1815 network 10.0.0.0/8
1816 neighbor 192.168.0.2 remote-as 7675
1817 address-family ipv4 unicast
1818 neighbor 192.168.0.2 route-map RMAP out
1819 exit-address-family
1820 !
1821 ip prefix-list PLIST permit 10.0.0.0/8
1822 !
1823 route-map RMAP permit 10
1824 match ip address prefix-list PLIST
1825 set community 7675:80
c3c5a71f 1826
42fc5d26 1827
8fcedbd2
QY
1828The following configuration is an example of BGP route filtering using
1829communities attribute. This configuration only permit BGP routes which has BGP
1830communities value ``0:80`` or ``0:90``. The network operator can set special
1831internal communities value at BGP border router, then limit the BGP route
1832announcements into the internal network.
9eb95b3b
QY
1833
1834.. code-block:: frr
42fc5d26 1835
c1a54c05
QY
1836 router bgp 7675
1837 neighbor 192.168.0.1 remote-as 100
1838 address-family ipv4 unicast
1839 neighbor 192.168.0.1 route-map RMAP in
1840 exit-address-family
1841 !
a64e0ee5 1842 bgp community-list 1 permit 0:80 0:90
c1a54c05
QY
1843 !
1844 route-map RMAP permit in
1845 match community 1
c3c5a71f 1846
42fc5d26 1847
8fcedbd2
QY
1848The following example filters BGP routes which have a community value of
1849``1:1``. When there is no match community-list returns ``deny``. To avoid
1850filtering all routes, a ``permit`` line is set at the end of the
1851community-list.
9eb95b3b
QY
1852
1853.. code-block:: frr
42fc5d26 1854
c1a54c05
QY
1855 router bgp 7675
1856 neighbor 192.168.0.1 remote-as 100
1857 address-family ipv4 unicast
1858 neighbor 192.168.0.1 route-map RMAP in
1859 exit-address-family
1860 !
a64e0ee5
DA
1861 bgp community-list standard FILTER deny 1:1
1862 bgp community-list standard FILTER permit
c1a54c05
QY
1863 !
1864 route-map RMAP permit 10
1865 match community FILTER
c3c5a71f 1866
42fc5d26 1867
8fcedbd2
QY
1868The communities value keyword ``internet`` has special meanings in standard
1869community lists. In the below example ``internet`` matches all BGP routes even
1870if the route does not have communities attribute at all. So community list
1871``INTERNET`` is the same as ``FILTER`` in the previous example.
9eb95b3b
QY
1872
1873.. code-block:: frr
42fc5d26 1874
a64e0ee5
DA
1875 bgp community-list standard INTERNET deny 1:1
1876 bgp community-list standard INTERNET permit internet
c3c5a71f 1877
42fc5d26 1878
8fcedbd2
QY
1879The following configuration is an example of communities value deletion. With
1880this configuration the community values ``100:1`` and ``100:2`` are removed
1881from BGP updates. For communities value deletion, only ``permit``
1882community-list is used. ``deny`` community-list is ignored.
9eb95b3b
QY
1883
1884.. code-block:: frr
42fc5d26 1885
c1a54c05
QY
1886 router bgp 7675
1887 neighbor 192.168.0.1 remote-as 100
1888 address-family ipv4 unicast
1889 neighbor 192.168.0.1 route-map RMAP in
1890 exit-address-family
1891 !
a64e0ee5 1892 bgp community-list standard DEL permit 100:1 100:2
c1a54c05
QY
1893 !
1894 route-map RMAP permit 10
1895 set comm-list DEL delete
c3c5a71f 1896
42fc5d26 1897
0efdf0fe 1898.. _bgp-extended-communities-attribute:
42fc5d26 1899
8fcedbd2
QY
1900Extended Communities Attribute
1901^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26 1902
c1a54c05
QY
1903BGP extended communities attribute is introduced with MPLS VPN/BGP technology.
1904MPLS VPN/BGP expands capability of network infrastructure to provide VPN
1905functionality. At the same time it requires a new framework for policy routing.
1906With BGP Extended Communities Attribute we can use Route Target or Site of
1907Origin for implementing network policy for MPLS VPN/BGP.
42fc5d26 1908
c1a54c05
QY
1909BGP Extended Communities Attribute is similar to BGP Communities Attribute. It
1910is an optional transitive attribute. BGP Extended Communities Attribute can
1911carry multiple Extended Community value. Each Extended Community value is
1912eight octet length.
42fc5d26 1913
c1a54c05
QY
1914BGP Extended Communities Attribute provides an extended range compared with BGP
1915Communities Attribute. Adding to that there is a type field in each value to
1916provides community space structure.
42fc5d26 1917
c1a54c05
QY
1918There are two format to define Extended Community value. One is AS based format
1919the other is IP address based format.
42fc5d26 1920
8fcedbd2
QY
1921``AS:VAL``
1922 This is a format to define AS based Extended Community value. ``AS`` part
1923 is 2 octets Global Administrator subfield in Extended Community value.
1924 ``VAL`` part is 4 octets Local Administrator subfield. ``7675:100``
1925 represents AS 7675 policy value 100.
42fc5d26 1926
8fcedbd2 1927``IP-Address:VAL``
c1a54c05 1928 This is a format to define IP address based Extended Community value.
8fcedbd2
QY
1929 ``IP-Address`` part is 4 octets Global Administrator subfield. ``VAL`` part
1930 is 2 octets Local Administrator subfield.
42fc5d26 1931
0efdf0fe 1932.. _bgp-extended-community-lists:
42fc5d26 1933
8fcedbd2
QY
1934Extended Community Lists
1935^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26 1936
a64e0ee5
DA
1937.. index:: bgp extcommunity-list standard NAME permit|deny EXTCOMMUNITY
1938.. clicmd:: bgp extcommunity-list standard NAME permit|deny EXTCOMMUNITY
42fc5d26 1939
4da7fda3
QY
1940 This command defines a new standard extcommunity-list. `extcommunity` is
1941 extended communities value. The `extcommunity` is compiled into extended
1942 community structure. We can define multiple extcommunity-list under same
1943 name. In that case match will happen user defined order. Once the
1944 extcommunity-list matches to extended communities attribute in BGP updates
1945 it return permit or deny based upon the extcommunity-list definition. When
1946 there is no matched entry, deny will be returned. When `extcommunity` is
1947 empty it matches to any routes.
42fc5d26 1948
a64e0ee5
DA
1949.. index:: bgp extcommunity-list expanded NAME permit|deny LINE
1950.. clicmd:: bgp extcommunity-list expanded NAME permit|deny LINE
42fc5d26 1951
4da7fda3
QY
1952 This command defines a new expanded extcommunity-list. `line` is a string
1953 expression of extended communities attribute. `line` can be a regular
1954 expression (:ref:`bgp-regular-expressions`) to match an extended communities
1955 attribute in BGP updates.
42fc5d26 1956
a64e0ee5
DA
1957.. index:: no bgp extcommunity-list NAME
1958.. clicmd:: no bgp extcommunity-list NAME
42fc5d26 1959
a64e0ee5
DA
1960.. index:: no bgp extcommunity-list standard NAME
1961.. clicmd:: no bgp extcommunity-list standard NAME
42fc5d26 1962
a64e0ee5
DA
1963.. index:: no bgp extcommunity-list expanded NAME
1964.. clicmd:: no bgp extcommunity-list expanded NAME
42fc5d26 1965
4da7fda3
QY
1966 These commands delete extended community lists specified by `name`. All of
1967 extended community lists shares a single name space. So extended community
d1e7591e 1968 lists can be removed simply specifying the name.
42fc5d26 1969
a64e0ee5
DA
1970.. index:: show bgp extcommunity-list
1971.. clicmd:: show bgp extcommunity-list
42fc5d26 1972
a64e0ee5
DA
1973.. index:: show bgp extcommunity-list NAME
1974.. clicmd:: show bgp extcommunity-list NAME
c1a54c05 1975
4da7fda3 1976 This command displays current extcommunity-list information. When `name` is
9eb95b3b 1977 specified the community list's information is shown.::
42fc5d26 1978
a64e0ee5 1979 # show bgp extcommunity-list
c3c5a71f 1980
42fc5d26 1981
0efdf0fe 1982.. _bgp-extended-communities-in-route-map:
42fc5d26
QY
1983
1984BGP Extended Communities in Route Map
8fcedbd2 1985"""""""""""""""""""""""""""""""""""""
42fc5d26 1986
c3c5a71f 1987.. index:: match extcommunity WORD
29adcd50 1988.. clicmd:: match extcommunity WORD
42fc5d26 1989
c1a54c05 1990.. index:: set extcommunity rt EXTCOMMUNITY
29adcd50 1991.. clicmd:: set extcommunity rt EXTCOMMUNITY
42fc5d26 1992
c1a54c05 1993 This command set Route Target value.
42fc5d26 1994
c1a54c05 1995.. index:: set extcommunity soo EXTCOMMUNITY
29adcd50 1996.. clicmd:: set extcommunity soo EXTCOMMUNITY
c1a54c05
QY
1997
1998 This command set Site of Origin value.
42fc5d26 1999
47f47873
PG
2000
2001Note that the extended expanded community is only used for `match` rule, not for
2002`set` actions.
2003
0efdf0fe 2004.. _bgp-large-communities-attribute:
42fc5d26 2005
8fcedbd2
QY
2006Large Communities Attribute
2007^^^^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26
QY
2008
2009The BGP Large Communities attribute was introduced in Feb 2017 with
c1a54c05 2010:rfc:`8092`.
42fc5d26 2011
8fcedbd2
QY
2012The BGP Large Communities Attribute is similar to the BGP Communities Attribute
2013except that it has 3 components instead of two and each of which are 4 octets
2014in length. Large Communities bring additional functionality and convenience
2015over traditional communities, specifically the fact that the ``GLOBAL`` part
2016below is now 4 octets wide allowing seamless use in networks using 4-byte ASNs.
2017
2018``GLOBAL:LOCAL1:LOCAL2``
2019 This is the format to define Large Community values. Referencing :rfc:`8195`
2020 the values are commonly referred to as follows:
2021
2022 - The ``GLOBAL`` part is a 4 octet Global Administrator field, commonly used
2023 as the operators AS number.
2024 - The ``LOCAL1`` part is a 4 octet Local Data Part 1 subfield referred to as
2025 a function.
2026 - The ``LOCAL2`` part is a 4 octet Local Data Part 2 field and referred to
2027 as the parameter subfield.
2028
2029 As an example, ``65551:1:10`` represents AS 65551 function 1 and parameter
2030 10. The referenced RFC above gives some guidelines on recommended usage.
42fc5d26 2031
0efdf0fe 2032.. _bgp-large-community-lists:
42fc5d26 2033
8fcedbd2
QY
2034Large Community Lists
2035"""""""""""""""""""""
42fc5d26
QY
2036
2037Two types of large community lists are supported, namely `standard` and
2038`expanded`.
2039
a64e0ee5
DA
2040.. index:: bgp large-community-list standard NAME permit|deny LARGE-COMMUNITY
2041.. clicmd:: bgp large-community-list standard NAME permit|deny LARGE-COMMUNITY
42fc5d26 2042
4da7fda3
QY
2043 This command defines a new standard large-community-list. `large-community`
2044 is the Large Community value. We can add multiple large communities under
2045 same name. In that case the match will happen in the user defined order.
2046 Once the large-community-list matches the Large Communities attribute in BGP
2047 updates it will return permit or deny based upon the large-community-list
2048 definition. When there is no matched entry, a deny will be returned. When
2049 `large-community` is empty it matches any routes.
42fc5d26 2050
a64e0ee5
DA
2051.. index:: bgp large-community-list expanded NAME permit|deny LINE
2052.. clicmd:: bgp large-community-list expanded NAME permit|deny LINE
42fc5d26 2053
4da7fda3
QY
2054 This command defines a new expanded large-community-list. Where `line` is a
2055 string matching expression, it will be compared to the entire Large
2056 Communities attribute as a string, with each large-community in order from
2057 lowest to highest. `line` can also be a regular expression which matches
2058 this Large Community attribute.
42fc5d26 2059
a64e0ee5
DA
2060.. index:: no bgp large-community-list NAME
2061.. clicmd:: no bgp large-community-list NAME
42fc5d26 2062
a64e0ee5
DA
2063.. index:: no bgp large-community-list standard NAME
2064.. clicmd:: no bgp large-community-list standard NAME
42fc5d26 2065
a64e0ee5
DA
2066.. index:: no bgp large-community-list expanded NAME
2067.. clicmd:: no bgp large-community-list expanded NAME
42fc5d26 2068
4da7fda3
QY
2069 These commands delete Large Community lists specified by `name`. All Large
2070 Community lists share a single namespace. This means Large Community lists
2071 can be removed by simply specifying the name.
42fc5d26 2072
a64e0ee5
DA
2073.. index:: show bgp large-community-list
2074.. clicmd:: show bgp large-community-list
42fc5d26 2075
a64e0ee5
DA
2076.. index:: show bgp large-community-list NAME
2077.. clicmd:: show bgp large-community-list NAME
42fc5d26 2078
c1a54c05
QY
2079 This command display current large-community-list information. When
2080 `name` is specified the community list information is shown.
42fc5d26 2081
c1a54c05 2082.. index:: show ip bgp large-community-info
29adcd50 2083.. clicmd:: show ip bgp large-community-info
c1a54c05
QY
2084
2085 This command displays the current large communities in use.
42fc5d26 2086
0efdf0fe 2087.. _bgp-large-communities-in-route-map:
42fc5d26 2088
8fcedbd2
QY
2089Large Communities in Route Map
2090""""""""""""""""""""""""""""""
42fc5d26 2091
03ff9a14 2092.. index:: match large-community LINE [exact-match]
2093.. clicmd:: match large-community LINE [exact-match]
42fc5d26 2094
4da7fda3
QY
2095 Where `line` can be a simple string to match, or a regular expression. It
2096 is very important to note that this match occurs on the entire
c1a54c05 2097 large-community string as a whole, where each large-community is ordered
03ff9a14 2098 from lowest to highest. When `exact-match` keyword is specified, match
2099 happen only when BGP updates have completely same large communities value
2100 specified in the large community list.
42fc5d26 2101
c1a54c05 2102.. index:: set large-community LARGE-COMMUNITY
29adcd50 2103.. clicmd:: set large-community LARGE-COMMUNITY
42fc5d26 2104
c1a54c05 2105.. index:: set large-community LARGE-COMMUNITY LARGE-COMMUNITY
29adcd50 2106.. clicmd:: set large-community LARGE-COMMUNITY LARGE-COMMUNITY
42fc5d26 2107
c1a54c05 2108.. index:: set large-community LARGE-COMMUNITY additive
29adcd50 2109.. clicmd:: set large-community LARGE-COMMUNITY additive
c1a54c05
QY
2110
2111 These commands are used for setting large-community values. The first
2112 command will overwrite any large-communities currently present.
2113 The second specifies two large-communities, which overwrites the current
2114 large-community list. The third will add a large-community value without
2115 overwriting other values. Multiple large-community values can be specified.
42fc5d26 2116
47f47873
PG
2117Note that the large expanded community is only used for `match` rule, not for
2118`set` actions.
b572f826 2119
c8a5e5e1 2120.. _bgp-l3vpn-vrfs:
b572f826 2121
c8a5e5e1
QY
2122L3VPN VRFs
2123----------
b572f826 2124
c8a5e5e1
QY
2125*bgpd* supports :abbr:`L3VPN (Layer 3 Virtual Private Networks)` :abbr:`VRFs
2126(Virtual Routing and Forwarding)` for IPv4 :rfc:`4364` and IPv6 :rfc:`4659`.
2127L3VPN routes, and their associated VRF MPLS labels, can be distributed to VPN
2128SAFI neighbors in the *default*, i.e., non VRF, BGP instance. VRF MPLS labels
2129are reached using *core* MPLS labels which are distributed using LDP or BGP
2130labeled unicast. *bgpd* also supports inter-VRF route leaking.
b572f826 2131
b572f826 2132
c8a5e5e1 2133.. _bgp-vrf-route-leaking:
8fcedbd2
QY
2134
2135VRF Route Leaking
c8a5e5e1 2136-----------------
8fcedbd2
QY
2137
2138BGP routes may be leaked (i.e. copied) between a unicast VRF RIB and the VPN
f90115c5
LB
2139SAFI RIB of the default VRF for use in MPLS-based L3VPNs. Unicast routes may
2140also be leaked between any VRFs (including the unicast RIB of the default BGP
2141instanced). A shortcut syntax is also available for specifying leaking from one
2142VRF to another VRF using the default instance's VPN RIB as the intemediary. A
2143common application of the VRF-VRF feature is to connect a customer's private
8fcedbd2
QY
2144routing domain to a provider's VPN service. Leaking is configured from the
2145point of view of an individual VRF: ``import`` refers to routes leaked from VPN
2146to a unicast VRF, whereas ``export`` refers to routes leaked from a unicast VRF
2147to VPN.
2148
2149Required parameters
c8a5e5e1 2150^^^^^^^^^^^^^^^^^^^
b572f826 2151
4da7fda3
QY
2152Routes exported from a unicast VRF to the VPN RIB must be augmented by two
2153parameters:
2154
2155- an :abbr:`RD (Route Distinguisher)`
2156- an :abbr:`RTLIST (Route-target List)`
2157
2158Configuration for these exported routes must, at a minimum, specify these two
2159parameters.
2160
2161Routes imported from the VPN RIB to a unicast VRF are selected according to
2162their RTLISTs. Routes whose RTLIST contains at least one route-target in
2163common with the configured import RTLIST are leaked. Configuration for these
2164imported routes must specify an RTLIST to be matched.
2165
2166The RD, which carries no semantic value, is intended to make the route unique
2167in the VPN RIB among all routes of its prefix that originate from all the
2168customers and sites that are attached to the provider's VPN service.
2169Accordingly, each site of each customer is typically assigned an RD that is
2170unique across the entire provider network.
2171
2172The RTLIST is a set of route-target extended community values whose purpose is
2173to specify route-leaking policy. Typically, a customer is assigned a single
2174route-target value for import and export to be used at all customer sites. This
2175configuration specifies a simple topology wherein a customer has a single
2176routing domain which is shared across all its sites. More complex routing
2177topologies are possible through use of additional route-targets to augment the
2178leaking of sets of routes in various ways.
b572f826 2179
e967a1d0
DS
2180When using the shortcut syntax for vrf-to-vrf leaking, the RD and RT are
2181auto-derived.
fb3d9f3e 2182
8fcedbd2 2183General configuration
c8a5e5e1 2184^^^^^^^^^^^^^^^^^^^^^
b572f826 2185
f90115c5 2186Configuration of route leaking between a unicast VRF RIB and the VPN SAFI RIB
4da7fda3
QY
2187of the default VRF is accomplished via commands in the context of a VRF
2188address-family:
b572f826
PZ
2189
2190.. index:: rd vpn export AS:NN|IP:nn
2191.. clicmd:: rd vpn export AS:NN|IP:nn
2192
4da7fda3
QY
2193 Specifies the route distinguisher to be added to a route exported from the
2194 current unicast VRF to VPN.
b572f826
PZ
2195
2196.. index:: no rd vpn export [AS:NN|IP:nn]
2197.. clicmd:: no rd vpn export [AS:NN|IP:nn]
2198
2199 Deletes any previously-configured export route distinguisher.
2200
2201.. index:: rt vpn import|export|both RTLIST...
2202.. clicmd:: rt vpn import|export|both RTLIST...
2203
4da7fda3
QY
2204 Specifies the route-target list to be attached to a route (export) or the
2205 route-target list to match against (import) when exporting/importing between
2206 the current unicast VRF and VPN.
b572f826 2207
4da7fda3
QY
2208 The RTLIST is a space-separated list of route-targets, which are BGP
2209 extended community values as described in
b572f826
PZ
2210 :ref:`bgp-extended-communities-attribute`.
2211
2212.. index:: no rt vpn import|export|both [RTLIST...]
2213.. clicmd:: no rt vpn import|export|both [RTLIST...]
2214
2215 Deletes any previously-configured import or export route-target list.
2216
e70e9f8e
PZ
2217.. index:: label vpn export (0..1048575)|auto
2218.. clicmd:: label vpn export (0..1048575)|auto
b572f826 2219
8a2124f7 2220 Enables an MPLS label to be attached to a route exported from the current
2221 unicast VRF to VPN. If the value specified is ``auto``, the label value is
2222 automatically assigned from a pool maintained by the Zebra daemon. If Zebra
2223 is not running, or if this command is not configured, automatic label
2224 assignment will not complete, which will block corresponding route export.
b572f826 2225
e70e9f8e
PZ
2226.. index:: no label vpn export [(0..1048575)|auto]
2227.. clicmd:: no label vpn export [(0..1048575)|auto]
b572f826
PZ
2228
2229 Deletes any previously-configured export label.
2230
2231.. index:: nexthop vpn export A.B.C.D|X:X::X:X
2232.. clicmd:: nexthop vpn export A.B.C.D|X:X::X:X
2233
4da7fda3
QY
2234 Specifies an optional nexthop value to be assigned to a route exported from
2235 the current unicast VRF to VPN. If left unspecified, the nexthop will be set
2236 to 0.0.0.0 or 0:0::0:0 (self).
b572f826
PZ
2237
2238.. index:: no nexthop vpn export [A.B.C.D|X:X::X:X]
2239.. clicmd:: no nexthop vpn export [A.B.C.D|X:X::X:X]
2240
2241 Deletes any previously-configured export nexthop.
2242
2243.. index:: route-map vpn import|export MAP
2244.. clicmd:: route-map vpn import|export MAP
2245
4da7fda3 2246 Specifies an optional route-map to be applied to routes imported or exported
d1e7591e 2247 between the current unicast VRF and VPN.
b572f826
PZ
2248
2249.. index:: no route-map vpn import|export [MAP]
2250.. clicmd:: no route-map vpn import|export [MAP]
2251
2252 Deletes any previously-configured import or export route-map.
2253
2254.. index:: import|export vpn
2255.. clicmd:: import|export vpn
2256
d1e7591e 2257 Enables import or export of routes between the current unicast VRF and VPN.
b572f826
PZ
2258
2259.. index:: no import|export vpn
2260.. clicmd:: no import|export vpn
2261
d1e7591e 2262 Disables import or export of routes between the current unicast VRF and VPN.
b572f826 2263
fb3d9f3e
DS
2264.. index:: import vrf VRFNAME
2265.. clicmd:: import vrf VRFNAME
2266
e967a1d0
DS
2267 Shortcut syntax for specifying automatic leaking from vrf VRFNAME to
2268 the current VRF using the VPN RIB as intermediary. The RD and RT
2269 are auto derived and should not be specified explicitly for either the
2270 source or destination VRF's.
2271
2272 This shortcut syntax mode is not compatible with the explicit
2273 `import vpn` and `export vpn` statements for the two VRF's involved.
2274 The CLI will disallow attempts to configure incompatible leaking
2275 modes.
fb3d9f3e
DS
2276
2277.. index:: no import vrf VRFNAME
2278.. clicmd:: no import vrf VRFNAME
2279
e967a1d0
DS
2280 Disables automatic leaking from vrf VRFNAME to the current VRF using
2281 the VPN RIB as intermediary.
b572f826 2282
42fc5d26 2283
b6c34e85
CS
2284.. _bgp-evpn:
2285
2286Ethernet Virtual Network - EVPN
2287-------------------------------
2288
2289.. _bgp-evpn-advertise-pip:
2290
2291EVPN advertise-PIP
2292^^^^^^^^^^^^^^^^^^
2293
2294In a EVPN symmetric routing MLAG deployment, all EVPN routes advertised
2295with anycast-IP as next-hop IP and anycast MAC as the Router MAC (RMAC - in
2296BGP EVPN Extended-Community).
2297EVPN picks up the next-hop IP from the VxLAN interface's local tunnel IP and
2298the RMAC is obtained from the MAC of the L3VNI's SVI interface.
2299Note: Next-hop IP is used for EVPN routes whether symmetric routing is
2300deployed or not but the RMAC is only relevant for symmetric routing scenario.
2301
2302Current behavior is not ideal for Prefix (type-5) and self (type-2)
2303routes. This is because the traffic from remote VTEPs routed sub optimally
2304if they land on the system where the route does not belong.
2305
2306The advertise-pip feature advertises Prefix (type-5) and self (type-2)
2307routes with system's individual (primary) IP as the next-hop and individual
2308(system) MAC as Router-MAC (RMAC), while leaving the behavior unchanged for
2309other EVPN routes.
2310
2311To support this feature there needs to have ability to co-exist a
2312(system-MAC, system-IP) pair with a (anycast-MAC, anycast-IP) pair with the
2313ability to terminate VxLAN-encapsulated packets received for either pair on
2314the same L3VNI (i.e associated VLAN). This capability is need per tenant
2315VRF instance.
2316
2317To derive the system-MAC and the anycast MAC, there needs to have a
2318separate/additional MAC-VLAN interface corresponding to L3VNI’s SVI.
2319The SVI interface’s MAC address can be interpreted as system-MAC
2320and MAC-VLAN interface's MAC as anycast MAC.
2321
2322To derive system-IP and anycast-IP, the default BGP instance's router-id is used
2323as system-IP and the VxLAN interface’s local tunnel IP as the anycast-IP.
2324
2325User has an option to configure the system-IP and/or system-MAC value if the
2326auto derived value is not preferred.
2327
2328Note: By default, advertise-pip feature is enabled and user has an option to
2329disable the feature via configuration CLI. Once the feature is disable under
2330bgp vrf instance or MAC-VLAN interface is not configured, all the routes follow
2331the same behavior of using same next-hop and RMAC values.
2332
2333.. index:: [no] advertise-pip [ip <addr> [mac <addr>]]
2334.. clicmd:: [no] advertise-pip [ip <addr> [mac <addr>]]
2335
2336Enables or disables advertise-pip feature, specifiy system-IP and/or system-MAC
2337parameters.
2338
8fcedbd2 2339.. _bgp-cisco-compatibility:
42fc5d26 2340
8fcedbd2
QY
2341Cisco Compatibility
2342-------------------
42fc5d26 2343
8fcedbd2
QY
2344FRR has commands that change some configuration syntax and default behavior to
2345behave more closely to Cisco conventions. These are deprecated and will be
2346removed in a future version of FRR.
42fc5d26 2347
8fcedbd2
QY
2348.. deprecated:: 5.0
2349 Please transition to using the FRR specific syntax for your configuration.
42fc5d26 2350
8fcedbd2
QY
2351.. index:: bgp config-type cisco
2352.. clicmd:: bgp config-type cisco
42fc5d26 2353
8fcedbd2 2354 Cisco compatible BGP configuration output.
42fc5d26 2355
8fcedbd2 2356 When this configuration line is specified:
c1a54c05 2357
8fcedbd2
QY
2358 - ``no synchronization`` is displayed. This command does nothing and is for
2359 display purposes only.
2360 - ``no auto-summary`` is displayed.
2361 - The ``network`` and ``aggregate-address`` arguments are displayed as:
42fc5d26 2362
8fcedbd2 2363 ::
42fc5d26 2364
8fcedbd2 2365 A.B.C.D M.M.M.M
42fc5d26 2366
8fcedbd2
QY
2367 FRR: network 10.0.0.0/8
2368 Cisco: network 10.0.0.0
42fc5d26 2369
8fcedbd2
QY
2370 FRR: aggregate-address 192.168.0.0/24
2371 Cisco: aggregate-address 192.168.0.0 255.255.255.0
42fc5d26 2372
8fcedbd2
QY
2373 Community attribute handling is also different. If no configuration is
2374 specified community attribute and extended community attribute are sent to
2375 the neighbor. If a user manually disables the feature, the community
2376 attribute is not sent to the neighbor. When ``bgp config-type cisco`` is
2377 specified, the community attribute is not sent to the neighbor by default.
2378 To send the community attribute user has to specify
2379 :clicmd:`neighbor A.B.C.D send-community` like so:
42fc5d26 2380
8fcedbd2 2381 .. code-block:: frr
42fc5d26 2382
8fcedbd2
QY
2383 !
2384 router bgp 1
2385 neighbor 10.0.0.1 remote-as 1
2386 address-family ipv4 unicast
2387 no neighbor 10.0.0.1 send-community
2388 exit-address-family
2389 !
2390 router bgp 1
2391 neighbor 10.0.0.1 remote-as 1
2392 address-family ipv4 unicast
2393 neighbor 10.0.0.1 send-community
2394 exit-address-family
2395 !
42fc5d26 2396
8fcedbd2
QY
2397.. deprecated:: 5.0
2398 Please transition to using the FRR specific syntax for your configuration.
2399
2400.. index:: bgp config-type zebra
2401.. clicmd:: bgp config-type zebra
2402
2403 FRR style BGP configuration. This is the default.
2404
2405.. _bgp-debugging:
2406
2407Debugging
2408---------
42fc5d26 2409
c1a54c05 2410.. index:: show debug
29adcd50 2411.. clicmd:: show debug
42fc5d26 2412
8fcedbd2 2413 Show all enabled debugs.
42fc5d26 2414
54422b46
DS
2415.. index:: show bgp listeners
2416.. clicmd:: show bgp listeners
2417
2418 Display Listen sockets and the vrf that created them. Useful for debugging of when
2419 listen is not working and this is considered a developer debug statement.
2420
53b758f3
PG
2421.. index:: [no] debug bgp neighbor-events
2422.. clicmd:: [no] debug bgp neighbor-events
42fc5d26 2423
8fcedbd2
QY
2424 Enable or disable debugging for neighbor events. This provides general
2425 information on BGP events such as peer connection / disconnection, session
2426 establishment / teardown, and capability negotiation.
42fc5d26 2427
53b758f3
PG
2428.. index:: [no] debug bgp updates
2429.. clicmd:: [no] debug bgp updates
42fc5d26 2430
8fcedbd2
QY
2431 Enable or disable debugging for BGP updates. This provides information on
2432 BGP UPDATE messages transmitted and received between local and remote
2433 instances.
42fc5d26 2434
53b758f3
PG
2435.. index:: [no] debug bgp keepalives
2436.. clicmd:: [no] debug bgp keepalives
42fc5d26 2437
8fcedbd2
QY
2438 Enable or disable debugging for BGP keepalives. This provides information on
2439 BGP KEEPALIVE messages transmitted and received between local and remote
2440 instances.
c1a54c05 2441
8fcedbd2
QY
2442.. index:: [no] debug bgp bestpath <A.B.C.D/M|X:X::X:X/M>
2443.. clicmd:: [no] debug bgp bestpath <A.B.C.D/M|X:X::X:X/M>
42fc5d26 2444
8fcedbd2 2445 Enable or disable debugging for bestpath selection on the specified prefix.
42fc5d26 2446
8fcedbd2
QY
2447.. index:: [no] debug bgp nht
2448.. clicmd:: [no] debug bgp nht
4da7fda3 2449
8fcedbd2 2450 Enable or disable debugging of BGP nexthop tracking.
4da7fda3 2451
8fcedbd2
QY
2452.. index:: [no] debug bgp update-groups
2453.. clicmd:: [no] debug bgp update-groups
4b44467c 2454
8fcedbd2
QY
2455 Enable or disable debugging of dynamic update groups. This provides general
2456 information on group creation, deletion, join and prune events.
4b44467c 2457
8fcedbd2
QY
2458.. index:: [no] debug bgp zebra
2459.. clicmd:: [no] debug bgp zebra
42fc5d26 2460
8fcedbd2 2461 Enable or disable debugging of communications between *bgpd* and *zebra*.
c3c5a71f 2462
8fcedbd2
QY
2463Dumping Messages and Routing Tables
2464^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42fc5d26 2465
8fcedbd2
QY
2466.. index:: dump bgp all PATH [INTERVAL]
2467.. clicmd:: dump bgp all PATH [INTERVAL]
42fc5d26 2468
8fcedbd2
QY
2469.. index:: dump bgp all-et PATH [INTERVAL]
2470.. clicmd:: dump bgp all-et PATH [INTERVAL]
c3c5a71f 2471
8fcedbd2
QY
2472.. index:: no dump bgp all [PATH] [INTERVAL]
2473.. clicmd:: no dump bgp all [PATH] [INTERVAL]
42fc5d26 2474
8fcedbd2
QY
2475 Dump all BGP packet and events to `path` file.
2476 If `interval` is set, a new file will be created for echo `interval` of
2477 seconds. The path `path` can be set with date and time formatting
2478 (strftime). The type ‘all-et’ enables support for Extended Timestamp Header
2479 (:ref:`packet-binary-dump-format`).
c3c5a71f 2480
8fcedbd2
QY
2481.. index:: dump bgp updates PATH [INTERVAL]
2482.. clicmd:: dump bgp updates PATH [INTERVAL]
42fc5d26 2483
8fcedbd2
QY
2484.. index:: dump bgp updates-et PATH [INTERVAL]
2485.. clicmd:: dump bgp updates-et PATH [INTERVAL]
42fc5d26 2486
8fcedbd2
QY
2487.. index:: no dump bgp updates [PATH] [INTERVAL]
2488.. clicmd:: no dump bgp updates [PATH] [INTERVAL]
42fc5d26 2489
8fcedbd2
QY
2490 Dump only BGP updates messages to `path` file.
2491 If `interval` is set, a new file will be created for echo `interval` of
2492 seconds. The path `path` can be set with date and time formatting
2493 (strftime). The type ‘updates-et’ enables support for Extended Timestamp
2494 Header (:ref:`packet-binary-dump-format`).
42fc5d26 2495
8fcedbd2
QY
2496.. index:: dump bgp routes-mrt PATH
2497.. clicmd:: dump bgp routes-mrt PATH
c3c5a71f 2498
8fcedbd2
QY
2499.. index:: dump bgp routes-mrt PATH INTERVAL
2500.. clicmd:: dump bgp routes-mrt PATH INTERVAL
42fc5d26 2501
8fcedbd2
QY
2502.. index:: no dump bgp route-mrt [PATH] [INTERVAL]
2503.. clicmd:: no dump bgp route-mrt [PATH] [INTERVAL]
42fc5d26 2504
8fcedbd2
QY
2505 Dump whole BGP routing table to `path`. This is heavy process. The path
2506 `path` can be set with date and time formatting (strftime). If `interval` is
2507 set, a new file will be created for echo `interval` of seconds.
42fc5d26 2508
8fcedbd2 2509 Note: the interval variable can also be set using hours and minutes: 04h20m00.
42fc5d26 2510
c3c5a71f 2511
8fcedbd2 2512.. _bgp-other-commands:
42fc5d26 2513
8fcedbd2
QY
2514Other BGP Commands
2515------------------
42fc5d26 2516
e312b6c6
QY
2517The following are available in the top level *enable* mode:
2518
dc912615
DS
2519.. index:: clear bgp \*
2520.. clicmd:: clear bgp \*
2521
2522 Clear all peers.
2523
8fcedbd2
QY
2524.. index:: clear bgp ipv4|ipv6 \*
2525.. clicmd:: clear bgp ipv4|ipv6 \*
42fc5d26 2526
dc912615
DS
2527 Clear all peers with this address-family activated.
2528
2529.. index:: clear bgp ipv4|ipv6 unicast \*
2530.. clicmd:: clear bgp ipv4|ipv6 unicast \*
2531
2532 Clear all peers with this address-family and sub-address-family activated.
42fc5d26 2533
8fcedbd2
QY
2534.. index:: clear bgp ipv4|ipv6 PEER
2535.. clicmd:: clear bgp ipv4|ipv6 PEER
42fc5d26 2536
dc912615
DS
2537 Clear peers with address of X.X.X.X and this address-family activated.
2538
2539.. index:: clear bgp ipv4|ipv6 unicast PEER
2540.. clicmd:: clear bgp ipv4|ipv6 unicast PEER
2541
2542 Clear peer with address of X.X.X.X and this address-family and sub-address-family activated.
2543
2544.. index:: clear bgp ipv4|ipv6 PEER soft|in|out
2545.. clicmd:: clear bgp ipv4|ipv6 PEER soft|in|out
2546
2547 Clear peer using soft reconfiguration in this address-family.
42fc5d26 2548
dc912615
DS
2549.. index:: clear bgp ipv4|ipv6 unicast PEER soft|in|out
2550.. clicmd:: clear bgp ipv4|ipv6 unicast PEER soft|in|out
42fc5d26 2551
dc912615 2552 Clear peer using soft reconfiguration in this address-family and sub-address-family.
42fc5d26 2553
e312b6c6
QY
2554The following are available in the ``router bgp`` mode:
2555
2556.. index:: write-quanta (1-64)
2557.. clicmd:: write-quanta (1-64)
2558
2559 BGP message Tx I/O is vectored. This means that multiple packets are written
2560 to the peer socket at the same time each I/O cycle, in order to minimize
2561 system call overhead. This value controls how many are written at a time.
2562 Under certain load conditions, reducing this value could make peer traffic
2563 less 'bursty'. In practice, leave this settings on the default (64) unless
2564 you truly know what you are doing.
2565
2566.. index:: read-quanta (1-10)
dad83b67 2567.. clicmd:: read-quanta (1-10)
e312b6c6
QY
2568
2569 Unlike Tx, BGP Rx traffic is not vectored. Packets are read off the wire one
2570 at a time in a loop. This setting controls how many iterations the loop runs
2571 for. As with write-quanta, it is best to leave this setting on the default.
42fc5d26 2572
8fcedbd2 2573.. _bgp-displaying-bgp-information:
42fc5d26 2574
8fcedbd2
QY
2575Displaying BGP Information
2576==========================
42fc5d26 2577
e6f59415
PG
2578The following four commands display the IPv6 and IPv4 routing tables, depending
2579on whether or not the ``ip`` keyword is used.
2580Actually, :clicmd:`show ip bgp` command was used on older `Quagga` routing
2581daemon project, while :clicmd:`show bgp` command is the new format. The choice
2582has been done to keep old format with IPv4 routing table, while new format
2583displays IPv6 routing table.
2584
8fcedbd2
QY
2585.. index:: show ip bgp
2586.. clicmd:: show ip bgp
42fc5d26 2587
8fcedbd2
QY
2588.. index:: show ip bgp A.B.C.D
2589.. clicmd:: show ip bgp A.B.C.D
c1a54c05 2590
e6f59415
PG
2591.. index:: show bgp
2592.. clicmd:: show bgp
2593
2594.. index:: show bgp X:X::X:X
2595.. clicmd:: show bgp X:X::X:X
42fc5d26 2596
8fcedbd2 2597 These commands display BGP routes. When no route is specified, the default
e6f59415 2598 is to display all BGP routes.
42fc5d26 2599
8fcedbd2 2600 ::
c1a54c05 2601
8fcedbd2
QY
2602 BGP table version is 0, local router ID is 10.1.1.1
2603 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
2604 Origin codes: i - IGP, e - EGP, ? - incomplete
42fc5d26 2605
8fcedbd2
QY
2606 Network Next Hop Metric LocPrf Weight Path
2607 \*> 1.1.1.1/32 0.0.0.0 0 32768 i
42fc5d26 2608
8fcedbd2 2609 Total number of prefixes 1
4da7fda3 2610
e6f59415
PG
2611Some other commands provide additional options for filtering the output.
2612
2613.. index:: show [ip] bgp regexp LINE
2614.. clicmd:: show [ip] bgp regexp LINE
42fc5d26 2615
8fcedbd2
QY
2616 This command displays BGP routes using AS path regular expression
2617 (:ref:`bgp-regular-expressions`).
42fc5d26 2618
e6f59415
PG
2619.. index:: show [ip] bgp summary
2620.. clicmd:: show [ip] bgp summary
42fc5d26 2621
8fcedbd2 2622 Show a bgp peer summary for the specified address family.
42fc5d26 2623
e6f59415
PG
2624The old command structure :clicmd:`show ip bgp` may be removed in the future
2625and should no longer be used. In order to reach the other BGP routing tables
2626other than the IPv6 routing table given by :clicmd:`show bgp`, the new command
2627structure is extended with :clicmd:`show bgp [afi] [safi]`.
2628
2629.. index:: show bgp [afi] [safi]
2630.. clicmd:: show bgp [afi] [safi]
2631
2632.. index:: show bgp <ipv4|ipv6> <unicast|multicast|vpn|labeled-unicast>
2633.. clicmd:: show bgp <ipv4|ipv6> <unicast|multicast|vpn|labeled-unicast>
2634
2635 These commands display BGP routes for the specific routing table indicated by
2636 the selected afi and the selected safi. If no afi and no safi value is given,
2637 the command falls back to the default IPv6 routing table
2638
2639.. index:: show bgp [afi] [safi] summary
2640.. clicmd:: show bgp [afi] [safi] summary
2641
2642 Show a bgp peer summary for the specified address family, and subsequent
2643 address-family.
2644
3577f1c5
DD
2645.. index:: show bgp [afi] [safi] summary failed [json]
2646.. clicmd:: show bgp [afi] [safi] summary failed [json]
2647
2648 Show a bgp peer summary for peers that are not succesfully exchanging routes
2649 for the specified address family, and subsequent address-family.
2650
e6f59415
PG
2651.. index:: show bgp [afi] [safi] neighbor [PEER]
2652.. clicmd:: show bgp [afi] [safi] neighbor [PEER]
9eb95b3b 2653
e6f59415
PG
2654 This command shows information on a specific BGP peer of the relevant
2655 afi and safi selected.
c1a54c05 2656
e6f59415
PG
2657.. index:: show bgp [afi] [safi] dampening dampened-paths
2658.. clicmd:: show bgp [afi] [safi] dampening dampened-paths
42fc5d26 2659
e6f59415
PG
2660 Display paths suppressed due to dampening of the selected afi and safi
2661 selected.
42fc5d26 2662
e6f59415
PG
2663.. index:: show bgp [afi] [safi] dampening flap-statistics
2664.. clicmd:: show bgp [afi] [safi] dampening flap-statistics
c1a54c05 2665
e6f59415 2666 Display flap statistics of routes of the selected afi and safi selected.
42fc5d26 2667
8fcedbd2 2668.. _bgp-display-routes-by-community:
42fc5d26 2669
8fcedbd2
QY
2670Displaying Routes by Community Attribute
2671----------------------------------------
42fc5d26 2672
8fcedbd2
QY
2673The following commands allow displaying routes based on their community
2674attribute.
42fc5d26 2675
8fcedbd2
QY
2676.. index:: show [ip] bgp <ipv4|ipv6> community
2677.. clicmd:: show [ip] bgp <ipv4|ipv6> community
42fc5d26 2678
8fcedbd2
QY
2679.. index:: show [ip] bgp <ipv4|ipv6> community COMMUNITY
2680.. clicmd:: show [ip] bgp <ipv4|ipv6> community COMMUNITY
42fc5d26 2681
8fcedbd2
QY
2682.. index:: show [ip] bgp <ipv4|ipv6> community COMMUNITY exact-match
2683.. clicmd:: show [ip] bgp <ipv4|ipv6> community COMMUNITY exact-match
76bd1499 2684
8fcedbd2
QY
2685 These commands display BGP routes which have the community attribute.
2686 attribute. When ``COMMUNITY`` is specified, BGP routes that match that
2687 community are displayed. When `exact-match` is specified, it display only
2688 routes that have an exact match.
c3c5a71f 2689
8fcedbd2
QY
2690.. index:: show [ip] bgp <ipv4|ipv6> community-list WORD
2691.. clicmd:: show [ip] bgp <ipv4|ipv6> community-list WORD
42fc5d26 2692
8fcedbd2
QY
2693.. index:: show [ip] bgp <ipv4|ipv6> community-list WORD exact-match
2694.. clicmd:: show [ip] bgp <ipv4|ipv6> community-list WORD exact-match
42fc5d26 2695
8fcedbd2
QY
2696 These commands display BGP routes for the address family specified that
2697 match the specified community list. When `exact-match` is specified, it
2698 displays only routes that have an exact match.
42fc5d26 2699
36a206db 2700.. _bgp-display-routes-by-lcommunity:
2701
2702Displaying Routes by Large Community Attribute
2703----------------------------------------------
2704
ac2201bb 2705The following commands allow displaying routes based on their
36a206db 2706large community attribute.
2707
2708.. index:: show [ip] bgp <ipv4|ipv6> large-community
2709.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community
2710
2711.. index:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY
2712.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY
2713
2714.. index:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY exact-match
2715.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY exact-match
2716
2717.. index:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY json
2718.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community LARGE-COMMUNITY json
2719
2720 These commands display BGP routes which have the large community attribute.
2721 attribute. When ``LARGE-COMMUNITY`` is specified, BGP routes that match that
ac2201bb
DA
2722 large community are displayed. When `exact-match` is specified, it display
2723 only routes that have an exact match. When `json` is specified, it display
36a206db 2724 routes in json format.
2725
2726.. index:: show [ip] bgp <ipv4|ipv6> large-community-list WORD
2727.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community-list WORD
2728
2729.. index:: show [ip] bgp <ipv4|ipv6> large-community-list WORD exact-match
2730.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community-list WORD exact-match
2731
2732.. index:: show [ip] bgp <ipv4|ipv6> large-community-list WORD json
2733.. clicmd:: show [ip] bgp <ipv4|ipv6> large-community-list WORD json
2734
2735 These commands display BGP routes for the address family specified that
ac2201bb
DA
2736 match the specified large community list. When `exact-match` is specified,
2737 it displays only routes that have an exact match. When `json` is specified,
36a206db 2738 it display routes in json format.
2739
8fcedbd2 2740.. _bgp-display-routes-by-as-path:
42fc5d26 2741
36a206db 2742
8fcedbd2
QY
2743Displaying Routes by AS Path
2744----------------------------
42fc5d26 2745
8fcedbd2
QY
2746.. index:: show bgp ipv4|ipv6 regexp LINE
2747.. clicmd:: show bgp ipv4|ipv6 regexp LINE
76bd1499 2748
8fcedbd2
QY
2749 This commands displays BGP routes that matches a regular
2750 expression `line` (:ref:`bgp-regular-expressions`).
2751
e6f59415
PG
2752.. index:: show [ip] bgp ipv4 vpn
2753.. clicmd:: show [ip] bgp ipv4 vpn
8fcedbd2 2754
e6f59415
PG
2755.. index:: show [ip] bgp ipv6 vpn
2756.. clicmd:: show [ip] bgp ipv6 vpn
8fcedbd2
QY
2757
2758 Print active IPV4 or IPV6 routes advertised via the VPN SAFI.
2759
2760.. index:: show bgp ipv4 vpn summary
2761.. clicmd:: show bgp ipv4 vpn summary
2762
2763.. index:: show bgp ipv6 vpn summary
2764.. clicmd:: show bgp ipv6 vpn summary
2765
2766 Print a summary of neighbor connections for the specified AFI/SAFI combination.
2767
09d78f10
DS
2768Displaying Update Group Information
2769-----------------------------------
2770
2771..index:: show bgp update-groups SUBGROUP-ID [advertise-queue|advertised-routes|packet-queue]
2772..clicmd:: show bgp update-groups [advertise-queue|advertised-routes|packet-queue]
2773
2774 Display Information about each individual update-group being used.
2775 If SUBGROUP-ID is specified only display about that particular group. If
2776 advertise-queue is specified the list of routes that need to be sent
2777 to the peers in the update-group is displayed, advertised-routes means
a64e0ee5 2778 the list of routes we have sent to the peers in the update-group and
09d78f10
DS
2779 packet-queue specifies the list of packets in the queue to be sent.
2780
2781..index:: show bgp update-groups statistics
2782..clicmd:: show bgp update-groups statistics
2783
2784 Display Information about update-group events in FRR.
8fcedbd2
QY
2785
2786.. _bgp-route-reflector:
2787
2788Route Reflector
2789===============
2790
749afd7d
RF
2791BGP routers connected inside the same AS through BGP belong to an internal
2792BGP session, or IBGP. In order to prevent routing table loops, IBGP does not
2793advertise IBGP-learned routes to other routers in the same session. As such,
2794IBGP requires a full mesh of all peers. For large networks, this quickly becomes
2795unscalable. Introducing route reflectors removes the need for the full-mesh.
8fcedbd2 2796
749afd7d
RF
2797When route reflectors are configured, these will reflect the routes announced
2798by the peers configured as clients. A route reflector client is configured
2799with:
8fcedbd2
QY
2800
2801.. index:: neighbor PEER route-reflector-client
2802.. clicmd:: neighbor PEER route-reflector-client
2803
2804.. index:: no neighbor PEER route-reflector-client
2805.. clicmd:: no neighbor PEER route-reflector-client
c3c5a71f 2806
749afd7d
RF
2807To avoid single points of failure, multiple route reflectors can be configured.
2808
2809A cluster is a collection of route reflectors and their clients, and is used
2810by route reflectors to avoid looping.
2811
2812.. index:: bgp cluster-id A.B.C.D
2813.. clicmd:: bgp cluster-id A.B.C.D
42fc5d26 2814
0efdf0fe 2815.. _routing-policy:
42fc5d26 2816
8fcedbd2
QY
2817Routing Policy
2818==============
42fc5d26 2819
4da7fda3 2820You can set different routing policy for a peer. For example, you can set
9eb95b3b
QY
2821different filter for a peer.
2822
2823.. code-block:: frr
c1a54c05 2824
c1a54c05
QY
2825 !
2826 router bgp 1 view 1
2827 neighbor 10.0.0.1 remote-as 2
2828 address-family ipv4 unicast
2829 neighbor 10.0.0.1 distribute-list 1 in
2830 exit-address-family
2831 !
2832 router bgp 1 view 2
2833 neighbor 10.0.0.1 remote-as 2
2834 address-family ipv4 unicast
2835 neighbor 10.0.0.1 distribute-list 2 in
2836 exit-address-family
c3c5a71f 2837
4da7fda3
QY
2838This means BGP update from a peer 10.0.0.1 goes to both BGP view 1 and view 2.
2839When the update is inserted into view 1, distribute-list 1 is applied. On the
2840other hand, when the update is inserted into view 2, distribute-list 2 is
2841applied.
42fc5d26 2842
42fc5d26 2843
0efdf0fe 2844.. _bgp-regular-expressions:
42fc5d26
QY
2845
2846BGP Regular Expressions
2847=======================
2848
8fcedbd2
QY
2849BGP regular expressions are based on :t:`POSIX 1003.2` regular expressions. The
2850following description is just a quick subset of the POSIX regular expressions.
42fc5d26
QY
2851
2852
8fcedbd2 2853.\*
c1a54c05 2854 Matches any single character.
42fc5d26 2855
8fcedbd2 2856\*
c1a54c05 2857 Matches 0 or more occurrences of pattern.
42fc5d26 2858
8fcedbd2 2859\+
c1a54c05 2860 Matches 1 or more occurrences of pattern.
42fc5d26
QY
2861
2862?
c1a54c05 2863 Match 0 or 1 occurrences of pattern.
42fc5d26
QY
2864
2865^
c1a54c05 2866 Matches the beginning of the line.
42fc5d26
QY
2867
2868$
c1a54c05 2869 Matches the end of the line.
42fc5d26
QY
2870
2871_
8fcedbd2
QY
2872 The ``_`` character has special meanings in BGP regular expressions. It
2873 matches to space and comma , and AS set delimiter ``{`` and ``}`` and AS
2874 confederation delimiter ``(`` and ``)``. And it also matches to the
2875 beginning of the line and the end of the line. So ``_`` can be used for AS
2876 value boundaries match. This character technically evaluates to
2877 ``(^|[,{}()]|$)``.
42fc5d26 2878
42fc5d26 2879
c1a54c05 2880.. _bgp-configuration-examples:
42fc5d26 2881
8fcedbd2
QY
2882Miscellaneous Configuration Examples
2883====================================
42fc5d26 2884
9eb95b3b
QY
2885Example of a session to an upstream, advertising only one prefix to it.
2886
2887.. code-block:: frr
42fc5d26 2888
c1a54c05
QY
2889 router bgp 64512
2890 bgp router-id 10.236.87.1
2891 neighbor upstream peer-group
2892 neighbor upstream remote-as 64515
2893 neighbor upstream capability dynamic
2894 neighbor 10.1.1.1 peer-group upstream
2895 neighbor 10.1.1.1 description ACME ISP
c3c5a71f 2896
c1a54c05
QY
2897 address-family ipv4 unicast
2898 network 10.236.87.0/24
2899 neighbor upstream prefix-list pl-allowed-adv out
2900 exit-address-family
2901 !
2902 ip prefix-list pl-allowed-adv seq 5 permit 82.195.133.0/25
2903 ip prefix-list pl-allowed-adv seq 10 deny any
42fc5d26 2904
aa9eafa4
QY
2905A more complex example including upstream, peer and customer sessions
2906advertising global prefixes and NO_EXPORT prefixes and providing actions for
2907customer routes based on community values. Extensive use is made of route-maps
2908and the 'call' feature to support selective advertising of prefixes. This
2909example is intended as guidance only, it has NOT been tested and almost
2910certainly contains silly mistakes, if not serious flaws.
42fc5d26 2911
9eb95b3b 2912.. code-block:: frr
42fc5d26 2913
c1a54c05
QY
2914 router bgp 64512
2915 bgp router-id 10.236.87.1
2916 neighbor upstream capability dynamic
2917 neighbor cust capability dynamic
2918 neighbor peer capability dynamic
2919 neighbor 10.1.1.1 remote-as 64515
2920 neighbor 10.1.1.1 peer-group upstream
2921 neighbor 10.2.1.1 remote-as 64516
2922 neighbor 10.2.1.1 peer-group upstream
2923 neighbor 10.3.1.1 remote-as 64517
2924 neighbor 10.3.1.1 peer-group cust-default
2925 neighbor 10.3.1.1 description customer1
2926 neighbor 10.4.1.1 remote-as 64518
2927 neighbor 10.4.1.1 peer-group cust
2928 neighbor 10.4.1.1 description customer2
2929 neighbor 10.5.1.1 remote-as 64519
2930 neighbor 10.5.1.1 peer-group peer
2931 neighbor 10.5.1.1 description peer AS 1
2932 neighbor 10.6.1.1 remote-as 64520
2933 neighbor 10.6.1.1 peer-group peer
2934 neighbor 10.6.1.1 description peer AS 2
2935
2936 address-family ipv4 unicast
2937 network 10.123.456.0/24
2938 network 10.123.456.128/25 route-map rm-no-export
2939 neighbor upstream route-map rm-upstream-out out
2940 neighbor cust route-map rm-cust-in in
2941 neighbor cust route-map rm-cust-out out
2942 neighbor cust send-community both
2943 neighbor peer route-map rm-peer-in in
2944 neighbor peer route-map rm-peer-out out
2945 neighbor peer send-community both
2946 neighbor 10.3.1.1 prefix-list pl-cust1-network in
2947 neighbor 10.4.1.1 prefix-list pl-cust2-network in
2948 neighbor 10.5.1.1 prefix-list pl-peer1-network in
2949 neighbor 10.6.1.1 prefix-list pl-peer2-network in
2950 exit-address-family
2951 !
2952 ip prefix-list pl-default permit 0.0.0.0/0
2953 !
2954 ip prefix-list pl-upstream-peers permit 10.1.1.1/32
2955 ip prefix-list pl-upstream-peers permit 10.2.1.1/32
2956 !
2957 ip prefix-list pl-cust1-network permit 10.3.1.0/24
2958 ip prefix-list pl-cust1-network permit 10.3.2.0/24
2959 !
2960 ip prefix-list pl-cust2-network permit 10.4.1.0/24
2961 !
2962 ip prefix-list pl-peer1-network permit 10.5.1.0/24
2963 ip prefix-list pl-peer1-network permit 10.5.2.0/24
2964 ip prefix-list pl-peer1-network permit 192.168.0.0/24
2965 !
2966 ip prefix-list pl-peer2-network permit 10.6.1.0/24
2967 ip prefix-list pl-peer2-network permit 10.6.2.0/24
2968 ip prefix-list pl-peer2-network permit 192.168.1.0/24
2969 ip prefix-list pl-peer2-network permit 192.168.2.0/24
2970 ip prefix-list pl-peer2-network permit 172.16.1/24
2971 !
2972 ip as-path access-list asp-own-as permit ^$
2973 ip as-path access-list asp-own-as permit _64512_
2974 !
2975 ! #################################################################
2976 ! Match communities we provide actions for, on routes receives from
2977 ! customers. Communities values of <our-ASN>:X, with X, have actions:
2978 !
2979 ! 100 - blackhole the prefix
2980 ! 200 - set no_export
2981 ! 300 - advertise only to other customers
2982 ! 400 - advertise only to upstreams
2983 ! 500 - set no_export when advertising to upstreams
2984 ! 2X00 - set local_preference to X00
2985 !
2986 ! blackhole the prefix of the route
a64e0ee5 2987 bgp community-list standard cm-blackhole permit 64512:100
c1a54c05
QY
2988 !
2989 ! set no-export community before advertising
a64e0ee5 2990 bgp community-list standard cm-set-no-export permit 64512:200
c1a54c05
QY
2991 !
2992 ! advertise only to other customers
a64e0ee5 2993 bgp community-list standard cm-cust-only permit 64512:300
c1a54c05
QY
2994 !
2995 ! advertise only to upstreams
a64e0ee5 2996 bgp community-list standard cm-upstream-only permit 64512:400
c1a54c05
QY
2997 !
2998 ! advertise to upstreams with no-export
a64e0ee5 2999 bgp community-list standard cm-upstream-noexport permit 64512:500
c1a54c05
QY
3000 !
3001 ! set local-pref to least significant 3 digits of the community
a64e0ee5
DA
3002 bgp community-list standard cm-prefmod-100 permit 64512:2100
3003 bgp community-list standard cm-prefmod-200 permit 64512:2200
3004 bgp community-list standard cm-prefmod-300 permit 64512:2300
3005 bgp community-list standard cm-prefmod-400 permit 64512:2400
3006 bgp community-list expanded cme-prefmod-range permit 64512:2...
c1a54c05
QY
3007 !
3008 ! Informational communities
3009 !
3010 ! 3000 - learned from upstream
3011 ! 3100 - learned from customer
3012 ! 3200 - learned from peer
3013 !
a64e0ee5
DA
3014 bgp community-list standard cm-learnt-upstream permit 64512:3000
3015 bgp community-list standard cm-learnt-cust permit 64512:3100
3016 bgp community-list standard cm-learnt-peer permit 64512:3200
c1a54c05
QY
3017 !
3018 ! ###################################################################
3019 ! Utility route-maps
3020 !
3021 ! These utility route-maps generally should not used to permit/deny
3022 ! routes, i.e. they do not have meaning as filters, and hence probably
3023 ! should be used with 'on-match next'. These all finish with an empty
3024 ! permit entry so as not interfere with processing in the caller.
3025 !
3026 route-map rm-no-export permit 10
3027 set community additive no-export
3028 route-map rm-no-export permit 20
3029 !
3030 route-map rm-blackhole permit 10
f6aa36f5 3031 description blackhole, up-pref and ensure it cannot escape this AS
c1a54c05
QY
3032 set ip next-hop 127.0.0.1
3033 set local-preference 10
3034 set community additive no-export
3035 route-map rm-blackhole permit 20
3036 !
3037 ! Set local-pref as requested
3038 route-map rm-prefmod permit 10
3039 match community cm-prefmod-100
3040 set local-preference 100
3041 route-map rm-prefmod permit 20
3042 match community cm-prefmod-200
3043 set local-preference 200
3044 route-map rm-prefmod permit 30
3045 match community cm-prefmod-300
3046 set local-preference 300
3047 route-map rm-prefmod permit 40
3048 match community cm-prefmod-400
3049 set local-preference 400
3050 route-map rm-prefmod permit 50
3051 !
3052 ! Community actions to take on receipt of route.
3053 route-map rm-community-in permit 10
3054 description check for blackholing, no point continuing if it matches.
3055 match community cm-blackhole
3056 call rm-blackhole
3057 route-map rm-community-in permit 20
3058 match community cm-set-no-export
3059 call rm-no-export
3060 on-match next
3061 route-map rm-community-in permit 30
3062 match community cme-prefmod-range
3063 call rm-prefmod
3064 route-map rm-community-in permit 40
3065 !
3066 ! #####################################################################
3067 ! Community actions to take when advertising a route.
3068 ! These are filtering route-maps,
3069 !
3070 ! Deny customer routes to upstream with cust-only set.
3071 route-map rm-community-filt-to-upstream deny 10
3072 match community cm-learnt-cust
3073 match community cm-cust-only
3074 route-map rm-community-filt-to-upstream permit 20
3075 !
3076 ! Deny customer routes to other customers with upstream-only set.
3077 route-map rm-community-filt-to-cust deny 10
3078 match community cm-learnt-cust
3079 match community cm-upstream-only
3080 route-map rm-community-filt-to-cust permit 20
3081 !
3082 ! ###################################################################
3083 ! The top-level route-maps applied to sessions. Further entries could
3084 ! be added obviously..
3085 !
3086 ! Customers
3087 route-map rm-cust-in permit 10
3088 call rm-community-in
3089 on-match next
3090 route-map rm-cust-in permit 20
3091 set community additive 64512:3100
3092 route-map rm-cust-in permit 30
3093 !
3094 route-map rm-cust-out permit 10
3095 call rm-community-filt-to-cust
3096 on-match next
3097 route-map rm-cust-out permit 20
3098 !
3099 ! Upstream transit ASes
3100 route-map rm-upstream-out permit 10
3101 description filter customer prefixes which are marked cust-only
3102 call rm-community-filt-to-upstream
3103 on-match next
3104 route-map rm-upstream-out permit 20
3105 description only customer routes are provided to upstreams/peers
3106 match community cm-learnt-cust
3107 !
3108 ! Peer ASes
3109 ! outbound policy is same as for upstream
3110 route-map rm-peer-out permit 10
3111 call rm-upstream-out
3112 !
3113 route-map rm-peer-in permit 10
3114 set community additive 64512:3200
c3c5a71f 3115
8fcedbd2
QY
3116
3117Example of how to set up a 6-Bone connection.
3118
3119.. code-block:: frr
3120
3121 ! bgpd configuration
3122 ! ==================
3123 !
3124 ! MP-BGP configuration
3125 !
3126 router bgp 7675
3127 bgp router-id 10.0.0.1
3128 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 remote-as `as-number`
3129 !
3130 address-family ipv6
3131 network 3ffe:506::/32
3132 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 activate
3133 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 route-map set-nexthop out
3134 neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 remote-as `as-number`
3135 neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 route-map set-nexthop out
3136 exit-address-family
3137 !
3138 ipv6 access-list all permit any
3139 !
3140 ! Set output nexthop address.
3141 !
3142 route-map set-nexthop permit 10
3143 match ipv6 address all
3144 set ipv6 nexthop global 3ffe:1cfa:0:2:2c0:4fff:fe68:a225
3145 set ipv6 nexthop local fe80::2c0:4fff:fe68:a225
3146 !
3147 log file bgpd.log
3148 !
3149
3150
9e146a81 3151.. include:: routeserver.rst
f3817860
QY
3152
3153.. include:: rpki.rst
c1a54c05 3154
00458d01
PG
3155.. include:: flowspec.rst
3156
d1e7591e 3157.. [#med-transitivity-rant] For some set of objects to have an order, there *must* be some binary ordering relation that is defined for *every* combination of those objects, and that relation *must* be transitive. I.e.:, if the relation operator is <, and if a < b and b < c then that relation must carry over and it *must* be that a < c for the objects to have an order. The ordering relation may allow for equality, i.e. a < b and b < a may both be true and imply that a and b are equal in the order and not distinguished by it, in which case the set has a partial order. Otherwise, if there is an order, all the objects have a distinct place in the order and the set has a total order)
c1a54c05
QY
3158.. [bgp-route-osci-cond] McPherson, D. and Gill, V. and Walton, D., "Border Gateway Protocol (BGP) Persistent Route Oscillation Condition", IETF RFC3345
3159.. [stable-flexible-ibgp] Flavel, A. and M. Roughan, "Stable and flexible iBGP", ACM SIGCOMM 2009
3160.. [ibgp-correctness] Griffin, T. and G. Wilfong, "On the correctness of IBGP configuration", ACM SIGCOMM 2002