On Thu, Jun 15, 2023 at 11:11 AM Eelco Chaudron <echau...@redhat.com> wrote:
>
>
>
> On 15 Jun 2023, at 17:07, Vladislav Odintsov wrote:
>
> >> On 15 Jun 2023, at 16:16, Eelco Chaudron via discuss 
> >> <ovs-discuss@openvswitch.org> wrote:
> >>
> >>
> >>
> >> On 15 Jun 2023, at 14:36, Vladislav Odintsov via discuss wrote:
> >>
> >>> Hi all,
> >>>
> >>> I’ve faced condition in flow lookup where OVS crashes with segmentation 
> >>> violation because of insufficient stack limit size for ovs-vswitchd 
> >>> daemon.
> >>> Below is the reproducer:
> >>>
> >>> # --->
> >>> # Ensure there is a default LimitSTACK in ovs-vswitchd.service file with 
> >>> which OVS is run (should be 2M):
> >>> grep LimitSTACK /usr/lib/systemd/system/ovs-vswitchd.service
> >>>
> >>> # create 2 LRs and connect them via ls
> >>> ovn-nbctl lr-add lr1
> >>> ovn-nbctl lr-add lr2
> >>> ovn-nbctl lrp-add lr1 lrp1 00:00:00:00:00:01 10.0.0.1/24
> >>> ovn-nbctl lrp-add lr2 lrp2 00:00:00:00:00:02 10.0.0.2/24
> >>> ovn-nbctl ls-add ls
> >>> ovn-nbctl lsp-add ls ls-lrp1 -- lsp-set-type ls-lrp1 router -- 
> >>> lsp-set-addresses ls-lrp1 router -- lsp-set-options ls-lrp1 
> >>> router-port=lrp1
> >>> ovn-nbctl lsp-add ls ls-lrp2 -- lsp-set-type ls-lrp2 router -- 
> >>> lsp-set-addresses ls-lrp2 router -- lsp-set-options ls-lrp2 
> >>> router-port=lrp2
> >>>
> >>> # create route to same cidr looping routing
> >>> ovn-nbctl lr-route-add lr1 1.1.1.1/32 10.0.0.2
> >>> ovn-nbctl lr-route-add lr2 1.1.1.1/32 10.0.0.1
> >>>
> >>> # create vif lport and configure it
> >>> ovn-nbctl lsp-add ls lp1 -- lsp-set-addresses lp1 00:00:00:00:00:f1
> >>> ovs-vsctl add-port br-int lp1 -- set int lp1 type=internal 
> >>> external_ids:iface-id=lp1
> >>> ip li set lp1 addr 00:00:00:00:00:f1
> >>> ip a add 10.0.0.200/24 dev lp1
> >>> ip li set lp1 up
> >>> ip r add 1.1.1.1/32 via 10.0.0.1
> >>> ping 1.1.1.1 -c1
> >>>
> >>> # <---
> >>>
> >>> This problem was first described in [1] and continued in [2].
> >>> I’m wonder whether [2] was discussed somewhere in another place or had no 
> >>> resolution.
> >>>
> >>> OVS crash reproduces on different versions: 2.13, 2.17, 3.1.
> >>> Default stack limit shipped with OVS looks not enough to reach 'Recursion 
> >>> too deep'. In my tests for this reproducer it is needed at least 2293K to 
> >>> work properly.
> >>>
> >>> I understand, that such configuration should be validated and avoided 
> >>> from the CMS side, but I think that there should be no possibility so 
> >>> easily bring system to crashed state.
> >>>
> >>> Should the default OVS StackLimit in systemd.unit be increased?
> >>> Or, maybe, OVN should document the need to increase OVS stack limit 
> >>> manually by users?
> >>> Or, should OVN supply systemd drop-in unit to override default OVS 
> >>> StackLimit?
> >>>
> >>> 1: https://bugzilla.redhat.com/show_bug.cgi?id=1821185#c3
> >>> 2: https://mail.openvswitch.org/pipermail/ovs-dev/2020-April/369776.html
> >>
> >> There is a recent patch series sent out by Mike, you might want to give 
> >> that a try.
> >>
> >> https://patchwork.ozlabs.org/project/openvswitch/list/?submitter=82705
> >>
> >>
> >> Would be interesting to see if that solves the crash part.
> >
> > Hi Eelco,
> >
> > thank you for pointing out to this patch.
> >
> > I’ve tried it and it seems working with default ovs-vswitchd stack limit 
> > (2M)! That’s cool.
> > Also, I’ve tried to find new watermark for the described scenario (to find 
> > a new stack limit value, where ovs-vswitchd will crash with segv).
> > So, its value decreased from 2293KB to 1633K.
>
> Thanks for testing, this is good news :)
>
> > Thanks @Mike for your improvement!
> >
> > Can this patch be considered for backporting after merge to upstream as it 
> > fixes this issue?
>
> Guess this is up to the maintainers to decide, maybe Mike cant tell how 
> impactful the change is.
> I still need to review the latest revision, so can’t comment on this from the 
> top of my head.

I just tested applying it back to 2.15. It applied relatively cleanly
with only minor changes required. So I think a backport is reasonable,
but as Eelco said this is up to the maintainers.


-M

>
> //Eelco
>

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to