博客
关于我
openstack neutron网络插件学习(一)【linux-bridge实现】
阅读量:664 次
发布时间:2019-03-15

本文共 2372 字,大约阅读时间需要 7 分钟。

neutron网络架构与操作流程解析

1. 网络架构

在OpenStack网络架构中,openvswitch与linux-bridge相比较,openvswitch更为广泛应用。OpenStack至少支持以下几类网络流量:

  • 管理网络 (Management):用于节点间的内部通信,例如message queue和database服务。

  • API网络 (API):通过管理网络向用户暴露API服务,API与管理网络合并后直接用于资源操作。

  • 虚拟机网络 (VM):Neutron负责对虚拟机网络进行配置与管理。

  • 外部网络 (External):指不受Neutron管理的网络,是与虚拟机通信的目标网络。

网络可划分为以下几种类型:

  • 管理网络 (Management Network):用于管理所有节点,保障网络的可用性和安全性。

  • 内部网络 (Internal Network):实现控制节点与网络节点之内的通信,支持tenants自定义管理,网络可重叠。

  • 外部网络 (External Network):用于内部虚拟机的外网访问,通常由管理员预先创建并进行网络属性设置。

2. Neutron网络模块

Neutron网络模块主要包括以下操作流程:

  • API请求处理:通过Neutron-server接收并路由不同的API请求。

  • 插件执行:将API请求发送至对应的plugin,执行网络配置操作。

  • 数据库维护:更新网络状态信息,确保网络配置准确可靠。

  • 消息队列通信:在各网络模块间保持实时通信,同步核心网络状态。

  • 网络模块分为以下几个关键部分:

    • core plugin:负责维护网络、子网、端口等基础资源,通过与agent配合实现二层网络功能。

    • service plugin:实现高级网络功能,如路由、防火墙、负载均衡等。

    • agent代理:在各个节点上执行网络代理功能,根据_plugin的需求配置相应网络设备。

    3. 插件与代理

    • 插件的功能定位:解决网络配置细节问题(what to do),如创建VLAN或vxlan网络。

    • agent的功能定位:执行具体的网络操作(how to do),如配置物理网卡或创建网桥设备。

    • 兼容性配置:支持多种网络设备,如openvswitch、linux-bridge、思科交换机等,通过对应的plugin和agent实现异构网络部署。

    4. Neutron网络模块的两种部署方式

    • 方式一(控制节点+计算节点):

      • 控制节点部署neutron server、core插件代理和service插件代理。

      • 计算节点部署core插件代理,负责执行二层网络配置。

    • 方式二(控制节点+网络节点+计算节点):

      • 控制节点仅部署neutron server。

      • 网络节点聚焦于对高层网络服务,如数据转发、路由和负载均衡等。

      • 计算节点专注于执行二层网络功能。

    管理方式灵活,支持集群式部署,适用于大规模openstack环境。

    5. Neutron服务器架构

    Neutron服务器主要承担以下职责:

  • API服务:提供网络资源管理的RESTful API。

  • 请求路由:根据请求类型(core API、extension API)调用相应的plugin。

  • 核心处理:通过core plugin和service plugin处理网络请求。

  • 请求校验:确保API请求格式正确性和权限验证。

  • Neutron服务器的模块划分如下:

    • Core API:对外暴露标准网络资源管理接口。

    • Extension API:提供扩展功能接口,如路由、防火墙等。

    • 代码层级

      • Neutron Core:核心处理程序,执行网络操作。

      • Core Plugin API:简化核心插件操作接口。

      • Extension Plugin API:提供扩展插件接口。

    网络模块的核心职责是通过插件和agent实现网络配置与状态维护。

    6. ML2核心插件

    ML2(Modular Layer 2)核心插件作为Neutron的标准插件,其优势在于支持异构网络部署,同时实现网络抽象能力。ML2通过type driver和mechanism driver实现灵活配置:

    • Type Driver:确定和管理网络类型配置,如VLAN、vxlan、flat、local等。

    • Mechanism Driver:执行实际的网络操作,支持openvswitch、linux-bridge等网络设备。

    ML2与其mechanism driver共同完成网络建模与实现,适用于大规模网络环境。

    7. Service Plugin/Agent

    Service Plugin/Agent负责提供高级网络服务,如:

    • DHCP代理:通过dnsmasq为虚拟机提供IP地址和hostname。

    • 路由转发:创建并管理路由器实例,提供网络跨越功能。

    • 防火墙策略:在路由器上配置防火墙规则,控制网络流量。

    • 负载均衡:通过haproxy实现虚拟机之间的负载均衡服务。

    这些高级功能均通过extension API接口对Neutron进行调用。

    8. 本地网络(Local Network)

    本地网络是一个轻量级的虚拟网络类型,主要适合内部通信需求。其特点包括:

    • communicate限制在同一物理节点的网络范围内。

    • 均通过桥接设备(如linux-bridge)实现虚拟网络连接。

    • 每个本地网络映射为独立的tap设备,无广播对应特点。

    9. 平坦网络(Flat Network)

    平坦网络是一种直接连接物理网卡的网络类型,特点包括:

    • 物理网卡与linux-bridge直接配接。

    • 不支持VLAN划分,适用于简单、快速的网络通信。

    配置时需指定物理网卡的对应关系。

    这些实现方式为Neutron网络部署提供了灵活的配置选项。

    转载地址:http://kqrmz.baihongyu.com/

    你可能感兴趣的文章
    ng 指令的自定义、使用
    查看>>
    nghttp3使用指南
    查看>>
    Nginx
    查看>>
    nginx + etcd 动态负载均衡实践(三)—— 基于nginx-upsync-module实现
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    Nginx - 反向代理、负载均衡、动静分离、底层原理(案例实战分析)
    查看>>
    nginx 1.24.0 安装nginx最新稳定版
    查看>>
    nginx 301 永久重定向
    查看>>
    nginx css,js合并插件,淘宝nginx合并js,css插件
    查看>>
    Nginx gateway集群和动态网关
    查看>>
    Nginx Location配置总结
    查看>>
    Nginx log文件写入失败?log文件权限设置问题
    查看>>
    Nginx Lua install
    查看>>
    nginx net::ERR_ABORTED 403 (Forbidden)
    查看>>
    Nginx SSL私有证书自签,且反代80端口
    查看>>
    Nginx upstream性能优化
    查看>>