一、知识前提

什么是openstack?

Openstack,是一个云平台管理的,旨在公共及私有云的建设与管理提供软件服务的开源项目,在云计算领域有着显著的作用和影响力。代码地址:https://github.com/openstack,开发底层语言:Python。

软件定义网络,SDN

由于互联网的快速发展,传统的网络管理方式(手动配置和维护设备)在云环境下变得越发负责,为快速响应业务的需求对网络管理提出更高的要求,软件定义网络(software-defined networking, SDN)所具有的灵活性和自动化优势使其成为云时代网络管理的主流。

其它未提及的知识,建议查阅openstack相关知识和基础网络知识作进一步的深入理解。

 

二、基本概念

Neutron,是Openstack中的一大核心组件,设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。

Network

Network是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 Local, FLAT, VLAN, VxLAN 和 GRE。

Subnet

从简单意义上来讲,Subnet是一批IP地址的集合。可以是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。如 10.10.1.0/24 。

Port

port 上定义了 MAC 地址和 IP 地址,当 instance 的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。

VIF

Virtual Interface,虚拟网卡

对应关系:Project 1 : n Network 1 : n Subnet 1 : n Port 1 : 1 VIF n : 1 Instance

 

三、基本架构

openstack组件中neutron组件介绍 openstack neutron架构_IP

Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 VPN 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

组件构成:

Neutron Server

对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。

Plugin

处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。

Agent

处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。

Network Provider

提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron。

Queue

Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

Database

存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。