-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathopenbmpd.conf
226 lines (185 loc) · 8.7 KB
/
openbmpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# Yaml 1.2 supported - http://yaml.org
---
# NOTE: By default, this configuration file is not loaded unless you specify the
# commandline option "-c <configuration filename>" This is to ensure
# backwards compatibility with the shell commandline options.
# If you are using this configuration file, then the init script (/etc/default/openbmpd)
# can be updated to only include the -c <config file> option. Remove the others.
base:
# Admin id for this collector - Use "hostname" to use the system hostname
# Can be any string value up to 64 bytes
admin_id: hostname
# BMP server listening port
listen_port: 5000
# IPv4/IPv6 mode setting
# Can be "v4" "v6" or "v4v6"
listen_mode: v4
# Listening IP address
# Default is to listen/bind to the ANY IP address. Configure one or both of the below
# to define the listening address.
#listen_ipv4: "0.0.0.0"
#listen_ipv6: "::"
buffers:
# Size in MBytes
# Each router is allocated this buffer size. This is a blocking circular buffer,
# which eliminates any read/processing delay by the collector.
# A size of 8MB is sufficient for a few peers. Use 64 if the router
# is a route reflector or large transit peering router.
#
# NOTE: In the future there will be two buffers, min and max, that will be used
# by the collector to dynamically grow based on blocking hits.
#
# Default is 5, range is 2 - 384
router: 15
heartbeat:
# In minutes; Collector heartbeat messages will be generated based on this interval.
# Heatbeat messages are sent every interval, unless there was a change event sent witin the interval.
# Consumers monitor/track this in order to detect if the collector and associated routers/peers are
# up or not.
#
# Default is 5.
interval: 5
startup:
# max_concurrent_routers defines the maximum allowed routers that can connect after openbmpd startup for RIB dump
# Default is 2
max_concurrent_routers: 2
# initial_router_time defines the initial time in seconds before allowing another concurrent router.
# When openbmpd starts, it allows immediately the max concurrent routers to connect and start RIB dumping.
# If the connecting router is not known, then the router will be considered to take up to initial_router_time
# to complete its rib dump. After this time, the router will accept another router connection.
# If the router is known, then the previous (baseline) rib dump time is used.
initial_router_time: 60
# calculate_bseline indictaes if router baseline time in seconds should be calculated.
# If false, initial_router_time will always be used.
calculate_baseline: true
#pat_enabled value is a boolean:
# false (the default) - MD5 of (connection source address, collector hash)
#
# true - MD5 of one of the following:
#
# If INIT_BGP_ID (type=65531) is present:
# (bgp_router_id, collector_hash)
#
# If INIT doesn't include the BGP_ID, then:
# (name, collector_hash)
#
# If INIT doesn't include either bgp_id or name, then it uses:
# (connection source address, collector hash)
pat_enabled: false
debug:
general: false # General debugging
bmp: false # BMP related
bgp: false # BGP related
msgbus: false # Kafka/message bus - this will enable librdkafka debugging as well
kafka:
# message.max.bytes - Maximum transmit message size
message.max.bytes: 1000000
# receive.message.max.bytes - Maximum receive message size
# The value should be at least
# fetch.message.max.bytes * number of partitions consumed from i
# + messaging overhead (e.g. 200000 bytes).
receive.message.max.bytes: 200000000
# Client group session and failure detection timeout in milliseconds
session.timeout.ms: 10000
# Timeout for network requests
socket.timeout.ms: 30000
# Maximum number of messages allowed on the producer queue.
queue.buffering.max.messages: 100000
# Maximum number of kbytes allowed on the producer queue. Range 1 - 2097151
queue.buffering.max.kbytes: 1048576
# Maximum time, in milliseconds, for buffering data on the producer queue.
queue.buffering.max.ms: 100
# How many times to retry sending a failing MessageSet.
# Note: retrying may cause reordering.
message.send.max.retries: 2
# The backoff time in milliseconds before retrying a message send.
retry.backoff.ms: 100
# Compression codec to use for compressing message sets: none, gzip or snappy
# By default it is set to snappy
compression.codec: snappy
# Broker list.
# For IPv6 use "[host or ip]:port". Make sure to use double quotes for IPv6
# Can specify the protocol using <proto>://<host>[:port]
brokers:
- localhost:9092
# Topics are the topic names used by the collector when producing messages.
# You can customize each topic, including using variable substitution.
#
# mapping.groups.* can be used as variables.
# E.g. unicast_prefix: "{root}.{parsed}.{router_group}.{peer_group}.unicast_prefix"
#
# Global/system variables will be replaced at runtime based on mappings and content.
#
# Topics names may be set to null (or the empty string) to disable production of associated messages.
#
# NOTE: If you define a system variable (e.g. router_group, peer_group, ...) and there is no match,
# "default" will be used in its place.
topics:
# Global/System variables
# {router_group} - See mapping.router_group
# {peer_group} - See mapping.peer_group
#
# Below are variables that should be used with caution becuase additional memory will be used to track the topics
#
# {peer_asn} - Peer ASN (remote peer ASN)
#
# Define variables - also see mappings for variables
# You should use simple ascii strings with no spaces for the variables used in topic mapping
variables:
root: "openbmp" # Defines the root topic (e.g. openbmp.*)
raw: "bmp_raw" # Defines the name for bmp raw messages (e.g. openbmp.bmp_raw.*)
parsed: "parsed" # Defines the name for parsed messages (e.g. openbmp.parsed.*)
# Define the topic names
names:
# collector messages are not by router or group, so those group mappings should not be used
collector: "{root}.{parsed}.collector"
# router messages are not by peer or group, so peer group mapping should not be used
router: "{root}.{parsed}.router"
# The below support group mappings router_group and peer_group, and peer_asn
peer: "{root}.{parsed}.peer"
bmp_stat: "{root}.{parsed}.bmp_stat"
bmp_raw: "{root}.{raw}"
base_attribute: "{root}.{parsed}.base_attribute"
unicast_prefix: "{root}.{parsed}.unicast_prefix"
ls_node: "{root}.{parsed}.ls_node"
ls_link: "{root}.{parsed}.ls_link"
ls_prefix: "{root}.{parsed}.ls_prefix"
l3vpn: "{root}.{parsed}.l3vpn"
evpn: "{root}.{parsed}.evpn"
mapping:
groups:
# Order of matching
# Matching order is performed in the following sequence. The first match found is used.
#
# regexp_hostname - Hostname/regular expression is used first
# prefix_range - Prefix range is used second
# asn - Peer asn list
# {router_group} is the variable that you use for topic substitution
router_group:
# name defines the value that is substituted for the variable. This provides a consistent
# mapping for different IP's and hostnames
- name: "phil-cran"
# You can define a list of regexp's that match for hostname to group mapping
regexp_hostname:
- .*\.phil\..*
# You can also define a list of prefixes that match for ip to group mapping
prefix_range:
- 10.100.100.0/24
- 10.100.104.0/24
- "2001:420:305c:100::/64"
peer_group:
# name defines the value that is substituted for the variable. This provides a consistent
# mapping for different IP's and hostnames
- name: "lab"
# You can define a list of regexp's that match for hostname to group mapping
regexp_hostname:
- .*\.lab\..*
# You can also define a list of prefixes that match for ip to group mapping
prefix_range:
- 10.100.100.0/24
- 10.100.104.0/24
# You can define the matching to look at the peer asn. This is only available for peer_groups.
asn:
- 100
- 65000
- 65001