On 5/22/23 17:39, Ihar Hrachyshka wrote: > On Mon, May 22, 2023 at 9:55 AM Dumitru Ceara <dce...@redhat.com> wrote: >> >> On 5/22/23 15:42, Ihar Hrachyshka wrote: >>> On Mon, May 22, 2023 at 7:55 AM Dumitru Ceara <dce...@redhat.com> wrote: >>>> >>>> On 5/17/23 18:46, Ihar Hrachyshka wrote: >>>>> Thank you Dumitru! See below. >>>>> >>>>> On Tue, May 16, 2023 at 9:41 AM Dumitru Ceara <dce...@redhat.com> wrote: >>>>>> I'm not necessarily rejecting this change. I just wanted to bring up an >>>>>> alternative approach (I'm not sure if it's possible to implement it >>>>>> though): >>>>>> >>>>>> The CMS (e.g., Neutron) probably knows before hand the reduced MTU value >>>>>> it should impose on the localnet port. That means it might be possible >>>>>> to just implement all this through logical flows that use >>>>>> 'check_pkt_larger()'. >>>>>> >>>>> >>>>> I think I mentioned this alternative in my cover letter for the >>>>> series. (At least one of the variations.) >>>>> >>>>> I don't understand the specifics of what you are describing here >>>>> though. Yes, CMS may do calculations for the "desired path MTU". But >>>>> what's the mechanism for CMS to pass this information down to the OVN >>>>> controller? ACL? I don't think the space of possible actions that >>>>> would allow CMS itself to define the behavior is available to CMS. >>>>> >>>>> Perhaps you mean (as I think we discussed before in private) the >>>>> approach where OVN northd creates Logical_Flow objects that would >>>>> implement the behavior. If so, yes that could be possible. But note >>>>> that northd doesn't know the desired path MTU (because it's not CMS >>>>> and OVN northbound database API doesn't support MTU primitive for >>>>> ports.) So the best we could do in the alternative way is implement >>>>> half of the solution via Logical_Flow (the one that sends ICMP replies >>>>> for "too-big" frames), leaving the other half (tagging the "too-big" >>>>> frames based on interface MTU for processing by the Logical_Flows) to >>>>> OVN controller. I think I listed this variation of the approach in my >>>>> cover letter, but please let me know if it's not sufficient. >>>>> >>>>> (The split could be avoided if OVN adds a MTU attribute to its ports. >>>>> But I of course am not trying to tackle this in this series, for >>>>> obvious reasons. But MTU for ports is - in my mind - a worthy feature >>>>> to have in OVN, if you ask me.) >>>> >>>> I was referring to this last part: adding MTU for ports and ovn-northd >>>> translating those to logical flows that use check_pkt_larger() and set >>>> REGBIT_PKT_LARGER. I was also hoping to see logical flows that generate >>>> the ICMP error packets. But there's indeed no obvious way of doing that >>>> because we need to act only on traffic that's destined to remote >>>> hypervisors and that's not really an ovn-northd concept but more of an >>>> ovn-controller one. >>>> >>>> If we go for your current approach and later add MTU for OVN ports, do >>>> we need to be careful now in order to avoid complicated upgrades later? >>>> >>> >>> I'm trying to think what complications could arise. Isn't it just >>> generating effectively the same flows, now via Logical_Flow path? The >>> flows act on local frames generated by regular VIF ports, so it >>> shouldn't affect the rest of cluster that e.g. some of them are >>> generated by Logical_Flow path and some through the proposed solution. >>> Or am I talking about something else? >>> >> >> Assuming your current approach is accepted it means ovn-controller will >> automatically compute min MTU to use for multi-chassis ports. But if we >> add an explicit OVN port MTU configuration what do we do with the >> automatic computation? >> >> Do we leave it in place or do we remove it? > > We'll make OVN LSP `mtu` override interface-derived value. (If > ovn-controller sees `mtu` set for LSP, it seizes its operation; > otherwise it sets flows itself.) > >> >> If we remove it it means we'll break upgrades as northd is upgraded last >> and it will only set the OVN port binding MTU after it gets upgraded. >> > > We'll have both for one LTS release and sunset the interface-derived > value, if needed? >
Sure, that would work. >> If we leave it in place I'm not sure what the benefit of the explicit >> MTU is. I might be wrong though. > > There are benefits of OVN LSP API `mtu` regardless of Path MTU > Discovery series. For one, OVN could enforce its MTU on VIF interfaces > (set it in `mtu_request`). This would also potentially allow a > chassisA to inject Path MTU Discovery flows when `mtu` is changed on > chassisB independently of ports hosted on chassisA. Right now > ovn-controller is aware of MTUs for the ports it owns, but not for the > ports on other chassis. > > I wouldn't look at `mtu` as OVN API as just a means to simplify the > task for Path MTU, there are other benefits too. > Good points above. It makes sense to have the per port MTU as OVN API in general indeed. Thanks for the details! _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev