<div dir="ltr"><p dir="ltr"><br>
On Dec 17, 2013 3:22 PM, "Tim Hinrichs" <<a href="mailto:thinrichs@vmware.com" target="_blank">thinrichs@vmware.com</a>> wrote:<br>
><br>
><br>
><br>
> ----- Original Message -----<br>
> | From: "Prasad Vellanki" <<a href="mailto:prasad.vellanki@oneconvergence.com" target="_blank">prasad.vellanki@oneconvergence.com</a>><br>
> | To: "OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
> | Sent: Monday, December 16, 2013 2:11:37 PM<br>
> | Subject: Re: [openstack-dev] [neutron][policy] Policy-Rules discussions based on Dec.12 network policy meeting<br>
> |<br>
> |<br>
> |<br>
> | Hi<br>
> | Please see inline ....<br>
> |<br>
> |<br>
> |<br>
> | On Sun, Dec 15, 2013 at 8:49 AM, Stephen Wong < <a href="mailto:s3wong@midokura.com" target="_blank">s3wong@midokura.com</a> ><br>
> | wrote:<br>
> |<br>
> |<br>
> | Hi,<br>
> |<br>
> | During Thursday's group-policy meeting[1], there are several<br>
> | policy-rules related issues which we agreed should be posted on the<br>
> | mailing list to gather community comments / consensus. They are:<br>
> |<br>
> | (1) Conflict resolution between policy-rules<br>
> | --- a priority field was added to the policy-rules attributes<br>
> | list[2]. Is this enough to resolve conflict across policy-rules (or<br>
> | even across policies)? Please state cases where a cross policy-rules<br>
> | conflict can occur.<br>
> | --- conflict resolution was a major discussion point during<br>
> | Thursday's meeting - and there was even suggestion on setting<br>
> | priority<br>
> | on endpoint groups; but I would like to have this email thread<br>
> | focused<br>
> | on conflict resolution across policy-rules in a single policy first.<br>
> |<br>
><br>
> There was interest in having a single policy that could include different actions so that a single flow might be both redirected and QOSed simultaneously. For me this rules out a total ordering on the policy statements. Here's a proposal that relies on the fact that we're fixing the meaning of actions within the language: the language specifies a partial order on the *actions*. For example, DENY takes precedence over ALLOW, so if we both ALLOW and DENY, then the conflict resolution dictates DENY wins. But {DENY, ALLOW} and QOS and REDIRECT are all unrelated, so there is no problem with a policy that both DENYs and QOSes and REDIRECTs.<br>
><br>
> | (2) Default policy-rule actions<br>
> | --- there seems to be consensus from the community that we need to<br>
> | establish some basic set of policy-rule actions upon which all<br>
> | plugins/drivers would have to support<br>
> | --- just to get the discussion going, I am proposing:<br>
> |<br>
> |<br>
> |<br>
> | Or should this be a query the plugin for supported actions and thus<br>
> | the user knows what functionality the plugin can support. Hence<br>
> | there is no default supported list.<br>
> |<br>
><br>
> I think the important part is that the language defines what the actions mean. Whether each plugin supports them all is a different issue. If the language doesn't define the meaning of the actions, there's no way for anyone to use the language. We might be able to write down policies, but we don't know what those policies actually mean because 2 plugins might assign very different meanings to the same action name.<br>
></p><p dir="ltr">I agree that it is very important to define what actions mean. </p><p dir="ltr"><br></p><p dir="ltr">As for supported action, it is probably best to simplify this for POC by restricting it to a small set of actions. One can always add this call. My point was UI becomes cleaner and clear for the user if you have the call.</p>
<p dir="ltr"><br>
> |<br>
> |<br>
> | a.) action_type: 'security' action: 'allow' | 'drop'<br>
> | b.) action_type: 'qos' action: {'qos_class': {'critical' |<br>
> | 'low-priority' | 'high-priority' |<br>
> |<br>
> | 'low-immediate' | 'high-immediate' |<br>
> |<br>
> | 'expedite-forwarding'}<br>
> | (a subset of DSCP values - hopefully in language that can<br>
> | be well understood by those performing application deployments)<br>
> | c.) action_type:'redirect' action: {UUID, [UUID]...}<br>
> | (a list of Neutron objects to redirect to, and the list<br>
> | should contain at least one element)<br>
> |<br>
> |<br>
> |<br>
> |<br>
> | I am not sure making the UUIDs a list of neutron objects or endpoints<br>
> | will work well. It seems that it should more higher level such as<br>
> | list of services that form a chain. Lets say one forms a chain of<br>
> | services, firewall, IPS, LB. It would be tough to expect user to<br>
> | derive the neutron ports create a chain of them. It could be a VM<br>
> | UUID.<br>
> |<br>
> |<br>
><br>
> Perhaps we could use our usual group mechanism here and say that the redirect action operates on 3 groups: source, destination, and the group to which we want to redirect.</p><p dir="ltr">
><br>
> |<br>
> | Please discuss. In the document, there is also 'rate-limit' and<br>
> | 'policing' for 'qos' type, but those can be optional instead of<br>
> | required for now<br>
> |<br>
><br>
> It would be nice if we had some rationale for deciding which actions to include and which to leave out. Maybe if we found a standard/spec/collection-of-use-cases and included exactly the same actions. Or if we go with the action-based conflict resolution scheme from (1), we might want to think about whether we have at least complementary actions (e.g. ALLOW and DENY, WAYPOINT -- route traffic through a group of middleboxes-- and FORBID -- prohibit traffic from passing through middleboxes).<br>
><br>
> | (3) Prasad asked for clarification on 'redirect' action, I propose to<br>
> | add the following text to document regarding 'redirect' action:<br>
> |<br>
> | "'redirect' action is used to mirror traffic to other destinations<br>
> | - destination can be another endpoint group, a service chain, a port,<br>
> | or a network. Note that 'redirect' action type can be used with other<br>
> | forwarding related action type such as 'security'; therefore, it is<br>
> | entirely possible that one can specify {'security':'deny'} and still<br>
> | do {'redirect':{'uuid-1', 'uuid-2'...}. Note that the destination<br>
> | specified on the list CANNOT be the endpoint-group who provides this<br>
> | policy. Also, in case of destination being another endpoint-group,<br>
> | the<br>
> | policy of this new destination endpoint-group will still be applied"<br>
><br>
> Are you saying we are replicating traffic and routing one version to a different destination, or are we simply changing the destination of the original traffic? What if we wanted to route the traffic through an intermediary but arrive at the same destination? Would waypointing be a separate action?<br>
><br>
> |<br>
> |<br>
> |<br>
> |<br>
> | As I said above one needs clarity on what these UUIDs mean. Also do<br>
> | we need a call to manage the ordered list around adding,<br>
> | deleting.listing the elements in the list.<br>
> | One other issue that comes up whether the classifier holds up along<br>
> | the chain. The classifier that goes into the chain might not be the<br>
> | same on the reverse path.<br>
><br>
> I think those UUIDs need to be neutron objects; otherwise, I don't see how Neutron could hope to execute the action.<br>
></p><p dir="ltr">I agree that UUID need to eb Neutron object or something well defined that such as a VM which neutron knows. But I think it is best to use service or service chain object defined by services extension api for this. <br>
> |<br>
> |<br>
> |<br>
> | Please discuss.<br>
> |<br>
> | (4) We didn't get a chance to discuss this during last Thursday's<br>
> | meeting, but there has been discussion on the document regarding<br>
> | adding IP address fields in the classifier of a policy-rule. Email<br>
> | may<br>
> | be a better forum to state the use cases. Please discuss here.<br>
> |<br>
> | I will gather all the feedback by Wednesday and update the<br>
> | document before this coming Thursday's meeting.<br>
> |<br>
> |<br>
> |<br>
> |<br>
> | We do need to support various use cases mentioned in the document<br>
> | where the classifier is required to match on various fields in the<br>
> | packet header such as IP address, MAC address, ports etc. The use<br>
> | cases are L2 firewall, Monitoring devices where the traffic being<br>
> | sent to them is not dependent on where they come from, thus can be<br>
> | derived from src and dst groups.<br>
> |<br>
><br>
> Agreed. Maybe we could take an existing spec like OpenFlow and use the same field-matches they do.<br>
><br>
> Tim<br>
><br>
> |<br>
> | Thanks,<br>
> | - Stephen<br>
> |<br>
> | [1]<br>
> | <a href="http://eavesdrop.openstack.org/meetings/networking_policy/2013/networking_policy.2013-12-12-16.01.log.html" target="_blank">http://eavesdrop.openstack.org/meetings/networking_policy/2013/networking_policy.2013-12-12-16.01.log.html</a><br>
> | [2]<br>
> | <a href="https://docs.google.com/document/d/1ZbOFxAoibZbJmDWx1oOrOsDcov6Cuom5aaBIrupCD9E/edit#heading=h.x1h06xqhlo1n" target="_blank">https://docs.google.com/document/d/1ZbOFxAoibZbJmDWx1oOrOsDcov6Cuom5aaBIrupCD9E/edit#heading=h.x1h06xqhlo1n</a><br>
> |<br>
> | _______________________________________________<br>
> | OpenStack-dev mailing list<br>
> | <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
> | <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
> |<br>
> |<br>
> | _______________________________________________<br>
> | OpenStack-dev mailing list<br>
> | <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
> | <a href="https://urldefense.proofpoint.com/v1/url?u=http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=%2FZ35AkRhp2kCW4Q3MPeE%2BxY2bqaf%2FKm29ZfiqAKXxeo%3D%0A&m=y9iGJQb8zdUD0oeiHlpVItErJm1yP0njx4cmoK9NJB8%3D%0A&s=322effe4ff5879643768ac6938ca88e8437ce057ee9043f9edbb6bf7f59ac140" target="_blank">https://urldefense.proofpoint.com/v1/url?u=http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=%2FZ35AkRhp2kCW4Q3MPeE%2BxY2bqaf%2FKm29ZfiqAKXxeo%3D%0A&m=y9iGJQb8zdUD0oeiHlpVItErJm1yP0njx4cmoK9NJB8%3D%0A&s=322effe4ff5879643768ac6938ca88e8437ce057ee9043f9edbb6bf7f59ac140</a><br>
> |<br>
><br>
> _______________________________________________<br>
> OpenStack-dev mailing list<br>
> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</p>
</div>