Call for testing: bird as VPN route reflector
Hello list! There are some patches enabling bird to act as VPNv4 and (partly) as VPNv6 RR. Release is based on 1.3.4 git version. VPNv6 is supported over IPv4 BGP sessions only and does not support pure IPv6 nexthops. Example RR configuration: http://bird.mpls.in/projects/mpls-bird/wiki/Bird_rr Download: http://bird.mpls.in/distfiles/bird/bird-20111202.tar.gz Do configure with --enable-mpls switch (FreeBSD example) ./configure --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=amd64-portbld-freebsd8.2 --enable-mpls FreeBSD users can edit net/bird-devel port, change its version to 20111202 and call 'make makesum' Please note, this is BETA quality software and testing MUST be done before real-world usage. Feedback is highly appreciated.
currently trying to compile on linux (i use slitaz) am getting the following error on make, any ideas or help?. commands used are ./configure --prefix=/usr --enable-mpls && make In file included from ../../../proto/ldp/ldp.c:109:0: ../../../proto/ldp/ldp_proto.h:172:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_csess_params' ../../../proto/ldp/ldp_proto.h:216:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_generic_label' make[2]: *** [ldp.o] Error 1 make[2]: Leaving directory `/home/tux/bird/bird-20111202/obj/proto/ldp' make[1]: *** [subdir] Error 2 make[1]: Leaving directory `/home/tux/bird/bird-20111202/obj' make: *** [all] Error 2 On Fri, Dec 2, 2011 at 3:28 AM, Alexander V. Chernikov <melifaro@yandex-team.ru> wrote:
Hello list!
There are some patches enabling bird to act as VPNv4 and (partly) as VPNv6 RR.
Release is based on 1.3.4 git version.
VPNv6 is supported over IPv4 BGP sessions only and does not support pure IPv6 nexthops.
Example RR configuration: http://bird.mpls.in/projects/mpls-bird/wiki/Bird_rr
Download: http://bird.mpls.in/distfiles/bird/bird-20111202.tar.gz
Do configure with --enable-mpls switch
(FreeBSD example) ./configure --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=amd64-portbld-freebsd8.2 --enable-mpls
FreeBSD users can edit net/bird-devel port, change its version to 20111202 and call 'make makesum'
Please note, this is BETA quality software and testing MUST be done before real-world usage.
Feedback is highly appreciated.
-- Thanx and regd's. Allan. http://openbullet.com
On 02.12.2011 13:40, Allan Pinto wrote:
currently trying to compile on linux (i use slitaz) am getting the following error on make, any ideas or help?.
commands used are ./configure --prefix=/usr --enable-mpls&& make
In file included from ../../../proto/ldp/ldp.c:109:0: ../../../proto/ldp/ldp_proto.h:172:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_csess_params' ../../../proto/ldp/ldp_proto.h:216:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_generic_label' make[2]: *** [ldp.o] Error 1 make[2]: Leaving directory `/home/tux/bird/bird-20111202/obj/proto/ldp' make[1]: *** [subdir] Error 2 make[1]: Leaving directory `/home/tux/bird/bird-20111202/obj' make: *** [all] Error 2
Ups. Can you please remove _packed keyword from ldp_proto.h:172 and ldp_proto.h:216 ?
On Fri, Dec 2, 2011 at 3:28 AM, Alexander V. Chernikov <melifaro@yandex-team.ru> wrote:
Hello list!
There are some patches enabling bird to act as VPNv4 and (partly) as VPNv6 RR.
Release is based on 1.3.4 git version.
VPNv6 is supported over IPv4 BGP sessions only and does not support pure IPv6 nexthops.
Example RR configuration: http://bird.mpls.in/projects/mpls-bird/wiki/Bird_rr
Download: http://bird.mpls.in/distfiles/bird/bird-20111202.tar.gz
Do configure with --enable-mpls switch
(FreeBSD example) ./configure --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=amd64-portbld-freebsd8.2 --enable-mpls
FreeBSD users can edit net/bird-devel port, change its version to 20111202 and call 'make makesum'
Please note, this is BETA quality software and testing MUST be done before real-world usage.
Feedback is highly appreciated.
compilation works once the __packed keyword is removed. will revert after testing the rest. On Fri, Dec 2, 2011 at 3:19 PM, Alexander V. Chernikov <melifaro@yandex-team.ru> wrote:
On 02.12.2011 13:40, Allan Pinto wrote:
currently trying to compile on linux (i use slitaz) am getting the following error on make, any ideas or help?.
commands used are ./configure --prefix=/usr --enable-mpls&& make
In file included from ../../../proto/ldp/ldp.c:109:0: ../../../proto/ldp/ldp_proto.h:172:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_csess_params' ../../../proto/ldp/ldp_proto.h:216:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldp_tlv_generic_label' make[2]: *** [ldp.o] Error 1 make[2]: Leaving directory `/home/tux/bird/bird-20111202/obj/proto/ldp' make[1]: *** [subdir] Error 2 make[1]: Leaving directory `/home/tux/bird/bird-20111202/obj' make: *** [all] Error 2
Ups. Can you please remove _packed keyword from ldp_proto.h:172 and ldp_proto.h:216 ?
On Fri, Dec 2, 2011 at 3:28 AM, Alexander V. Chernikov <melifaro@yandex-team.ru> wrote:
Hello list!
There are some patches enabling bird to act as VPNv4 and (partly) as VPNv6 RR.
Release is based on 1.3.4 git version.
VPNv6 is supported over IPv4 BGP sessions only and does not support pure IPv6 nexthops.
Example RR configuration: http://bird.mpls.in/projects/mpls-bird/wiki/Bird_rr
Download: http://bird.mpls.in/distfiles/bird/bird-20111202.tar.gz
Do configure with --enable-mpls switch
(FreeBSD example) ./configure --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=amd64-portbld-freebsd8.2 --enable-mpls
FreeBSD users can edit net/bird-devel port, change its version to 20111202 and call 'make makesum'
Please note, this is BETA quality software and testing MUST be done before real-world usage.
Feedback is highly appreciated.
-- Thanx and regd's. Allan. http://openbullet.com
On 02.12.2011 14:24, Igor Maravić wrote:
What engine for MPLS are you using on Linux? I'm not using Linux. These patches are part of FreeBSD-MPLS project ( see http://freebsd.mpls.in )
However adding Linux kernel support for linux-mpls stack, for example is not a very difficult task (BSD krt patch for bird is 100-200 lines only)
BR Igor
OK, I'm asking because I'm currently developing/fixing MPLS for Linux. :) (https://github.com/i-maravic/MPLS-Linux) Binding it with working LDP would be very interesting/useful. What is the address from which I could clone your git repository? BR Igor
On 02.12.2011 14:41, Igor Maravić wrote:
OK, I'm asking because I'm currently developing/fixing MPLS for Linux. :) (https://github.com/i-maravic/MPLS-Linux) Binding it with working LDP would be very interesting/useful. What is the address from which I could clone your git repository?
git://bird.mpls.in/bird.git Current LDP/L3vpn development is done in l3vpn branch
BR Igor
-- WBR, Alexander
Hi Alexander, it has worked successfully acting as a vpn RR, have attached the diagram used as the setup, now if only mpls multicast vpn arrives i could replace my cisco box as the RR. :) , is it now possible in BIRD to have VRF interfaces? below setup, tell me if you need more details i can provide them later. the cloud is a linux box [slitaz] with bird acting as a vpnv4 RR, <-- loopback 5.5.5.5 R1 acts as a PE router for VRF AAA <-- loopback 1.1.1.1 R2 is a plain P router passing ldp <-- loopback 2.2.2.2 R3 is another PE router for vrf AAA <-- loopback 3.3.3.3 on linux i made the loopback under lo:1 but in the bird ospf configuration, the interface should still be mentioned as lo not lo:1 (wasted half an hour on this) bird --> R1 --> R2 --> R3 . <-- all four are connected through ospf R1 and R3 make the bgp neighbourship with BIRDbox , VRF AAA created on R1 and R3 with two loopback interfaces on each router and one addnl sub-interface on R3 under VRF AAA. below is some output from R1, R1#ping vrf AAA 13.13.13.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 13.13.13.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 16/38/72 ms R1#ping vrf AAA 13.13.13.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 13.13.13.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/70/156 ms R1#sh ip bgp vpnv4 all summary BGP router identifier 1.1.1.1, local AS number 65001 BGP table version is 7, main routing table version 7 3 network entries using 411 bytes of memory 3 path entries using 204 bytes of memory 3/2 BGP path/bestpath attribute entries using 372 bytes of memory 1 BGP rrinfo entries using 24 bytes of memory 1 BGP extended community entries using 24 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 1035 total bytes of memory BGP activity 3/0 prefixes, 3/0 paths, scan interval 15 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 5.5.5.5 4 65001 23 23 7 0 0 00:09:30 2 R1#sh ip route vrf AAA Routing Table: AAA Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 4.0.0.0/24 is subnetted, 1 subnets B 4.4.4.0 [200/0] via 3.3.3.3, 00:07:01 13.0.0.0/24 is subnetted, 1 subnets B 13.13.13.0 [200/0] via 3.3.3.3, 00:07:01 14.0.0.0/24 is subnetted, 1 subnets C 14.14.14.0 is directly connected, Loopback100 R1# On Fri, Dec 2, 2011 at 4:36 PM, Alexander V. Chernikov <melifaro@ipfw.ru> wrote:
On 02.12.2011 14:53, Igor Maravić wrote:
Current LDP/L3vpn development is done in l3vpn branch
Thanks Igor
Feel free to ask/submit bugs/patches :)
-- WBR, Alexander
-- Thanx and regd's. Allan. http://openbullet.com
On 02.12.2011 16:44, Allan Pinto wrote:
Hi Alexander, it has worked successfully acting as a vpn RR, have attached the diagram used as the setup, now if only mpls multicast vpn arrives i could replace my cisco box as the RR. :) , is it now possible in BIRD to have VRF interfaces? Well, it depends on what exactly you mean by 'VRF interfaces'. Bird does signalling, not routing. If you're talking about announcing static routes inside some IPv4 VRF in bird this is currently not possible without kernel support ( you have to announce some MPLS label which has to be requested from LDP which assumes you can handle MPLS unicast traffic inside kernel)
Regarding multicast: you're talking about ipv4 MDT (RFC 6037) ? Current version supports unicast only, however I'll take a look on this. It seems for me that this can be easily implemented. Btw, I've updated original bird-20111202.tar.gz distfile. Changes: * remove unneeded __packed keyword * do not send NEXT_HOP attribute for MP-BGP updates (this causes Huawei to ignore VPNv6 routes)
below setup, tell me if you need more details i can provide them later.
the cloud is a linux box [slitaz] with bird acting as a vpnv4 RR,<-- loopback 5.5.5.5 R1 acts as a PE router for VRF AAA<-- loopback 1.1.1.1 R2 is a plain P router passing ldp<-- loopback 2.2.2.2 R3 is another PE router for vrf AAA<-- loopback 3.3.3.3 on linux i made the loopback under lo:1 but in the bird ospf configuration, the interface should still be mentioned as lo not lo:1 (wasted half an hour on this)
Well, IMHO for this case bird documentation ( http://bird.network.cz/?get_doc&f=bird-3.html#ss3.3 ) should be updated to clarify linux-specific alias behavior.
bird --> R1 --> R2 --> R3 .<-- all four are connected through ospf
R1 and R3 make the bgp neighbourship with BIRDbox , VRF AAA created on R1 and R3 with two loopback interfaces on each router and one addnl sub-interface on R3 under VRF AAA.
below is some output from R1, R1#ping vrf AAA 13.13.13.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 13.13.13.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 16/38/72 ms R1#ping vrf AAA 13.13.13.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 13.13.13.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/70/156 ms R1#sh ip bgp vpnv4 all summary BGP router identifier 1.1.1.1, local AS number 65001 BGP table version is 7, main routing table version 7 3 network entries using 411 bytes of memory 3 path entries using 204 bytes of memory 3/2 BGP path/bestpath attribute entries using 372 bytes of memory 1 BGP rrinfo entries using 24 bytes of memory 1 BGP extended community entries using 24 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 1035 total bytes of memory BGP activity 3/0 prefixes, 3/0 paths, scan interval 15 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 5.5.5.5 4 65001 23 23 7 0 0 00:09:30 2 R1#sh ip route vrf AAA
Routing Table: AAA Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
4.0.0.0/24 is subnetted, 1 subnets B 4.4.4.0 [200/0] via 3.3.3.3, 00:07:01 13.0.0.0/24 is subnetted, 1 subnets B 13.13.13.0 [200/0] via 3.3.3.3, 00:07:01 14.0.0.0/24 is subnetted, 1 subnets C 14.14.14.0 is directly connected, Loopback100 R1#
Thanks for testing :)
On Fri, Dec 2, 2011 at 4:36 PM, Alexander V. Chernikov<melifaro@ipfw.ru> wrote:
On 02.12.2011 14:53, Igor Maravić wrote:
Current LDP/L3vpn development is done in l3vpn branch
Thanks Igor
Feel free to ask/submit bugs/patches :)
-- WBR, Alexander
-- WBR, Alexander
participants (4)
-
Alexander V. Chernikov -
Alexander V. Chernikov -
Allan Pinto -
Igor Maravić