博客
关于我
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/

    你可能感兴趣的文章
    NodeJs入门知识
    查看>>
    nodejs包管理工具对比:npm、Yarn、cnpm、npx
    查看>>
    NodeJs单元测试之 API性能测试
    查看>>
    nodejs图片转换字节保存
    查看>>
    nodejs在Liunx上的部署生产方式-PM2
    查看>>
    nodejs基于art-template模板引擎生成
    查看>>
    nodejs字符与字节之间的转换
    查看>>
    NodeJs学习笔记001--npm换源
    查看>>
    NodeJs学习笔记002--npm常用命令详解
    查看>>
    nodejs学习笔记一——nodejs安装
    查看>>
    vue3+Element-plus icon图标无法显示的问题(已解决)
    查看>>
    NodeJS实现跨域的方法( 4种 )
    查看>>
    nodejs封装http请求
    查看>>
    nodejs常用组件
    查看>>
    nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
    查看>>
    Nodejs异步回调的处理方法总结
    查看>>
    NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
    查看>>
    nodejs支持ssi实现include shtml页面
    查看>>
    Nodejs教程09:实现一个带接口请求的简单服务器
    查看>>
    nodejs服务端实现post请求
    查看>>