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

Reply via email to