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