-
Notifications
You must be signed in to change notification settings - Fork 105
openstack_neutron
遇见王斌 edited this page Oct 14, 2017
·
9 revisions
在网络这一块,OpenStack 经历了由 nova-network(早期)到 Quantum(F 版本)再到 Neutron(H 版本)的演进过程。
在Neutron里面,有几个基本概念,其实跟物理网络一样.
网络 Network:三层网络, 可以包含多个子网. 子网 Subnet:三层网络, 每个子网有自己的网络号(CIDR). 接口 Port:虚拟网络中的接口, 类比物理网络设备上的网线接口. 路由器 Router: 类比物理网络中的路由器,用于不同三层网络之前通信.
- neutron-server :对外提供 rest api,接收请求 并将请求分发到不同的 neutron-plugin 上。
- neutron-plugin :处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。每个厂商基于 Openstack 开发了模拟自己硬件的软件,这个软件就是 plugin。 在早期,每个厂商开发各自的 plugin,功能也是各自实现,有大量的代码是重复的;另外,不同的厂商有不同的开发标准,导致程序的兼容性很差。针对这种情况 neutron-plugin 被分为了两部分:Core-plugin 和 Service-plugin 。
- Core-plugin : Neutron 中即为 ML2(Modular Layer 2),负责管理 L2 的网络连接。ML2 中主要包括 network、subnet、port 三类核心资源,对三类资源进行操作的 REST API 被 neutron-server 看作 Core API,由 Neutron 原生支持。其中:
- Network : 代表一个隔离的二层网段,是为创建他的租户而保留的一个广播域。Subnet 和 Port 始终被分配给某个特定的 network。 Network 的类型包括 Flat、Vlan、VxLan、Gre 等等
- Subnet:代表一个 IPv4/v6 的 CIDR 地址池,以及与其相关的配置,如网关、DNS 等等,该 Subnet 中的 VM 实例随后会自动继承该配置。Subnet 必须关联一个 Network。
- Port:代表虚拟交换机上的一个虚拟交换端口。VM 的网卡连接 VIF 连接 Port 后,就会拥有 MAC 地址和 IP 地址,Port 的 IP 地址是从 Subnet 地址池中分配的。
- Service-plugin : 即为除 core-plugin 以外其它的 plugin,包括 l3 router、firewall、loadbalancer、VPN、metering 等等,主要实现 L3-L7 的网络服务。这些 plugin 要操作的资源比较丰富,对这些资源进行操作的 REST API 被 neutron-server 看作 Extension API,需要厂家自行进行扩展。
- Core-plugin : Neutron 中即为 ML2(Modular Layer 2),负责管理 L2 的网络连接。ML2 中主要包括 network、subnet、port 三类核心资源,对三类资源进行操作的 REST API 被 neutron-server 看作 Core API,由 Neutron 原生支持。其中:
- neutron-agent : 处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。和 plugin 是一一对应的关系,
Neutron,其实和其他的 OpenStack 组件差不多,他都是一个中间层,自己基本不干具体的活,通过插件的机制,调用第三方的组件来完成相关的功能。
OpenStack 的网络里,可以有 4 种的网络流量
- 管理网络:消息队列和数据库访问的网络
- API 网络:外部调用 API
- External:连接外网(provider 网络)
- Guest:虚拟机互相通讯网络 (Tenant 网络)
4 种网络里,和 Neutron 有关的就是 External 和 Guest,即 Provider 网络和 Tenant 网络
对于 Provider 网络和 Tenant 网络,技术实现基本都是一样的,区别仅仅在于
- Provider 网络,是有管理员创建,常用的网络是:Flat 和 Vlan。vxlan 基本是没有使用的可能性。默认为【flat】
- Tenant 网络,是由用户自己创建,可以设置的选项就是 vlan,vxlan 和 flat,local 主要是测试使用。默认为【vxlan】
linuxbridge 和 OVS,可以干的活是虚拟不同的网络,目前这两种 Driver,都可以实现下面几种网络功能。
- local
- flat ---------------------------需要物理网卡支持
- vlan ---------------------------需要物理网卡支持
- vxlan【self-service 网络】------不需要物理网卡支持
- GRE (linux bridge 不支持)
那么这 5 种网络里,local 网络,主要是用于测试,GRE 网络,目前社区已经基本处于维护
,大家基本也可以不考虑。所以大家只需要了解其中 3 种就可以。
上面说到 openstack 有 4 种网络里
- 第一张网卡用于管理网络和 API 网络,主要是给 openstack 服务使用的
- 第二张网卡用于 External 外部网络,是给虚拟机使用
Guest 也就是 Tenant 网络使用 vxlan 模式,无需物理网卡支持
部署好 openstack 后,创建 provider 网络的时候,即创建了一个网桥,第二张网卡用于会加入到创建的网桥中,所以无需配置 IP
可以参考 KVM 桥接网络部分