跳转到: 导航, 搜索

DCFabric-neutron-plugin

DCFabric Neutron 插件

概述

DCFabric 基于 C 语言高效的多线程性能,在网络拓扑发现、消息/事件处理以及 OpenFlow 表项安装方面表现出非常高的效率。并且基于对云计算数据中心流量特征的分析,我们创新性地提出了基于智能提前流安装和交换机级别流聚合的 SFabric 技术。SFabric 可以有效地解决在大型数据中心网络中采用 SDN 的主要障碍:流表大小限制、流条目匹配效率以及 SDN 控制器的效率瓶颈。

总体而言,DCFabirc 可以支持更大的二层网络(> 500 个交换机)、高效的二层交换(超过 1 万个主机同时通信)、快速初始化(500 个交换节点,启动收敛时间 < 30 秒)、基于 HTML5 的强大的 Web UI 界面用于网络拓扑和流量展示,以及支持高效 APP 开发的北向 Restful API 接口。

架构

10.png


总体而言,DCFabirc 可以支持更大的二层网络(> 500 个交换机)、高效的二层交换(超过 1 万个主机同时通信)、快速初始化(500 个交换节点,启动收敛时间 < 30 秒)、基于 HTML5 的强大的 Web UI 界面用于网络拓扑和流量展示,以及支持高效 APP 开发的北向 Restful API 接口。DCFabric 可以从上到下划分为五层(见上图):第一层是 DCFabric 支持的 Web 应用程序层,第二层是北向接口层,第三层是包含新型 SFabric 模块的系统应用层,第四层是保证上层应用程序良好运行的基础服务层,第五层是基于 OpenFlow 等协议的南向接口层。

DCFabric 支持的 Web 应用程序主要包括 Web GUI、Neutron 接口、流量工程、防火墙、负载均衡、DDoS 保护等。因此,DCFabric 能够为数据中心提供一系列的网络管理、虚拟化、安全和流量控制等方面的支持。

RestfulAPI 是 DCFabric 为应用程序开发人员提供的北向接口。它将网络应用程序与网络细节分离,使各种设施、事件(例如链路中断)和特定操作对应用程序透明。因此,数据中心可以通过各种灵活的网络应用程序来改善用户体验并实现智能化和安全性。

DCFabric 的系统应用将集中处理逻辑处理,并根据上层应用程序、下层基础服务(拓扑发现、主机跟踪、流量监控和消息处理等)及其内部执行策略生成特定的流条目。然后,DCFabric 通过 OpenFlow 或 OVSDB 将这些流条目安装到交换机中。因此,每个交换机只需要在处理数据包时根据流条目执行相应的操作。

此外,考虑到单个 Controller 的工作能力有限,为了应对不断增长的网络规模并保证其稳定性,支持集群 Controller 的部署。因此,如果一个 Controller 发生故障,相关的 SDN 交换机将尽快连接到另一个 Controller。此外,多个 Controller 可以由于其良好的协作而作为一个逻辑实体工作,这使得数据平面对应用程序透明。因此,集群 Controller 的部署对数据中心的高吞吐量、低延迟、良好的灵活性和强大的稳定性做出了巨大贡献。

优势

与其他现有的 SDNController 相比,DCFabric 具有以下两个不同特点

SFabric.png


1. SFabric 模块:与在主机级别计算路由的其他 SDN 技术不同,DCFabric 可以借助 SFabric 模块在交换机级别计算路由。由于网络中的交换机数量远少于主机数量,SFabric 可以大大减少流条目和 DCFabric 的工作负载,从而提高 DCFabric 的速度。由于 DCFabric 在处理网关、路由、网络地址转换 (NAT)、多租户管理等方面具有更好的效率,因此它可以对规模仍在不断扩大的云计算数据中心实现有效的控制和管理。

2. 支持系统 APP 的扩展:DCFabric 还支持系统应用的重新开发,允许其他开发人员根据其特定需求改进 DCFabric 的部分功能。因此,DCFabric 具有更好的兼容性和应用性。

先决条件

需要 OpenStack Juno(已测试 Juno)

配置

  • 步骤 1 获取工具脚本

“tools/openstack-tools” 目录下的 shell 脚本 "gnflush-controller.sh" 和 ml2 脚本 "mechanism_gnflush.py" 用于配置 OpenStack Network 节点和 Compute 节点。将这两个脚本复制到 "/usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/" 目录。

  • 步骤 2 停止 neutron 服务
   systemctl stop neutron-server  
   systemctl stop neutron-linuxbridge-agent
   systemctl stop neutron-openvswitch-agent  
   systemctl disable neutron-openvswitch-agent  
   systemctl disable neutron-linuxbridge-agent
  • 步骤 3 配置 ml2 插件

编辑文件

   vi /usr/lib/python2.7/site-packages/neutron-2014.2.3-py2.7.egg-info/entry_points.txt

添加一行

   gnflush = neutron.plugins.ml2.drivers.mechanism_gnflush:GNFlushMechanismDriver
  • 步骤 4 配置 ml2

在配置之前,你需要了解一些事情

  1. 租户网络类型:管理员可以选择“gre”或“vlan”网络类型
  2. SDN 控制器 IP 地址:安装 SDN 控制器的 Linux 服务器 IP 地址
  3. 控制器 REST 服务端口:REST 服务正在侦听 SDN 配置文件“[rest_port]”中配置的端口,默认值为“8081”

使用以下命令编辑 ml2 配置文件,例如“gre”网络类型

   crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers gnflush

在文件 "/etc/neutron/plugins/ml2/ml2_conf.ini" 的末尾添加 "ml2_gnflush"

   [ml2_gnflush] 
   password = admin 
   username = admin 
   url = http://<Controller IP>:<Controller REST service port>/gn/neutron
  • 步骤 5 创建 ml2 数据库

在 OpenStack Controller 中使用以下命令创建 ml2 数据库

   mysql -u root -p
   drop database if exists neutron_ml2;
   create database neutron_ml2 character set utf8;
   grant all on neutron_ml2.* to 'neutron'@'%';
   grant all on neutron_ml2.* to 'neutron'@'controller' IDENTIFIED BY 'neutron';
   grant all on neutron_ml2.* to 'neutron'@'localhost' IDENTIFIED BY 'neutron';   
   neutron-db-manage --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head
  • 步骤 6 配置 openvswitch-agent

网络节点

   sh gnflush-controller.sh --local_ip $local_ip --provider_mappings eth0 --gnflush_ip $DCFabric_ip --external_provider br-ex

计算节点

   sh gnflush-controller.sh --local_ip $local_ip --provider_mappings eth1 --gnflush_ip $DCFabric_ip
   ovs-vsctl add-br br-int
   ovs-vsctl set-controller br-int tcp:$local_ip
   ovs-vsctl add-port br-int eth0
  • 步骤 7 启动服务

在 OpenStack 网络节点中执行以下命令

   systemctl start neutron-server
   systemctl disable neutron-linuxbridge-agent
   systemctl stop neutron-linuxbridge-agent