On Mon, Jan 21, 2019 at 08:08:06PM +0100, Łukasz Wójcik wrote:
Hello Andrew,
Indeed, I am aware of how netlink works, I was just hoping that there will be some kind of unified API, same for pretty much every ASIC.
I doubt that is going to happen for a while, at least for L3 devices. L2 is pretty good at the moment. There are probably over 50 switches supported in the Linux kernel, with some vendors supporting their own switches. However the L3 vendors don't yet seem to like true open networking for their ASICs, they want to hide too many secrets in the SDK.
In any case, there's also ORC in ONL. As I understand it, it provides it's own virtual interfaces attached to actual switch ports. Any change to this interface (or routes related to these) would be translated to ASIC. This approach seems very nice, as you could simply use these virtual interfaces, as you would with physical interfaces, and therefore you would not need any changes in FRR. The problem I see is that I cannot find any documentation.
This is basically how the kernel does it. Each port of the switch is a true Linux interface. You add routes to the interface, and the kernel will offload it to the hardware. If you create a bridge and add interfaces to the bridge, the kernel will offload it to the hardware. If you use the team driver to create a LAG, and add interfaces to it, the kernel will offload it to the hardware. All your usual tools, routing daemon, snmp agents, just work. Andrew