On Wed, Nov 13, 2024 at 11:54 PM Qin, Qiaofeng via discuss
<ovs-discuss@openvswitch.org> wrote:
>
> As a follow up, we adopted the workaround method to create separate ACLs for 
> each port group. So far we have not experienced similar issues.
>
> And may I ask if there would be any chance to support sharing an ACL among 
> multiple port groups in the future?

We do support it, but as you reported there is a bug which needs to be fixed.

I'm not sure when it will be fixed.  It would be great if you want to
attempt a fix for it and submit the patch for review.

Thanks
Numan

>
>
> Thanks,
> Qiaofeng
> ________________________________
> From: Numan Siddique <num...@ovn.org>
> Sent: Wednesday, October 30, 2024 4:24 AM
> To: Qin, Qiaofeng <qiaofeng....@intel.com>
> Cc: b...@openvswitch.org <b...@openvswitch.org>
> Subject: Re: [ovs-discuss] [OVN] ACLs not translated to SB when added to 
> multiple port groups
>
> On Wed, Oct 30, 2024 at 2:31 AM Qin, Qiaofeng via discuss
> <ovs-discuss@openvswitch.org> wrote:
> >
> > Hi Numan,
> >
> > Thank you for the reply. Yes, The given command (ovn-appctl -t ovn-northd 
> > inc-engine/recompute) can fix the issue without restarting. Besides, we 
> > also found that creating a logical switch (ovn-nbctl ls-add test3) can make 
> > the missing ACL appear in SB.
>
> One work around before this issue is fixed is to create a separate
> ACLs for each port group rather than sharing across pgs.
>
> Thanks
> Numan
>
> >
> >
> > Thanks,
> > Qiaofeng
> > ________________________________
> > From: Numan Siddique <num...@ovn.org>
> > Sent: Tuesday, October 29, 2024 7:41 PM
> > To: Qin, Qiaofeng <qiaofeng....@intel.com>
> > Cc: b...@openvswitch.org <b...@openvswitch.org>
> > Subject: Re: [ovs-discuss] [OVN] ACLs not translated to SB when added to 
> > multiple port groups
> >
> > On Tue, Oct 29, 2024 at 8:47 PM Qin, Qiaofeng via discuss
> > <ovs-discuss@openvswitch.org> wrote:
> > >
> > > Hi,
> > >
> > > Recently, we encountered an issue when assigning some ACLs to two port 
> > > groups. When configuring the first ACL, everything looks correct. 
> > > However, after creating the second ACL and assigning it to the second 
> > > port group, the ACL does not appear in the Logical_Flow table, until we 
> > > continue to perform some other operations in the northbound or restart 
> > > ovn-northd. I wonder if this is a bug or a known limitation.
> > >
> > > We installed ovn-central 24.09.0 through apt in a Debian Sid host. The 
> > > following logs are the steps to reproduce the issue:
> > >
> > >
> > > # Setup: 2 switches, 2 ports and 2 port groups
> > > root@38469380e572:/# ovn-nbctl ls-add test1
> > > root@38469380e572:/# ovn-nbctl ls-add test2
> > > root@38469380e572:/# ovn-nbctl lsp-add test1 p1
> > > root@38469380e572:/# ovn-nbctl lsp-add test2 p2
> > > root@38469380e572:/# ovn-nbctl pg-add g1
> > > root@38469380e572:/# ovn-nbctl pg-add g2 p1 p2
> > >
> > > # Assign acl1 first to g1, then to g2
> > > root@334a6440dc45:/# ovn-nbctl --name=rule1 acl-add g1 from-lport 100 
> > > "foo1" drop
> > > root@334a6440dc45:/# ovn-nbctl list acl rule1 | grep uuid
> > > _uuid               : fa7caa68-d4fa-4e69-8274-c5e5b57490aa
> > > root@334a6440dc45:/# ovn-nbctl add port_group g2 acls 
> > > fa7caa68-d4fa-4e69-8274-c5e5b57490aa
> > >
> > > # Northbound results: Correct
> > > root@334a6440dc45:/# ovn-nbctl acl-list g1
> > > from-lport   100 (foo1) drop log(name=rule1)
> > > root@334a6440dc45:/# ovn-nbctl acl-list g2
> > > from-lport   100 (foo1) drop log(name=rule1)
> > >
> > > # Southbound results: Correct
> > > root@334a6440dc45:/# ovn-sbctl dump-flows | grep foo
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >
> > > # Assign acl2 first to g1, then to g2
> > > root@334a6440dc45:/# ovn-nbctl --name=rule2 acl-add g1 from-lport 100 
> > > "foo2" drop
> > > root@334a6440dc45:/# ovn-nbctl list acl rule2 | grep uuid
> > > _uuid               : 6b6080e5-1ecf-4d1d-bb86-8eb487c622c0
> > > root@334a6440dc45:/# ovn-nbctl add port_group g2 acls 
> > > 6b6080e5-1ecf-4d1d-bb86-8eb487c622c0
> > >
> > > # Northbound results: Correct
> > > root@334a6440dc45:/# ovn-nbctl acl-list g1
> > > from-lport   100 (foo1) drop log(name=rule1)
> > > from-lport   100 (foo2) drop log(name=rule2)
> > > root@334a6440dc45:/# ovn-nbctl acl-list g2
> > > from-lport   100 (foo1) drop log(name=rule1)
> > > from-lport   100 (foo2) drop log(name=rule2)
> > >
> > > # Southbound results: Incorrect - Second ACL does not show
> > > root@334a6440dc45:/# ovn-sbctl dump-flows | grep foo
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >
> > > # Remove acl1 from g2
> > > root@334a6440dc45:/# ovn-nbctl acl-del g2 from-lport 100 "foo1"
> > >
> > > # Northbound results: Correct
> > > root@334a6440dc45:/# ovn-nbctl acl-list g1
> > > from-lport   100 (foo1) drop log(name=rule1)
> > > from-lport   100 (foo2) drop log(name=rule2)
> > > root@334a6440dc45:/# ovn-nbctl acl-list g2
> > > from-lport   100 (foo2) drop log(name=rule2)
> > >
> > > # Southbound results: Incorrect - first ACL not removed
> > > root@334a6440dc45:/# ovn-sbctl dump-flows | grep foo
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo1)), 
> > > action=(log(name="rule1", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >
> > > # Restart OVN can fix the inconsistency: acl1 removed, acl2 appears
> > > root@334a6440dc45:/# ovn-ctl restart_northd
> > > root@334a6440dc45:/# ovn-sbctl dump-flows | grep foo
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo2)), 
> > > action=(log(name="rule2", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >   table=8 (ls_in_acl_eval     ), priority=1100 , match=((foo2)), 
> > > action=(log(name="rule2", severity=info, verdict=drop); reg8[17] = 1; 
> > > next;)
> > >
> > >
> > > When we assigned each ACL to only one port group, we did not observe the 
> > > same issue. When we assigned ACLs to (either one or more) logical 
> > > switches instead of port groups, this issue also did not happen.
> >
> > Thanks for reporting the issue.  Looks like a bug to me in ovn-northd.
> >
> > Can you please run the below command instead of restarting and see if
> > it fixes the issue ?  If so, it seems like an incremental processing
> > bug in ovn-northd.
> >
> > ovn-appctl -t ovn-northd inc-engine/recompute
> >
> > Thanks
> > Numan
> >
> >
> > >
> > > Thanks,
> > > Qiaofeng
> > > _______________________________________________
> > > discuss mailing list
> > > disc...@openvswitch.org
> > > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
> > _______________________________________________
> > discuss mailing list
> > disc...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
> _______________________________________________
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to