That was going to be one of my queries, but forgot to ask. Do we allow that 
currently? Probably shouldn't, as you say, for symmetry.

Chris.

> -----Original Message-----
> From: Andrew Yourtchenko [mailto:ayour...@gmail.com]
> Sent: Friday, June 16, 2017 17:51
> To: Luke, Chris <chris_l...@cable.comcast.com>
> Cc: Marco Varlese <marco.varl...@suse.com>; vpp-dev@lists.fd.io
> Subject: Re: [vpp-dev] Bind / Unbind of ACL
> 
> Ok! So what do you think if then we were to also disallow applying the ACL
> that doesn't exist yet ?
> 
> It feels like it would be a matching symmetric behavior "from the other side".
> ?
> 
> --a
> 
> On 16 Jun 2017, at 15:38, Luke, Chris <chris_l...@comcast.com> wrote:
> 
> >> From: Marco Varlese [mailto:marco.varl...@suse.com]
> >> Sent: Friday, June 16, 2017 9:23
> >>> On Fri, 2017-06-16 at 15:12 +0200, Andrew 👽  Yourtchenko wrote:
> >>>> On 6/16/17, Marco Varlese <marco.varl...@suse.com> wrote:
> >>>>
> >>>>> On Thu, 2017-06-15 at 14:22 +0200, Andrew 👽  Yourtchenko wrote:
> >>>>>
> >>>>> After a bit more thinking - there is a way that should take care of 
> >>>>> both:
> >>>>>
> >>>>> 1) What Chris wrote: have consistent behaviour with non-existent
> >>>>> ACL as if the ACL matching fell off the end of the ACL: if an
> >>>>> empty ACL is referenced, treat it as if it had entries but none of
> >>>>> them had matched. Then we still hit the "default deny" if none of
> >>>>> the applied ACLs match, and drop the packets - so it will be logical.
> >>>>>
> >>>>> 2) What Marco wrote: when deleting an already referenced ACL,
> >>>>> unapply it from all the places where it is applied.
> >>>>>
> >>>>> It's a change in the behaviour in that the current behaviour is to
> >>>>> have the empty ACL act as if it was "deny any any", and block the
> >>>>> matching even if there is another ACL after it - but on the other
> >>>>> hand this would take both viewpoints in mind...
> >>>> I think this approach would still leave the system in an inconsistent
> state:
> >>>> an
> >>>> interface is basically assigned an ACL which does not exist in the
> system.
> >>>> Also, the risk I see is if I later on create an ACL with the
> >>>> previously used index then an interface would see that ACL being
> >>>> applied automatically (since it's referenced). However, I may not
> >>>> want to have that ACL assigned to that particular interface.
> >>>> Correct?
> >>>>
> >>>> I think that the "deletion" of an ACL could see one of the two
> >>>> behaviours
> >>>> below:
> >>>> 1) the deletion of an ACL should be DENIED if that ACL is assigned
> >>>> to any interface (probably the easier and safer approach);
> >>>> 2) the deletion of an ACL should see a CASCADING effect onto the
> >>>> interfaces which would be "cleaned up" of any references to that
> >>>> ACL;
> >>>>
> >>>
> >>> Right, the (2) was what I was trying to suggest to do...
> >>>
> >>>>
> >>>> I think (1) is a very good way of solving the initial problem since
> >>>> it works nicely if you manage VPP directly (e.g. via command-line)
> >>>> and if you use a controller. In the latter, the controller can
> >>>> react on the "error" returned by the acl_del API because that ACL
> >>>> is assigned somewhere.
> >>>>
> >>>
> >>> ...but the (1) is another good option to me.
> >>>
> >>> So it seems we are converging on (1) ?
> >> I would go with (1)...
> >
> > I feel I have a slight preference for this (1) also; In general I don't 
> > like the
> implicit actions such as in (2).
> >
> > Chris
> >
> >>>
> >>> --a
> >>>
> >>>
> >>>
> >>>>
> >>>>
> >>>> Cheers,
> >>>> Marco
> >>>>
> >>>>>
> >>>>>
> >>>>> What do you think ?
> >>>>>
> >>>>> --a
> >>>>>
> >>>>>> On 6/9/17, Andrew 👽  Yourtchenko <ayour...@gmail.com> wrote:
> >>>>>>
> >>>>>>
> >>>>>> Assuming the only change is to effectively have
> >>>>>> "unbind_acl_from_everywhere; delete_acl" instead of "delete_acl",
> >>>>>> maybe it would be best to tackle that post-17.07 with a separate
> >>>>>> API message acl_del_and_unbind or similar ?
> >>>>>>
> >>>>>> I feel a beet wary of adding more hidden state (even though the
> >>>>>> reflected sessions table does provide already plenty of it :)
> >>>>>>
> >>>>>> --a
> >>>>>>
> >>>>>>> On 6/9/17, Luke, Chris <chris_l...@comcast.com> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>> Would it make sense to have a flag on the interface (or
> >>>>>>> globally), set when applying the ACL, that indicates the desired
> >>>>>>> behavior when the ACL is empty or non-existent? At the moment
> to
> >>>>>>> me it seems logical that this is the same behavior as when
> >>>>>>> matching falls off the end of the ACL.
> >>>>>>>
> >>>>>>> Chris.
> >>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: vpp-dev-boun...@lists.fd.io
> >>>>>>>> [mailto:vpp-dev-boun...@lists.fd.io]
> >>>>>>>> On
> >>>>>>>> Behalf Of Andrew ?? Yourtchenko
> >>>>>>>> Sent: Friday, June 9, 2017 7:53
> >>>>>>>> To: Marco Varlese <marco.varl...@suse.com>
> >>>>>>>> Cc: vpp-dev@lists.fd.io
> >>>>>>>> Subject: Re: [vpp-dev] Bind / Unbind of ACL
> >>>>>>>>
> >>>>>>>> Hi Marco,
> >>>>>>>>
> >>>>>>>> Yes, this works as expected, assuming after deletion *all* the
> >>>>>>>> traffic is denied, rather than just the SSH traffic.
> >>>>>>>>
> >>>>>>>> If you apply to an interface the ACL# that does not exist, that
> >>>>>>>> is the same as if there was an ACL with just the "deny all"
> >>>>>>>> semantics, to avoid the perception that a given policy is
> >>>>>>>> enforced when it isn't - so I erred on the side of caution.
> >>>>>>>>
> >>>>>>>> The way to remove the ACL: you would ensure the ACL is not
> >>>>>>>> applied to the
> >>>>>>>> interface(s) first, then remove the ACL (or replace it with a
> >>>>>>>> different policy in- place).
> >>>>>>>>
> >>>>>>>> Alternatively, you can just replace the existing ACL in-place
> >>>>>>>> with "permit any"
> >>>>>>>> for IPv4 and IPv6 - this way you explicitly state that there is
> >>>>>>>> a policy to permit all the traffic.
> >>>>>>>>
> >>>>>>>> I've been bitten myself and seen several times in my career
> >>>>>>>> when an applied but non-existent ACL caused problems later on,
> >>>>>>>> in the worst possible moment. The current behaviour IMHO
> makes
> >>>>>>>> the config discrepancy clear - what do you think ?
> >>>>>>>>
> >>>>>>>> --a
> >>>>>>>>
> >>>>>>>>> On 6/9/17, Marco Varlese <marco.varl...@suse.com> wrote:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> I am trying the ACL functionality and I found a "strange"
> >>>>>>>>> behaviour.
> >>>>>>>>>
> >>>>>>>>> The steps I follow to use an ACL are:
> >>>>>>>>> * I create an ACL to deny SSH traffic between VMs (via the
> >>>>>>>> 'acl_add_replace'
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> function)
> >>>>>>>>> * Set that ACL to the interfaces involved (via the
> >>>>>>>>> 'acl_interface_set_acl_list'
> >>>>>>>>> function)
> >>>>>>>>>
> >>>>>>>>> After performing the above steps the traffic was correctly
> >>>>>>>>> being blocked.
> >>>>>>>>>
> >>>>>>>>> However, when I decided to enable the SSH traffic again, I
> >>>>>>>>> simply deleted the ACL (via the 'acl_del' function) with the
> >>>>>>>>> consequence though that the traffic was still being denied.
> >>>>>>>>>
> >>>>>>>>> Is this behaviour correct?
> >>>>>>>>> If so what would be the right way to unset hence disable a
> >>>>>>>>> given ACL from an interface (or multiple)?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Marco
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> vpp-dev mailing list
> >>>>>>>>> vpp-dev@lists.fd.io
> >>>>>>>>> https://lists.fd.io/mailman/listinfo/vpp-dev
> >>>>>>>> _______________________________________________
> >>>>>>>> vpp-dev mailing list
> >>>>>>>> vpp-dev@lists.fd.io
> >>>>>>>> https://lists.fd.io/mailman/listinfo/vpp-dev
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >

_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to