共计 2140 个字符,预计需要花费 6 分钟才能阅读完成。
一、OpenStack Neutron简介
Neutron 添加了一层虚拟的网络服务让租户 (用户) 构建自己的虚拟网络。Neutron 是对网络的虚拟化,该网络可以从一个地方移动到另一个地方,而不会影响现有的连接。它可以进一步解释为一个网络管理服务,为创建和管理虚拟网络公开了一组可扩展的 API(通过创建虚拟网络为 OpenStack Compute 节点上的虚拟机提供网络服务)。Neutron 的插件架构为开源社区或第三方服务提供 API。Neutron 还允许供应商研究和添加新的插件,提供先进的网络功能。
目前,Neutron 的虚拟网络服务没有传统网络成熟。下图描述了与 Neutron 组件交互的代理。组成 Neutron 的元素如下:
Neutron-server 是实现 OpenStack 网络功能的的主要部件。
Plugin agents 和 Neutron 插件一起管理虚拟交换机,Plugin agents 依赖 Neutron 插件。
DHCP agent 是 Neutron 的一部分,为租户的网络提供 DHCP 服务。
L3 agent 负责 3 层功能和 NAT 转发来获得租户虚拟机的外部访问。
二、SDN 对于 Neutron 的意义
引入 SDN 主要是克服 Neutron 的缺陷,SDN 是一种网络技术, 通过集中的可编程控制平面来管理整个数据平面。这样网络运营商和供应商可以控制和管理自己的虚拟化资源和网络。SDN 是一种新型的网络模式,允许硬件和操作系统之间以及物理 / 虚拟网元和操作系统之间通过开放 API 通信。
三、SDN 控制器与 Neutron 集成的原理
(1)Neutron Server 的介绍
A Python daemon is the main process of the OpenStack networking that typically runs on the controller node (a term used in OpenStack deployments). It exposes APIs, to enforce the network model, and passes the requests to the neutron plugin.
暴露 API,使得请求能够被传到 plugin 中。
(2)Plugins 的介绍
Plugins can be either core or service. Core plugins implement the “core” Neutron API — L2 networking and IP address management. Service plugins provide “additional” services, such as the L3 router, load balancing, VPN, firewall and metering. These network services can also be provided by the core plugins by realizing the relevant API extensions. In short, plugins run on the controller node and implement the networking APIs, which interact with the Neutron server, database and agents.
Plugin 分为 core 和 additional。
Plugin 功能是处理 neutron server 传过来的请求。
下图是更为详细的 neutron server 如何传送给 plugin 消息的:
(3)Plugin Agents 介绍
These agents are specific to the Neutron plugin being used. They run on compute nodes and communicate with the Neutron plugin to manage virtual switches. These agents are optional in many deployments and perform local virtual switch configurations on each hypervisor.
Agent 跑在 compute 节点之上,与 Neutron 的 plugin 进行通信
ML2 plugin 都是属于 core。分为 type 和 mechanism 两种。
Type drivers (如 flat, VLAN, GRE 和 VXLAN) 定义 L2 type。
mechanism drivers (如 OVS, adrivers from ODL, Cisco, NEC ……) 负责一系列动作(更新、创建、删除)网络、子网、端口。
四、流程总结
(1).用户通过 OpenStack 的界面(horizon)输入消息给networkingAPI,再发送给Neutron server
(2).Neutron server 接受信息发送给 plugin
(3).Neutron server/plugin 更新 DB
(4).Plugin 通过 REST API 发送消息给 SDN 控制器
(5).SDN 控制器接收到消息,然后通过南向的 plugins/protocols(如 OpenFlow, OVSDB,OF-Config 等)控制相关的 Agent 的运作
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144767.htm