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

Reply via email to