Author:海峰 http://weibo.com/344736086
http://yanheven.github.io/
1. 基本概念:
core feature: network, subnet, port
plugins feature: loadbalance, firewall, vpn, etc.
ML2 core plugin: type driver, mechanism driver.
ML2 type driver: vlan, vxlan, gre, etc.
ML2 mechanism driver: linux bridge, openvSwitch, etc.
2. 环境准备:
devstack 开发环境搭建, local.conf 参考:
[[local|localrc]]
FORCE=yes
ADMIN_PASSWORD=password
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD
HOST_IP=192.168.56.102
LIBVIRT_TYPE=qemu
VIRT_DRIVER=libvirt
MULTI_HOST=False
DEST=/opt/stack
LOGFILE=$DEST/logs/stack.sh.log
SCREEN_LOGDIR=$DEST/logs/screen
LOG_COLOR=False
RECLONE=no
VERBOSE=False
disable_service n-net
disable_service tempest
disable_service cinder c-sch c-api c-vol
disable_service heat h-api h-api-cfn h-api-cw h-eng
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-svc
# Neutron related config
Q_PLUGIN=ml2
Q_AGENT=openvswitch
Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,cookbook
# VLAN Related Config
ENABLE_TENANT_VLANS=TRUE
TENANT_VLAN_RANGE=1000:1100
PHYSICAL_NETWORK=physnet1
FLAT_INTERFACE=eth0
OVS_PHYSICAL_BRIDGE=br-eth0
Q_ML2_TENANT_NETWORK_TYPE=vlan
3. 创建简单的ML2 Mechanism driver, 名字叫”cookbook”:
3.1. 在devstack安装目录下的neutron目录下:
/opt/stack/neutron/neutron/plugins/ml2/drivers
创建文件 ml2_mech_driver.py 如下:
# Import Neutron Database API
from neutron.db import api as db
try:
from neutron.openstack.common import log as logger
except ImportError:
from oslo_log import log as logger
from neutron.plugins.ml2 import driver_api as api
driver_logger = logger.getLogger(__name__)
class CookbookMechanismDriver(api.MechanismDriver):
def initialize(self):
driver_logger.info("Inside Mech Driver Initialize")
3.2. 配置neutron server 使用上面这个ML2 mechanism driver,
编辑文件: /e