blob: 24028d6f9dc242b8af55cbda420947c3e6d9d68e [file] [log] [blame]
paul718e3742002-12-13 20:15:29 +00001@c -*-texinfo-*-
paul7190f4e2003-08-12 12:40:20 +00002@c This is part of the Quagga Manual.
paul76b89b42004-11-06 17:13:09 +00003@c @value{COPYRIGHT_STR}
4@c See file quagga.texi for copying conditions.
paul718e3742002-12-13 20:15:29 +00005@node BGP
paul718e3742002-12-13 20:15:29 +00006@chapter BGP
7
paulaa5943f2005-11-04 21:53:59 +00008@acronym{BGP} stands for a Border Gateway Protocol. The lastest BGP version
paul718e3742002-12-13 20:15:29 +00009is 4. It is referred as BGP-4. BGP-4 is one of the Exterior Gateway
10Protocols and de-fact standard of Inter Domain routing protocol.
paulaa5943f2005-11-04 21:53:59 +000011BGP-4 is described in @cite{RFC1771, A Border Gateway Protocol
paul718e3742002-12-13 20:15:29 +0000124 (BGP-4)}.
13
paulaa5943f2005-11-04 21:53:59 +000014Many extensions have been added to @cite{RFC1771}. @cite{RFC2858,
15Multiprotocol Extensions for BGP-4} provides multiprotocol support to
16BGP-4.
paul718e3742002-12-13 20:15:29 +000017
18@menu
19* Starting BGP::
20* BGP router::
21* BGP network::
22* BGP Peer::
23* BGP Peer Group::
24* BGP Address Family::
25* Autonomous System::
26* BGP Communities Attribute::
27* BGP Extended Communities Attribute::
28* Displaying BGP routes::
29* Capability Negotiation::
30* Route Reflector::
31* Route Server::
32* How to set up a 6-Bone connection::
33* Dump BGP packets and table::
paulaa5943f2005-11-04 21:53:59 +000034* BGP Configuration Examples::
paul718e3742002-12-13 20:15:29 +000035@end menu
36
paul76b89b42004-11-06 17:13:09 +000037@node Starting BGP
paul718e3742002-12-13 20:15:29 +000038@section Starting BGP
39
40Default configuration file of @command{bgpd} is @file{bgpd.conf}.
41@command{bgpd} searches the current directory first then
42@value{INSTALL_PREFIX_ETC}/bgpd.conf. All of bgpd's command must be
43configured in @file{bgpd.conf}.
44
45@command{bgpd} specific invocation options are described below. Common
46options may also be specified (@pxref{Common Invocation Options}).
47
48@table @samp
49@item -p @var{PORT}
50@itemx --bgp_port=@var{PORT}
51Set the bgp protocol's port number.
52
53@item -r
54@itemx --retain
55When program terminates, retain BGP routes added by zebra.
56@end table
57
paul76b89b42004-11-06 17:13:09 +000058@node BGP router
paul718e3742002-12-13 20:15:29 +000059@section BGP router
60
61 First of all you must configure BGP router with @command{router bgp}
62command. To configure BGP router, you need AS number. AS number is an
63identification of autonomous system. BGP protocol uses the AS number
64for detecting whether the BGP connection is internal one or external one.
65
66@deffn Command {router bgp @var{asn}} {}
67Enable a BGP protocol process with the specified @var{asn}. After
68this statement you can input any @code{BGP Commands}. You can not
69create different BGP process under different @var{asn} without
70specifying @code{multiple-instance} (@pxref{Multiple instance}).
71@end deffn
72
73@deffn Command {no router bgp @var{asn}} {}
74Destroy a BGP protocol process with the specified @var{asn}.
75@end deffn
76
77@deffn {BGP} {bgp router-id @var{A.B.C.D}} {}
78This command specifies the router-ID. If @command{bgpd} connects to @command{zebra} it gets
79interface and address information. In that case default router ID value
80is selected as the largest IP Address of the interfaces. When
81@code{router zebra} is not enabled @command{bgpd} can't get interface information
82so @code{router-id} is set to 0.0.0.0. So please set router-id by hand.
83@end deffn
84
85@menu
86* BGP distance::
87* BGP decision process::
Alexandre Chappuisc31e5722011-09-11 16:54:11 +040088* BGP route flap dampening::
paul718e3742002-12-13 20:15:29 +000089@end menu
90
paul76b89b42004-11-06 17:13:09 +000091@node BGP distance
paul718e3742002-12-13 20:15:29 +000092@subsection BGP distance
93
94@deffn {BGP} {distance bgp <1-255> <1-255> <1-255>} {}
95This command change distance value of BGP. Each argument is distance
96value for external routes, internal routes and local routes.
97@end deffn
98
99@deffn {BGP} {distance <1-255> @var{A.B.C.D/M}} {}
100@deffnx {BGP} {distance <1-255> @var{A.B.C.D/M} @var{word}} {}
101This command set distance value to
102@end deffn
103
paul76b89b42004-11-06 17:13:09 +0000104@node BGP decision process
paul718e3742002-12-13 20:15:29 +0000105@subsection BGP decision process
106
107@table @asis
108@item 1. Weight check
109
110@item 2. Local preference check.
111
112@item 3. Local route check.
113
114@item 4. AS path length check.
115
116@item 5. Origin check.
117
118@item 6. MED check.
119@end table
120
hasso68118452005-04-08 15:40:36 +0000121@deffn {BGP} {bgp bestpath as-path confed} {}
122This command specifies that the length of confederation path sets and
123sequences should should be taken into account during the BGP best path
124decision process.
125@end deffn
126
Pradosh Mohapatra2fdd4552013-09-07 07:02:36 +0000127@deffn {BGP} {bgp bestpath as-path multipath-relax} {}
128This command specifies that BGP decision process should consider paths
129of equal AS_PATH length candidates for multipath computation. Without
130the knob, the entire AS_PATH must match for multipath computation.
131@end deffn
132
Alexandre Chappuisc31e5722011-09-11 16:54:11 +0400133@node BGP route flap dampening
134@subsection BGP route flap dampening
135
136@deffn {BGP} {bgp dampening @var{<1-45>} @var{<1-20000>} @var{<1-20000>} @var{<1-255>}} {}
137This command enables BGP route-flap dampening and specifies dampening parameters.
138
139@table @asis
140@item @asis{half-life}
141Half-life time for the penalty
142@item @asis{reuse-threshold}
143Value to start reusing a route
144@item @asis{suppress-threshold}
145Value to start suppressing a route
146@item @asis{max-suppress}
147Maximum duration to suppress a stable route
148@end table
149
150The route-flap damping algorithm is compatible with @cite{RFC2439}. The use of this command
151is not recommended nowadays, see @uref{http://www.ripe.net/ripe/docs/ripe-378,,RIPE-378}.
152@end deffn
153
paul76b89b42004-11-06 17:13:09 +0000154@node BGP network
paul718e3742002-12-13 20:15:29 +0000155@section BGP network
156
157@menu
158* BGP route::
159* Route Aggregation::
160* Redistribute to BGP::
161@end menu
162
paul76b89b42004-11-06 17:13:09 +0000163@node BGP route
paul718e3742002-12-13 20:15:29 +0000164@subsection BGP route
165
166@deffn {BGP} {network @var{A.B.C.D/M}} {}
167This command adds the announcement network.
168@example
169@group
170router bgp 1
171 network 10.0.0.0/8
172@end group
173@end example
174This configuration example says that network 10.0.0.0/8 will be
175announced to all neighbors. Some vendors' routers don't advertise
Paul Jakma41367172007-08-06 15:24:51 +0000176routes if they aren't present in their IGP routing tables; @code{bgpd}
paul718e3742002-12-13 20:15:29 +0000177doesn't care about IGP routes when announcing its routes.
178@end deffn
179
180@deffn {BGP} {no network @var{A.B.C.D/M}} {}
181@end deffn
182
paul76b89b42004-11-06 17:13:09 +0000183@node Route Aggregation
paul718e3742002-12-13 20:15:29 +0000184@subsection Route Aggregation
185
186@deffn {BGP} {aggregate-address @var{A.B.C.D/M}} {}
187This command specifies an aggregate address.
188@end deffn
189
190@deffn {BGP} {aggregate-address @var{A.B.C.D/M} as-set} {}
191This command specifies an aggregate address. Resulting routes inlucde
192AS set.
193@end deffn
194
195@deffn {BGP} {aggregate-address @var{A.B.C.D/M} summary-only} {}
196This command specifies an aggregate address. Aggreated routes will
197not be announce.
198@end deffn
199
200@deffn {BGP} {no aggregate-address @var{A.B.C.D/M}} {}
201@end deffn
202
paul76b89b42004-11-06 17:13:09 +0000203@node Redistribute to BGP
paul718e3742002-12-13 20:15:29 +0000204@subsection Redistribute to BGP
205
206@deffn {BGP} {redistribute kernel} {}
207Redistribute kernel route to BGP process.
208@end deffn
209
210@deffn {BGP} {redistribute static} {}
211Redistribute static route to BGP process.
212@end deffn
213
214@deffn {BGP} {redistribute connected} {}
215Redistribute connected route to BGP process.
216@end deffn
217
218@deffn {BGP} {redistribute rip} {}
219Redistribute RIP route to BGP process.
220@end deffn
221
222@deffn {BGP} {redistribute ospf} {}
223Redistribute OSPF route to BGP process.
224@end deffn
225
paul76b89b42004-11-06 17:13:09 +0000226@node BGP Peer
paul718e3742002-12-13 20:15:29 +0000227@section BGP Peer
228
229@menu
230* Defining Peer::
231* BGP Peer commands::
232* Peer filtering::
233@end menu
234
paul76b89b42004-11-06 17:13:09 +0000235@node Defining Peer
paul718e3742002-12-13 20:15:29 +0000236@subsection Defining Peer
237
238@deffn {BGP} {neighbor @var{peer} remote-as @var{asn}} {}
239Creates a new neighbor whose remote-as is @var{asn}. @var{peer}
240can be an IPv4 address or an IPv6 address.
241@example
242@group
243router bgp 1
244 neighbor 10.0.0.1 remote-as 2
245@end group
246@end example
247In this case my router, in AS-1, is trying to peer with AS-2 at
24810.0.0.1.
249
250This command must be the first command used when configuring a neighbor.
251If the remote-as is not specified, @command{bgpd} will complain like this:
252@example
253can't find neighbor 10.0.0.1
254@end example
255@end deffn
256
paul76b89b42004-11-06 17:13:09 +0000257@node BGP Peer commands
paul718e3742002-12-13 20:15:29 +0000258@subsection BGP Peer commands
259
260In a @code{router bgp} clause there are neighbor specific configurations
261required.
262
263@deffn {BGP} {neighbor @var{peer} shutdown} {}
264@deffnx {BGP} {no neighbor @var{peer} shutdown} {}
265Shutdown the peer. We can delete the neighbor's configuration by
266@code{no neighbor @var{peer} remote-as @var{as-number}} but all
267configuration of the neighbor will be deleted. When you want to
268preserve the configuration, but want to drop the BGP peer, use this
269syntax.
270@end deffn
271
272@deffn {BGP} {neighbor @var{peer} ebgp-multihop} {}
273@deffnx {BGP} {no neighbor @var{peer} ebgp-multihop} {}
274@end deffn
275
276@deffn {BGP} {neighbor @var{peer} description ...} {}
277@deffnx {BGP} {no neighbor @var{peer} description ...} {}
278Set description of the peer.
279@end deffn
280
281@deffn {BGP} {neighbor @var{peer} version @var{version}} {}
282Set up the neighbor's BGP version. @var{version} can be @var{4},
283@var{4+} or @var{4-}. BGP version @var{4} is the default value used for
284BGP peering. BGP version @var{4+} means that the neighbor supports
285Multiprotocol Extensions for BGP-4. BGP version @var{4-} is similar but
286the neighbor speaks the old Internet-Draft revision 00's Multiprotocol
287Extensions for BGP-4. Some routing software is still using this
288version.
289@end deffn
290
291@deffn {BGP} {neighbor @var{peer} interface @var{ifname}} {}
292@deffnx {BGP} {no neighbor @var{peer} interface @var{ifname}} {}
Paul Jakma825cd492006-05-23 22:20:34 +0000293When you connect to a BGP peer over an IPv6 link-local address, you
294have to specify the @var{ifname} of the interface used for the
295connection. To specify IPv4 session addresses, see the
296@code{neighbor @var{peer} update-source} command below.
297
298This command is deprecated and may be removed in a future release. Its
299use should be avoided.
paul718e3742002-12-13 20:15:29 +0000300@end deffn
301
302@deffn {BGP} {neighbor @var{peer} next-hop-self} {}
303@deffnx {BGP} {no neighbor @var{peer} next-hop-self} {}
304This command specifies an announced route's nexthop as being equivalent
305to the address of the bgp router.
306@end deffn
307
Paul Jakma466c9652006-06-26 12:55:58 +0000308@deffn {BGP} {neighbor @var{peer} update-source @var{<ifname|address>}} {}
paul718e3742002-12-13 20:15:29 +0000309@deffnx {BGP} {no neighbor @var{peer} update-source} {}
Paul Jakma825cd492006-05-23 22:20:34 +0000310Specify the IPv4 source address to use for the @acronym{BGP} session to this
311neighbour, may be specified as either an IPv4 address directly or
312as an interface name (in which case the @command{zebra} daemon MUST be running
313in order for @command{bgpd} to be able to retrieve interface state).
314@example
315@group
316router bgp 64555
317 neighbor foo update-source 192.168.0.1
318 neighbor bar update-source lo0
319@end group
320@end example
paul718e3742002-12-13 20:15:29 +0000321@end deffn
322
323@deffn {BGP} {neighbor @var{peer} default-originate} {}
324@deffnx {BGP} {no neighbor @var{peer} default-originate} {}
325@command{bgpd}'s default is to not announce the default route (0.0.0.0/0) even it
326is in routing table. When you want to announce default routes to the
327peer, use this command.
328@end deffn
329
330@deffn {BGP} {neighbor @var{peer} port @var{port}} {}
331@deffnx {BGP} {neighbor @var{peer} port @var{port}} {}
332@end deffn
333
334@deffn {BGP} {neighbor @var{peer} send-community} {}
335@deffnx {BGP} {neighbor @var{peer} send-community} {}
336@end deffn
337
338@deffn {BGP} {neighbor @var{peer} weight @var{weight}} {}
339@deffnx {BGP} {no neighbor @var{peer} weight @var{weight}} {}
340This command specifies a default @var{weight} value for the neighbor's
341routes.
342@end deffn
343
344@deffn {BGP} {neighbor @var{peer} maximum-prefix @var{number}} {}
345@deffnx {BGP} {no neighbor @var{peer} maximum-prefix @var{number}} {}
346@end deffn
347
Andrew Certain5aebb9c2012-11-07 23:50:09 +0000348@deffn {BGP} {neighbor @var{peer} local-as @var{as-number}} {}
349@deffnx {BGP} {neighbor @var{peer} local-as @var{as-number} no-prepend} {}
350@deffnx {BGP} {neighbor @var{peer} local-as @var{as-number} no-prepend replace-as} {}
351@deffnx {BGP} {no neighbor @var{peer} local-as} {}
352Specify an alternate AS for this BGP process when interacting with the
353specified peer. With no modifiers, the specified local-as is prepended to
354the received AS_PATH when receiving routing updates from the peer, and
355prepended to the outgoing AS_PATH (after the process local AS) when
356transmitting local routes to the peer.
357
358If the no-prepend attribute is specified, then the supplied local-as is not
359prepended to the received AS_PATH.
360
361If the replace-as attribute is specified, then only the supplied local-as is
362prepended to the AS_PATH when transmitting local-route updates to this peer.
363
364Note that replace-as can only be specified if no-prepend is.
365
366This command is only allowed for eBGP peers.
367@end deffn
368
paul76b89b42004-11-06 17:13:09 +0000369@node Peer filtering
paul718e3742002-12-13 20:15:29 +0000370@subsection Peer filtering
371
372@deffn {BGP} {neighbor @var{peer} distribute-list @var{name} [in|out]} {}
373This command specifies a distribute-list for the peer. @var{direct} is
374@samp{in} or @samp{out}.
375@end deffn
376
377@deffn {BGP command} {neighbor @var{peer} prefix-list @var{name} [in|out]} {}
378@end deffn
379
380@deffn {BGP command} {neighbor @var{peer} filter-list @var{name} [in|out]} {}
381@end deffn
382
383@deffn {BGP} {neighbor @var{peer} route-map @var{name} [in|out]} {}
384Apply a route-map on the neighbor. @var{direct} must be @code{in} or
385@code{out}.
386@end deffn
387
388@c -----------------------------------------------------------------------
paul76b89b42004-11-06 17:13:09 +0000389@node BGP Peer Group
paul718e3742002-12-13 20:15:29 +0000390@section BGP Peer Group
391
392@deffn {BGP} {neighbor @var{word} peer-group} {}
393This command defines a new peer group.
394@end deffn
395
396@deffn {BGP} {neighbor @var{peer} peer-group @var{word}} {}
397This command bind specific peer to peer group @var{word}.
398@end deffn
399
paul76b89b42004-11-06 17:13:09 +0000400@node BGP Address Family
paul718e3742002-12-13 20:15:29 +0000401@section BGP Address Family
402
paul718e3742002-12-13 20:15:29 +0000403@c -----------------------------------------------------------------------
paul76b89b42004-11-06 17:13:09 +0000404@node Autonomous System
paul718e3742002-12-13 20:15:29 +0000405@section Autonomous System
406
paulaa5943f2005-11-04 21:53:59 +0000407The @acronym{AS,Autonomous System} number is one of the essential
408element of BGP. BGP is a distance vector routing protocol, and the
409AS-Path framework provides distance vector metric and loop detection to
410BGP. @cite{RFC1930, Guidelines for creation, selection, and
411registration of an Autonomous System (AS)} provides some background on
412the concepts of an AS.
paul718e3742002-12-13 20:15:29 +0000413
paulaa5943f2005-11-04 21:53:59 +0000414The AS number is a two octet value, ranging in value from 1 to 65535.
415The AS numbers 64512 through 65535 are defined as private AS numbers.
416Private AS numbers must not to be advertised in the global Internet.
paul718e3742002-12-13 20:15:29 +0000417
418@menu
419* AS Path Regular Expression::
420* Display BGP Routes by AS Path::
421* AS Path Access List::
422* Using AS Path in Route Map::
423* Private AS Numbers::
424@end menu
425
paul76b89b42004-11-06 17:13:09 +0000426@node AS Path Regular Expression
paul718e3742002-12-13 20:15:29 +0000427@subsection AS Path Regular Expression
428
paulaa5943f2005-11-04 21:53:59 +0000429AS path regular expression can be used for displaying BGP routes and
paul718e3742002-12-13 20:15:29 +0000430AS path access list. AS path regular expression is based on
431@code{POSIX 1003.2} regular expressions. Following description is
432just a subset of @code{POSIX} regular expression. User can use full
433@code{POSIX} regular expression. Adding to that special character '_'
434is added for AS path regular expression.
435
436@table @code
437@item .
438Matches any single character.
439@item *
440Matches 0 or more occurrences of pattern.
441@item +
442Matches 1 or more occurrences of pattern.
443@item ?
444Match 0 or 1 occurrences of pattern.
445@item ^
446Matches the beginning of the line.
447@item $
448Matches the end of the line.
449@item _
450Character @code{_} has special meanings in AS path regular expression.
451It matches to space and comma , and AS set delimiter @{ and @} and AS
452confederation delimiter @code{(} and @code{)}. And it also matches to
453the beginning of the line and the end of the line. So @code{_} can be
454used for AS value boundaries match. @code{show ip bgp regexp _7675_}
455matches to all of BGP routes which as AS number include @var{7675}.
456@end table
457
paul76b89b42004-11-06 17:13:09 +0000458@node Display BGP Routes by AS Path
paul718e3742002-12-13 20:15:29 +0000459@subsection Display BGP Routes by AS Path
460
paulaa5943f2005-11-04 21:53:59 +0000461To show BGP routes which has specific AS path information @code{show
paul718e3742002-12-13 20:15:29 +0000462ip bgp} command can be used.
463
464@deffn Command {show ip bgp regexp @var{line}} {}
465This commands display BGP routes that matches AS path regular
466expression @var{line}.
467@end deffn
468
paul76b89b42004-11-06 17:13:09 +0000469@node AS Path Access List
paul718e3742002-12-13 20:15:29 +0000470@subsection AS Path Access List
471
paulaa5943f2005-11-04 21:53:59 +0000472AS path access list is user defined AS path.
paul718e3742002-12-13 20:15:29 +0000473
474@deffn {Command} {ip as-path access-list @var{word} @{permit|deny@} @var{line}} {}
475This command defines a new AS path access list.
476@end deffn
477
478@deffn {Command} {no ip as-path access-list @var{word}} {}
479@deffnx {Command} {no ip as-path access-list @var{word} @{permit|deny@} @var{line}} {}
480@end deffn
481
paul76b89b42004-11-06 17:13:09 +0000482@node Using AS Path in Route Map
paul718e3742002-12-13 20:15:29 +0000483@subsection Using AS Path in Route Map
484
485@deffn {Route Map} {match as-path @var{word}} {}
486@end deffn
487
488@deffn {Route Map} {set as-path prepend @var{as-path}} {}
489@end deffn
490
paul76b89b42004-11-06 17:13:09 +0000491@node Private AS Numbers
paul718e3742002-12-13 20:15:29 +0000492@subsection Private AS Numbers
493
paul718e3742002-12-13 20:15:29 +0000494@c -----------------------------------------------------------------------
paul76b89b42004-11-06 17:13:09 +0000495@node BGP Communities Attribute
paul718e3742002-12-13 20:15:29 +0000496@section BGP Communities Attribute
497
paulaa5943f2005-11-04 21:53:59 +0000498BGP communities attribute is widely used for implementing policy
paul718e3742002-12-13 20:15:29 +0000499routing. Network operators can manipulate BGP communities attribute
500based on their network policy. BGP communities attribute is defined
paulaa5943f2005-11-04 21:53:59 +0000501in @cite{RFC1997, BGP Communities Attribute} and
502@cite{RFC1998, An Application of the BGP Community Attribute
paul718e3742002-12-13 20:15:29 +0000503in Multi-home Routing}. It is an optional transitive attribute,
504therefore local policy can travel through different autonomous system.
505
paulaa5943f2005-11-04 21:53:59 +0000506Communities attribute is a set of communities values. Each
paul718e3742002-12-13 20:15:29 +0000507communities value is 4 octet long. The following format is used to
508define communities value.
509
510@table @code
511@item AS:VAL
512This format represents 4 octet communities value. @code{AS} is high
513order 2 octet in digit format. @code{VAL} is low order 2 octet in
514digit format. This format is useful to define AS oriented policy
515value. For example, @code{7675:80} can be used when AS 7675 wants to
516pass local policy value 80 to neighboring peer.
517@item internet
518@code{internet} represents well-known communities value 0.
519@item no-export
520@code{no-export} represents well-known communities value @code{NO_EXPORT}@*
521@r{(0xFFFFFF01)}. All routes carry this value must not be advertised
522to outside a BGP confederation boundary. If neighboring BGP peer is
523part of BGP confederation, the peer is considered as inside a BGP
524confederation boundary, so the route will be announced to the peer.
525@item no-advertise
526@code{no-advertise} represents well-known communities value
527@code{NO_ADVERTISE}@*@r{(0xFFFFFF02)}. All routes carry this value
528must not be advertise to other BGP peers.
529@item local-AS
530@code{local-AS} represents well-known communities value
531@code{NO_EXPORT_SUBCONFED} @r{(0xFFFFFF03)}. All routes carry this
532value must not be advertised to external BGP peers. Even if the
533neighboring router is part of confederation, it is considered as
534external BGP peer, so the route will not be announced to the peer.
535@end table
536
537 When BGP communities attribute is received, duplicated communities
538value in the communities attribute is ignored and each communities
539values are sorted in numerical order.
540
541@menu
542* BGP Community Lists::
543* Numbered BGP Community Lists::
544* BGP Community in Route Map::
545* Display BGP Routes by Community::
546* Using BGP Communities Attribute::
547@end menu
548
paul76b89b42004-11-06 17:13:09 +0000549@node BGP Community Lists
paul718e3742002-12-13 20:15:29 +0000550@subsection BGP Community Lists
551
552 BGP community list is a user defined BGP communites attribute list.
553BGP community list can be used for matching or manipulating BGP
554communities attribute in updates.
555
paulaa5943f2005-11-04 21:53:59 +0000556There are two types of community list. One is standard community
paul718e3742002-12-13 20:15:29 +0000557list and another is expanded community list. Standard community list
558defines communities attribute. Expanded community list defines
559communities attribute string with regular expression. Standard
560community list is compiled into binary format when user define it.
561Standard community list will be directly compared to BGP communities
562attribute in BGP updates. Therefore the comparison is faster than
563expanded community list.
564
565@deffn Command {ip community-list standard @var{name} @{permit|deny@} @var{community}} {}
566This command defines a new standard community list. @var{community}
567is communities value. The @var{community} is compiled into community
568structure. We can define multiple community list under same name. In
569that case match will happen user defined order. Once the
570community list matches to communities attribute in BGP updates it
571return permit or deny by the community list definition. When there is
572no matched entry, deny will be returned. When @var{community} is
573empty it matches to any routes.
574@end deffn
575
576@deffn Command {ip community-list expanded @var{name} @{permit|deny@} @var{line}} {}
577This command defines a new expanded community list. @var{line} is a
578string expression of communities attribute. @var{line} can include
579regular expression to match communities attribute in BGP updates.
580@end deffn
581
582@deffn Command {no ip community-list @var{name}} {}
583@deffnx Command {no ip community-list standard @var{name}} {}
584@deffnx Command {no ip community-list expanded @var{name}} {}
585These commands delete community lists specified by @var{name}. All of
586community lists shares a single name space. So community lists can be
587removed simpley specifying community lists name.
588@end deffn
589
590@deffn {Command} {show ip community-list} {}
591@deffnx {Command} {show ip community-list @var{name}} {}
592This command display current community list information. When
593@var{name} is specified the specified community list's information is
594shown.
595
596@example
597# show ip community-list
598Named Community standard list CLIST
599 permit 7675:80 7675:100 no-export
600 deny internet
601Named Community expanded list EXPAND
602 permit :
603
604# show ip community-list CLIST
605Named Community standard list CLIST
606 permit 7675:80 7675:100 no-export
607 deny internet
608@end example
609@end deffn
610
paul76b89b42004-11-06 17:13:09 +0000611@node Numbered BGP Community Lists
paul718e3742002-12-13 20:15:29 +0000612@subsection Numbered BGP Community Lists
613
paulaa5943f2005-11-04 21:53:59 +0000614When number is used for BGP community list name, the number has
paul718e3742002-12-13 20:15:29 +0000615special meanings. Community list number in the range from 1 and 99 is
616standard community list. Community list number in the range from 100
617to 199 is expanded community list. These community lists are called
618as numbered community lists. On the other hand normal community lists
619is called as named community lists.
620
621@deffn Command {ip community-list <1-99> @{permit|deny@} @var{community}} {}
622This command defines a new community list. <1-99> is standard
623community list number. Community list name within this range defines
624standard community list. When @var{community} is empty it matches to
625any routes.
626@end deffn
627
628@deffn Command {ip community-list <100-199> @{permit|deny@} @var{community}} {}
629This command defines a new community list. <100-199> is expanded
630community list number. Community list name within this range defines
631expanded community list.
632@end deffn
633
634@deffn Command {ip community-list @var{name} @{permit|deny@} @var{community}} {}
635When community list type is not specifed, the community list type is
636automatically detected. If @var{community} can be compiled into
637communities attribute, the community list is defined as a standard
638community list. Otherwise it is defined as an expanded community
639list. This feature is left for backward compability. Use of this
640feature is not recommended.
641@end deffn
642
paul76b89b42004-11-06 17:13:09 +0000643@node BGP Community in Route Map
paul718e3742002-12-13 20:15:29 +0000644@subsection BGP Community in Route Map
645
paulaa5943f2005-11-04 21:53:59 +0000646In Route Map (@pxref{Route Map}), we can match or set BGP
paul718e3742002-12-13 20:15:29 +0000647communities attribute. Using this feature network operator can
648implement their network policy based on BGP communities attribute.
649
paulaa5943f2005-11-04 21:53:59 +0000650Following commands can be used in Route Map.
paul718e3742002-12-13 20:15:29 +0000651
652@deffn {Route Map} {match community @var{word}} {}
653@deffnx {Route Map} {match community @var{word} exact-match} {}
654This command perform match to BGP updates using community list
655@var{word}. When the one of BGP communities value match to the one of
656communities value in community list, it is match. When
657@code{exact-match} keyword is spcified, match happen only when BGP
658updates have completely same communities value specified in the
659community list.
660@end deffn
661
662@deffn {Route Map} {set community none} {}
663@deffnx {Route Map} {set community @var{community}} {}
664@deffnx {Route Map} {set community @var{community} additive} {}
665This command manipulate communities value in BGP updates. When
666@code{none} is specified as communities value, it removes entire
667communities attribute from BGP updates. When @var{community} is not
668@code{none}, specified communities value is set to BGP updates. If
669BGP updates already has BGP communities value, the existing BGP
670communities value is replaced with specified @var{community} value.
671When @code{additive} keyword is specified, @var{community} is appended
672to the existing communities value.
673@end deffn
674
675@deffn {Route Map} {set comm-list @var{word} delete} {}
676This command remove communities value from BGP communities attribute.
677The @var{word} is community list name. When BGP route's communities
678value matches to the community list @var{word}, the communities value
679is removed. When all of communities value is removed eventually, the
680BGP update's communities attribute is completely removed.
681@end deffn
682
paul76b89b42004-11-06 17:13:09 +0000683@node Display BGP Routes by Community
paul718e3742002-12-13 20:15:29 +0000684@subsection Display BGP Routes by Community
685
paulaa5943f2005-11-04 21:53:59 +0000686To show BGP routes which has specific BGP communities attribute,
paul718e3742002-12-13 20:15:29 +0000687@code{show ip bgp} command can be used. The @var{community} value and
688community list can be used for @code{show ip bgp} command.
689
690@deffn Command {show ip bgp community} {}
691@deffnx Command {show ip bgp community @var{community}} {}
692@deffnx Command {show ip bgp community @var{community} exact-match} {}
693@code{show ip bgp community} displays BGP routes which has communities
694attribute. When @var{community} is specified, BGP routes that matches
695@var{community} value is displayed. For this command, @code{internet}
696keyword can't be used for @var{community} value. When
697@code{exact-match} is specified, it display only routes that have an
698exact match.
699@end deffn
700
701@deffn Command {show ip bgp community-list @var{word}} {}
702@deffnx Command {show ip bgp community-list @var{word} exact-match} {}
703This commands display BGP routes that matches community list
704@var{word}. When @code{exact-match} is specified, display only routes
705that have an exact match.
706@end deffn
707
paul76b89b42004-11-06 17:13:09 +0000708@node Using BGP Communities Attribute
paul718e3742002-12-13 20:15:29 +0000709@subsection Using BGP Communities Attribute
710
paulaa5943f2005-11-04 21:53:59 +0000711Following configuration is the most typical usage of BGP communities
paul718e3742002-12-13 20:15:29 +0000712attribute. AS 7675 provides upstream Internet connection to AS 100.
713When following configuration exists in AS 7675, AS 100 networks
714operator can set local preference in AS 7675 network by setting BGP
715communities attribute to the updates.
716
717@example
718router bgp 7675
719 neighbor 192.168.0.1 remote-as 100
720 neighbor 192.168.0.1 route-map RMAP in
721!
722ip community-list 70 permit 7675:70
723ip community-list 70 deny
724ip community-list 80 permit 7675:80
725ip community-list 80 deny
726ip community-list 90 permit 7675:90
727ip community-list 90 deny
728!
729route-map RMAP permit 10
730 match community 70
731 set local-preference 70
732!
733route-map RMAP permit 20
734 match community 80
735 set local-preference 80
736!
737route-map RMAP permit 30
738 match community 90
739 set local-preference 90
740@end example
741
paulaa5943f2005-11-04 21:53:59 +0000742Following configuration announce 10.0.0.0/8 from AS 100 to AS 7675.
paul718e3742002-12-13 20:15:29 +0000743The route has communities value 7675:80 so when above configuration
744exists in AS 7675, announced route's local preference will be set to
745value 80.
746
747@example
748router bgp 100
749 network 10.0.0.0/8
750 neighbor 192.168.0.2 remote-as 7675
751 neighbor 192.168.0.2 route-map RMAP out
752!
753ip prefix-list PLIST permit 10.0.0.0/8
754!
755route-map RMAP permit 10
756 match ip address prefix-list PLIST
757 set community 7675:80
758@end example
759
paulaa5943f2005-11-04 21:53:59 +0000760Following configuration is an example of BGP route filtering using
paul718e3742002-12-13 20:15:29 +0000761communities attribute. This configuration only permit BGP routes
762which has BGP communities value 0:80 or 0:90. Network operator can
763put special internal communities value at BGP border router, then
764limit the BGP routes announcement into the internal network.
765
766@example
767router bgp 7675
768 neighbor 192.168.0.1 remote-as 100
769 neighbor 192.168.0.1 route-map RMAP in
770!
771ip community-list 1 permit 0:80 0:90
772!
773route-map RMAP permit in
774 match community 1
775@end example
776
paulaa5943f2005-11-04 21:53:59 +0000777Following exmaple filter BGP routes which has communities value 1:1.
paul718e3742002-12-13 20:15:29 +0000778When there is no match community-list returns deny. To avoid
779filtering all of routes, we need to define permit any at last.
780
781@example
782router bgp 7675
783 neighbor 192.168.0.1 remote-as 100
784 neighbor 192.168.0.1 route-map RMAP in
785!
786ip community-list standard FILTER deny 1:1
787ip community-list standard FILTER permit
788!
789route-map RMAP permit 10
790 match community FILTER
791@end example
792
paulaa5943f2005-11-04 21:53:59 +0000793Communities value keyword @code{internet} has special meanings in
paul718e3742002-12-13 20:15:29 +0000794standard community lists. In below example @code{internet} act as
795match any. It matches all of BGP routes even if the route does not
796have communities attribute at all. So community list @code{INTERNET}
797is same as above example's @code{FILTER}.
798
799@example
800ip community-list standard INTERNET deny 1:1
801ip community-list standard INTERNET permit internet
802@end example
803
paulaa5943f2005-11-04 21:53:59 +0000804Following configuration is an example of communities value deletion.
paul718e3742002-12-13 20:15:29 +0000805With this configuration communities value 100:1 and 100:2 is removed
806from BGP updates. For communities value deletion, only @code{permit}
807community-list is used. @code{deny} community-list is ignored.
808
809@example
810router bgp 7675
811 neighbor 192.168.0.1 remote-as 100
812 neighbor 192.168.0.1 route-map RMAP in
813!
814ip community-list standard DEL permit 100:1 100:2
815!
816route-map RMAP permit 10
817 set comm-list DEL delete
818@end example
819
820@c -----------------------------------------------------------------------
paul76b89b42004-11-06 17:13:09 +0000821@node BGP Extended Communities Attribute
paul718e3742002-12-13 20:15:29 +0000822@section BGP Extended Communities Attribute
823
paulaa5943f2005-11-04 21:53:59 +0000824BGP extended communities attribute is introduced with MPLS VPN/BGP
paul718e3742002-12-13 20:15:29 +0000825technology. MPLS VPN/BGP expands capability of network infrastructure
826to provide VPN functionality. At the same time it requires a new
827framework for policy routing. With BGP Extended Communities Attribute
828we can use Route Target or Site of Origin for implementing network
829policy for MPLS VPN/BGP.
830
paulaa5943f2005-11-04 21:53:59 +0000831BGP Extended Communities Attribute is similar to BGP Communities
paul718e3742002-12-13 20:15:29 +0000832Attribute. It is an optional transitive attribute. BGP Extended
833Communities Attribute can carry multiple Extended Community value.
834Each Extended Community value is eight octet length.
835
paulaa5943f2005-11-04 21:53:59 +0000836BGP Extended Communities Attribute provides an extended range
paul718e3742002-12-13 20:15:29 +0000837compared with BGP Communities Attribute. Adding to that there is a
838type field in each value to provides community space structure.
839
paulaa5943f2005-11-04 21:53:59 +0000840There are two format to define Extended Community value. One is AS
paul718e3742002-12-13 20:15:29 +0000841based format the other is IP address based format.
842
843@table @code
844@item AS:VAL
845This is a format to define AS based Extended Community value.
846@code{AS} part is 2 octets Global Administrator subfield in Extended
847Community value. @code{VAL} part is 4 octets Local Administrator
848subfield. @code{7675:100} represents AS 7675 policy value 100.
849@item IP-Address:VAL
850This is a format to define IP address based Extended Community value.
851@code{IP-Address} part is 4 octets Global Administrator subfield.
852@code{VAL} part is 2 octets Local Administrator subfield.
853@code{10.0.0.1:100} represents
854@end table
855
856@menu
857* BGP Extended Community Lists::
858* BGP Extended Communities in Route Map::
859@end menu
860
paul76b89b42004-11-06 17:13:09 +0000861@node BGP Extended Community Lists
paul718e3742002-12-13 20:15:29 +0000862@subsection BGP Extended Community Lists
863
paulaa5943f2005-11-04 21:53:59 +0000864Expanded Community Lists is a user defined BGP Expanded Community
paul718e3742002-12-13 20:15:29 +0000865Lists.
866
867@deffn Command {ip extcommunity-list standard @var{name} @{permit|deny@} @var{extcommunity}} {}
868This command defines a new standard extcommunity-list.
869@var{extcommunity} is extended communities value. The
870@var{extcommunity} is compiled into extended community structure. We
871can define multiple extcommunity-list under same name. In that case
872match will happen user defined order. Once the extcommunity-list
873matches to extended communities attribute in BGP updates it return
874permit or deny based upon the extcommunity-list definition. When
875there is no matched entry, deny will be returned. When
876@var{extcommunity} is empty it matches to any routes.
877@end deffn
878
879@deffn Command {ip extcommunity-list expanded @var{name} @{permit|deny@} @var{line}} {}
880This command defines a new expanded extcommunity-list. @var{line} is
881a string expression of extended communities attribute. @var{line} can
882include regular expression to match extended communities attribute in
883BGP updates.
884@end deffn
885
886@deffn Command {no ip extcommunity-list @var{name}} {}
887@deffnx Command {no ip extcommunity-list standard @var{name}} {}
888@deffnx Command {no ip extcommunity-list expanded @var{name}} {}
889These commands delete extended community lists specified by
890@var{name}. All of extended community lists shares a single name
891space. So extended community lists can be removed simpley specifying
892the name.
893@end deffn
894
895@deffn {Command} {show ip extcommunity-list} {}
896@deffnx {Command} {show ip extcommunity-list @var{name}} {}
897This command display current extcommunity-list information. When
898@var{name} is specified the community list's information is shown.
899
900@example
901# show ip extcommunity-list
902@end example
903@end deffn
904
paul76b89b42004-11-06 17:13:09 +0000905@node BGP Extended Communities in Route Map
paul718e3742002-12-13 20:15:29 +0000906@subsection BGP Extended Communities in Route Map
907
908@deffn {Route Map} {match extcommunity @var{word}} {}
909@end deffn
910
911@deffn {Route Map} {set extcommunity rt @var{extcommunity}} {}
912This command set Route Target value.
913@end deffn
914
915@deffn {Route Map} {set extcommunity soo @var{extcommunity}} {}
916This command set Site of Origin value.
917@end deffn
918
919@c -----------------------------------------------------------------------
paul76b89b42004-11-06 17:13:09 +0000920@node Displaying BGP routes
paul718e3742002-12-13 20:15:29 +0000921@section Displaying BGP Routes
922
923@menu
924* Show IP BGP::
925* More Show IP BGP::
926@end menu
927
paul76b89b42004-11-06 17:13:09 +0000928@node Show IP BGP
paul718e3742002-12-13 20:15:29 +0000929@subsection Show IP BGP
930
931@deffn {Command} {show ip bgp} {}
932@deffnx {Command} {show ip bgp @var{A.B.C.D}} {}
933@deffnx {Command} {show ip bgp @var{X:X::X:X}} {}
934This command displays BGP routes. When no route is specified it
935display all of IPv4 BGP routes.
936@end deffn
937
938@example
939BGP table version is 0, local router ID is 10.1.1.1
940Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
941Origin codes: i - IGP, e - EGP, ? - incomplete
942
943 Network Next Hop Metric LocPrf Weight Path
944*> 1.1.1.1/32 0.0.0.0 0 32768 i
945
946Total number of prefixes 1
947@end example
948
paul76b89b42004-11-06 17:13:09 +0000949@node More Show IP BGP
paul718e3742002-12-13 20:15:29 +0000950@subsection More Show IP BGP
951
952@deffn {Command} {show ip bgp regexp @var{line}} {}
953This command display BGP routes using AS path regular expression (@pxref{Display BGP Routes by AS Path}).
954@end deffn
955
956@deffn Command {show ip bgp community @var{community}} {}
957@deffnx Command {show ip bgp community @var{community} exact-match} {}
958This command display BGP routes using @var{community} (@pxref{Display
959BGP Routes by Community}).
960@end deffn
961
962@deffn Command {show ip bgp community-list @var{word}} {}
963@deffnx Command {show ip bgp community-list @var{word} exact-match} {}
964This command display BGP routes using community list (@pxref{Display
965BGP Routes by Community}).
966@end deffn
967
968@deffn {Command} {show ip bgp summary} {}
969@end deffn
970
971@deffn {Command} {show ip bgp neighbor [@var{peer}]} {}
972@end deffn
973
974@deffn {Command} {clear ip bgp @var{peer}} {}
975Clear peers which have addresses of X.X.X.X
976@end deffn
977
978@deffn {Command} {clear ip bgp @var{peer} soft in} {}
979Clear peer using soft reconfiguration.
980@end deffn
981
Alexandre Chappuisc31e5722011-09-11 16:54:11 +0400982@deffn {Command} {show ip bgp dampened-paths} {}
983Display paths suppressed due to dampening
984@end deffn
985
986@deffn {Command} {show ip bgp flap-statistics} {}
987Display flap statistics of routes
988@end deffn
989
paul718e3742002-12-13 20:15:29 +0000990@deffn {Command} {show debug} {}
991@end deffn
992
993@deffn {Command} {debug event} {}
994@end deffn
995
996@deffn {Command} {debug update} {}
997@end deffn
998
999@deffn {Command} {debug keepalive} {}
1000@end deffn
1001
1002@deffn {Command} {no debug event} {}
1003@end deffn
1004
1005@deffn {Command} {no debug update} {}
1006@end deffn
1007
1008@deffn {Command} {no debug keepalive} {}
1009@end deffn
1010
paul76b89b42004-11-06 17:13:09 +00001011@node Capability Negotiation
paul718e3742002-12-13 20:15:29 +00001012@section Capability Negotiation
1013
paulaa5943f2005-11-04 21:53:59 +00001014When adding IPv6 routing information exchange feature to BGP. There
1015were some proposals. @acronym{IETF,Internet Engineering Task Force}
1016@acronym{IDR, Inter Domain Routing} @acronym{WG, Working group} adopted
1017a proposal called Multiprotocol Extension for BGP. The specification
1018is described in @cite{RFC2283}. The protocol does not define new protocols.
1019It defines new attributes to existing BGP. When it is used exchanging
1020IPv6 routing information it is called BGP-4+. When it is used for
1021exchanging multicast routing information it is called MBGP.
paul718e3742002-12-13 20:15:29 +00001022
paulaa5943f2005-11-04 21:53:59 +00001023@command{bgpd} supports Multiprotocol Extension for BGP. So if remote
1024peer supports the protocol, @command{bgpd} can exchange IPv6 and/or
1025multicast routing information.
paul718e3742002-12-13 20:15:29 +00001026
paulaa5943f2005-11-04 21:53:59 +00001027Traditional BGP did not have the feature to detect remote peer's
1028capabilities, e.g. whether it can handle prefix types other than IPv4
1029unicast routes. This was a big problem using Multiprotocol Extension
1030for BGP to operational network. @cite{RFC2842, Capabilities
1031Advertisement with BGP-4} adopted a feature called Capability
1032Negotiation. @command{bgpd} use this Capability Negotiation to detect
1033the remote peer's capabilities. If the peer is only configured as IPv4
1034unicast neighbor, @command{bgpd} does not send these Capability
1035Negotiation packets (at least not unless other optional BGP features
1036require capability negotation).
paul718e3742002-12-13 20:15:29 +00001037
paulaa5943f2005-11-04 21:53:59 +00001038By default, Quagga will bring up peering with minimal common capability
1039for the both sides. For example, local router has unicast and
1040multicast capabilitie and remote router has unicast capability. In
1041this case, the local router will establish the connection with unicast
1042only capability. When there are no common capabilities, Quagga sends
1043Unsupported Capability error and then resets the connection.
paul718e3742002-12-13 20:15:29 +00001044
paulaa5943f2005-11-04 21:53:59 +00001045If you want to completely match capabilities with remote peer. Please
paul718e3742002-12-13 20:15:29 +00001046use @command{strict-capability-match} command.
1047
1048@deffn {BGP} {neighbor @var{peer} strict-capability-match} {}
1049@deffnx {BGP} {no neighbor @var{peer} strict-capability-match} {}
1050Strictly compares remote capabilities and local capabilities. If capabilities
1051are different, send Unsupported Capability error then reset connection.
1052@end deffn
1053
paulaa5943f2005-11-04 21:53:59 +00001054You may want to disable sending Capability Negotiation OPEN message
paul718e3742002-12-13 20:15:29 +00001055optional parameter to the peer when remote peer does not implement
1056Capability Negotiation. Please use @command{dont-capability-negotiate}
1057command to disable the feature.
1058
1059@deffn {BGP} {neighbor @var{peer} dont-capability-negotiate} {}
1060@deffnx {BGP} {no neighbor @var{peer} dont-capability-negotiate} {}
1061Suppress sending Capability Negotiation as OPEN message optional
1062parameter to the peer. This command only affects the peer is configured
1063other than IPv4 unicast configuration.
1064@end deffn
1065
paulaa5943f2005-11-04 21:53:59 +00001066When remote peer does not have capability negotiation feature, remote
1067peer will not send any capabilities at all. In that case, bgp
1068configures the peer with configured capabilities.
paul718e3742002-12-13 20:15:29 +00001069
paulaa5943f2005-11-04 21:53:59 +00001070You may prefer locally configured capabilities more than the negotiated
1071capabilities even though remote peer sends capabilities. If the peer
1072is configured by @command{override-capability}, @command{bgpd} ignores
1073received capabilities then override negotiated capabilities with
1074configured values.
paul718e3742002-12-13 20:15:29 +00001075
1076@deffn {BGP} {neighbor @var{peer} override-capability} {}
1077@deffnx {BGP} {no neighbor @var{peer} override-capability} {}
1078Override the result of Capability Negotiation with local configuration.
1079Ignore remote peer's capability value.
1080@end deffn
1081
paul76b89b42004-11-06 17:13:09 +00001082@node Route Reflector
paul718e3742002-12-13 20:15:29 +00001083@section Route Reflector
1084
1085@deffn {BGP} {bgp cluster-id @var{a.b.c.d}} {}
1086@end deffn
1087
1088@deffn {BGP} {neighbor @var{peer} route-reflector-client} {}
1089@deffnx {BGP} {no neighbor @var{peer} route-reflector-client} {}
1090@end deffn
1091
paul76b89b42004-11-06 17:13:09 +00001092@node Route Server
paul718e3742002-12-13 20:15:29 +00001093@section Route Server
1094
1095At an Internet Exchange point, many ISPs are connected to each other by
1096external BGP peering. Normally these external BGP connection are done by
paulaa5943f2005-11-04 21:53:59 +00001097@samp{full mesh} method. As with internal BGP full mesh formation,
paul718e3742002-12-13 20:15:29 +00001098this method has a scaling problem.
1099
1100This scaling problem is well known. Route Server is a method to resolve
1101the problem. Each ISP's BGP router only peers to Route Server. Route
1102Server serves as BGP information exchange to other BGP routers. By
1103applying this method, numbers of BGP connections is reduced from
1104O(n*(n-1)/2) to O(n).
1105
1106Unlike normal BGP router, Route Server must have several routing tables
1107for managing different routing policies for each BGP speaker. We call the
1108routing tables as different @code{view}s. @command{bgpd} can work as
1109normal BGP router or Route Server or both at the same time.
1110
1111@menu
1112* Multiple instance::
1113* BGP instance and view::
1114* Routing policy::
1115* Viewing the view::
1116@end menu
1117
paul76b89b42004-11-06 17:13:09 +00001118@node Multiple instance
paul718e3742002-12-13 20:15:29 +00001119@subsection Multiple instance
1120
1121To enable multiple view function of @code{bgpd}, you must turn on
1122multiple instance feature beforehand.
1123
1124@deffn {Command} {bgp multiple-instance} {}
1125Enable BGP multiple instance feature. After this feature is enabled,
1126you can make multiple BGP instances or multiple BGP views.
1127@end deffn
1128
1129@deffn {Command} {no bgp multiple-instance} {}
1130Disable BGP multiple instance feature. You can not disable this feature
1131when BGP multiple instances or views exist.
1132@end deffn
1133
1134When you want to make configuration more Cisco like one,
1135
1136@deffn {Command} {bgp config-type cisco} {}
1137Cisco compatible BGP configuration output.
1138@end deffn
1139
1140When bgp config-type cisco is specified,
1141
1142``no synchronization'' is displayed.
Ivan Moskalyov2b09e212010-03-11 17:14:35 +03001143``no auto-summary'' is displayed.
paul718e3742002-12-13 20:15:29 +00001144
1145``network'' and ``aggregate-address'' argument is displayed as
1146``A.B.C.D M.M.M.M''
1147
paul7190f4e2003-08-12 12:40:20 +00001148Quagga: network 10.0.0.0/8
paul718e3742002-12-13 20:15:29 +00001149Cisco: network 10.0.0.0
1150
paul7190f4e2003-08-12 12:40:20 +00001151Quagga: aggregate-address 192.168.0.0/24
paul718e3742002-12-13 20:15:29 +00001152Cisco: aggregate-address 192.168.0.0 255.255.255.0
1153
1154Community attribute handling is also different. If there is no
1155configuration is specified community attribute and extended community
1156attribute are sent to neighbor. When user manually disable the
1157feature community attribute is not sent to the neighbor. In case of
paulaa5943f2005-11-04 21:53:59 +00001158@command{bgp config-type cisco} is specified, community attribute is not
paul718e3742002-12-13 20:15:29 +00001159sent to the neighbor by default. To send community attribute user has
paulaa5943f2005-11-04 21:53:59 +00001160to specify @command{neighbor A.B.C.D send-community} command.
paul718e3742002-12-13 20:15:29 +00001161
paulaa5943f2005-11-04 21:53:59 +00001162@example
paul718e3742002-12-13 20:15:29 +00001163!
1164router bgp 1
1165 neighbor 10.0.0.1 remote-as 1
1166 no neighbor 10.0.0.1 send-community
1167!
paul718e3742002-12-13 20:15:29 +00001168router bgp 1
1169 neighbor 10.0.0.1 remote-as 1
1170 neighbor 10.0.0.1 send-community
1171!
paulaa5943f2005-11-04 21:53:59 +00001172@end example
paul718e3742002-12-13 20:15:29 +00001173
1174@deffn {Command} {bgp config-type zebra} {}
paul7190f4e2003-08-12 12:40:20 +00001175Quagga style BGP configuration. This is default.
paul718e3742002-12-13 20:15:29 +00001176@end deffn
1177
paul76b89b42004-11-06 17:13:09 +00001178@node BGP instance and view
paul718e3742002-12-13 20:15:29 +00001179@subsection BGP instance and view
1180
1181BGP instance is a normal BGP process. The result of route selection
1182goes to the kernel routing table. You can setup different AS at the
1183same time when BGP multiple instance feature is enabled.
1184
1185@deffn {Command} {router bgp @var{as-number}} {}
1186Make a new BGP instance. You can use arbitrary word for the @var{name}.
1187@end deffn
1188
1189@example
1190@group
1191bgp multiple-instance
1192!
1193router bgp 1
1194 neighbor 10.0.0.1 remote-as 2
1195 neighbor 10.0.0.2 remote-as 3
1196!
1197router bgp 2
1198 neighbor 10.0.0.3 remote-as 4
1199 neighbor 10.0.0.4 remote-as 5
1200@end group
1201@end example
1202
1203BGP view is almost same as normal BGP process. The result of
1204route selection does not go to the kernel routing table. BGP view is
1205only for exchanging BGP routing information.
1206
1207@deffn {Command} {router bgp @var{as-number} view @var{name}} {}
1208Make a new BGP view. You can use arbitrary word for the @var{name}. This
1209view's route selection result does not go to the kernel routing table.
1210@end deffn
1211
1212With this command, you can setup Route Server like below.
1213
1214@example
1215@group
1216bgp multiple-instance
1217!
1218router bgp 1 view 1
1219 neighbor 10.0.0.1 remote-as 2
1220 neighbor 10.0.0.2 remote-as 3
1221!
1222router bgp 2 view 2
1223 neighbor 10.0.0.3 remote-as 4
1224 neighbor 10.0.0.4 remote-as 5
1225@end group
1226@end example
1227
paul76b89b42004-11-06 17:13:09 +00001228@node Routing policy
paul718e3742002-12-13 20:15:29 +00001229@subsection Routing policy
1230
1231You can set different routing policy for a peer. For example, you can
1232set different filter for a peer.
1233
1234@example
1235@group
1236bgp multiple-instance
1237!
1238router bgp 1 view 1
1239 neighbor 10.0.0.1 remote-as 2
1240 neighbor 10.0.0.1 distribute-list 1 in
1241!
1242router bgp 1 view 2
1243 neighbor 10.0.0.1 remote-as 2
1244 neighbor 10.0.0.1 distribute-list 2 in
1245@end group
1246@end example
1247
1248This means BGP update from a peer 10.0.0.1 goes to both BGP view 1 and view
12492. When the update is inserted into view 1, distribute-list 1 is
1250applied. On the other hand, when the update is inserted into view 2,
1251distribute-list 2 is applied.
1252
paul76b89b42004-11-06 17:13:09 +00001253@node Viewing the view
paul718e3742002-12-13 20:15:29 +00001254@subsection Viewing the view
1255
1256To display routing table of BGP view, you must specify view name.
1257
1258@deffn {Command} {show ip bgp view @var{name}} {}
1259Display routing table of BGP view @var{name}.
1260@end deffn
1261
paul76b89b42004-11-06 17:13:09 +00001262@node How to set up a 6-Bone connection
paul718e3742002-12-13 20:15:29 +00001263@section How to set up a 6-Bone connection
1264
paul6a22b1f2004-11-07 19:39:13 +00001265
paul718e3742002-12-13 20:15:29 +00001266@example
1267@group
1268zebra configuration
1269===================
1270!
1271! Actually there is no need to configure zebra
1272!
1273
1274bgpd configuration
1275==================
1276!
1277! This means that routes go through zebra and into the kernel.
1278!
1279router zebra
1280!
1281! MP-BGP configuration
1282!
1283router bgp 7675
1284 bgp router-id 10.0.0.1
1285 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 remote-as @var{as-number}
1286!
1287 address-family ipv6
1288 network 3ffe:506::/32
1289 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 activate
1290 neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 route-map set-nexthop out
1291 neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 remote-as @var{as-number}
1292 neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 route-map set-nexthop out
1293 exit-address-family
1294!
1295ipv6 access-list all permit any
1296!
1297! Set output nexthop address.
1298!
1299route-map set-nexthop permit 10
1300 match ipv6 address all
1301 set ipv6 nexthop global 3ffe:1cfa:0:2:2c0:4fff:fe68:a225
1302 set ipv6 nexthop local fe80::2c0:4fff:fe68:a225
1303!
1304! logfile FILENAME is obsolete. Please use log file FILENAME
paul7190f4e2003-08-12 12:40:20 +00001305
paul718e3742002-12-13 20:15:29 +00001306log file bgpd.log
1307!
1308@end group
1309@end example
1310
paul76b89b42004-11-06 17:13:09 +00001311@node Dump BGP packets and table
paul718e3742002-12-13 20:15:29 +00001312@section Dump BGP packets and table
1313
1314@deffn Command {dump bgp all @var{path}} {}
1315@deffnx Command {dump bgp all @var{path} @var{interval}} {}
1316Dump all BGP packet and events to @var{path} file.
1317@end deffn
1318
1319@deffn Command {dump bgp updates @var{path}} {}
1320@deffnx Command {dump bgp updates @var{path} @var{interval}} {}
1321Dump BGP updates to @var{path} file.
1322@end deffn
1323
1324@deffn Command {dump bgp routes @var{path}} {}
1325@deffnx Command {dump bgp routes @var{path}} {}
1326Dump whole BGP routing table to @var{path}. This is heavy process.
1327@end deffn
paulaa5943f2005-11-04 21:53:59 +00001328
1329@node BGP Configuration Examples
1330@section BGP Configuration Examples
1331
1332Example of a session to an upstream, advertising only one prefix to it.
1333
1334@example
1335router bgp 64512
1336 bgp router-id 10.236.87.1
1337 network 10.236.87.0/24
1338 neighbor upstream peer-group
1339 neighbor upstream remote-as 64515
1340 neighbor upstream capability dynamic
1341 neighbor upstream prefix-list pl-allowed-adv out
1342 neighbor 10.1.1.1 peer-group upstream
1343 neighbor 10.1.1.1 description ACME ISP
1344!
1345ip prefix-list pl-allowed-adv seq 5 permit 82.195.133.0/25
1346ip prefix-list pl-allowed-adv seq 10 deny any
1347
1348@end example
1349
1350A more complex example. With upstream, peer and customer sessions.
1351Advertising global prefixes and NO_EXPORT prefixes and providing
1352actions for customer routes based on community values. Extensive use of
1353route-maps and the 'call' feature to support selective advertising of
1354prefixes. This example is intended as guidance only, it has NOT been
1355tested and almost certainly containts silly mistakes, if not serious
1356flaws.
1357
1358@example
1359router bgp 64512
1360 bgp router-id 10.236.87.1
1361 network 10.123.456.0/24
1362 network 10.123.456.128/25 route-map rm-no-export
1363 neighbor upstream capability dynamic
1364 neighbor upstream route-map rm-upstream-out out
1365 neighbor cust capability dynamic
1366 neighbor cust route-map rm-cust-in in
1367 neighbor cust route-map rm-cust-out out
1368 neighbor cust send-community both
1369 neighbor peer capability dynamic
1370 neighbor peer route-map rm-peer-in in
1371 neighbor peer route-map rm-peer-out out
1372 neighbor peer send-community both
1373 neighbor 10.1.1.1 remote-as 64515
1374 neighbor 10.1.1.1 peer-group upstream
1375 neighbor 10.2.1.1 remote-as 64516
1376 neighbor 10.2.1.1 peer-group upstream
1377 neighbor 10.3.1.1 remote-as 64517
1378 neighbor 10.3.1.1 peer-group cust-default
1379 neighbor 10.3.1.1 description customer1
1380 neighbor 10.3.1.1 prefix-list pl-cust1-network in
1381 neighbor 10.4.1.1 remote-as 64518
1382 neighbor 10.4.1.1 peer-group cust
1383 neighbor 10.4.1.1 prefix-list pl-cust2-network in
1384 neighbor 10.4.1.1 description customer2
1385 neighbor 10.5.1.1 remote-as 64519
1386 neighbor 10.5.1.1 peer-group peer
1387 neighbor 10.5.1.1 prefix-list pl-peer1-network in
1388 neighbor 10.5.1.1 description peer AS 1
1389 neighbor 10.6.1.1 remote-as 64520
1390 neighbor 10.6.1.1 peer-group peer
1391 neighbor 10.6.1.1 prefix-list pl-peer2-network in
1392 neighbor 10.6.1.1 description peer AS 2
1393!
1394ip prefix-list pl-default permit 0.0.0.0/0
1395!
1396ip prefix-list pl-upstream-peers permit 10.1.1.1/32
1397ip prefix-list pl-upstream-peers permit 10.2.1.1/32
1398!
1399ip prefix-list pl-cust1-network permit 10.3.1.0/24
1400ip prefix-list pl-cust1-network permit 10.3.2.0/24
1401!
1402ip prefix-list pl-cust2-network permit 10.4.1.0/24
1403!
1404ip prefix-list pl-peer1-network permit 10.5.1.0/24
1405ip prefix-list pl-peer1-network permit 10.5.2.0/24
1406ip prefix-list pl-peer1-network permit 192.168.0.0/24
1407!
1408ip prefix-list pl-peer2-network permit 10.6.1.0/24
1409ip prefix-list pl-peer2-network permit 10.6.2.0/24
1410ip prefix-list pl-peer2-network permit 192.168.1.0/24
1411ip prefix-list pl-peer2-network permit 192.168.2.0/24
1412ip prefix-list pl-peer2-network permit 172.16.1/24
1413!
1414ip as-path access-list asp-own-as permit ^$
1415ip as-path access-list asp-own-as permit _64512_
1416!
1417! #################################################################
1418! Match communities we provide actions for, on routes receives from
1419! customers. Communities values of <our-ASN>:X, with X, have actions:
1420!
1421! 100 - blackhole the prefix
1422! 200 - set no_export
1423! 300 - advertise only to other customers
1424! 400 - advertise only to upstreams
1425! 500 - set no_export when advertising to upstreams
1426! 2X00 - set local_preference to X00
1427!
1428! blackhole the prefix of the route
1429ip community-list standard cm-blackhole permit 64512:100
1430!
1431! set no-export community before advertising
1432ip community-list standard cm-set-no-export permit 64512:200
1433!
1434! advertise only to other customers
1435ip community-list standard cm-cust-only permit 64512:300
1436!
1437! advertise only to upstreams
1438ip community-list standard cm-upstream-only permit 64512:400
1439!
1440! advertise to upstreams with no-export
1441ip community-list standard cm-upstream-noexport permit 64512:500
1442!
1443! set local-pref to least significant 3 digits of the community
1444ip community-list standard cm-prefmod-100 permit 64512:2100
1445ip community-list standard cm-prefmod-200 permit 64512:2200
1446ip community-list standard cm-prefmod-300 permit 64512:2300
1447ip community-list standard cm-prefmod-400 permit 64512:2400
1448ip community-list expanded cme-prefmod-range permit 64512:2...
1449!
1450! Informational communities
1451!
1452! 3000 - learned from upstream
1453! 3100 - learned from customer
1454! 3200 - learned from peer
1455!
1456ip community-list standard cm-learnt-upstream permit 64512:3000
1457ip community-list standard cm-learnt-cust permit 64512:3100
1458ip community-list standard cm-learnt-peer permit 64512:3200
1459!
1460! ###################################################################
1461! Utility route-maps
1462!
1463! These utility route-maps generally should not used to permit/deny
1464! routes, i.e. they do not have meaning as filters, and hence probably
1465! should be used with 'on-match next'. These all finish with an empty
1466! permit entry so as not interfere with processing in the caller.
1467!
1468route-map rm-no-export permit 10
1469 set community additive no-export
1470route-map rm-no-export permit 20
1471!
1472route-map rm-blackhole permit 10
1473 description blackhole, up-pref and ensure it cant escape this AS
1474 set ip next-hop 127.0.0.1
1475 set local-preference 10
1476 set community additive no-export
1477route-map rm-blackhole permit 20
1478!
1479! Set local-pref as requested
1480route-map rm-prefmod permit 10
1481 match community cm-prefmod-100
1482 set local-preference 100
1483route-map rm-prefmod permit 20
1484 match community cm-prefmod-200
1485 set local-preference 200
1486route-map rm-prefmod permit 30
1487 match community cm-prefmod-300
1488 set local-preference 300
1489route-map rm-prefmod permit 40
1490 match community cm-prefmod-400
1491 set local-preference 400
1492route-map rm-prefmod permit 50
1493!
1494! Community actions to take on receipt of route.
1495route-map rm-community-in permit 10
1496 description check for blackholing, no point continuing if it matches.
1497 match community cm-blackhole
1498 call rm-blackhole
1499route-map rm-community-in permit 20
1500 match community cm-set-no-export
1501 call rm-no-export
1502 on-match next
1503route-map rm-community-in permit 30
1504 match community cme-prefmod-range
1505 call rm-prefmod
1506route-map rm-community-in permit 40
1507!
1508! #####################################################################
1509! Community actions to take when advertising a route.
1510! These are filtering route-maps,
1511!
1512! Deny customer routes to upstream with cust-only set.
1513route-map rm-community-filt-to-upstream deny 10
1514 match community cm-learnt-cust
1515 match community cm-cust-only
1516route-map rm-community-filt-to-upstream permit 20
1517!
1518! Deny customer routes to other customers with upstream-only set.
1519route-map rm-community-filt-to-cust deny 10
1520 match community cm-learnt-cust
1521 match community cm-upstream-only
1522route-map rm-community-filt-to-cust permit 20
1523!
1524! ###################################################################
1525! The top-level route-maps applied to sessions. Further entries could
1526! be added obviously..
1527!
1528! Customers
1529route-map rm-cust-in permit 10
1530 call rm-community-in
1531 on-match next
1532route-map rm-cust-in permit 20
1533 set community additive 64512:3100
1534route-map rm-cust-in permit 30
1535!
1536route-map rm-cust-out permit 10
1537 call rm-community-filt-to-cust
1538 on-match next
1539route-map rm-cust-out permit 20
1540!
1541! Upstream transit ASes
1542route-map rm-upstream-out permit 10
1543 description filter customer prefixes which are marked cust-only
1544 call rm-community-filt-to-upstream
1545 on-match next
1546route-map rm-upstream-out permit 20
1547 description only customer routes are provided to upstreams/peers
1548 match community cm-learnt-cust
1549!
1550! Peer ASes
1551! outbound policy is same as for upstream
1552route-map rm-peer-out permit 10
1553 call rm-upstream-out
1554!
1555route-map rm-peer-in permit 10
1556 set community additive 64512:3200
1557@end example