Hey everyone, I was validating the idea of integrating BGP with the exchange module as a whole and found some issues addressed in the proposed patch [1].
However, the route learning and integration with the control plane (NB database) part is still open. Do you have any idea how this will be implemented? I can't see any other way to do this than to integrate with Logical_Router_Static_Route at the NB database level, and that's exactly what OVN-IC does to inject remotely learned routes. I have some ideas that may not make sense but I would like to know how you see this part so we can think of an implementation proposal. Highlights: - Create a new Southbound Database table for advertised and learned routes (NB/SB sync): Routing_Information_Base - e.g. Routing_Information_Base columns: - route_table - ip_prefix - nexthop - logical_port (basically the matching criteria for SB Port_Binding table) - options - external_ids - Route Advertisement process: - Initially created based on the Logical_Router_Static_Route rows (we can add connected networks too) - NB sync. - Create entries only if we have some option enabled in LRP, something like: LRP options:redistribute-rib=true. - Use the policy filter criteria (same as OVN-IC) to filter advertised routes. In other words, do not create entries in this RIB table if there is some policy blocking it. - The monitoring process for changes in the Logical_Router_Static_Route rows will not create new entries in the SB RIB table for learned routes identified by key (e.g. with the external_ids exchange-learned-route key). - Route Learning process: - Add new rows in the Routing_Information_Base table based on the learned prefix from the exchange module. We need to set some config option flag for this, like: options:learn-exchange-routes=true or we can add a protocol specific if it works better for general use cases like: options:learn-exchange-routes-protocol=BGP. - Add an engine node for Routing_Information_Base in inc-proc-northd and a sync function like this (en_sync_to_sb_pb_run) to synchronize routing between new routes created in the SB Routing_Information_Base table and/or updates in the NB database (e.g. changes to the Logical_Router_Static_Route table). - The result of this synchronization is basically: - SB->NB: creating/deleting/updating Logical_Router_Static_Route entries for learned routes in the Routing_Information_Base table (using the key). - NB->SB: Creating/deleting/updating entries in the SB Routing_Information_Base table for LRP with the config option enabled - based on LRSR table. - We need to create an identifier for this in the LRSR table to avoid loops/reentrance, for example, ovn-ic creates a key ic-learned-route in the external_ids. So, we can use a similar approach for this, such as: external_ids:exchange-learned-route=RIB_UUID. What do you think? any ideas? [1] https://mail.openvswitch.org/pipermail/ovs-dev/2024-September/417066.html Em seg., 2 de set. de 2024 às 09:50, Roberto Bartzen Acosta < roberto.aco...@luizalabs.com> escreveu: > Hi everyone, > > Em seg., 2 de set. de 2024 às 07:53, Felix Huettner > <felix.huettner@mail.schwarz> escreveu: > >> Hi everyone, >> >> On Mon, Sep 02, 2024 at 10:16:09AM +0200, Frode Nordahl wrote: >> > On Sun, Sep 1, 2024 at 8:02 PM Roberto Bartzen Acosta >> Diese E Mail enthält möglicherweise vertrauliche Inhalte und ist nur für >> die Verwertung durch den vorgesehenen Empfänger bestimmt. >> Sollten Sie nicht der vorgesehene Empfänger sein, setzen Sie den Absender >> bitte unverzüglich in Kenntnis und löschen diese E Mail. >> >> Hinweise zum Datenschutz finden Sie >> hier <https://www.datenschutz.schwarz/> >> . >> >> This e-mail may contain confidential content and is intended only for the >> specified recipient/s. >> If you are not the intended recipient, please inform the sender >> immediately and delete this e-mail. >> >> Information on data protection can be found here >> <https://www.datenschutz.schwarz/> . >> >> > <roberto.aco...@luizalabs.com> wrote: >> > > >> > > Hi Frode and Gurpreet, >> > > >> > > >> > > On Sun, 1 Sep 2024 at 10:29 Gurpreet Singh <gurps...@redhat.com> >> wrote: >> > >> >> > >> +1 on using VRFs for tenant isolation. We do not want to use >> separate BGP daemon for the purpose of isolation but use VRFs. There should >> be 1 BGP daemon at the system level that caters to multiple tenants. >> > > >> > > >> > > Sure, I completely agree with you about this. From the point of view >> of the ovn-controller, the VRF provides the isolation that we’re looking >> for. However, I’m not sure about the isolation of the failure domain since >> we’ve all the VRF’s running in the same BGP daemon for a single router >> (let’s try to explain based on Frode’s comment). >> > >> > The failure domain is a single host/chassis. Just as every >> > host/chassis has a single kernel, a single ovs-vswitchd instance and a >> > single ovn-controller, each host/chassis will have a single BGP >> > daemon. Together the ovn-controller and the bgp daemon will announce >> > resources local to its host/chassis. >> > >> > If you want to perform maintenance on any of the components mentioned >> > above, you would have to move resources/direct traffic onto a >> > different host/chassis to avoid downtime. This is true regardless of >> > the use of this feature. >> > >> > With the right logical topology, we can make use of the network for >> > resilience and load balancing by announcing resources from multiple >> > hosts/chassis simultaneously (anycast). >> >> This is also why i am building active-active for routers here: >> >> https://github.com/felixhuettner/ovn/commits/test_active_active_routing_v3/ >> >> This should allow you to have a single active-active routing instance >> that is connected to the ToRs at multiple locations. Behind that you >> would still have your normal logical switch that contains the >> neutron external network and the associated neutron routers. >> > > Thanks Felix, we're following this idea in an interesting discussion that > we talked about in another thread! So, our initial proposal to solve the > active-active case was to use multiple DGPs and stateless NAT for the CMS > Floating IPs. However, your proposal is much more interesting in terms of > integration with the CMS but we need to evaluate all the architectural > aspects, as this transforms the use of the CMS into a "2-tier" overlay > architecture. > > >> >> If you then want to do maintenance on a chassis or bgp daemon you can >> just remove it from the routing path and the other chassis can easily >> take over. >> >> > >> > >> >> > >> Regards >> > >> Gurpreet >> > >> >> > >> On Sep 1, 2024, at 6:07 AM, Frode Nordahl <fnord...@ubuntu.com> >> wrote: >> > >> >> > >> >> > >> >> > >> fre. 30. aug. 2024, 19:48 skrev Roberto Bartzen Acosta < >> roberto.aco...@luizalabs.com>: >> > >>> >> > >>> Hello Frode, >> > >>> >> > >>> Thanks for working on this. >> > >> >> > >> >> > >> Hello, Roberto, >> > >> >> > >> Thank you for your interest in the work. >> > >> >> > >>> >> > >>> Em sex., 30 de ago. de 2024 às 12:37, Frode Nordahl < >> fnord...@ubuntu.com> escreveu: >> > >>>> >> > >>>> Hello, Tiago, >> > >>>> >> > >>>> Please find my response in-line below. >> > >>>> >> > >>>> fre. 30. aug. 2024, 17:09 skrev Tiago Pires < >> tiago.pi...@luizalabs.com>: >> > >>>> >> > >>>> > Hi all, >> > >>>> > >> > >>>> > I did test your Routing protocol port redirection patch and I was >> > >>>> > wondering how you guys are planning to make the learning and >> > >>>> > advertisement of the routes between the Logical router's routing >> table and >> > >>>> > the bgp daemon. >> > >>>> > >> > >>>> >> > >>>> Thank you for your interest in this work. The answer to your >> question is in >> > >>>> the thread you are quoting, I'll highlight it with comments below. >> > >>>> >> > >>>> Thanks >> > >>>> > >> > >>>> > Regards, >> > >>>> > >> > >>>> > Tiago Pires >> > >>>> > >> > >>>> > On Tue, Aug 6, 2024 at 9:03 AM Frode Nordahl < >> fnord...@ubuntu.com> wrote: >> > >>>> > >> > >>>> >> On Mon, Aug 5, 2024 at 12:02 PM Ales Musil <amu...@redhat.com> >> wrote: >> > >>>> >> > On Thu, Aug 1, 2024 at 6:04 PM Frode Nordahl < >> fnord...@ubuntu.com> >> > >>>> >> wrote: >> > >>>> >> >> >> > >>>> >> >> Hello, Ales, >> > >>>> >> >> >> > >>>> >> >> This is a fork of the thread to go back to discuss some of >> the items >> > >>>> >> >> raised in the most recent instance of the OVN A/V Community >> meeting >> > >>>> >> >> [6]. >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > Hi Frode, >> > >>>> >> > >> > >>>> >> > thank you for the followup discussion. >> > >>>> >> > >> > >>>> >> >> >> > >>>> >> >> On Fri, Jun 28, 2024 at 11:03 AM Ales Musil < >> amu...@redhat.com> wrote: >> > >>>> >> >> > On Tue, Jun 25, 2024 at 6:52 PM Frode Nordahl < >> fnord...@ubuntu.com> >> > >>>> >> wrote: >> > >>>> >> >> >> >> > >>>> >> >> >> Hello, >> > >>>> >> >> >> >> > >>>> >> >> >> We are increasingly seeing requests for integration >> between OVN >> > >>>> >> >> >> powered CMSs/workloads and the fabric. >> > >>>> >> >> >> >> > >>>> >> >> >> As a side note, this is a very interesting topic to me >> personally, >> > >>>> >> and >> > >>>> >> >> >> I think there are opportunities in the long term for this >> class of >> > >>>> >> >> >> software to potentially fill a void for more automated >> and SDN-like >> > >>>> >> >> >> ways of managing the physical network, as previously >> closed physical >> > >>>> >> >> >> switch hardware is increasingly opening up to >> programmatic extension >> > >>>> >> >> >> and control. >> > >>>> >> >> >> >> > >>>> >> >> >> While very exciting, it will take a while, both in terms >> of evolving >> > >>>> >> >> >> how networking teams are organized, in terms of the >> longevity of >> > >>>> >> >> >> networking gear making entity wide refresh cycles very >> long, not to >> > >>>> >> >> >> mention gathering agreement and momentum to build such a >> thing from >> > >>>> >> >> >> the pieces we have. >> > >>>> >> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> So to be pragmatic, we need to integrate with something >> that fabric >> > >>>> >> >> >> network engineers are comfortable with, and already >> available on >> > >>>> >> most >> > >>>> >> >> >> networking hardware, be it closed or open, today. >> > >>>> >> >> >> >> > >>>> >> >> >> The most ubiquitous routing protocol, which has prevailed >> in modern >> > >>>> >> >> >> layer 3 only data center designs [0], is BGP. >> > >>>> >> >> >> >> > >>>> >> >> >> Use cases: >> > >>>> >> >> >> * Allow fabric to locate and direct traffic to reroutable >> resources >> > >>>> >> >> >> such as IPv4/IPv6 prefixes, Floating IPs (FIPs) and Load >> Balancer >> > >>>> >> >> >> VIPs. >> > >>>> >> >> >> >> > >>>> >> >> >> * Use the fabric as a load balancer, announcing the same >> service IP >> > >>>> >> on >> > >>>> >> >> >> multiple hosts (anycast). >> > >>>> >> >> >> >> > >>>> >> >> >> * Aggregate announcements from stacked CMSes (i.e. >> Kubernetes >> > >>>> >> running >> > >>>> >> >> >> on top of OpenStack). >> > >>>> >> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> Requirements: >> > >>>> >> >> >> * Data path must be hardware offloaded, i.e. the next hop >> address >> > >>>> >> the >> > >>>> >> >> >> peer resolves for announcements of OVN resources needs to >> be an LRP >> > >>>> >> >> >> IP. >> > >>>> >> >> >> >> > >>>> >> >> >> * Minimize configuration overhead through the use of IPv6 >> LLAs for >> > >>>> >> >> >> peering routing both IPv4 and IPv6 prefixes over a IPv6 >> BGP session >> > >>>> >> >> >> [1] (aka. “BGP Unnumbered”). >> > >>>> >> >> >> >> > >>>> >> >> >> * Support ECMP out of the host, i.e. use L3 interfaces >> potentially >> > >>>> >> >> >> connecting to two different ToRs, instead of bonds, >> avoiding the >> > >>>> >> >> >> additional complexity of multi-chassis bonds. >> > >>>> >> >> >> >> > >>>> >> >> >> * Support BGP authentication [2][3], i.e. the source, >> destination >> > >>>> >> >> >> address and ports in packet headers can not be changed. >> > >>>> >> >> >> >> > >>>> >> >> >> * Compatibility >> > >>>> >> >> >> * Running a BGP protocol suite on the host is becoming a >> thing in >> > >>>> >> >> >> its own right, and our users may have requirements of >> their own that >> > >>>> >> >> >> influence their choice of implementation. We need to take >> this into >> > >>>> >> >> >> account and choose integration methods that allow OVN to >> work with >> > >>>> >> >> >> multiple protocol suite implementations. >> > >>>> >> >> >> >> > >>>> >> >> >> * While we have the power to change and fix issues in >> popular >> > >>>> >> >> >> routing protocol suites, such as FRR, we need to be able >> to >> > >>>> >> integrate >> > >>>> >> >> >> with versions that exist on networking hardware out there >> today. >> > >>>> >> >> >> >> > >>>> >> >> >> Limitations that influence/dictate implementation choices: >> > >>>> >> >> >> * Peering with IPv6 LLAs to meet the configuration >> overhead >> > >>>> >> >> >> requirement makes the peering relationship point to point. >> > >>>> >> >> >> >> > >>>> >> >> >> * Popular BGP implementations, such as FRR which is used >> as routing >> > >>>> >> >> >> protocol suite by many ToR open source NOSes, does not >> accept >> > >>>> >> >> >> sending/receiving IPv6 LLA next hop with the route, so >> the BGP peer >> > >>>> >> >> >> address will be used as next hop. (There are even >> mentions of 3rd >> > >>>> >> >> >> party nexthop currently not being supported, but not sure >> if that is >> > >>>> >> >> >> accurate [4]). >> > >>>> >> >> >> >> > >>>> >> >> >> * As mentioned above, BGP authentication requires IP >> headers to be >> > >>>> >> >> >> unchanged for the BGP TCP packets going to/from the BGP >> speaker. >> > >>>> >> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> Proposed implementation: >> > >>>> >> >> >> >> > >>>> >> >> >> We are in the process of preparing some RFC/PoC patches >> that at a >> > >>>> >> high >> > >>>> >> >> >> level will: >> > >>>> >> >> >> * Manage a VRF in the system serving two purposes: >> > >>>> >> >> >> * Leaking of route information from ovn-controller to the >> VRF >> > >>>> >> >> >> routing table, which a routing protocol suite can >> redistribute >> > >>>> >> subject >> > >>>> >> >> >> to configuration. >> > >>>> >> >> >> >> > >>>> >> >> >> * Provide an IP endpoint that a VRF aware application, >> such as >> > >>>> >> FRR, >> > >>>> >> >> >> can bind to serving as a BGP speaker on behalf of a OVN >> LRP IP. >> > >>>> >> >> >> >> > >>>> >> >> >> * We will attach a OVN VIF to this VRF that has data path >> rules >> > >>>> >> that: >> > >>>> >> >> >> >> > >>>> >> >> >> * Forward required traffic destined to the OVN LRP IP to >> the VRF. >> > >>>> >> >> >> >> > >>>> >> >> >> * Forward required traffic from the application bound to >> the VRF >> > >>>> >> as >> > >>>> >> >> >> if it originated from the OVN LRP IP. >> > >>>> >> >> > >>>> > >> > >>>> The above bullets give an overview of the proposed implementation. >> > >>> >> > >>> >> > >>> Just to validate the understanding and align expectations, the main >> purpose of this implementation/module developed for route-exchange-netlink >> is to export addresses that are typically "external" from the point of view >> of the OVN router / SDN. In this case dnat_and_snat rules for FIPs and LB >> VIP's configured on the Logical Router, right? >> > >> >> > >> >> > >> Development happens in iterations, so this is indeed where we start. >> We also want to get to learning of routes, as that would simplify >> configuration, and hopefully we will. >> > >> >> > >>> So, it's out of the scope to advertise/learn routes from the >> router's internal networks, as well as the router's static route table, >> directly connected LS subnets, etc. Therefore, it's out of the scope to >> make the service and integration of the BGP daemon multi-tenant, since >> there is no plan for segmentation by namespaces to run different BGP >> daemons, right? I imagine that in the multi-tenant use case we would have a >> BGP daemon for each logical router, in addition to playing with the >> router's complete route table. >> > >> >> > >> >> > >> The BGP redirect option and route redistribute options are per LRP, >> and there are no restrictions on how the LSP redirected to is terminated in >> the system. Likewise, the use of VRFs to exchange route information give >> you isolation. We view the BGP daemon as a system/admin level entity and >> the isolation you seek can be configured in it? >> > >> >> > >> We have large users that do not use NAT and would be interested in >> redistributing LR networks attached to distributed gateways (the OpenStack >> use case). >> > >> >> > >> However, before diving into that we need to figure out how to >> connect a distributed topology with the per chassis gateway router, as the >> answer to that will impact what resources it makes sense to redistribute >> where. >> > > >> > > >> > > Maybe this is the most important part to discuss related to the BGP >> daemon as a system/admin level. We know that a logical router is attacked >> to only one gateway chassis, so what will happen when we need to perform >> maintenance on the BGP daemon of the chassis where the router's LRP >> resides? My only concern about having only one daemon is related to this, >> maintenance caused by problems in other tenants or in the OS itself can >> cause traffic disruption due to reconnection of all BGP sessions. >> > >> > See response above on failure domains. About tenants causing problems, >> > aka noisy neighbors, this is not a problem unique to this feature. >> > There are also existing solutions that can be applied such as OVN >> > Control Plane Protection and scheduler level isolation of host/chassis >> > control plane daemons from workloads. >> > >> > > Regarding the implementation itself, I see at least two main >> applications for integrating BGP with OVN. The first one is the integration >> with the fabric ToR’s, which is the target of this proposal. Something >> similar to what Neutron-Dynamic-Routing aims to do in the OpenStack world >> (advertise everything that is public and needs to be integrated into the >> fabric routing). >> > >> > The native OVN implementation differ in that it gives every >> > host/chassis a L3 interface implemented in the OVS data path, this >> > interface is used both for forwarding and exchange of control plane >> > information for resources local to the host/chassis which is crucial >> > for proper liveliness detection. >> > >> > In contrast, the legacy NDR implementation exchanges information at >> > the CMS level, with speakers separated from the data path, preventing >> > proper location information and liveliness detection. >> > >> > > The second one is the integration with the SDN itself, and this is >> something that large public clouds have been doing for quite some time, >> that is, allowing a BGP instance to connect to router networks at the >> overlay/SDN level. So, this doesn’t depend on cloud technology, it’s >> something that transcends the use of OpenStack or OVN-Kubernetes for >> example. There are temporary solutions with many limitations such as >> OVN-BGP-Agent, but they do not meet the complete integration requirements. >> This is the point that we are most interested in, giving OVN the ability to >> learn routes and inject them into the router's route tables at the overlay >> level and segmented by tenant. >> > >> > Can you please be more specific about the exact use case you want to >> address? >> >> What i heard that goes into this direction (not sure if it is the same): >> Users have an openstack VM that hosts some kind of site-to-site VPN >> tunnel. The networks that are reachable on the remote end of the tunnel >> should be made routable from openstack. The Users then don't want to set >> static routes on openstack routers, but rather run a bgp session with >> them to exchange routes. >> > > +1 but not limited to this one. > BGP is the basis of all enterprises' connectivity solutions. So, you can > call it by different names depending on which cloud vendor you look at but > they all solve the same problem and can be integrated with VPN-level, > private link solutions (object storage), VPC network peering... such as: > Oracle Dynamic Routing Gateways[1], AWS Direct Connect Gateway + Transit > Gateway [2], Google Dynamic Routing Mode [3], Azure ExpressRoute [4], etc... > > [1] > https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingDRGs.htm > [2] > https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html > [3] > https://cloud.google.com/network-connectivity/docs/router/how-to/configuring-routing-mode > [4] > https://learn.microsoft.com/en-us/azure/expressroute/expressroute-routing#dynamic-route-exchange > > Regards, > Roberto > > > >> Thanks >> Felix >> >> > >> > > We would like to discuss with you further the vision of this second >> use case of BGP integration with OVN, and of course, knowing how we can >> help with this initiative. >> > >> > Help is always welcome, let's continue the conversation. I believe >> > this body of work is a topic for the next A/V OVN Community meeting as >> > well. >> > >> > -- >> > Frode Nordahl >> > >> > > Best regards, >> > > Roberto >> > > >> > > >> > >> >> > >> -- >> > >> Frode Nordahl >> > >> >> > >> >> > >> >> > >>> Best regards, >> > >>> Roberto >> > >>> >> > >>>> >> > >>>> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> Hopefully we'll have something up on the list before the >> end of this >> > >>>> >> >> >> week, which makes it real and easier to reason about for >> further >> > >>>> >> >> >> discussion. >> > >>>> >> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> Prior art: >> > >>>> >> >> >> >> > >>>> >> >> >> We recognize that there already exists a third party >> approach to >> > >>>> >> this >> > >>>> >> >> >> in the ovn-bgp-agent [5] governed by OpenStack, and our >> goal with >> > >>>> >> this >> > >>>> >> >> >> work is to provide a tighter integration that might cater >> > >>>> >> generically >> > >>>> >> >> >> for other CMSes and use cases. >> > >>>> >> >> >> >> > >>>> >> >> >> >> > >>>> >> >> >> 0: https://datatracker.ietf.org/doc/html/rfc7938 >> > >>>> >> >> >> 1: https://datatracker.ietf.org/doc/html/rfc5549 >> > >>>> >> >> >> 2: https://datatracker.ietf.org/doc/html/rfc2385 >> > >>>> >> >> >> 3: https://datatracker.ietf.org/doc/html/rfc5925 >> > >>>> >> >> >> 4: >> > >>>> >> >> https://github.com/FRRouting/frr/blob/cc3519f3e6eaa06f762e0d447202df32df66e129/bgpd/bgp_route.c#L2719 >> > >>>> >> >> >> 5: https://docs.openstack.org/ovn-bgp-agent/latest/ >> > >>>> >> >> >> > >>>> >> >> >> > >>>> >> >> 6: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-August/416209.html >> > >>>> >> >> >> > >>>> >> >> > >> > >>>> >> >> > Hi Frode, >> > >>>> >> >> > >> > >>>> >> >> > looking forward to the RFC. >> > >>>> >> >> >> > >>>> >> >> As we agreed, the current set of patches that we have >> > >>>> >> >> [7][8][9][10][11][12][13] will not be considered for the >> 24.09 release >> > >>>> >> >> as we would like to make it more feature complete and target >> the 25.03 >> > >>>> >> >> release instead. In that context I guess they serve as the >> RFC >> > >>>> >> >> patches. >> > >>>> >> >> >> > >>>> >> >> 7: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416038.html >> > >>>> >> >> 8: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416039.html >> > >>>> >> >> 9: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416040.html >> > >>>> >> >> 10: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416042.html >> > >>>> >> >> 11: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416041.html >> > >>>> >> >> 12: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416043.html >> > >>>> >> >> 13: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416044.html >> > >>>> >> >> >> > >>>> >> >> > >>>> > >> > >>>> The above patches are the current state of the work and we will >> continue it >> > >>>> the coming cycle with the intention to get it into the 25.03 >> release. If >> > >>>> you have cycles to try it out and provide feedback, that would be >> most >> > >>>> welcome. >> > >>>> >> > >>>> -- >> > >>>> Frode Nordahl >> > >>>> >> > >>>> >> In addition to the above there is the LRP BGP redirect patch >> from >> > >>>> >> >> Martin [14], which could be useful independently. >> > >>>> >> >> >> > >>>> >> >> 14: >> > >>>> >> >> https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416095.html >> > >>>> >> >> >> > >>>> >> >> Discussion points from meeting: >> > >>>> >> >> 1) OVN and Netlink code >> > >>>> >> >> In the meeting you raised some concerns about introducing >> Netlink code >> > >>>> >> >> in the OVN repository. While I agree with you 100% that the >> part of >> > >>>> >> >> [10] that vendors code from OVS (contents of >> > >>>> >> >> route-exchange-netlink-private.h), should instead be a patch >> for OVS. >> > >>>> >> >> >> > >>>> >> >> The parts of [10] that provide higher layer helper functions, >> > >>>> >> >> consuming OVS library code, do not naturally fit in OVS as >> OVS itself >> > >>>> >> >> has no use for them. >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > After the discussion that we had during the meeting I agree >> that we >> > >>>> >> should reuse >> > >>>> >> > as much OvS code as possible. >> > >>>> >> > >> > >>>> >> >> >> > >>>> >> >> As a quick reminder, we are looking at Netlink because it >> provides a >> > >>>> >> >> simple and established API for exchange of this type of >> information >> > >>>> >> >> which is already supported by all routing protocol suites >> out there. >> > >>>> >> >> It is not tied to any particular data path type, we could >> > >>>> >> >> theoretically even use it as IPC between two userspace >> processes, >> > >>>> >> >> removing the kernel from the picture with support on the >> routing >> > >>>> >> >> protocol suite side. (There has been some discussion on this >> for BIRD: >> > >>>> >> >> >> > >>>> >> >> https://bird.network.cz/pipermail/bird-users/2021-September/015707.html). >> > >>>> >> >> >> > >>>> >> >> Would it be possible to reach some compromise to include >> only the >> > >>>> >> >> parts that consume OVS library code >> (route-exchange-netlink.{c|h})? >> > >>>> >> >> >> > >>>> >> >> While a plugin based approach was also suggested, and we >> have prior >> > >>>> >> >> examples of successfully using that, it does not come without >> > >>>> >> >> substantial cost. So I want to explore what options there >> are to host >> > >>>> >> >> this inside the main repository. >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > We could maintain the netlink plugin in the OVN codebase as >> an example >> > >>>> >> > and still have the plugin system in place. The plugin system >> has >> > >>>> >> potential >> > >>>> >> > benefit of not locking ourselves to just netlink, but we could >> > >>>> >> potentially use >> > >>>> >> > API regardless of the OVN code. Would that be enough of >> justification >> > >>>> >> > and to add the plugin system + netlink as default plugin >> housed >> > >>>> >> > in the OVN codebase? >> > >>>> >> >> > >>>> >> This makes sense and provides a path forward, thanks! >> > >>>> >> >> > >>>> >> We are in a point of the development cycle where we need to >> tend to >> > >>>> >> some downstream stuff, but we will continue this work. I'll try >> to get >> > >>>> >> patches to make the OVS route-table module consumable/reusable >> for >> > >>>> >> this work posted as soon as possible and start thinking about >> what's >> > >>>> >> needed in the route-exchange provider interface. >> > >>>> >> >> > >>>> >> >> 2) OVS OpenFlow extensions >> > >>>> >> >> One of the counter proposals you brought up was to add OVS >> OpenFlow >> > >>>> >> >> extensions to allow OVN instruct OVS to insert routes into a >> system >> > >>>> >> >> routing table. >> > >>>> >> >> >> > >>>> >> >> While I see this could be a clear separation of concerns >> between OVN >> > >>>> >> >> and OVS, and OpenFlow being OVN's native integration >> language, I >> > >>>> >> >> struggle a bit with the general usefulness of such an >> extension. >> > >>>> >> >> >> > >>>> >> >> Our use case for inserting routes into a system routing >> table is >> > >>>> >> >> purely for exchange of control plane information with some >> external >> > >>>> >> >> system, such as a routing protocol suite, and we have no >> interest in >> > >>>> >> >> using it for actual data path control. This is in contrast >> to how OVN >> > >>>> >> >> uses OpenFlow generally, which as far as I understand is to >> control >> > >>>> >> >> the data path. >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > In the light of the other discussion it doesn't really make >> sense to >> > >>>> >> have >> > >>>> >> > plugin when most of the netlink code wouldn't be in the OvS >> codebase >> > >>>> >> > anyway. >> > >>>> >> >> > >>>> >> Assuming you are referring to the OpenFlow extension here, and >> yes, I >> > >>>> >> agree. >> > >>>> >> >> > >>>> >> >> >> > >>>> >> >> >> > >>>> >> >> >> > >>>> >> >> [ snip ] >> > >>>> >> >> >> > >>>> >> >> > Another important part that we should keep in mind if >> possible, is >> > >>>> >> the EVNP >> > >>>> >> >> > use case. To be able to configure VXLAN tunnels based on >> the info >> > >>>> >> that we >> > >>>> >> >> > will receive. >> > >>>> >> >> > >> > >>>> >> >> > I'm not sure how far/deep in the actual design you are but >> maybe the >> > >>>> >> following >> > >>>> >> >> > might be helpful in some way. What I had in mind was sort >> of plugin >> > >>>> >> that would >> > >>>> >> >> > expose the info of bound entities that are interesting in >> terms of >> > >>>> >> BGP >> > >>>> >> >> > (it could be configurable), so mainly FIPS, LBs, GW router >> IPs. For >> > >>>> >> the import >> > >>>> >> >> > part (which would be applicable only for GW LR) we would >> create >> > >>>> >> entries in SB >> > >>>> >> >> > DB similarly as we do currently with Multicast_Group >> > >>>> >> >> > (BGP_Routes? EVPN_Tunnels?). Northd could consume those >> values and >> > >>>> >> configure >> > >>>> >> >> > logical flows and encaps as needed. >> > >>>> >> >> >> > >>>> >> >> While the EVPN part is not a priority for us at this point >> in time, we >> > >>>> >> >> will of course be interested in making sure the work we put >> into stage >> > >>>> >> >> 1 (ovn-controller redistributing FIPS, LBs and GW router >> IPs), stage 2 >> > >>>> >> >> (ovn-controller learning routes) will be consumable for a >> stage 3. >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > Great, yeah my point during the discussion wasn't about >> > >>>> >> > making it available right away just to reiterate that it >> would be of >> > >>>> >> > interest for us and if needed we can of course help with the >> development >> > >>>> >> > process. >> > >>>> >> >> > >>>> >> Cool stuff, let's do it! >> > >>>> >> >> > >>>> >> -- >> > >>>> >> Frode Nordahl >> > >>>> >> >> > >>>> >> >> >> > >>>> >> >> >> > >>>> >> >> -- >> > >>>> >> >> Frode Nordahl >> > >>>> >> >> >> > >>>> >> >> > Let me know if that makes sense. >> > >>>> >> >> > >> > >>>> >> >> > Thanks, >> > >>>> >> >> > Ales >> > >>>> >> >> > >> > >>>> >> >> > >> > >>>> >> >> > -- >> > >>>> >> >> > >> > >>>> >> >> > Ales Musil >> > >>>> >> >> > >> > >>>> >> >> > Senior Software Engineer - OVN Core >> > >>>> >> >> > >> > >>>> >> >> > Red Hat EMEA >> > >>>> >> >> > >> > >>>> >> >> > amu...@redhat.com >> > >>>> >> >> >> > >>>> >> > >> > >>>> >> > Thanks, >> > >>>> >> > Ales >> > >>>> >> > >> > >>>> >> > -- >> > >>>> >> > >> > >>>> >> > Ales Musil >> > >>>> >> > >> > >>>> >> > Senior Software Engineer - OVN Core >> > >>>> >> > >> > >>>> >> > Red Hat EMEA >> > >>>> >> > >> > >>>> >> > amu...@redhat.com >> > >>>> >> _______________________________________________ >> > >>>> >> dev mailing list >> > >>>> >> d...@openvswitch.org >> > >>>> >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev >> > >>>> >> >> > >>>> > >> > >>>> > >> > >>>> > *‘Esta mensagem é direcionada apenas para os endereços >> constantes no >> > >>>> > cabeçalho inicial. Se você não está listado nos endereços >> constantes no >> > >>>> > cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo >> dessa >> > >>>> > mensagem e cuja cópia, encaminhamento e/ou execução das ações >> citadas estão >> > >>>> > imediatamente anuladas e proibidas’.* >> > >>>> > >> > >>>> > *‘Apesar do Magazine Luiza tomar todas as precauções razoáveis >> para >> > >>>> > assegurar que nenhum vírus esteja presente nesse e-mail, a >> empresa não >> > >>>> > poderá aceitar a responsabilidade por quaisquer perdas ou danos >> causados >> > >>>> > por esse e-mail ou por seus anexos’.* >> > >>>> > >> > >>>> _______________________________________________ >> > >>>> dev mailing list >> > >>>> d...@openvswitch.org >> > >>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev >> > >>> >> > >>> >> > >>> >> > >>> ‘Esta mensagem é direcionada apenas para os endereços constantes no >> cabeçalho inicial. Se você não está listado nos endereços constantes no >> cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa >> mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão >> imediatamente anuladas e proibidas’. >> > >>> >> > >>> ‘Apesar do Magazine Luiza tomar todas as precauções razoáveis para >> assegurar que nenhum vírus esteja presente nesse e-mail, a empresa não >> poderá aceitar a responsabilidade por quaisquer perdas ou danos causados >> por esse e-mail ou por seus anexos’. >> > >> >> > >> >> > > >> > > >> > > ‘Esta mensagem é direcionada apenas para os endereços constantes no >> cabeçalho inicial. Se você não está listado nos endereços constantes no >> cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa >> mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão >> imediatamente anuladas e proibidas’. >> > > >> > > ‘Apesar do Magazine Luiza tomar todas as precauções razoáveis para >> assegurar que nenhum vírus esteja presente nesse e-mail, a empresa não >> poderá aceitar a responsabilidade por quaisquer perdas ou danos causados >> por esse e-mail ou por seus anexos’. >> > _______________________________________________ >> > dev mailing list >> > d...@openvswitch.org >> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev >> > -- _‘Esta mensagem é direcionada apenas para os endereços constantes no cabeçalho inicial. Se você não está listado nos endereços constantes no cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão imediatamente anuladas e proibidas’._ * **‘Apesar do Magazine Luiza tomar todas as precauções razoáveis para assegurar que nenhum vírus esteja presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por quaisquer perdas ou danos causados por esse e-mail ou por seus anexos’.* _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev