bird.conf.example2 5.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
 *	This is an example configuration file for MB-BGP setting
 */


log "bird.log" all;
# debug protocols all;

router id 192.168.1.1;

ipv4 table master4;
ipv6 table master6;

ipv4 table mcast4;
ipv6 table mcast6;

17 18 19 20 21 22 23 24 25
ipv4 table mtab4;
ipv6 table mtab6;

vpn4 table vpntab4;
vpn6 table vpntab6;

vpn4 table vpn4mc;
vpn6 table vpn6mc;

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
flow4 table flowtab4;
flow6 table flowtab6;


protocol device {
}

protocol kernel kernel4 {
	ipv4 {
		export all;
	};
}

protocol kernel kernel6 {
	ipv6 {
		export all;
	};
}


protocol static static4 {
	ipv4;

	route 10.10.0.0/24 via 192.168.1.2;
	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)); };
}

protocol static static6 {
	ipv6;

	route 2001:db8:10:10::/64 via 2001:db8:1:1::10;
	route 2001:db8:10:11::/64 via 2001:db8:1:1::10;

	route 2001:db8:1:1::/64 via fe80::ec9b:67ff:fe60:fd5d % ve1;
}

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
# VPNv4 routes with MPLS labels
protocol static statvpn4 {
	vpn4;

	route 10:10 10.20.0.0/24 via 192.168.1.2 mpls 210;
	route 10:10 10.20.1.0/24 via 192.168.1.2 mpls 210;
	route 10:20 10.20.0.0/24 via 192.168.1.2 mpls 220;
	route 10:20 10.20.1.0/24 via 192.168.1.2 mpls 220;
}

protocol static statvpn6 {
	vpn6;

	route 10:10 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/210;
	route 10:10 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/210;
	route 10:20 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/220;
	route 10:20 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/220;
}

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
# RFC 5575 flow specification
protocol static flowstat4 {
	flow4;

	route flow4 {
		dst 10.0.0.0/8;
		proto = 23;
		dport > 24 && < 30 || 40..50,60..70,80;
		sport > 24 && < 30 || = 40 || 50,60..70,80;
		icmp type 80;
		icmp code 90;
		tcp flags 0x03/0x0f;
		length 2048..65535;
		dscp = 63;
		fragment dont_fragment, is_fragment || !first_fragment;
96
	};
97 98 99 100 101 102

	route flow4 {
		dst 11.0.0.0/8;
		proto = 0x12;
		sport > 0x5678 && < 0x9abc || 0xdef0 || 0x1234,0x5678,0x9abc..0xdef0;
		dport = 50;
103
		tcp flags 0x000/0xf00;
104
	};
105 106 107

	route flow4 {
		dst 12.0.0.0/32;
108
		tcp flags ! 0/0x999;
109
	};
110 111 112

	route flow4 {
		dst 220.0.254.0/24;
113
		tcp flags 0x99/0x999;
114
	};
115 116 117

	route flow4 {
		dst 220.0.254.192/28;
118
		tcp flags ! 0xfff/0xfff;
119
	};
120 121 122

	route flow4 {
		dst 15.0.0.0/8;
123
		tcp flags ! 0x999/0x999;
124
	};
125 126 127 128 129 130 131 132 133 134 135 136 137 138
}

protocol static flowstat6 {
	flow6;

	route flow6 {
		dst fec0:1122:3344:5566::1/128;
		src 0000:0000:0000:0001:1234:5678:9800:0000/101 offset 63;
		next header = 23;
		sport 24..30, 42 || 50,60,70..80;
		dport = 50;
		tcp flags 0x03/0x0f, !0/0xff || 0x33/0x33;
		fragment !is_fragment || !first_fragment;
		label 0xaaaa/0xaaaa && 0x33/0x33;
139
	};
140 141 142 143 144 145 146 147

	route flow6 {
		dst fec0:1122:3344:5566::1/128;
		src ::1:1234:5678:9800:0/101 offset 63;
		next header = 23;
		dport = 50;
		sport > 24 && < 30 || = 40 || = 50 || = 60 || >= 70 && <= 80;
		tcp flags 0x3/0x3 && 0x0/0xc;
148
	};
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
}


protocol pipe {
	table master4;
	peer table mcast4;
	import none;
	export where source = RTS_OSPF;
}

protocol pipe {
	table master6;
	peer table mcast6;
	import none;
	export where source = RTS_OSPF;
}

166
protocol ospf v2 ospf4 {
167 168 169 170 171 172 173 174 175 176 177 178 179 180
	ipv4 {
		import all;
#		export where source = RTS_STATIC;
	};

	area 0 {
		interface "ve0" { stub; };
		interface "ve1" { hello 5; type ptp; };
		interface "ve2" { hello 5; type bcast; ttl security; };
		interface "ve3" { hello 5; type bcast; ttl security; };
	};
}


181
protocol ospf v3 ospf6 {
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 227 228 229 230 231 232 233 234 235
	ipv6 {
		import all;
#		export where source = RTS_STATIC;
	};

	area 0 {
		interface "ve0" { stub; };
		interface "ve1" { hello 5; type ptp; };
		interface "ve2" { hello 5; type bcast; };
	};
}

protocol bgp {
	local 192.168.11.1 as 1000;
	neighbor 192.168.11.2 as 2000;
#	local 192.168.1.1 as 1000;
#	neighbor 192.168.2.1 as 2000;
#	multihop;
#	rr client;
#	strict bind;
#	debug all;

	# regular IPv4 unicast (1/1)
	ipv4 {
		# connects to master4 table by default
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
	};

	# regular IPv6 unicast (2/1)
	ipv6 {
		# connects to master6 table by default
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
#		next hop address 2001:db8:1:1::1;
	};

	# IPv4 multicast topology (1/2)
	ipv4 multicast {
		# explicit IPv4 table
		table mcast4;
		import all;
		export all;
	};

	# IPv6 multicast topology (2/2)
	ipv6 multicast {
		# explicit IPv6 table
		table mcast6;
		import all;
		export all;
#		next hop address 2001:db8:1:1::1;
	};

236 237 238 239 240 241 242 243 244
	# IPv4 with MPLS labels (1/4)
	ipv4 mpls {
		# explicit IPv4 table
		table mtab4;
		import all;
		export all;
	};

	# IPv6 with MPLS labels (2/4)
Ondřej Zajíček's avatar
Ondřej Zajíček committed
245
	ipv6 mpls {
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281
		# explicit IPv6 table
		table mtab6;
		import all;
		export all;
		# allows IPv4 next hops (6PE)
		# extended next hop;
	};

	# VPNv4 with MPLS labels (1/128)
        vpn4 mpls {
		# connects to vpntab4 table by default
		import all;
		export all;
	};

	# VPNv6 with MPLS labels (2/128)
        vpn6 mpls {
		# connects to vpntab6 table by default
		import all;
		export all;
	};

	# VPNv4 multicast topology (1/129)
        vpn4 multicast {
		table vpn4mc;
		import all;
		export all;
	};

	# VPNv6 multicast topology (2/129)
        vpn6 multicast {
		table vpn6mc;
		import all;
		export all;
	};

282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
	# IPv4 Flowspec (1/133)
	flow4 {
		# connects to flowtab4 table by default
		import all;
		export all;
	};

	# IPv6 Flowspec (2/133)
	flow6 {
		# connects to flowtab6 table by default
		import all;
		export all;
	};
}

protocol bgp {
	local 192.168.1.1 as 1000;
	neighbor 192.168.3.1 as 1000;
	multihop;
	rr client;

	ipv4 {
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
	};

	ipv6 {
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
		next hop address 2001:db8:1:1::1;
	};
}

protocol bgp {
	local 2001:db8:1:1::1 as 1000;
	neighbor 2001:db8:4:1::1 as 1000;
	multihop;
	rr client;

	ipv4 {
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
		next hop address 192.168.4.1;
	};

	ipv6 {
		import all;
		export where source ~ [ RTS_STATIC, RTS_BGP ];
	};
}