| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2020-11-15 16:28:13 +01:00
										 |  |  |  *	This is an example configuration file for MP-BGP setting | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | ipv4 table mtab4; | 
					
						
							|  |  |  | ipv6 table mtab6; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | vpn4 table vpntab4; | 
					
						
							|  |  |  | vpn6 table vpntab6; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | vpn4 table vpn4mc; | 
					
						
							|  |  |  | vpn6 table vpn6mc; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 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; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | # 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; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | # 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; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	route flow4 { | 
					
						
							|  |  |  | 		dst 11.0.0.0/8; | 
					
						
							|  |  |  | 		proto = 0x12; | 
					
						
							|  |  |  | 		sport > 0x5678 && < 0x9abc || 0xdef0 || 0x1234,0x5678,0x9abc..0xdef0; | 
					
						
							|  |  |  | 		dport = 50; | 
					
						
							| 
									
										
										
										
											2017-04-26 17:13:45 +02:00
										 |  |  | 		tcp flags 0x000/0xf00; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	route flow4 { | 
					
						
							|  |  |  | 		dst 12.0.0.0/32; | 
					
						
							| 
									
										
										
										
											2017-04-26 17:13:45 +02:00
										 |  |  | 		tcp flags ! 0/0x999; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	route flow4 { | 
					
						
							|  |  |  | 		dst 220.0.254.0/24; | 
					
						
							| 
									
										
										
										
											2017-04-26 17:13:45 +02:00
										 |  |  | 		tcp flags 0x99/0x999; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	route flow4 { | 
					
						
							|  |  |  | 		dst 220.0.254.192/28; | 
					
						
							| 
									
										
										
										
											2017-04-26 17:13:45 +02:00
										 |  |  | 		tcp flags ! 0xfff/0xfff; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	route flow4 { | 
					
						
							|  |  |  | 		dst 15.0.0.0/8; | 
					
						
							| 
									
										
										
										
											2017-04-26 17:13:45 +02:00
										 |  |  | 		tcp flags ! 0x999/0x999; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-29 22:14:36 +02:00
										 |  |  | protocol ospf v2 ospf4 { | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 	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; }; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-29 22:14:36 +02:00
										 |  |  | protocol ospf v3 ospf6 { | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 	# IPv4 with MPLS labels (1/4) | 
					
						
							|  |  |  | 	ipv4 mpls { | 
					
						
							|  |  |  | 		# explicit IPv4 table | 
					
						
							|  |  |  | 		table mtab4; | 
					
						
							|  |  |  | 		import all; | 
					
						
							|  |  |  | 		export all; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# IPv6 with MPLS labels (2/4) | 
					
						
							| 
									
										
										
										
											2018-01-23 14:26:18 +01:00
										 |  |  | 	ipv6 mpls { | 
					
						
							| 
									
										
										
										
											2017-04-26 14:38:19 +02:00
										 |  |  | 		# 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; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-07 19:16:02 +01:00
										 |  |  | 	# 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 ]; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |