openstack之neutron②

neutron


neutron主要就是用于网络虚拟化,之前将nova的时候说过,网络部分没有写,因为openstack中的网络属于一个大部分,所以今天咱们就来看看neutron到底是怎么样实现网络虚拟化的
Neutron包含的组件:

  • neutron-server

  • neutron-plugin

  • neutron-agent

一,neutron各组件详解

neutron-server可以理解为类似于nova-api那样的一个组件,一个专门用来接收neutron REST API调用的服务器。负责将不同的rest api发送到不同的neutron-plugin

neutron-plugin可以理解为不同网络功能实现的入口,现在大部分都是软件定义网络,各个厂商都开发自己的plugin(插件)。neutron-plugin接收netron-server发过来的rest api,向neutron database完成一些信息注册(比如用户要建端口)。然后将具体要执行的业务操作和参数通知给自身对应的neutron-agent

neutron-agent可以直观的理解为neutron-plugin在设备上的代理,接受相应的neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当本地设备发生问题时,neutron-agent会将情况通知给neutron-plugin(说白了就是neutron-server就是与各个组件交互的,接收请求,neutron-plugin是操作数据库的,neutron-agent就是具体干活的)

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

neutron-plugin分为core-pluginservice-plugin两类(我们主要研究core-pulgin

Core-plugin,在neutron中有一个Core-plugin叫做ML2(Modular Layer 2),就是负责管理L2的网络连接(二层交换机概念)。ML2中主要包括network,subent,port三类核心资源,对三类资源进行操作的REST API被neutron-server看做Core API 由neutron原生支持,其中

在这里插入图片描述
注意:学习openstack重中之重network的类型包括:Flat,Vlan,Vxlan,GRE,还有一个local 五种网络模式指的是二层网络

Service-plugin,即为出Core-plugin以外的其它的plugin,包括L3router,firewall,loadblancer,vpn,metering等等,主要实现L3-L7的网络服务。

Neutron对Quantum(neutron的原名)的插件机制进行了优化,将各个厂商L2插件中独立的数据库实现提取出来,作为公共的ML2插件存储租户的业务需求,使得厂商可以专注于L2设备驱动的实现,而ML2作为总控可以协调多厂商L2设备共同运行”。在Quantum中,厂家都是开发各自的Service-plugin,不能兼容而且开发重复度很高,于是在Neutron中就为设计了ML2机制,使得各厂家的L2插件完全变成了可插拔的,方便了L2中network资源扩展与使用。ML2可以支持在一个环境中同时运行五种模式

(注意,以前厂商开发的L2 plugin跟ML2都存在于neutron/plugins目录下,而可插拔的ML2设备驱动则存在于neutron/plugins/ml2/drivers目录下)

一般而言,neutron-server和各个neutron-plugin部署在控制节点或者网络节点上,而neutron-agent则部署在网络节点上和计算节点上。我们先来分析控制端neutron-server和neutron-plugin的工作,然后在分开分析设备端neutron-agent的工作
在这里插入图片描述

二,网络虚拟化

实际数据中心网络可分为三层:

openstack Cloud network:openstack所管理的网络

既往intranet(external network):数据中心所管理的网络

以及真正的外部网络internet,由各大运行商所管理的公共网络

openstack的网络可以是:

1.管理网络:包含api网络(public,admin,和internal)各个组件之间的协同工作。

2.数据网络

3.存储网络

4.IDRAC网络

5.PXE网络
总结:openstack --> external --> (NAT) -->internet

2.1 neutron网络虚拟化简介

openstack中neutron组件负责咋物理网络环境智商提供满足多租户要求的虚拟化网络和服务

Neutron 提供的网络虚拟化能力包括:

1.二层到七层网络的虚拟化:L2(virtual switch)、L3(virtual Router 和 LB)、L4-7(virtual Firewall )等

2.网络连通性:二层网络和三层网络

3.租户隔离性

4.网络安全性

5.网络扩展性

6.REST API

7.更高级的服务,包括 LBaaS,FWaaS,VPNaaS 等
先从二层网络虚拟化来说

按照用户的权限创建网络,neutron L2 network可以分为:

Provider network:管理员创建的跟物理网络直接绑定到一块,即虚拟机用的网络就是物理网络

Tenant network:租户普通用户创建的网络。物理网络对创建者透明,用户不需要考虑底层
  
根据网络类型,neutron L2 network可以分为

flat network:基于不实用vlan的物理网络实现的虚拟网络。所有网络都在一个网络中。不推荐使用,用不到生产环境中。

local network:一个只允许在本服务器内通信的虚拟网络,所有服务都装在一台机器上 不推荐中。

vlan network:基于物理vlan网络实现的虚拟网络。共享同一个物理网络的多个vlan网络是相互隔离的,并且可以使用重叠IP地址空间。最重要的一点是有效的VLAN ID 范围为1-4095

GRE network:(通过路由封装网络):一个使用GRE封装网络包的虚拟网络,GRE封装的数据包基于IP路由表来进行路由,因此GRE network不和具体的网络网络绑定

VXLAN network:(虚拟可扩展网络)基于vxlan实现虚拟网络。同GRE network一样,vxlan network中IP包的路由也基于IP路由表,也不和具体的物理网络绑定

三,L2 网络之Provider Netwrok

provider network是有Openstack管理员创建的,直接对应于数据中的一块物理网段,这种网络有三个和物理网络有关的属性:

provider.network_type(网络类型:vxlan,gre,valn,flat,local)

provider.segmentation_id(网段ID:比如vlan的802.1q tag,gre的tunnel ID,VXLAN的VNI)

provider.physical_network(物理网络的逻辑名称:比如physnet1,ph-etg1)

这种网络是可以在多个租户之间共享的。这种网络通过计算和网络节点上指定的 bridge 直接接入物理网络,所以默认的情况下它们是可以路由的,因此也不需要接入 Neutron Virtual Router,也不需要使用 L3 agent。使用这种网络,必须预先在各计算和网络节点上配置指定的网桥

创建 provider network:

vlan 类型的:neutron net-create NAME --provider:network_type vlan --provider:physical_network PHYS_NET_NAME --provider:segmentation_id VID

gre 类型的:neutron net-create NAME --provider:network_type gre --provider:segmentation_id TUNNEL_ID

vxlan 类型的:neutron net-create NAME --provider:network_type vxlan --provider:segmentation_id TUNNEL_ID

发布了81 篇原创文章 · 获赞 12 · 访问量 4009

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/104246304