Implements blueprint neutron-l2-population Change-Id: I985ddfdf064c09c8acb840cc6268af0249a67a35
4.3 KiB
Neutron L2 population plugin
https://blueprints.launchpad.net/fuel/+spec/neutron-l2-population
This blueprint describes Neutron L2 population plugin which can improve performance of tunneling protocols. The L2 Population driver enables broadcast, multicast, and unicast traffic to scale out on large overlay networks.
Problem description
Destination MAC addresses aren’t initially known by the agents, so multicast or broadcast traffic is flooded out tunnels to all other compute nodes. Also currently if a node isn’t hosting any ports in a specific network it will receive broadcast traffic designated to that network. This is not an effective approach from network perfomance point of view, because Neutron service has full knowledge of the topology and can propagate the forwarding information among agents using a common RPC API.
Proposed change
Neutron supports L2 population since Havana. When using the ML2 plugin with tunnels, the l2pop mechanism driver uses RPC notifications to send updates in topology (ports) to all layer 2 agents. So agents can use this information instead of getting it via broadcast traffic.
An additional option will be added to astute.yaml and then passed to Puppet manifests to enable this feature. If testing results will not show any regression when this feature is enabled, it's also proposed to enable it in Fuel by default.
Alternatives
None
Data model impact
None
REST API impact
None
Upgrade impact
Turning on L2 population during upgrade from previous releases can destroy all existing tunnels.
Security impact
None
Notifications impact
With L2pop mechanism driver enabled extra notifications are generated for every port create/update/delete.
Other end user impact
None
Performance Impact
- Amount of broadcast traffic in Neutron private networks will be decreased
- Network scalability and performance will grow.
- Number of flow rules in openvswitch will grow, impact on large environments need to be checked
Other deployer impact
None
Developer impact
None
Implementation
L2 population option will be added to Fuel Web UI This option must be enabled if Neutron DVR is enabled
l2_population option should be enabled in neutron module when tunnelling is used (GRE/VXLAN) and L2 population feature is enabled in astute.yaml
l2population will be added to mechanism_drivers and passed to neutron module when L2 population feature is enabled in astute.yaml
--------------------- quantum_settings: l2_population: true---------------------
Backward compatibility
None
Work Items
- Add L2 population option to Fuel Web UI
- Update Puppet manifests to enable L2 popualtion
Assignee(s)
- Primary assignee:
-
Sergey Kolekonov
- Other contributors:
-
Anna Babich (QA)
- Mandatory design reviewer:
-
Sergey Vasilenko
Dependencies
None
Documentation Impact
- New Neutron services behavior after enabling L2 poulation option should be reflected in documentation to correctly debug possible problems.
- New Fuel Web UI option for Neutron L2 population should be described
References
None
Testing
- All existing Tempest/Rally tests should pass
- Check that if broadcast traffic is initiated from a virtual machine in network1 only a compute nodes which hosts virtual machines from network1 will receive the traffic
Acceptance criteria
- Deploy an environment with at least two compute nodes and GRE/VXLAN segmentation
- Create two Neutron private networks
- Start two VMs using two previously created networks and make sure that the VMs were scheduled to different compute nodes
- Emulate broadcast traffic on the first VM using arping utulity (for example)
- Capture incoming traffic on the compute node with the second VM: there should be no broadcast traffic initiated by the first VM as there're no VMs from the same private network with the first VM on this compute node