bird2: Add package
[feed/routing.git] / bird2 / files / bird.conf
diff --git a/bird2/files/bird.conf b/bird2/files/bird.conf
new file mode 100644 (file)
index 0000000..827918d
--- /dev/null
@@ -0,0 +1,332 @@
+/*
+ *     This is an example configuration file for MB-BGP setting
+ */
+
+
+log syslog all;
+# debug protocols all;
+
+router id 192.168.1.1;
+
+ipv4 table master4;
+ipv6 table master6;
+
+ipv4 table mcast4;
+ipv6 table mcast6;
+
+ipv4 table mtab4;
+ipv6 table mtab6;
+
+vpn4 table vpntab4;
+vpn6 table vpntab6;
+
+vpn4 table vpn4mc;
+vpn6 table vpn6mc;
+
+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;
+}
+
+# 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;
+}
+
+# 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;
+       };
+
+       route flow4 {
+               dst 11.0.0.0/8;
+               proto = 0x12;
+               sport > 0x5678 && < 0x9abc || 0xdef0 || 0x1234,0x5678,0x9abc..0xdef0;
+               dport = 50;
+               tcp flags 0x000/0xf00;
+       };
+
+       route flow4 {
+               dst 12.0.0.0/32;
+               tcp flags ! 0/0x999;
+       };
+
+       route flow4 {
+               dst 220.0.254.0/24;
+               tcp flags 0x99/0x999;
+       };
+
+       route flow4 {
+               dst 220.0.254.192/28;
+               tcp flags ! 0xfff/0xfff;
+       };
+
+       route flow4 {
+               dst 15.0.0.0/8;
+               tcp flags ! 0x999/0x999;
+       };
+}
+
+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;
+       };
+
+       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;
+       };
+}
+
+
+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;
+}
+
+protocol ospf v2 ospf4 {
+       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; };
+       };
+}
+
+
+protocol ospf v3 ospf6 {
+       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;
+       };
+
+       # IPv4 with MPLS labels (1/4)
+       ipv4 mpls {
+               # explicit IPv4 table
+               table mtab4;
+               import all;
+               export all;
+       };
+
+       # IPv6 with MPLS labels (2/4)
+       ipv6 mpls {
+               # 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;
+       };
+
+       # 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 ];
+       };
+}
+