Someone needs to add the freebsd jail's support. The VRF framework allows it. Le 8 janv. 2016 13:31, "Donald Sharp" <[email protected]> a écrit :
> Vincent - > > Vipin and I are working on breaking the patch up now to get the data > structures in place upstream. Hopefully in the next week or so. > > Sami - > > The code will just work if there is no kernel vrf support, ie everything > will just be in the default vrf. I'm not aware of any work being done in > this regards on freebsd, but that doesn't mean anything because I'm not > plugged into that community. The process should be the same, though from > Quagga's perspective > > donald > > > > On Fri, Jan 8, 2016 at 7:27 AM, Sami Halabi <[email protected]> wrote: > >> hi, >> great work. >> is this work supported in freebsd? i noticed you mentioned netlink wixh >> is linux soecific. >> >> Sami >> בתאריך 8 בינו׳ 2016 11:04 AM, "Vincent JARDIN" <[email protected]> >> כתב: >> >> It looks good. Which patch serie to check? >>> Le 8 janv. 2016 07:09, "Vipin Kumar" <[email protected]> a >>> écrit : >>> >>>> Significant progress has been made on this project. I had sent a few >>>> emails to quagga-dev outlining the approach for this project -- to leverage >>>> current VRF lib and BGP multi-instance support. We had a fruitful >>>> discussion about that and the config model as well. >>>> >>>> Will be sending the changes(with explanations) to the data-structures >>>> like vrf, zebra_vrf and interface soon. And also some of the new >>>> trees/lists that were needed to keep vrf (devices) within a name-space, >>>> take care of forward-referencing of VRFs, and deal with challenges >>>> associated with address notifications via netlink, etc. >>>> >>>> Created a new data-structure zebra_ns, so that name-space and vrf >>>> device models don't just co-exist, but also work in hierarchical way to >>>> possibly scale the number of vrfs/instances further. >>>> >>>> All the configuration/show/clear is by vrf-device name, implementation >>>> however internally still uses the vrf-id for efficiency reasons. vrf-device >>>> index generated by the kernel is used as the vrf-id. >>>> >>>> We will also release/submit patches with descriptions in incremental >>>> (logical) batches as testing/sanities progress and clears. >>>> >>>> For now, here are some actual outputs based on the current >>>> implementation of this project. >>>> >>>> *1. Sample Running config* >>>> >>>> bgp multiple-instance >>>> ! >>>> ! >>>> interface swp1 vrf boo >>>> link-detect >>>> ! >>>> interface swp2 vrf foo >>>> link-detect >>>> ! >>>> interface swp3 vrf zoo >>>> link-detect >>>> ! >>>> vrf boo >>>> ! >>>> vrf foo >>>> ! >>>> vrf zoo >>>> ! >>>> router bgp 65001 vrf boo >>>> neighbor 11.0.0.2 remote-as 65001 >>>> address-family ipv4 unicast >>>> redistribute static >>>> neighbor 11.0.0.2 activate >>>> exit-address-family >>>> ! >>>> router bgp 65001 vrf foo >>>> neighbor 11.0.1.2 remote-as 65001 >>>> address-family ipv4 unicast >>>> redistribute static >>>> neighbor 11.0.1.2 activate >>>> exit-address-family >>>> ! >>>> router bgp 65001 vrf zoo >>>> neighbor 11.0.2.2 remote-as 65001 >>>> address-family ipv4 unicast >>>> redistribute static >>>> neighbor 11.0.2.2 activate >>>> exit-address-family >>>> ! >>>> ip route 10.10.10.10/32 Null0 vrf boo >>>> ip route 11.11.11.11/32 Null0 vrf foo >>>> ip route 12.12.12.12/32 Null0 vrf zoo >>>> ! >>>> >>>> >>>> >>>> *2. New config modes* >>>> >>>> * Global VRF* >>>> >>>> r1(config)#? >>>> .. >>>> vrf Select a VRF to configure >>>> .. >>>> r1(config)# vrf >>>> NAME VRF's name >>>> r1(config)# vrf foo >>>> <cr> >>>> r1(config)# vrf foo >>>> r1(config-vrf)# >>>> >>>> Note: This mode works just the way it is for interfaces, i.e. quagga >>>> can hold the config and (in future) commands within it, VRF becomes active >>>> (usable by protocols BGP, static, ..) only after its been created in kernel >>>> and learnt by quagga via netlink interface. >>>> >>>> >>>> * Interface VRF* >>>> >>>> >>>> r1(config)# interface swp2 >>>> <cr> >>>> vrf Specify the VRF >>>> r1(config)# interface swp2 vrf >>>> NAME The VRF name >>>> r1(config)# interface swp2 vrf foo >>>> <cr> >>>> r1(config)# interface swp2 vrf foo >>>> r1(config-if)# >>>> >>>> >>>> * BGP VRF* >>>> >>>> r1(config)# router bgp 65001 >>>> <cr> >>>> view BGP view >>>> vrf BGP VRF >>>> r1(config)# router bgp 65001 vrf >>>> WORD View/VRF name >>>> r1(config)# router bgp 65001 vrf foo >>>> r1(config-router)# >>>> >>>> >>>> Note: BGP VRF instances (struct bgp) have some state of >>>> their own now.Which comes handy as and when VRF creation/deletion >>>> is learnt by BGP via zebra api. >>>> bgp_create() -> bgp_instance_up() -> >>>> bgp_instance_down() ->bgp_delete () >>>> >>>> When BGP instance is configured as view, it will >>>> act in view mode just like it used to. >>>> Introduced instance type - view or vrf, so >>>> implementation can differentiate as needed. >>>> >>>> *3. Sample (of a few) show commands* >>>> >>>> *r1# show vrf* >>>> vrf boo id 7 table 10 >>>> vrf foo id 8 table 11 >>>> vrf zoo id 9 table 12 >>>> r1# >>>> >>>> *r1# show interface vrf foo* >>>> Interface swp2 is up, line protocol is up >>>> PTM status: disabled >>>> vrf: 8 >>>> Description: r3 >>>> index 4 metric 0 mtu 1500 >>>> flags: <UP,BROADCAST,RUNNING,MULTICAST> >>>> HWaddr: 00:02:00:00:00:0a >>>> inet 11.0.1.1/24 >>>> inet6 fe80::202:ff:fe00:a/64 >>>> ND advertised reachable time is 0 milliseconds >>>> ND advertised retransmit interval is 0 milliseconds >>>> ND router advertisements are sent every 600 seconds >>>> ND router advertisements lifetime tracks ra-interval >>>> ND router advertisement default router preference is medium >>>> Hosts use stateless autoconfig for addresses. >>>> >>>> >>>> *r1# show ip bgp vrf foo summary* >>>> BGP router identifier 11.0.1.1, local AS number 65001 vrf-id 8 >>>> BGP table version 5 >>>> RIB entries 9, using 1080 bytes of memory >>>> Peers 1, using 16 KiB of memory >>>> >>>> Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down >>>> State/PfxRcd >>>> r3(11.0.1.2) 4 65001 134 135 0 0 0 00:06:37 >>>> 4 >>>> >>>> Total number of neighbors 1 >>>> r1# >>>> >>>> *r1# show ip bgp vrf foo* >>>> BGP table version is 5, local router ID is 11.0.1.1 >>>> Status codes: s suppressed, d damped, h history, * valid, > best, = >>>> multipath, >>>> i internal, r RIB-failure, S Stale, R Removed >>>> Origin codes: i - IGP, e - EGP, ? - incomplete >>>> >>>> Network Next Hop Metric LocPrf Weight Path >>>> *>i11.0.1.0/24 11.0.1.2 0 100 0 i >>>> *>i11.0.5.0/24 11.0.1.2 0 100 0 i >>>> *>i11.0.7.0/24 11.0.1.2 0 100 0 i >>>> *>i11.0.8.0/24 11.0.1.2 0 100 0 i >>>> *> 11.11.11.11/32 0.0.0.0 0 32768 ? >>>> >>>> Total number of prefixes 5 >>>> >>>> *r1# show ip nht vrf boo* >>>> 11.0.0.2 >>>> resolved via connected >>>> is directly connected, unknown >>>> Client list: bgp(fd 16) >>>> *r1# show ip nht vrf foo* >>>> 11.0.1.2 >>>> resolved via connected >>>> is directly connected, unknown >>>> Client list: bgp(fd 16) >>>> *r1# show ip nht vrf zoo* >>>> 11.0.2.2 >>>> resolved via connected >>>> is directly connected, unknown >>>> Client list: bgp(fd 16) >>>> >>>> >>>> *r1# show ip route vrf boo* >>>> Codes: K - kernel route, C - connected, S - static, R - RIP, >>>> O - OSPF, I - IS-IS, B - BGP, A - Babel, T - Table, >>>> > - selected route, * - FIB route >>>> >>>> S>* 10.10.10.10/32 [1/0] [vrf 7] is directly connected, Null0, bh >>>> B 11.0.0.0/24 [200/0] [vrf 7] via 11.0.0.2 inactive, 00:54:49 >>>> C>* 11.0.0.0/24 [vrf 7] is directly connected, swp1 >>>> B>* 11.0.4.0/24 [200/0] [vrf 7] via 11.0.0.2, swp1, 00:54:49 >>>> B>* 11.0.7.0/24 [200/0] [vrf 7] via 11.0.0.2, swp1, 00:54:49 >>>> B>* 11.0.9.0/24 [200/0] [vrf 7] via 11.0.0.2, swp1, 00:54:49 >>>> >>>> *r1# show ip route vrf foo* >>>> Codes: K - kernel route, C - connected, S - static, R - RIP, >>>> O - OSPF, I - IS-IS, B - BGP, A - Babel, T - Table, >>>> > - selected route, * - FIB route >>>> >>>> B 11.0.1.0/24 [200/0] [vrf 8] via 11.0.1.2 inactive, 00:07:50 >>>> C>* 11.0.1.0/24 [vrf 8] is directly connected, swp2 >>>> B>* 11.0.5.0/24 [200/0] [vrf 8] via 11.0.1.2, swp2, 00:07:50 >>>> B>* 11.0.7.0/24 [200/0] [vrf 8] via 11.0.1.2, swp2, 00:07:50 >>>> B>* 11.0.8.0/24 [200/0] [vrf 8] via 11.0.1.2, swp2, 00:07:50 >>>> S>* 11.11.11.11/32 [1/0] [vrf 8] is directly connected, Null0, bh >>>> r1# >>>> >>>> >>>> >>>> *4. Steps to create a VRF device* >>>> >>>> ip link add dev boo type vrf table 10 >>>> ip link set dev boo up >>>> >>>> *5. Steps to enslave an interface to a VRF device * >>>> >>>> >>>> ip link set dev swp1 master boo >>>> >>>> >>>> >>>> _______________________________________________ >>>> Quagga-dev mailing list >>>> [email protected] >>>> https://lists.quagga.net/mailman/listinfo/quagga-dev >>>> >>> >>> _______________________________________________ >>> Quagga-dev mailing list >>> [email protected] >>> https://lists.quagga.net/mailman/listinfo/quagga-dev >>> >> >
_______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
