On Mon, Jul 7, 2025 at 10:26 AM Tim Rozet <tro...@redhat.com> wrote: > > Hey Guys, > Just catching up on this. I'm not sure if adding another layer of abstraction > would help OVNK for managing flows on br-ex. What would be the advantage to > this over what we have now? Is it enough to justify switching to this > proposal?
The main goal of my proposal was for CMS to not worry about handling the OpenFlow protocol and let the new abstraction - ovn-bridge-controller take care of it. With this abstraction, CMS doesn't need to exec "ovs-ofctl" to add or delete a flow, or to dump the existing flows to figure out what is installed and what is not. Regarding OVN-K, of course it's the OVNK community's decision to adopt this new abstraction or not :) Thanks Numan > > Tim Rozet > Red Hat OpenShift Networking Team > > > On Tue, Jul 1, 2025 at 4:35 AM Dumitru Ceara <dce...@redhat.com> wrote: >> >> On 6/30/25 6:23 PM, Numan Siddique wrote: >> > On Mon, Jun 30, 2025 at 5:34 AM Dumitru Ceara <dce...@redhat.com> wrote: >> >> >> >> Hi Numan, >> >> >> >> On 6/26/25 4:26 PM, Numan Siddique wrote: >> >>> On Thu, Jun 26, 2025 at 8:27 AM Dumitru Ceara <dce...@redhat.com> wrote: >> >>>> >> >>>> Hi Frode, >> >>>> >> >>>> On 6/26/25 1:50 PM, Frode Nordahl wrote: >> >>>>> On 25.06.2025 14:58, Dumitru Ceara wrote: >> >>>>>> On 6/23/25 6:23 PM, Frode Nordahl wrote: >> >>>>>>> Hello, All, >> >>>>>>> >> >>>>>> >> >>>>>> Hi Frode, >> >>>>>> >> >>>>>>> Apologies for being late to the discussion, but just wanted to >> >>>>>>> document >> >>>>>>> our interest in this as mentioned in the last IRC meeting and just >> >>>>>>> now >> >>>>>>> in the A/V meeting. >> >>>>>>> >> >>>>>>> >> >>>>>>> On 19.06.2025 16:18, Dumitru Ceara via dev wrote: >> >>>>>>>> Hi Numan, >> >>>>>>>> >> >>>>>>>> On 6/18/25 11:38 PM, Numan Siddique wrote: >> >>>>>>>>> On Wed, Jun 18, 2025 at 5:00 PM Dumitru Ceara <dce...@redhat.com> >> >>>>>>>>> wrote: >> >>>>>>>>>> >> >>>>>>>>>> Hi Han, >> >>>>>>>>>> >> >>>>>>>>>> On 6/18/25 7:40 PM, Han Zhou wrote: >> >>>>>>>>>>> Thanks Numan for the proposal. >> >>>>>>>>>>> >> >>>>>>>>>>> On Wed, Jun 18, 2025 at 4:27 AM Dumitru Ceara <dce...@redhat.com> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>>> >> >>>>>>>>>>>> Hi Numan, Ales, >> >>>>>>>>>>>> >> >>>>>>>>>>>> On 6/10/25 4:24 PM, Numan Siddique wrote: >> >>>>>>>>>>>>> On Tue, Jun 10, 2025 at 2:04 AM Ales Musil <amu...@redhat.com> >> >>>>>>>>>>>>> wrote: >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> On Thu, Jun 5, 2025 at 9:44 PM Numan Siddique <num...@ovn.org> >> >>>>>>>>>>>>>> wrote: >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> On Thu, Jun 5, 2025 at 11:33 AM Dumitru Ceara >> >>>>>>>>>>>>>>> <dce...@redhat.com> >> >>>>>>>>>>> wrote: >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> On 6/4/25 6:24 PM, Numan Siddique wrote: >> >>>>>>>>>>>>>>>>> Hello, >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> Hi Numan, >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> Hi Dumitru and Numan, >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> I think the project might be a good idea in general, just >> >>>>>>>>>>>>>> adding >> >>>>>>>>>>>>>> my opinion on some parts below. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> There's a need to configure the provider bridge with >> >>>>>>>>>>>>>>>>> specific >> >>>>>>>>>>> OpenFlow >> >>>>>>>>>>>>>>>>> rules after packets leave the OVN pipeline and enter via >> >>>>>>>>>>>>>>>>> the >> >>>>>>>>>>>>>>>>> patch >> >>>>>>>>>>>>>>>>> port. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> To simplify this for CMS, I propose utilizing OVN logical >> >>>>>>>>>>>>>>>>> flows. >> >>>>>>>>>>> This >> >>>>>>>>>>>>>>>>> would eliminate the need for CMS to manage direct OpenFlow >> >>>>>>>>>>> connections >> >>>>>>>>>>>>>>>>> and programming. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> This seems very interesting! >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> To achieve this, I've developed a new service within OVN >> >>>>>>>>>>>>>>>>> called >> >>>>>>>>>>>>>>>>> `ovn-pr-controller` (pr = provider). Here's a high-level >> >>>>>>>>>>>>>>>>> overview: >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> A new database, `OVN_Provider`, is created with two main >> >>>>>>>>>>>>>>>>> tables: >> >>>>>>>>>>>>>>>>> `PR_Bridge` and `Logical_Flow`. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-pr-controller` connects to this database, translates >> >>>>>>>>>>>>>>>>> logical >> >>>>>>>>>>>>>>>>> flows to OpenFlow rules, and programs the bridges. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> CMS adds logical flows for managed provider bridges by >> >>>>>>>>>>>>>>>>> connecting to >> >>>>>>>>>>>>>>>>> the `OVN_Provider` database. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> CMS can define the pipeline as needed. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> An `ovn-prctl` utility (similar to `ovn-nbctl`) is used to >> >>>>>>>>>>>>>>>>> program >> >>>>>>>>>>>>>>>>> logical flows. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> Example Usage: >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> # Add a provider bridge >> >>>>>>>>>>>>>>>>> `ovn-prctl add-br br-ext` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> # Add logical flows >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 0 100 "inport == >> >>>>>>>>>>>>>>>>> \\"patch-port\\"" >> >>>>>>>>>>>>>>>>> "ct_snat_zone = 1000; next;"` >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 0 0 "1” "next;"` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 1 1000 "ip4" "ct_snat;"` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 2 1000 "ip4 && ct.new && ct.trk >> >>>>>>>>>>>>>>>>> && >> >>>>>>>>>>> ip4.src >> >>>>>>>>>>>>>>>>> == 10.0.0.11" "ct_snat(100.64.0.11); next;"` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 2 0 "ip4" "next;"` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 3 100 "ip4 && ip4.dst == >> >>>>>>>>>>>>>>>>> 52.92.128.0/17" >> >>>>>>>>>>>>>>>>> "tun.id = 1000; tun_ip4.dst = 10.100.100.1; eth.dst = >> >>>>>>>>>>>>>>>>> 4c:96:14:14:01:b0; outport = \\"vxlan0\\"; output;"` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> `ovn-prctl add-flow br-ext 3 0 “1” “output;”` >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> I'd like to get the community's feedback on whether this >> >>>>>>>>>>>>>>>>> service >> >>>>>>>>>>> would >> >>>>>>>>>>>>>>>>> be a valuable addition to OVN. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> I wonder if we need these to be separate >> >>>>>>>>>>>>>>>> databases/processes. >> >>>>>>>>>>> Wouldn't >> >>>>>>>>>>>>>>>> it make sense to expose this in the NB database directly? >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> With your proposal, these new ovn-pr-controllers would have >> >>>>>>>>>>>>>>>> to >> >>>>>>>>>>> connect >> >>>>>>>>>>>>>>>> to the central OVN_Provider database from all chassis. But >> >>>>>>>>>>>>>>>> we >> >>>>>>>>>>> already >> >>>>>>>>>>>>>>>> have the ovn-controller connection to the Southbound. >> >>>>>>>>>>>>>>>> Could we >> >>>>>>>>>>> reuse that? >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> I forgot to mention that the OVN provider ovsdb-server and >> >>>>>>>>>>>>>>> the >> >>>>>>>>>>>>>>> ovn-pr-controller needs >> >>>>>>>>>>>>>>> to be run on each chassis. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> I see. However, I think it gives even more flexibility if the >> >>>>>>>>>>>> OVN >> >>>>>>>>>>>> provider database is centralized. Then the CMS central >> >>>>>>>>>>>> component >> >>>>>>>>>>>> (e.g., >> >>>>>>>>>>>> neutron for OpenStack) could just write "logical flows" there >> >>>>>>>>>>>> and >> >>>>>>>>>>>> rely >> >>>>>>>>>>>> on per-chassis ovn-pr-controllers to translate that to OpenFlow. >> >>>>>>>>>>>> >> >>>>>>>>>>> While it brings flexibility, we should also keep in mind that the >> >>>>>>>>>>> central >> >>>>>>>>>>> approach could introduce another choke point for scale. Even if >> >>>>>>>>>>> we >> >>>>>>>>>>> reuse SB >> >>>>>>>>>>> DB as the central component, the new ovn-pr-controllers process >> >>>>>>>>>>> would >> >>>>>>>>>>> require new connections to the SB DB. >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> True, but I was not really thinking of using the SB DB as the >> >>>>>>>>>> central >> >>>>>>>>>> component for ovn-pr-controllers but rather a new database >> >>>>>>>>>> server. And >> >>>>>>>>>> I really hope it wouldn't require storing as many logical flows >> >>>>>>>>>> (and >> >>>>>>>>>> data in general) as we store in the SB today. >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> Thanks for the comments and the discussion. >> >>>>>>>>> >> >>>>>>>>> Just FYI - I thought we are in favour of having a separate >> >>>>>>>>> project. >> >>>>>>>>> So I reworked a bit and renamed the project to - ovnbr controller >> >>>>>>>>> (ovn >> >>>>>>>>> bridge controller) >> >>>>>>>>> - https://github.com/numansiddique/ovnbr/tree/initial_commits >> >>>>>>>>> >> >>>>>>>>> But I can move back the code to ovn project. So not a problem. >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>>>> Supporting both central and distributed may be an overkill at >> >>>>>>>>>>> least >> >>>>>>>>>>> as a >> >>>>>>>>>>> start, if we could decide which one is more practical from a CMS >> >>>>>>>>>>> point of >> >>>>>>>>>>> view. >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> Maybe, but the "distributed" case would probably mean more work >> >>>>>>>>>> for the >> >>>>>>>>>> CMS on the node side (a per chassis CMS component is definitely >> >>>>>>>>>> required >> >>>>>>>>>> then to provision the per chassis database). >> >>>>>>>>>> >> >>>>>>>>>> I do understand however that we'd need a way to abstract >> >>>>>>>>>> chassis-specific resources (e.g., OVS ports) in the other, >> >>>>>>>>>> "centralized", case. And that might be a significant >> >>>>>>>>>> disadvantage. >> >>>>>>>>>> >> >>>>>>>>>>>> On second thought, if designed properly, there's probably no >> >>>>>>>>>>>> need >> >>>>>>>>>>>> to add >> >>>>>>>>>>>> a restriction to colocate the new database and ovn-pr- >> >>>>>>>>>>>> controller. We >> >>>>>>>>>>>> could just support both types of deployments: >> >>>>>>>>> >> >>>>>>>>> @Dumitru Ceara If I understand correctly, what you're suggesting >> >>>>>>>>> is that >> >>>>>>>>> CMS can decide to run ovnbr database either central or locally - >> >>>>>>>>> for >> >>>>>>>>> each chassis. >> >>>>>>>>> >> >>>>>>>> >> >>>>>>>> Yes, that's what I was thinking of. >> >>>>>>> >> >>>>>>> fwiw; We would be interested in the distributed database for the PR >> >>>>>>> controller. >> >>>>>>> >> >>>>>>> Our interest surfaced after a discussion with Jakub Libosvar on how >> >>>>>>> to >> >>>>>>> approach downstream OpenStack Neutron consumption of OVN native BGP >> >>>>>>> support, where he raised the following use case: >> >>>>>>> * Single NIC chassis. >> >>>>>>> * Said NIC is operated by OVS, for simplicity and purpose of >> >>>>>>> discussion, >> >>>>>>> let's say the user space data path. >> >>>>>>> >> >>>>>>> >> >>>>>>> Now let's mix this with OVN native BGP features such as: >> >>>>>>> * Learning the default gateway through route exchange. >> >>>>>>> * Routing IPv4 prefixes over IPv6 next hop (aka. BGP Unnumbered). >> >>>>>>> * BGP protocol redirect to ensure BGP next hop address is the >> >>>>>>> link-local >> >>>>>>> address of a OVN LR on the integration bridge (which may be required >> >>>>>>> for >> >>>>>>> this to work with older versions of FRR on some ToR equipment due to >> >>>>>>> lack of support for 3rd party link-local next hop). >> >>>>>>> >> >>>>>>> >> >>>>>>> With a centralized Southbound database, which a CMS such as OpenStack >> >>>>>>> deploys, we would have a chicken and egg problem, because flows are >> >>>>>>> needed in the integration bridge for the ovn-controller to connect to >> >>>>>>> the Southbound database, and ... you get the picture. >> >>>>>>> >> >>>>>>> I imagine we could make parts of this work better with a distributed >> >>>>>>> database for a OVN Provider Controller. >> >>>>>>> >> >>>>>>> I guess we could even task this distributed controller with "priming" >> >>>>>>> the integration bridge with a simple set of "static flows" enough to >> >>>>>>> get >> >>>>>>> it bootstrapped in such topologies (or could this specific task even >> >>>>>>> be >> >>>>>>> a feature of the regular controller?). >> >>>>>>> >> >>>>>> >> >>>>>> I'm just trying to make sure I understood this last part correctly. >> >>>>>> By >> >>>>>> "regular controller" do you mean "ovn-controller" or some other (CMS) >> >>>>>> node-specific component? >> >>>>> >> >>>>> I was referring to the "ovn-controller". >> >>>>> >> >>>> >> >>>> Thanks for the clarification! >> >>>> >> >>>>> The need for a L3 interface on every chassis for BGP generates a lot of >> >>>>> per-chassis configuration, which "pollutes" the Northbound database for >> >>>>> CMSs that uses centralized OVN DBs for the entire deployment. >> >>>>> >> >>>>> The idea of a distributed database for the pr-controller made me think >> >>>>> this distributed database could potentially also be consumed by the >> >>>>> ovn- >> >>>>> controller for per-chassis configuration in cases where more advanced >> >>>>> higher layer features are required, and the CMS does not want to re- >> >>>>> implement those in logical flows using the "pr-controller" themselves. >> >>>>> >> >>>> >> >>>> Wouldn't it then make sense to just use ovn-controller for managing all >> >>>> bridges (br-int and also all provider OVS bridges listed in the >> >>>> distributed "Provider Database") in all cases? >> >>> >> >>> I thought about that too. I still feel it's better to have a separate >> >>> service. >> >>> Any user can just use OVN bridge/provider controller without having to >> >>> use OVN >> >>> to program OVS bridges. >> >>> >> >> >> >> That's fair. It seems more flexible. If ever needed we can also add >> >> support in the future for ovn-controller to take over the functionality >> >> of the bridge/provider controller. >> > >> > Thanks. >> > >> > Shall I start working on proposing the patches ? With >> > - With a new service inside the ovn repo (like ovn-controller-vtep) >> > - Name of the service - ovn-br-controller >> > >> >> Sounds good to me! >> >> Regards, >> Dumitru >> >> > Thanks >> > Numan >> > >> > >> >> >> >> Regards, >> >> Dumitru >> >> >> >>> Thanks >> >>> Numan >> >>> >> >>>> >> >>>> Thanks, >> >>>> Dumitru >> >>>> >> >>>>> -- >> >>>>> Frode Nordahl >> >>>>> >> >>>>>>>>> I think that would work too. Only disadvantage is that CMS has to >> >>>>>>>>> ensure that the bridge names and physical interface names >> >>>>>>>>> have to be the same. Although we can definitely find a way to >> >>>>>>>>> handle >> >>>>>>>>> this. >> >>>>>>>>> >> >>>>>>>>> The present proposal schema - >> >>>>>>>>> https://github.com/numansiddique/ovnbr/blob/initial_commits/ovn- >> >>>>>>>>> br.ovsschema#L66 >> >>>>>>>>> has only a Bridge table and no ports defined. In the present >> >>>>>>>>> proposal >> >>>>>>>>> CMS can add >> >>>>>>>>> logical flows like - "inport == eth1 && ....." and >> >>>>>>>>> ovnbr-controller >> >>>>>>>>> expects an OVS interface - eth1 in the OVS bridge. >> >>>>>>>>> >> >>>>>>>> >> >>>>>>>> Right, we'd need a way to represent chassis specific information if >> >>>>>>>> we >> >>>>>>>> support a central ovnbr database. Probably at least: OVS ports, >> >>>>>>>> conntrack zones, provider bridge names. >> >>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>>>>> - ovn-pr-controller & database on the same chassis >> >>>>>>>>>>>> - (multiple) ovn-pr-controller connecting to a database on a >> >>>>>>>>>>>> different >> >>>>>>>>>>>> node (e.g., colocated with the Southbound) >> >>>>>>>>>>>> >> >>>>>>>>>>>>>>> This is basically to allow a CMS agent running on each >> >>>>>>>>>>>>>>> chassis >> >>>>>>>>>>>>>>> to use >> >>>>>>>>>>>>>>> logical flows >> >>>>>>>>>>>>>>> and program them in the OVN provider database, instead of >> >>>>>>>>>>>>>>> talking >> >>>>>>>>>>>>>>> OpenFlow directly. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> OVN has a very nice way of abstracting OpenFlows using >> >>>>>>>>>>>>>>> logical >> >>>>>>>>>>>>>>> flows >> >>>>>>>>>>>>>>> and my idea is to leverage it. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> ovnkube-node, as you know, programs the OpenFlow rules to >> >>>>>>>>>>>>>>> the >> >>>>>>>>>>>>>>> provider bridge directly by execing >> >>>>>>>>>>>>>>> "ovs-ofctl". The OVN kubernetes community could possibly use >> >>>>>>>>>>>>>>> OVN >> >>>>>>>>>>>>>>> provider controller. >> >>>>>>>>>>>> >> >>>>>>>>>>>> Another thing the CMS node component (ovnkube-node in the >> >>>>>>>>>>>> example >> >>>>>>>>>>>> above) >> >>>>>>>>>>>> needs to do is reconcile flows on the "provider" bridge on >> >>>>>>>>>>>> restart. >> >>>>>>>>>>>> >> >>>>>>>>>>>> This new OVN provider controller would also remove the need for >> >>>>>>>>>>>> the CMS >> >>>>>>>>>>>> to do that, which is an advantage. >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> It is definitely valuable, and no objection from me. But I think >> >>>>>>>>>>> it is >> >>>>>>>>>>> better to ask opinion from CMS component maintainers if the OVS >> >>>>>>>>>>> pipeline >> >>>>>>>>>>> for the provider bridge is complex enough to justify this. Also, >> >>>>>>>>>>> how much >> >>>>>>>>>>> would it help by managing logical flows through an OVSDB versus >> >>>>>>>>>>> managing >> >>>>>>>>>>> open-flow rules though ovs-ofctl. Keep in mind that the >> >>>>>>>>>>> abstraction >> >>>>>>>>>>> here is >> >>>>>>>>>>> not at the level of the NB DB which focuses on logical >> >>>>>>>>>>> topologies - >> >>>>>>>>>>> here >> >>>>>>>>>>> the abstraction is logical-flows (something at the SB level), so >> >>>>>>>>>>> the CMS >> >>>>>>>>>>> still needs to manage the pipeline rather than just logical >> >>>>>>>>>>> topology. >> >>>>>>>>> >> >>>>>>>>> That's correct. Expectation is that CMS knows what it is doing, >> >>>>>>>>> And we have the requirement to add flows in the provider bridges >> >>>>>>>>> and >> >>>>>>>>> hence thought >> >>>>>>>>> of this abstraction to >> >>>>>>>>> - leverage the OVN logical flows >> >>>>>>>>> - and to leverage the openflow handling of ovn-controller. >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> My personal preference is also to have it part of OVN so that it is >> >>>>>>>>> easier to manage. >> >>>>>>>>> >> >>>>>>>>> But as Ales mentioned, we have many logical actions like - >> >>>>>>>>> put_dhcp_opts etc (which use controller action) >> >>>>>>>>> which will not work with the ovn-bridge-controller. Probably >> >>>>>>>>> ovn-bridge-controller can maintain its own symbol table. >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> Thanks >> >>>>>>>>> Numan >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> Adding @Tim Rozet <tro...@redhat.com> @Girish Moodalbail >> >>>>>>>>>>> <gmoodalb...@gmail.com> from ovn-k8s to comment. >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> Adding Jakub Libosvar too, from the neutron side, as we briefly >> >>>>>>>>>> touched >> >>>>>>>>>> on the content of this proposal in a discussion while trying to >> >>>>>>>>>> onboard >> >>>>>>>>>> the OVN BGP support in neutron. IMO a centralized "provider >> >>>>>>>>>> network >> >>>>>>>>>> database" might fit that specific use case quite well because the >> >>>>>>>>>> open >> >>>>>>>>>> flow rules that needed to be added to the provider bridge were >> >>>>>>>>>> quite >> >>>>>>>>>> generic. >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>>>>>>>> I'm not suggesting this, but just giving an example or a >> >>>>>>>>>>>>>>> potential >> >>>>>>>>>>> user. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> I believe it could be useful, but I'm unsure if it should >> >>>>>>>>>>>>>>>>> be >> >>>>>>>>>>>>>>>>> integrated into OVN directly or be a separate project >> >>>>>>>>>>>>>>>>> within >> >>>>>>>>>>>>>>>>> `ovn-org`. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> In my opinion it would be better as a standalone project >> >>>>>>>>>>>>>> within >> >>>>>>>>>>>>>> ovn-org. There is couple of reasons why: >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> 1) Separation between ovn actions and the new ones. I suppose >> >>>>>>>>>>>>>> the >> >>>>>>>>>>>>>> ovn-pr-controller won't support like put_arp etc. in other >> >>>>>>>>>>>>>> words >> >>>>>>>>>>>>>> actions that require userspace handling. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> 2) There are certain expectations about parameters, mostly ct >> >>>>>>>>>>>>>> actions >> >>>>>>>>>>>>>> and it feels a little strange to populate a specific register >> >>>>>>>>>>>>>> in >> >>>>>>>>>>>>>> order >> >>>>>>>>>>>>>> to get the action working. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> 3) Maintenance cost to some extent, standalone project might >> >>>>>>>>>>>>>> be >> >>>>>>>>>>>>>> easier to maintain, it can be written in different language >> >>>>>>>>>>>>>> if it >> >>>>>>>>>>>>>> would be better fit. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> 4) The abstraction can be generated automatically to some >> >>>>>>>>>>>>>> extent >> >>>>>>>>>>>>>> so most of the code might be actually a way to generate the >> >>>>>>>>>>>>>> parsing >> >>>>>>>>>>>>>> etc. >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> I'm fully aware that this would require some duplication. With >> >>>>>>>>>>>>>> that >> >>>>>>>>>>>>>> said, this just my opinion and I won't block any other >> >>>>>>>>>>>>>> decision. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> Hi Ales, >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> Thanks for the replies. I agree with your points. I think it >> >>>>>>>>>>>>> makes >> >>>>>>>>>>>>> sense to have >> >>>>>>>>>>>>> a separate project even if the code is duplicated. >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> I'm not sure I see anything blocking the ovn-pr-controller (or >> >>>>>>>>>>>> whatever >> >>>>>>>>>>>> we decide to call it) code from being part of the ovn-org/ovn >> >>>>>>>>>>>> project. >> >>>>>>>>>>>> >> >>>>>>>>>>>> It can be a standalone daemon (similar to controller/ovn- >> >>>>>>>>>>>> controller or >> >>>>>>>>>>>> controller-vtep/ovn-controller-vtep). >> >>>>>>>>>>>> >> >>>>>>>>>>>> It can even be written in a different language (e.g., rust) if >> >>>>>>>>>>>> we >> >>>>>>>>>>>> wish. >> >>>>>>>>>>>> >> >>>>>>>>>>>> Keeping it in the same project actually reduces maintenance cost >> >>>>>>>>>>>> because >> >>>>>>>>>>>> we can just reuse the expr parsing library from OVN directly. >> >>>>>>>>>>>> We can >> >>>>>>>>>>>> also reuse all the build/test infra (if we wish). >> >>>>>>>>>>>> >> >>>>>>>>>>>> It would also mean we wouldn't have to come up with different >> >>>>>>>>>>>> release >> >>>>>>>>>>>> strategies, contribution guidelines, etc. >> >>>>>>>>>>>> >> >>>>>>>>>>>> Also, with downstream in mind, it might be (slightly) easier for >> >>>>>>>>>>>> distros >> >>>>>>>>>>>> to package this new binary if its code lived in ovn-org/ovn. >> >>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> In my option it is really not good to duplicate components in >> >>>>>>>>>>> different >> >>>>>>>>>>> repos. Unless we find ways to expose logical flow translation as >> >>>>>>>>>>> a >> >>>>>>>>>>> library >> >>>>>>>>>>> and share between the projects, I am inclined to use OVN repo >> >>>>>>>>>>> directly. >> >>>>>>>>>>> >> >>>>>>>>>>> Thanks, >> >>>>>>>>>>> Han >> >>>>>>>>>>> >> >>>>>>>>>>>>> Implementing in a different language would be nice but I think >> >>>>>>>>>>>>> it >> >>>>>>>>>>>>> will >> >>>>>>>>>>>>> take a lot >> >>>>>>>>>>>>> of effort to implement expr parsing and openflow encoding. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> Thanks >> >>>>>>>>>>>>> Numan >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> Thanks, >> >>>>>>>>>>>> Dumitru >> >>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> I guess it depends a bit on the approach chosen for >> >>>>>>>>>>>>>>>> implementation >> >>>>>>>>>>> but >> >>>>>>>>>>>>>>>> at a first glance this seems as a good candidate for ovn-org >> >>>>>>>>>>>>>>>> to me. >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> Three possible options are: >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> - Integrate the `OVN provider controller` into `ovn-org/ >> >>>>>>>>>>>>>>>>> ovn`. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> - Create a separate project within `ovn-org` (which >> >>>>>>>>>>>>>>>>> would >> >>>>>>>>>>>>>>>>> require >> >>>>>>>>>>>>>>>>> duplicating some files like `lib/actions.c`). >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> - Do not pursue this. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> Listing it here because it's on the "con" side of things. >> >>>>>>>>>>>>>>>> :) I >> >>>>>>>>>>> wonder >> >>>>>>>>>>>>>>>> if we'll end up duplicating all OVS actions into OVN logical >> >>>>>>>>>>>>>>>> flow >> >>>>>>>>>>> actions. >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> Actually that's my goal. Instead of using OpenFlow rules >> >>>>>>>>>>>>>>> directly, a >> >>>>>>>>>>>>>>> user can express >> >>>>>>>>>>>>>>> their pipeline as logical flows and not worry about the >> >>>>>>>>>>>>>>> intricacies of >> >>>>>>>>>>>>>>> openflow syntax. >> >>>>>>>>>>>>>>> It does add another layer of abstraction for sure. >> >>>>>>> >> >>>>>>> >> >>>>>>> With maintenance cost in mind, we definitively prefer hosting this in >> >>>>>>> the main repository, and I think it fits nicely in there. >> >>>>>>> >> >>>>>>> -- >> >>>>>>> Frode Nordahl >> >>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> Thanks >> >>>>>>>>>>>>>>> Numan >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> I welcome your thoughts and would like to know if other OVN >> >>>>>>>>>>>>>>>>> users >> >>>>>>>>>>> have >> >>>>>>>>>>>>>>>>> similar requirements. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> A proof-of-concept is available here: >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>> https://github.com/numansiddique/ovn/tree/ >> >>>>>>>>>>> provider_controller_support. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> If there is a consensus in pursuing this further, I'll >> >>>>>>>>>>>>>>>>> work on >> >>>>>>>>>>>>>>>>> refining the patches and submit them as RFC to start with. >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> In general I have no objections to an RFC. (CC the rest of >> >>>>>>>>>>>>>>>> the >> >>>>>>>>>>> maintainers). >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> Thanks, >> >>>>>>>>>>>>>>>>> Numan >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> Regards, >> >>>>>>>>>>>>>>>> Dumitru >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>>> Thanks, >> >>>>>>>>>>>>>> Ales >> >>>>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>> >> >>>>>> Thanks, >> >>>>>> Dumitru >> >>>>>> >> >>>>> >> >>>> >> >>> >> >> >> > >> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev