[RFE] Enable other subprojects to extend l2pop fdb information
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Won't Fix
|
Wishlist
|
ChenjieXu |
Bug Description
Layer 2 population (l2pop) mechanism driver implements the ML2 driver to improve
open source plugins overlay implementations (VXLAN with Linux bridge and
GRE/VXLAN with OVS)[1]. L2pop avoid the broadcast in mac learning and ARP resolution by prepopulate the bridge forwarding table[2]. However, some projects connect neutron network with outside networks, for example, project bgpvpn-
This rfe proposes to add an extension registration mechanism to l2pop so that other subprojects can extend the information included in a full FDB messages before it is sent to the agent.
Problem Description
Some projects connect neutron network with outside networks. For example, project bgpvpn-networking aims at supporting inter-connection between L3VPNs and Neutron resources, i.e. Networks, Routers and Ports[4]. A typical use-case is the following: a tenant already having a BGP IP VPN (a set of external sites) setup outside the datacenter, and by using the project bgpvpn-networking they can establish the connectivity between VMs and these VPN sites.
Figure-1 illustrates an environment that an openstack deployed in the DataCenter and BGPVPN-1 is a bgp-based vpn. The openstack has enables l2pop and bgpvpn. When a vm first sends a packet to some device in the bgpvpn, broadcast for mac learning and ARP resolution can’t be avoided. The use case is listed below:
Use Case
The cloud/network admin creates BGPVPN-1 for a tenant based on contract and OSS information about the VPN for this tenant
The tenant associates BGPVPN-1 with network-1(VM-11 belongs to network-1)
The vm-11 in network-1 first sends a packet to the device-1 in BGPVPN-1.
In the step 3, broadcast for mac learning and ARP resolution can’t be avoided. Because neutron doesn’t have the port information of the device in the bgpvpn, thus the fdbs sent by neutron won’t include the port information of the Device-1. As a result of that, before step 3, there are no flows related to Device-1 existing in the Host 1. So ARP request are sent out.
Therefore, we are introducing an extension registration mechanism which enables other subprojects such as project bgpvpn-networking can register their own function to l2pop. The registered function can add the port information in the outside networks to the fdbs. Thus the broadcast for mac learning and ARP resolution can be avoided.
Proposed Change
The idea is to add an extension registration mechanism to l2pop mech_driver.py so that other subprojects can register their own function to l2pop. A global variable l2pop_fdb_
1 from neutron.
2 def register_
3 l2pop_driver.
Function run_fdb_
https:/
Data Model Impact
None
REST API Impact
None
Command Line Client Impact
None
Other Impact
None
Other Deployer Impact
None
Performance Impact
Performance testing should be conducted to see what is the overhead of adding more information to fdb.
Implementation
Assignee(s)
Work Items
Add the register_
Add related tests.
Documentation.
Dependencies
None
Testing
Unit tests, functional tests and scenario tests are necessary.
Documentation Impact
How to register the fdb_extend_function to l2pop should be documented.
References
[1] https:/
[2] https:/
[3] https:/
[4] https:/
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in neutron: | |
assignee: | nobody → ChenjieXu (midone) |
tags: | added: rfe |
Changed in neutron: | |
status: | New → In Progress |
summary: |
- [RFE] Enable other projects to extend l2pop fdb information + [RFE] Enable other subprojects to extend l2pop fdb information |
Changed in neutron: | |
status: | New → In Progress |
Can You check BP https:/ /blueprints. launchpad. net/neutron/ +spec/native- l2pop
I think that Your proposal may be easier to implement if that BP would be first done.