In the current implementation, a local controller regards all lports as either local or remote, where a local lport is bound to some OVS port on integration bridge and a remote lport is bound to some OVS port on a remote machine.
This makes the controller blind to all the ports that are not bound to a specific tap device or tunnel, such as virtual ports like router gateways, router interfaces, FIP ports, and even compute ports on a remote machine that are not accessed through a tunnel. This forces any consumer of those ports to fetch them without the help of built-in syncing and change notification facilities.
During the writing of this spec, there’s an effort to remove ofport from logical ports, we can utilize this to change the notion of locality for logical ports [1].
We will split the ports into 3 categories:
The classification will be done by apps, each responsible for notifying changes of the locality of a specific port. The controller code will only emit created/ updated/deleted events, as it does for all other models.
- When OvsPort is created/deleted: emit local_created/deleted event for referenced lport.
- When FIP is associated/disassociated locally emit local_created/deleted for floating lport.
- Similarly, handle FIPs associated/disassociated remotely.
- When child segmentation is created/updated/deleted on a local trunk port, emit local_created/deleted events for sub-ports.
- Similarly, handle child port segmentation events for remote trunk ports.
- Emit events distributed_created/deleted for router interfaces and gateways
- (If needed) emit distributed_created/deleted on subnet create/update/delete events.
- Will notify of remote_created/deleted events once flows relevant to remote port access are installed.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.