This work is licensed under a Creative Commons Attribution 3.0 Unported License.
The classification is a separate processing which takes place throughout the port’s life-cycle.
When a packet enters the integration bridge, it is classified. Information, such as its network ID and source’s unique port id are stored in the OVS metadata, i.e. in metadata field and registers.
This information is then used by other Dragonflow applications throughout the pipeline.
Currently, the L2 application contains setting up classification related flows as well as setting up other port’s life-cycle pipeline flows.
Separation of the classification related flows to a new dedicated application, enables clear, straightforward, readable, and reusable code that deals only with classification.
Reusability can be further pushed forwards by extracting common methods to a common locations and libraries.
This change will allow applying classification at different points of packet processing in the future, for example to support NSH use cases.
Dragonflow is composed of multiple applications working in tandem to construct the pipeline.
The code that constructs the classification flows will be extracted to its own Dragonflow application.
The classification application will install flows on table 0, where the packet is received. It will set the following metadata information:
The classification application adds the relevant flows upon the creation of a new port, i.e. on the callback add_local_port.
An example flow, for a VM on ofport 3, with unique port ID 3, and network ID 1, is:
The classification will also install the common ingress dispatch flow
table=115, priority=100,reg7=0x3,output:3
The classification application removes the relevant flows upon the removal of a port, i.e. on the callback remove_local_port.
This change has the following benefits:
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.