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) ?

--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