1EXABGP(1) BSD General Commands Manual EXABGP(1)
2
4 exabgp — Influence or control network using BGP
5
7 exabgp [--help | -h] [--version | -v] [--root | -f]
8 [--env env-config | -e env-config] [--full-ini | --fi]
9 [--diff-ini | --di] [--full-env | --fe] [--diff-env | --de]
10 [--run helper] [--debug | -d] [--validate] [--signal time]
11 [--once | -1] [--pdb | -p] [--memory | -s] [--profile profile]
12 [--test | -t] [--decode hex-message | -x hex-message]
13 [configuration ...]
14
16 exabgp allows engineers to control their network from commodity servers.
17 Possible uses include DDoS mitigation, network visualisation, service
18 high availability and implementing anycast. exabgp does not perform any
19 FIB manipulation on the system it runs on; if you need that this is not
20 the program for you. exabgp can also print received BGP messages into
21 readable plain text or JSON formatted text.
22
23 The arguments are as follows:
24
25
26 --help | -h
27 Display summary of usage and configuration of exabgp.
28
29 --version | -v
30 Display the exabgp version number and exit.
31
32 --root folder | -f folder
33 Root folder where etc, bin, sbin are located.
34
35 --env env-config | -e env-config
36 Specify where the environment configuration file can be found.
37
38 --full-ini | --fi
39 Display the full environment configuration using on stdout using
40 the ini format.
41
42 --diff-ini | --di
43 Display the non-default environment configuration on stdout using
44 the ini format.
45
46 --full-env | --fe
47 Display the full environment configuration on stdout using the
48 env format.
49
50 --diff-env | --de
51 Display the non-default configuration on stdout using the env
52 format.
53
54 --run helper
55 Do not run ExaBGP but one of its helper programs, options are:
56 healthcheck and cli
57
58 --debug | -d
59 Start the python debugger on serious logging on and on reception
60 of the SIGTERM signal. This is a shortcut for ex‐
61 abgp.log.all=true and exabgp.log.level=DEBUG.
62
63 --validate
64 Validate the configuration file format only.
65
66 --signal time
67 Issue a SIGUSR1 signal to reload the configuration after the
68 specified number of seconds, only useful for code debugging.
69
70 --once | -1
71 Only perform one attempt to connect to peers, used mostly for de‐
72 bugging.
73
74 --pdb | -p
75 Start the python debugger on critical logging, reception of
76 SIGTERM, and on uncaught python exceptions. This is a shortcut
77 for exabgp.pdb.enable=true.
78
79 --memory | -s
80 Display memory usage information on program exit.
81
82 --profile profile
83 Enable collection of profiling information to the given file.
84 This is a shortcut for exabgp.profile.enable=true and exabgp.pro‐
85 file.file=profile.
86
87 --test | -t
88 Only do a configuration validity check.
89
90 --decode hex-message | -x hex-message
91 Decode a raw route packet in hexadecimal string.
92
93
95 The configuration of exabgp is split in two:
96
97 • The environment configuration which controls the basic execution of
98 exabgp such as logging, daemonizing, pid-file, profiling etc.
99 • The BGP configuration of exabgp, which specifies which neighbors it
100 should talk BGP with and all other aspects of the BGP configuration.
101
102 The environment configuration can be specified a number of different
103 ways, with different priority:
104
105 1. Command line values using dot-separated notation.
106 2. Environment variables using dot-separated notation.
107 3. Command line values using underscore-separated notation.
108 4. Environment variables using underscore-seprated notation.
109 5. The values from the ini configuration file, /etc/exabgp/exabgp.env
110 6. The built-in default values.
111
112 The following environment variables can be used to configure the basic
113 execution of exabgp:
114
115 exabgp.api.encoder (experimental) default encoder to use with external
116 API (text or json). Default: text.
117
118 exabgp.api.highres Controls whether to use high-resolution timestamps
119 in JSON. Default: false.
120
121 exabgp.api.respawn Controls whether to respawn a helper process if it
122 dies. Default: false.
123
124 exabgp.bgp.openwait Controls how many seconds we should wait for a BGP
125 open message once the TCP session is established.
126 Default: 60 seconds.
127
128 exabgp.cache.attributes Controls whether all attributes (configuration
129 and wire) should be cached for faster parsing. De‐
130 fault: true.
131
132 exabgp.cache.nexthops (deprecated) Controls whether route next-hops are
133 cached. Default: true.
134
135 exabgp.daemon.daemonize Controls whether exabgp should run in the back‐
136 ground. Default: false.
137
138 exabgp.daemon.pid Where to save the PID of exabgp if we manage it.
139 Default: '' (not set).
140
141 exabgp.daemon.user The user to run exabgp as. Should be an unprivi‐
142 leged user. Default: nobody.
143
144 exabgp.log.all Controls whether debug logging should be done for
145 everything. Default: false.
146
147 exabgp.log.configuration Controls whether logging should be done for the
148 configuration and command parsing. Default: true.
149
150 exabgp.log.daemon Controls whether logging should be done for PID
151 change, forking, etc. Default: true.
152
153 exabgp.log.destination Controls where logging should be sent. syslog (or
154 no setting) sends the data to the local syslog
155 server. host:<location> sends the data to a remote
156 syslog server. stdout sends the data to stdout.
157 stderr sends the data to stderr. <filename> sends
158 the data to the named file. Default: stdout.
159
160 exabgp.log.enable Controls whether logging should be done. Default:
161 true.
162
163 exabgp.log.level Sets the minimum severity level to log. Default:
164 INFO.
165
166 exabgp.log.message Controls logging of changes in route announcement
167 in config reload. Default: false.
168
169 exabgp.log.network Controls logging of networking information (TCP/IP
170 state, network state etc.). Default: true.
171
172 exabgp.log.packets Controls logging of BGP packets sent and received.
173 Default: false.
174
175 exabgp.log.parser Controls logging of BGP message parsing details.
176 Default: false.
177
178 exabgp.log.processes Controls logging of forked processes. Default:
179 true.
180
181 exabgp.log.reactor Controls logging of signals received and command
182 reload. Default: true.
183
184 exabgp.log.rib Controls logging of changes in locally configured
185 routes. Default: false.
186
187 exabgp.log.routes Controls logging of received routes. Default:
188 false.
189
190 exabgp.log.short Coontrols whether to use long or short log format
191 (not prepended with time, level, pid and source).
192 Default: false.
193
194 exabgp.log.timers Controls logging of keepalive timers. Default:
195 false.
196
197 exabgp.pdb.enable Controls whether pdb, the python interactive debug‐
198 ger should be started on program faults. Default:
199 false.
200
201 exabgp.profile.enable Controls whether profiling of the code should be
202 done. Default: false.
203
204 exabgp.profile.file Controls where profiling results should be written.
205 None/empty means stdout. Default: empty.
206
207 exabgp.reactor.speed Controls the time of one reactor loop. Use only if
208 you understand the code. Default: 1.0.
209
210 exabgp.tcp.acl (experimental, unimplemented). Default: empty.
211
212 exabgp.tcp.bind IP address to bind to when listening (no ip to dis‐
213 able). Default: empty.
214
215 exabgp.tcp.delay Start to announce routes when the minutes in the
216 hour is a modulo of this number. Default: 0.
217
218 exabgp.tcp.once Only perform one TCP connection attempt per peer,
219 for debugging scripts. Default: false.
220
221 exabgp.tcp.port Port to bind to when listening. Default: 179.
222
224 /etc/exabgp/exabgp.env is the default file for setting the "environment"
225 variables controlling the execution of exabgp. An alaternative "env"
226 configuration file can be supplied via the --env env-config argument.
227 The format of this file is "Windows INI format". All the default set‐
228 tings can be shown with the exabgp --test --full-init command, an example
229 showing parts of this output is:
230
231 [exabgp.api]
232 encoder = text
233 highres = false
234 respawn = false
235
236 [exabgp.bgp]
237 openwait = 60
238
239 Additionally, the user will need to supply a configuration file control‐
240 ling the BGP configuration of exabgp, in the format described in
241 exabgp.conf(5).
242
244 exabgp catches a few different signals to control specific actions. They
245 are:
246
247 ALRM Restarts exabgp.
248 USR1 Causes exabgp to reload the configuration.
249 USR2 Causes exabgp to reload the configuration and restart any forked
250 processes.
251 TERM Terminates exabgp.
252 HUP Also terminates exabgp (does not reload the configuration any‐
253 more).
254
255 Reloading large configurations using signals is currently not recom‐
256 mended, because the configuration parsing code is currently blocking.
257 Therefore if you have a large configuration change, it could cause the
258 peer to miss some keepalive and cause a session flap.
259
261 The --test argument is useful to validate the syntax of the configuration
262 file. The --debug flag will provide copious debug output to whereever
263 the various exabgp.log variable settings dictate.
264
266 exabgp.conf(5)
267
269 A list of the standards exabgp implements which is indicative of the fea‐
270 tures implemented is:
271
272 RFC 4893 BGP Support for Four-octet AS Number Space
273 RFC 4760 Multiprotocol Extension for BGP-4
274 RFC 4659 BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6
275 VPN
276 RFC 4762 Virtual Private LAN Service (VPLS) Using Label Distribution
277 Protocol (LDP) Signalling
278 RFC 5575 Dissemination of Flow Specification Rules
279 RFC 4724 Graceful Restart Mechanism for BGP
280 RFC 7313 Enhanced Route Refresh Capability for BGP-4
281 RFC 7311 The Accumulated IGP Metric Attribute for BGP
282 draft-raszuk-idr-flow-spec-v6-03 (draft-ietf-idr-flow-spec-v6-06), Dis‐
283 semination of Flow Specification Rules for IPv6
284 draft-simpson-idr-flowspec-redirect-00 (-02) BGP Flow-Spec Redirect to IP
285 Action
286 draft-ietf-idr-flowspec-redirect-00 (-02) BGP Flow-Spec Redirect to IP
287 Action
288 draft-ietf-idr-add-paths-08 (-10) Advertisement of Multiple Paths in BGP
289 draft-ietf-idr-bgp-multisession-07 (??)
290 draft-scudder-bmp-01 (??)
291
292 A list of other more basic BGP-related standard entirely or partially im‐
293 plemented is:
294
295 RFC 1997 BGP Communities Attribute
296 RFC 8092 BGP Large Communities Attribute
297 RFC 2385 Protection of BGP Sessions via the TCP MD5 Signature
298 RFC 2545 Use of BGP-4 Multirptocol Extensions for IPv6 Inter-Domain
299 Routing
300 RFC 2918 Route Refresh Capability for BGP-4
301 RFC 3107 Carrying Label Information in BGP-4
302 RFC 3765 NOPEER Community for Border Gateway Protocol (BGP) Route
303 Scope Control
304 RFC 7999 BLACKHOLE BGP Community for Blackholing
305 RFC 4271 A Border Gateway Protocol 4 (BGP-4)
306 RFC 4360 BGP Extended Communities Attribute
307 RFC 4364 Constrained Route Distribution for BGP/MPLS IP VPNs
308 RFC 4456 BGP Rotue Relection: An Alternative to Full Mesh Internal BGP
309 (iBGP)
310 RFC 5396 Textual Representation of Autonomous System (AS) Numbers
311 RFC 5492 Capabilities Advertisement with BGP-4
312 RFC 6286 Autonomous-System-Wide Unique BGP Identifier for BGP-4
313 RFC 6608 Subcodes for BGP Finate State Machine Error
314 RFC 7752 North-Bound Distribution of Link-State and Traffic Engineer‐
315 ing (TE) Information Using BGP
316 draft-gredler-idr-bgp-ls-segment-routing-ext-03 BGP Link-State extensions
317 for Segment Routing
318 draft-ietf-idr-bgp-prefix-sid-05 Segment Routing Prefix SID extensions
319 for BGP
320
321 February 26, 2015