[RFE] Add a Common Flow Classifier in Neutron
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
New
|
Wishlist
|
Unassigned |
Bug Description
[Existing problem]
Currently, multiple Stadium features inside Neutron need flow classifier functionality. In the future there could be more Neutron features that will need this functionality. Instead of each feature creating its own FC API and resource, we should have one common FC API and resource inside Neutron that can be used by all the networking features in OpenStack (inside or outside of Neutron stadium). This will avoid a lot of redundancy and maintenance issues.
[Proposal]
Currently the features that need FC are: Tap as a service, SFC, QoS, FW, BGP/VPN, GBP. There has been a meeting discussion in the Austin Summit (https:/
According to the consensus of the meeting, a new RFE for flow classifier should be submitted in neutron-core and we will develop FC as a RFE over neutron-core.
A general guideline on the FC design is that it should provide a superset of FC rules used by existing features and the FC rules should be easy to extend for new features in the future.
summary: |
- Add a Common Flow Classifier in Neutron + [RFE] Add a Common Flow Classifier in Neutron |
Changed in neutron: | |
importance: | Undecided → Wishlist |
Thanks Cathy for filing this up.
As agreed at the meeting, let's start the details discussion here.
So, here's my formal proposal to the model of the Common Classifier (CC):
The Common Classifier model should be both explicit and extensible.
This figure shows the model proposed: [1].
Separating the traffic classification in individual types will allow future types to be added and agreed in the future, while keeping the remaining ones intact. Existing types can of course be updated and properly versioned. Looking at the neutron-classifier project, I already see hints of an architecture like this one, as can be seen in [2], so maybe there's already some interest in this approach.
So, how to define this model and how can it be used?
- The Common Classifier allows Classification Rules to be defined and used by an OpenStack service.
- 1 Classification Rule is of a single type, e.g. either Ethernet, IP, or HTTP, and contains a definition that depends on the type.
- The definition contains the fields that the type supports.
- Not all supported fields need to be defined - only the ones required by the consuming service.
- The consuming service should contain any additional logic, such as:
- AND/ORing many Classification Rules (CRs), if needed;
- Setting directionality constraints on the CRs, if needed;
- Scoping the CRs to local resources (e.g. Neutron ports), if needed;
- Other logic or local constraints.
[1] http:// i.imgur. com/4reoOnB. png /github. com/openstack/ neutron- classifier/ blob/10b2eb3127 f4809e52e3cf162 7c34228bca80101 /neutron_ classifier/ common/ constants. py#L17
[2] https:/