Openstack Neutron 集成 SDN控制器

来源:互联网 发布:煤中全水分的算法 编辑:程序博客网 时间:2024/05/22 06:18

Neutron 集成SDN控制器

 

一.Neutron的组成元素

 

Neutron-server可以理解为一个专门用来接收Neutron REST API调用的服务器,然后负责将不同的REST API分发到不同的neutron-plugin上。

 

Neutron-plugin可以理解为不同网络功能实现的入口,各个厂商可以开发自己的plugin。Neutron-plugin接收neutron-server分发过来的REST API,向neutron database完成一些信息的注册,然后将具体要执行的业务操作和参数通知给自身对应的neutron agent。

 

Neutron-agent可以直观地理解为neutron-plugin在设备上的代理,接收相应的neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当设备本地发生问题时,neutron-agent会将情况通知给neutron-plugin。

 

Neutron database 就是Neutron的数据库,一些业务相关的参数都存在这里

 

Network provider  即为实际执行功能的网络设备,一般为虚拟交换机(OVS或者Linux Bridge)。

 

 

二.Neutron-plugin说明
Plugin, agents和neutron-server一起管理虚拟交换机,Plugin, agents依赖Neutron。Plugin分为core和additional,用来处理neutronserver传过来的请求

Agent跑在compute节点之上,与neutron的plugin进行通信

 

ML2 的plugin都是属于core。分为type和mechanism两种。Type drivers (如flat, VLAN, GRE 和VXLAN) 定义 L2 type。mechanism drivers (如OVS, ODL, Cisco, NEC, etc) 负责一系列动作(更新、创建、删除)网络、子网、端口。

 

 

Neutron可以通过ML2插件和ODL北向接口融合,ODL通过OVSDB南向插件管理OpenStack计算节点中的网络流。

 

. OpenDaylight(ODL)介绍

OpenDaylight是一套以社区为主导的开源SDN框架,旨在推动创新实施以SDN透明化。面对SDN型 网络,需要合适的工具管理基础设施,这正是OpenDaylight的专长。

OpenDaylight Controller作为项目核心,拥有一套模块化、可插拔且极为灵活的控制器,这使其能够被部署在任何支持Java的平台之上。这款控制器中还包含一套模块合集,能够执行需要快速完成的网络任务。

OpenDaylight Controller提供了一个模块化的开放SDN控制器,它提供了开放的北向 API(开放给应用的接口),同时南向支持多种包括openflow在内的多种SDN协议。底层支持混合模式的交换机和经典的Openflow交换机

 

ODL安装:

http://www.sdnlab.com/17984.html

 

在neutron旧版本里

opendaylight作为ml2drivers存在于neutron项目中,在neutron较新的版本中一些sdn plugin,已开始从目中移除,一命名为诸networking-xxxx的独立目。

 

.OpenStack和OpenDaylight(ODL)的集成

Neutron包含ML2机制驱动,该机制驱动(ODL)作为REST代理能够调用所有的NeutronAPI。ODL包含北向REST服务(Neutron API服务),能够调用这些代理API缓存数据并可用于ODL的其他服务,这些RESTful API可以完成OpenStack和ODL的绑定。OpenDaylight与Openstack集成主要依赖ML2 plugin.

 

 

ODL和OpenStack集成步骤如下:

1、在虚拟机或者物理机上构建和安装合适的ODL版本。

2、正确配置并启动ODL

3、部署OpenStack

4、配置OpenStack,为ODL和Openstack的集成做准备:

* 确保核心插件在ML2

配置/etc/neutron/neutron.conf

[DEFAULT]
core_plugin=neutron.plugins.ml2.plugin.Ml2Plugin

* 获取networking-odl

               sudo pip install networking-odl

 * 将ODL作为”mechanism_drivers”添加到ML2上

            配置/etc/neutron/plugins/ml2/ml2_conf.ini

            修改mechanism_drivers = openvswitch为     

            mechanism_drivers= opendaylight

 

 * 配置ml2_conf.ini文件的[ml2_odl]区域:

[ml2_odl]
username=<ODL_USERNAME>
password=<ODL_PASSWORD>
url=http://<ODL_IP_ADDRESS>:<ODL_PORT>/controller/nb/v2/neutron
port_binding_controller=pseudo-agentdb-binding

 * 重置Neutron’s database

mysql -e "DROP DATABASE IF EXISTS neutron;"
mysql -e "CREATE DATABASE neutron CHARACTER SET utf8;"
/usr/local/bin/neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head

 

* 重启 neutron-server:

systemctl start neutron-server

 

5、配置ovs虚拟交换机使用ODL

# ovs-vsctl set-manager tcp:${ODL_IP_ADDRESS}:6640

6、设置节点OVS configurations

# sudo neutron-odl-ovs-hostconfig

7、检测OVS服务是否正常

# ovs-vsctl show

 

8、在OpenStack构建虚拟网络

9、验证ODL界面生成的网络拓扑是否与想要的一致

 

参考文档:https://docs.openstack.org/developer/networking-odl/installation.html

 

.OpenStack和OVN的集成

OVNOpenvSwitch项目组为OpenvSwitchSDN控制器,同其他SDN产品相比,OVNOpenvSwitchOpenStack有更好的兼容性和性能。

 

OVS OVN是非常简单快捷的。原有的网、路由等数据不会失,也不需要对这些数据出来行数据迁移,只需要添加一个 plugin 来配置 OVN即可

 

 

OVN的优点如下:

1.    OVN使得Neutron组件数量减

OVNML2 driver OVS ML2 driver NeutronOVS agentOVN原生支持L3DHCP功能,这样就不再需要NeutronL3 agent DHCP agentDVR

2. OVN提供了多原生的虚功能,提升了OVS的工作效率和性能

3. OVN支持原生的三功能,不需要借助 Linux TCP/IP stack,用OpenFlow流表来实现路由找,ARP查找,TTL MAC地址的更改。

4.OVN里面数据的写都是通 OVSDB来做的,取代了 Neutron的消息列机制,所以有了 OVN之后,理Neutron里面所有的 agent都不需要了,Neutron变成了一个 API server理用 REST 请求,其他的功能都交给 OVN来做,只需要在 Neutron里面加一个 plugin用配置 OVN

 

集成文档:https://docs.openstack.org/developer/networking-ovn/install.html

 

1 0