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
