Re: [PATCH net-next 6/6] netdevsim: Add simple FIB resource controller via devlink
From: David Ahern <hidden>
Date: 2018-04-06 21:22:09
On 4/5/18 11:52 PM, Jiri Pirko wrote:
Thu, Apr 05, 2018 at 11:06:41PM CEST, dsa@cumulusnetworks.com wrote:quoted
On 4/5/18 2:10 PM, David Ahern wrote:quoted
The ASIC here is the kernel tables in a namespace. It does not make sense to have 2 devlink instances for a single namespace.I put this example controller in netdevsim per a suggestion from Ido. The netdevsim seemed like a good idea given that modules intention -- testing network facilities. Perhaps I should have done this as a completely standalone module ... The intention is to treat the kernel's tables *per namespace* as a standalone entity that can be managed very similar to ASIC resources.So you say you want to treat a namespace as an ASIC? That sounds very odd to me :/
Why? The kernel has forwarding tables, acl's, etc just like the ASIC, and each namespace is a separate set of tables. If you think about it, userspace "programs" the kernel just like mlxsw and userspace SDKs "program" an asic.
quoted
Given that I can add a resource controller module (drivers/net/kern_res_mgr.c?) that creates a 'struct device' per network namespace with a devlink instance. In this case the device would very much be tied to the namespace 1:1.That sounds more reasonable and accurate, yet still odd. You would not have any netdevices there? Any ports?
Sure, what ever ports are assigned to or created in the namespace. Nothing about the devlink API says it has to be a real h/w device. Nothing about the devlink API says it can only be used for real h/w that has ports represented by netdevices that the devlink instance some how has "control" over. As the netdevsim demo shows, I can build an L3 resource controller for the kernel tables using just the devlink API and the in-kernel notifiers.