]>
Commit | Line | Data |
---|---|---|
66e5dc15 | 1 | /* |
6ea8a46c | 2 | * This is an example configuration file for MP-BGP setting |
66e5dc15 OZ |
3 | */ |
4 | ||
5 | ||
6 | log "bird.log" all; | |
7 | # debug protocols all; | |
8 | ||
9 | router id 192.168.1.1; | |
10 | ||
11 | ipv4 table master4; | |
12 | ipv6 table master6; | |
13 | ||
14 | ipv4 table mcast4; | |
15 | ipv6 table mcast6; | |
16 | ||
a1de692a OZ |
17 | ipv4 table mtab4; |
18 | ipv6 table mtab6; | |
19 | ||
20 | vpn4 table vpntab4; | |
21 | vpn6 table vpntab6; | |
22 | ||
23 | vpn4 table vpn4mc; | |
24 | vpn6 table vpn6mc; | |
25 | ||
66e5dc15 OZ |
26 | flow4 table flowtab4; |
27 | flow6 table flowtab6; | |
28 | ||
29 | ||
30 | protocol device { | |
66e5dc15 OZ |
31 | } |
32 | ||
33 | protocol kernel kernel4 { | |
66e5dc15 OZ |
34 | ipv4 { |
35 | export all; | |
36 | }; | |
37 | } | |
38 | ||
39 | protocol kernel kernel6 { | |
66e5dc15 OZ |
40 | ipv6 { |
41 | export all; | |
42 | }; | |
43 | } | |
44 | ||
45 | ||
46 | protocol static static4 { | |
47 | ipv4; | |
48 | ||
49 | route 10.10.0.0/24 via 192.168.1.2; | |
50 | route 10.10.1.0/24 via 192.168.1.2 { bgp_large_community.add((10,20,30)); bgp_large_community.add((10,(20*3),10)); }; | |
51 | } | |
52 | ||
53 | protocol static static6 { | |
54 | ipv6; | |
55 | ||
56 | route 2001:db8:10:10::/64 via 2001:db8:1:1::10; | |
57 | route 2001:db8:10:11::/64 via 2001:db8:1:1::10; | |
58 | ||
59 | route 2001:db8:1:1::/64 via fe80::ec9b:67ff:fe60:fd5d % ve1; | |
60 | } | |
61 | ||
a1de692a OZ |
62 | # VPNv4 routes with MPLS labels |
63 | protocol static statvpn4 { | |
64 | vpn4; | |
65 | ||
66 | route 10:10 10.20.0.0/24 via 192.168.1.2 mpls 210; | |
67 | route 10:10 10.20.1.0/24 via 192.168.1.2 mpls 210; | |
68 | route 10:20 10.20.0.0/24 via 192.168.1.2 mpls 220; | |
69 | route 10:20 10.20.1.0/24 via 192.168.1.2 mpls 220; | |
70 | } | |
71 | ||
72 | protocol static statvpn6 { | |
73 | vpn6; | |
74 | ||
75 | route 10:10 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/210; | |
76 | route 10:10 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/210; | |
77 | route 10:20 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/220; | |
78 | route 10:20 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/220; | |
79 | } | |
80 | ||
66e5dc15 OZ |
81 | # RFC 5575 flow specification |
82 | protocol static flowstat4 { | |
83 | flow4; | |
84 | ||
85 | route flow4 { | |
86 | dst 10.0.0.0/8; | |
87 | proto = 23; | |
88 | dport > 24 && < 30 || 40..50,60..70,80; | |
89 | sport > 24 && < 30 || = 40 || 50,60..70,80; | |
90 | icmp type 80; | |
91 | icmp code 90; | |
92 | tcp flags 0x03/0x0f; | |
93 | length 2048..65535; | |
94 | dscp = 63; | |
95 | fragment dont_fragment, is_fragment || !first_fragment; | |
a1de692a | 96 | }; |
66e5dc15 OZ |
97 | |
98 | route flow4 { | |
99 | dst 11.0.0.0/8; | |
100 | proto = 0x12; | |
101 | sport > 0x5678 && < 0x9abc || 0xdef0 || 0x1234,0x5678,0x9abc..0xdef0; | |
102 | dport = 50; | |
5ca4bd5d | 103 | tcp flags 0x000/0xf00; |
a1de692a | 104 | }; |
66e5dc15 OZ |
105 | |
106 | route flow4 { | |
107 | dst 12.0.0.0/32; | |
5ca4bd5d | 108 | tcp flags ! 0/0x999; |
a1de692a | 109 | }; |
66e5dc15 OZ |
110 | |
111 | route flow4 { | |
112 | dst 220.0.254.0/24; | |
5ca4bd5d | 113 | tcp flags 0x99/0x999; |
a1de692a | 114 | }; |
66e5dc15 OZ |
115 | |
116 | route flow4 { | |
117 | dst 220.0.254.192/28; | |
5ca4bd5d | 118 | tcp flags ! 0xfff/0xfff; |
a1de692a | 119 | }; |
66e5dc15 OZ |
120 | |
121 | route flow4 { | |
122 | dst 15.0.0.0/8; | |
5ca4bd5d | 123 | tcp flags ! 0x999/0x999; |
a1de692a | 124 | }; |
66e5dc15 OZ |
125 | } |
126 | ||
127 | protocol static flowstat6 { | |
128 | flow6; | |
129 | ||
130 | route flow6 { | |
131 | dst fec0:1122:3344:5566::1/128; | |
132 | src 0000:0000:0000:0001:1234:5678:9800:0000/101 offset 63; | |
133 | next header = 23; | |
134 | sport 24..30, 42 || 50,60,70..80; | |
135 | dport = 50; | |
136 | tcp flags 0x03/0x0f, !0/0xff || 0x33/0x33; | |
137 | fragment !is_fragment || !first_fragment; | |
138 | label 0xaaaa/0xaaaa && 0x33/0x33; | |
a1de692a | 139 | }; |
66e5dc15 OZ |
140 | |
141 | route flow6 { | |
142 | dst fec0:1122:3344:5566::1/128; | |
143 | src ::1:1234:5678:9800:0/101 offset 63; | |
144 | next header = 23; | |
145 | dport = 50; | |
146 | sport > 24 && < 30 || = 40 || = 50 || = 60 || >= 70 && <= 80; | |
147 | tcp flags 0x3/0x3 && 0x0/0xc; | |
a1de692a | 148 | }; |
66e5dc15 OZ |
149 | } |
150 | ||
151 | ||
152 | protocol pipe { | |
153 | table master4; | |
154 | peer table mcast4; | |
155 | import none; | |
156 | export where source = RTS_OSPF; | |
157 | } | |
158 | ||
159 | protocol pipe { | |
160 | table master6; | |
161 | peer table mcast6; | |
162 | import none; | |
163 | export where source = RTS_OSPF; | |
164 | } | |
165 | ||
8e25f7d2 | 166 | protocol ospf v2 ospf4 { |
66e5dc15 OZ |
167 | ipv4 { |
168 | import all; | |
169 | # export where source = RTS_STATIC; | |
170 | }; | |
171 | ||
172 | area 0 { | |
173 | interface "ve0" { stub; }; | |
174 | interface "ve1" { hello 5; type ptp; }; | |
175 | interface "ve2" { hello 5; type bcast; ttl security; }; | |
176 | interface "ve3" { hello 5; type bcast; ttl security; }; | |
177 | }; | |
178 | } | |
179 | ||
180 | ||
8e25f7d2 | 181 | protocol ospf v3 ospf6 { |
66e5dc15 OZ |
182 | ipv6 { |
183 | import all; | |
184 | # export where source = RTS_STATIC; | |
185 | }; | |
186 | ||
187 | area 0 { | |
188 | interface "ve0" { stub; }; | |
189 | interface "ve1" { hello 5; type ptp; }; | |
190 | interface "ve2" { hello 5; type bcast; }; | |
191 | }; | |
192 | } | |
193 | ||
194 | protocol bgp { | |
195 | local 192.168.11.1 as 1000; | |
196 | neighbor 192.168.11.2 as 2000; | |
197 | # local 192.168.1.1 as 1000; | |
198 | # neighbor 192.168.2.1 as 2000; | |
199 | # multihop; | |
200 | # rr client; | |
201 | # strict bind; | |
202 | # debug all; | |
203 | ||
204 | # regular IPv4 unicast (1/1) | |
205 | ipv4 { | |
206 | # connects to master4 table by default | |
207 | import all; | |
208 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
209 | }; | |
210 | ||
211 | # regular IPv6 unicast (2/1) | |
212 | ipv6 { | |
213 | # connects to master6 table by default | |
214 | import all; | |
215 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
216 | # next hop address 2001:db8:1:1::1; | |
217 | }; | |
218 | ||
219 | # IPv4 multicast topology (1/2) | |
220 | ipv4 multicast { | |
221 | # explicit IPv4 table | |
222 | table mcast4; | |
223 | import all; | |
224 | export all; | |
225 | }; | |
226 | ||
227 | # IPv6 multicast topology (2/2) | |
228 | ipv6 multicast { | |
229 | # explicit IPv6 table | |
230 | table mcast6; | |
231 | import all; | |
232 | export all; | |
233 | # next hop address 2001:db8:1:1::1; | |
234 | }; | |
235 | ||
a1de692a OZ |
236 | # IPv4 with MPLS labels (1/4) |
237 | ipv4 mpls { | |
238 | # explicit IPv4 table | |
239 | table mtab4; | |
240 | import all; | |
241 | export all; | |
242 | }; | |
243 | ||
244 | # IPv6 with MPLS labels (2/4) | |
def6efa1 | 245 | ipv6 mpls { |
a1de692a OZ |
246 | # explicit IPv6 table |
247 | table mtab6; | |
248 | import all; | |
249 | export all; | |
250 | # allows IPv4 next hops (6PE) | |
251 | # extended next hop; | |
252 | }; | |
253 | ||
254 | # VPNv4 with MPLS labels (1/128) | |
255 | vpn4 mpls { | |
256 | # connects to vpntab4 table by default | |
257 | import all; | |
258 | export all; | |
259 | }; | |
260 | ||
261 | # VPNv6 with MPLS labels (2/128) | |
262 | vpn6 mpls { | |
263 | # connects to vpntab6 table by default | |
264 | import all; | |
265 | export all; | |
266 | }; | |
267 | ||
268 | # VPNv4 multicast topology (1/129) | |
269 | vpn4 multicast { | |
270 | table vpn4mc; | |
271 | import all; | |
272 | export all; | |
273 | }; | |
274 | ||
275 | # VPNv6 multicast topology (2/129) | |
276 | vpn6 multicast { | |
277 | table vpn6mc; | |
278 | import all; | |
279 | export all; | |
280 | }; | |
281 | ||
66e5dc15 OZ |
282 | # IPv4 Flowspec (1/133) |
283 | flow4 { | |
284 | # connects to flowtab4 table by default | |
285 | import all; | |
286 | export all; | |
287 | }; | |
288 | ||
289 | # IPv6 Flowspec (2/133) | |
290 | flow6 { | |
291 | # connects to flowtab6 table by default | |
292 | import all; | |
293 | export all; | |
294 | }; | |
295 | } | |
296 | ||
297 | protocol bgp { | |
298 | local 192.168.1.1 as 1000; | |
299 | neighbor 192.168.3.1 as 1000; | |
300 | multihop; | |
301 | rr client; | |
302 | ||
303 | ipv4 { | |
304 | import all; | |
305 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
306 | }; | |
307 | ||
308 | ipv6 { | |
309 | import all; | |
310 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
311 | next hop address 2001:db8:1:1::1; | |
312 | }; | |
313 | } | |
314 | ||
315 | protocol bgp { | |
316 | local 2001:db8:1:1::1 as 1000; | |
317 | neighbor 2001:db8:4:1::1 as 1000; | |
318 | multihop; | |
319 | rr client; | |
320 | ||
321 | ipv4 { | |
322 | import all; | |
323 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
324 | next hop address 192.168.4.1; | |
325 | }; | |
326 | ||
327 | ipv6 { | |
328 | import all; | |
329 | export where source ~ [ RTS_STATIC, RTS_BGP ]; | |
330 | }; | |
331 | } | |
332 |