14:00:58 #startmeeting neutron_drivers 14:00:58 Meeting started Fri Jun 2 14:00:58 2023 UTC and is due to finish in 60 minutes. The chair is ralonsoh. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:00:58 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 14:00:58 The meeting name has been set to 'neutron_drivers' 14:01:04 o/ 14:01:07 hello all, let's give one more minute 14:01:24 we might want to ping haleyb 14:01:41 no, he's not going to attend 14:01:47 ok 14:01:49 he told me that yesterday 14:02:04 ok, I think we have quorum 14:02:14 the topic we have today is 14:02:17 #link https://bugs.launchpad.net/neutron/+bug/2020823 14:02:21 [RFE] Add flavor/service provider support to routers in the L3 OVN plugin 14:02:23 mlavalle, please 14:03:13 back in 2016 Kevin Benton implemented a framework to create routers with flavors 14:03:33 in other words, a way to implement routers with different backends 14:04:36 btw, is it used now? 14:04:55 not really, only a few external projects used it 14:05:05 (I don't remember which ones) 14:05:10 got it, thanks! 14:05:17 In fact, if we look in the repo under services/l3_router/service_providers you will find his attempt to disentangle the agent based routers in different drivers 14:06:07 He didn't get to the final goal but he laid a good foundation that is relatively easy to reuse with the ML2 / OVN mechanism driver 14:06:53 my employer has received strong signals from potential big deployers that they want to use flavored routed with ML2 / OVN 14:07:12 so I created a PoC to investigate the feasability: https://review.opendev.org/c/openstack/neutron/+/883988 14:07:12 what backends for routers in ML2/OVN we may have? 14:07:20 mlavalle: what is the use case (sorry for this noob question but this will help me to understand better) 14:08:06 the use case is a big telco deployer who already has their own implementation of routers that they want to use under ml2/ovn 14:08:15 vrouters that is 14:08:47 I've been testing the PoC in my dev environment and ot works fine 14:09:12 in fact, I added a README in the code where I show inital results 14:09:23 ahh, so they want to create router in neutron but to have own plugin/driver/whatever to create and manage it, instead of creating it in OVN as LR, is that correct? 14:10:15 this is the readme: https://review.opendev.org/c/openstack/neutron/+/883988/7/neutron/services/ovn_l3/service_providers/README.rst 14:10:20 yes, if you look at the PoC, I added a service_providers folder under ovn_l3 14:10:34 I though it quite useful to see how it will work 14:10:52 services/ovn_l3/service_providers 14:11:23 inside it, you will find ovn.py, which isolates the ovn based routers control plane 14:11:59 and also you find user_defined.py, which stands for a potential implementation of routers with a different backend 14:12:11 those service providers may be not related to OVN itself, right? 14:12:42 that is really intersting.. so if tomorrow we build a full ebpf router we can plug it as well without the pain of creating a full sdn compatible with neutron api 14:12:42 right now, this flavor does nothing but just log a message that it has received a request to create, update or delete a router 14:13:04 obondarev: correct 14:13:09 sahid: you got it 14:13:23 I have many questions about this. In ML2/OVS (or ML2/LB), Neutron is both the orchestrator and the CMS. With ML2/OVS, the CMS. How are we going to deal with all L3 operations? I mean FIPs, router interfaces, etc 14:13:27 so my confusion is that it lays under "ovn_l3" while might me completely unrelated to OVN 14:15:40 ralonsoh: my plan is to move all the router / fip related functionality from the services/ovn_l3/service_providers/plugin.py to the ovne driver in services/ovn_l3/service_providers/ovn.py 14:15:55 obondarev: good point 14:15:57 so the plugin just does the purely CMS part 14:16:29 I know it's crazy idea but shouldn't we then try to unifiy our l3 service plugin and ovn_l3 service plugin and use different flavors for agent based routers (ML2/OVS) and OVN routers too? 14:16:46 nonono, I would avoid this idea 14:16:58 we have two L3 implementations, OVN and OVS/LB 14:17:04 I wouldn't mix both 14:17:16 obondarev: you are right. As I slowly hollow out plugin.py and move the ovn related functionality to the ovn driver, it might not make sense to keep the plugin under ovn_l3 14:17:46 we don't have the same functionalities 14:17:54 mlavalle: ack 14:17:59 for now, I am just slowly hollowing it out, to disentangle the CMS and ovn functionality 14:18:59 so it sounds pretty much what Kevin's goal was, no? What's the main difference? 14:19:13 so ralonsoh is absolutely correct in that a big chunck of what needs to be done is to disentabgle the CMS part from the OVN part 14:20:09 obondarev: it is the exact same idea. Just that he attacked it from the agent based implementation, while I am coming from the OVN side, where it is proving to be much simpler 14:21:14 once we isolate the ovn part in a driver, we now can add other drivers 14:21:29 mlavalle, would only the routers be managed with multiple backends? what about subnets? 14:22:27 racosta: at this point I haven't uncovered anything that seggests that we might need to mess with subnets 14:22:58 but in any case, that is why I am doing it gradually and as I move functionality to the driver, I'm testing it 14:23:14 so, in a nutshell, anything related to LR, LRP or NAT will be skipped from the OVN L3 point of view and the needed calls to the external routers will be made. Is that correct? 14:23:45 ralonsoh: those calls will be done from the ovn driver 14:24:04 and their counterparts for a different flavor, from a different driver 14:24:18 like the sample one I've included in the PoC 14:25:31 (well, at least everything related to OVN l3 seems to be in one single file) 14:26:02 in any case, the idea of having this driver controller looks fine, with a common API for all drivers 14:26:49 +1 14:26:52 any other question? 14:27:02 I have one: do we need a spec? I think so 14:27:08 do we need a spec of the RFE is enough? 14:27:14 in the PoC I see create/update/delete router methods moved to ovn driver, but for example "add_router_interface" is still in ovn l3 plugin. Is it going to be moved as well? 14:27:17 yeah the same :-) 14:27:37 obondarev: yes, I'm doing this gradually, as I said above 14:28:00 I want to tackle the challenges gradually 14:28:29 the idea is to isolate all the ovn related functionality in its associated driver 14:28:53 just want to realise what would be the difference between ovn l3 plugin and it's parent class in the end? 14:29:16 obondarev: in the end there will be very little, if any 14:29:58 so why not just have different l3 plugin for those who needs new backend? 14:30:12 that is why I think of this process as hollowing out the ovn l3 plugin. It will be reduced purely to its CMS functionality 14:31:20 IIU the reason to do it that way is that You can't have e.g. 2 different l3 service plugins enabled at the same time, and with this approach You may have "mixed" routers 14:31:26 I think we need a unified plugin that allows users to use routers of different flavors at the same time 14:31:29 *IIUC 14:31:40 right, we don't have the concept of multiple L3 plugins 14:32:01 ah, right 14:32:38 (multiple L3 plugins loaded at the same time, I meant) 14:32:42 which was ultimately Kevin's goal. He just got bogged down with all the spaghetti in the agents based implementation 14:33:00 I think a spec with a diagram of L3 plugins & drivers would be nice to have 14:33:20 it so happens that his goal is simpler to achieve coming from the ml2/ovn side 14:34:39 and to Kevin's credir, as I'm uncovering with the PoC, he laid a very good foundation, even though he didn't get to his ultimate goal 6 years ago 14:34:46 credit^^^ 14:35:47 so end goal is to have kind of same architecture as with ML2 plugins and drivers 14:35:56 plugin* 14:36:40 ML3 service plugin :) 14:36:47 nice! 14:36:49 obondarev: yeah, I like the way ralonsoh put it. Neutron will do the CMS part and there will be drivers implementing different flavors for routers 14:37:04 with different backends 14:37:31 and in the way to that, let's isolate the ovn related bits 14:37:34 in a driver 14:38:56 any other question? 14:39:09 Not from me, with a spec I like the idea 14:39:20 nothing more from me 14:39:29 ok, let's vote then 14:39:31 I think it's good idea to go with 14:39:32 +1 with spec 14:39:34 +1 14:39:37 +1 14:40:04 +1 14:40:14 perfect then, I'll update the LP bug with this result 14:40:29 something else you want to discuss? 14:40:39 thanks for the time and consideration! 14:40:50 thank you all for participating and thanks mlavalle for this RFE 14:40:53 o/ 14:40:56 have a nice weekend! 14:41:00 o/ 14:41:02 #endmeeting