一、知识前提
什么是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
三、基本架构
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 等。 |