[quagga-dev 12658] Re: [PATCH v5 3/3] lib, vtysh: support multiple VRFs by using linux netns

Alain Ritoux alain.ritoux at 6wind.com
Fri Jun 5 16:53:00 BST 2015

Yes Jafar I fully agree with your description.

Note, that at some point quagga needs to be aware of the (VR)F/netns a
logical-table belongs to, because of netlink sockets, but that's pure
plumbing. (and of course can be implemented in a totally different
way on non Linux OSes; each OS will have it's own plumbing)

Best regards

On 06/05/2015 05:30 PM, Jafar Al-Gharaibeh wrote:
> On 6/5/2015 9:51 AM, Alain Ritoux wrote:
>> On 06/05/2015 04:28 PM, Jafar Al-Gharaibeh wrote:
>>> Except that it doesn't index a table really, it does index a "domain"
>>> (for lack of a better term) where multiple tables can live.
>> No, it really indexes a logical-table (ex-domain); the way the
>> logical-table is mapped into one of the numerous kernel tables
>> is the "low" part.
>> In the patchset we propose, we offer to map the logical-table
>> to the linux "main" table of a specific netns. If someone wants
>> to use it to populate a specific table of the basic netns, it's
>> fine, he just has to provide the code to configure the lower part
>> but the "upper" part, i.e. the handling of multiple RIB will stay
>> unchanged.
>> for example it could be
>>    # current implementation
>>    # this means "main" table netns "VRF1"
>>    logical-table 1 netsn /var/run/VRF1
>>    # possible extensions
>>    # this means table #3 in defaut netns
>>    logical-table 1 table 3
>>    # this means table #3 in netns VRF1
>>    logical-table 1  netsn /var/run/VRF1 table 3
>> But the way/cli/ZAPI to add static routes to logical-tabla 1 or
>> the way for a routing protocol, to populate this table must stay
>> unchanged, whatever the logical-table represents (nested netns /
>> tables / etc.)
> Are you describing a 1-to-1 mapping  between logical-tables(VRF) and
> kernel-tables?
>   I know that this is what the VRF patch provides at the moment, but
> part of the discussion earlier was the possibility of having multiple
> tables in each VRF, though we probably didn't explicitly state if we are
> talking about VRFs at the kernel side or at Quagga side. Maybe the use
> of the VRF term caused the confusion. Using your syntax I could do:
>     logical-table 1  netsn /var/run/VRF1 table 1
>     logical-table 2  netsn /var/run/VRF1 table 2
>     logical-table 3  netsn /var/run/VRF1 table 3
>     logical-table 4  netsn /var/run/VRF2 table 1
>     logical-table 5  netsn /var/run/VRF2 table 2
>     logical-table 6  netsn /var/run/VRF2 table 3
>   This means we have two VRFs at the kernel side with three tables each.
> In this case, Quagga doesn't really care (does it need to?) if logical
> tables 1 & 2 are within the same VRF or if tables 3 & 4 are in two
> separates VRFs.  Is that correct?
> Regards,
> Jafar

Integration & Maintenance Manager
Tel +33-1-39-30-92-32
Fax +33-1-39-30-92-11
This e-mail message, including any attachments, is for the sole
use of the intended recipient(s) and contains information that
is confidential and proprietary to 6WIND. All unauthorized
review, use, disclosure or distribution is prohibited. If you
are notthe intended recipient, please contact the sender by
reply e-mail and destroy all copies of the original message.

More information about the Quagga-dev mailing list