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,
>
> > 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.

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.
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`.
> >
>
> 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.

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
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to