开发者快速入门

这是一个快速入门指南,帮助你开始为 Networking-generic-switch 开发代码。这假定你已经熟悉向 OpenStack 项目提交代码审查。

使用 DevStack 部署 Networking-generic-switch

DevStack 可以配置为部署 Networking-generic-switch,并设置 Neutron 使用 Networking-generic-switch ML2 驱动程序。强烈建议在可丢弃的虚拟机上部署,而不是在你的个人工作站上。使用 DevStack 部署 Networking-generic-switch 需要一台运行 Ubuntu 14.04(或更高版本)或 Fedora 20(或更高版本)的机器。

DevStack 将不再创建具有所需权限的 ‘stack’ 用户,但提供了一个执行此任务的脚本

git clone https://github.com/openstack-dev/devstack.git devstack
sudo ./devstack/tools/create-stack-user.sh

切换到 stack 用户并克隆 DevStack

sudo su - stack
git clone https://github.com/openstack-dev/devstack.git devstack

创建 devstack/local.conf,其中包含启用 Networking-generic-switch 所需的最小设置。以下是 local.conf 的一个示例

[[local|localrc]]
# Set credentials
ADMIN_PASSWORD=secrete
DATABASE_PASSWORD=secrete
RABBIT_PASSWORD=secrete
SERVICE_PASSWORD=secrete
SERVICE_TOKEN=secrete

# Enable minimal required services
ENABLED_SERVICES="dstat,mysql,rabbit,key,q-svc,q-agt,q-dhcp"

# Enable networking-generic-switch plugin
enable_plugin networking-generic-switch https://review.openstack.org/openstack/networking-generic-switch

# Configure Neutron
OVS_PHYSICAL_BRIDGE=brbm
PHYSICAL_NETWORK=mynetwork
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
Q_ML2_TENANT_NETWORK_TYPE=vlan
TENANT_VLAN_RANGE=100:150

# Configure logging
LOGFILE=$HOME/devstack.log
LOGDIR=$HOME/logs

运行 stack.sh

./stack.sh

获取凭据

source ~/devstack/openrc admin admin

使用 OVS 测试

从 networking-generic-switch 启动 exercise.sh。此脚本在 Neutron 中创建端口/使用 local_link_information 更新它,并验证 ovs 端口是否已分配给正确的 VLAN

bash ~/networking-generic-switch/devstack/exercise.sh

使用真实硬件测试

将硬件交换机信息添加到 Networking-generic-switch 配置文件 /etc/neutron/plugins/ml2/ml2_conf_genericswitch.ini 并重启 Neutron 服务器

[genericswitch:cisco_switch_1]
device_type = netmiko_cisco_ios
ip = 1.2.3.4
username = cisco
password = cisco
secret = enable_password

获取交换机端口的当前配置,例如对于 Cisco IOS 设备

sh running-config int gig 0/12
Building configuration...

Current configuration : 283 bytes
!
interface GigabitEthernet0/12
switchport mode access
end

运行 exercise.py 以创建/更新 Neutron 端口。它将打印要分配的 VLAN ID

$ neutron net-create test
$ python ~/networking-generic-switch/devstack/exercise.py --switch_name cisco_switch_1 --port Gig0/12 --switch_id=06:58:1f:e7:b4:44 --network test
126

验证交换机端口上的 VLAN 是否已更改,例如对于 Cisco IOS 设备

sh running-config int gig 0/12
Building configuration...

Current configuration : 311 bytes
!
interface GigabitEthernet0/12
switchport access vlan 126
switchport mode access
end