L2population

L2 population is mechanism driver for ML2 plugin which tends to leverage the implementation of overlay networks. By populating the forwarding tables of virtual switches (LinuxBridge or OVS), l2population mech driver will decrease broadcast traffics inside the physical networks fabric while using overlays networks (VXLan, GRE). Full specifications of the blueprint are available here

Two topics are implemented with this mechanism driver :
 * populating ARP proxy so that ARP broadcasts are not broadcasted in the network fabric anymore; (only available for Linuxbridge in havana-1, but OVS implementation should land soon with an ebtabless driver)
 * populating forwarding tables because when ARP proxy is used, virtual switch forwarding tables don't learn where to send packets anymore.

Here is the devsatck config to use L2population in havana  with OVS  :


 * localrc
 * Q_PLUGIN=ml2
 * Q_SERVICE_PLUGIN_CLASSES=neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
 * Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,linuxbridge,l2population
 * Q_ML2_TENANT_NETWORK_TYPE=vxlan,gre
 * Ț/$Q_PLUGIN_CONF_FILE
 * [agent]
 * l2_population=True
 * [ovs]
 * local_ip=$HOST_IP
 * [ovs]
 * local_ip=$HOST_IP
 * local_ip=$HOST_IP

Here is the devstack config to use L2population with linuxbridge and VXLan (remember minimal kernel version is 3.8 to use VXLan) :
 * localrc
 * Q_PLUGIN=ml2
 * Q_AGENT=linuxbridge
 * Q_SERVICE_PLUGIN_CLASSES=neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
 * Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,linuxbridge,l2population
 * Q_ML2_TENANT_NETWORK_TYPE=vxlan,gre
 * /$Q_PLUGIN_CONF_FILE
 * [vxlan]
 * enable_vxlan=true
 * local_ip=$HOST_IP
 * l2_population=True
 * local_ip=$HOST_IP
 * l2_population=True