neutron项目简介

一、Neutron概述

       neutron项目是openstack中服务网络资源管理的项目,从D版本开始引入(之前使用nova-network负责网络工作)。Neutron 涉及了L2(二层),L3(三层),L4-L7(高层)等传统的网络。Neutron 还涉及了网络安全组,流量控制,LBaas(负载均衡),VPNaas(vpn服务),FWaas(防火墙)等一系列网络方法的技术。neutron整体框架如下图所示。

       可以有上图看出neutron的组件主要有如下两类:

       基础组件服务

       1、neutron-server

       2、neutron-dhcp-agent

       3、neutron-l3-agent

       4、neutron-plugin-xxx-agent

       额外的组件服务

       1、neutron-vpn-agent

       2、neutron-lbaas-agent

二、Neutron功能

  1. 二层交换

       Neutron支持多种虚拟交换机,一般使用Linux Bridge和Open vSwitch创建传统的VLAN网络,以及基于隧道技术的Overlay网络,如VxLAN和GRE(Linux Bridge 目前只支持 VxLAN)。

  2. 三层路由

       Neutron从Juno版开始正式加入的DVR(Distributed Virtual Router)服务,它将原本集中在网络节点的部分服务分散到了计算节点上。可以通过namespace中使用ip route或者iptables实现路由或NAT,也可以通过openflow给OpenvSwitch下发流表来实现。

  3. 负载均衡

       LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,通过HAProxy来实现。

  4. 防火墙

       Neutron有两种方式来保障instance和网络的安全性,分别是安全组以及防火墙功能,均可以通过iptables来实现,前者是限制进出instance的网络包,后者是进出虚拟路由器的网络包。

  5. VPN服务

       VPN(virtual private network),是虚拟专用网络,VPN可以通过在L2或L3层建立一条逻辑链路让广域网上多个内网能够相互访问。主要功能是在公共网络上建立一条专用网络,进行网络通信,并对通信进行加密的功能。

三、neutron网络类型

  1. Flat

       Flat网络,不带vlan tag的网络,相当于Local网络的Linux Bridge连接到一个物理网卡,该网络中的instance能与同网络的instance通信,且可以跨多个节点,实际场景也很少用到。

  2. VLAN

       VlAN网络,可以跨节点,目前是私有云网络应用较多。

  3. VXALN

       VXLAN网络,是基于隧道技术的 overlay 网络,通过唯一的VNI区分于其他 vxlan 网络。vxlan中数据包通过VNI封装成UPD包进行传输,因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。

  4. GRE

       GRE网络,与vxlan类似的一种overlay网络,使用IP包进行封装。

四、Neutron架构

       Neutron采用分布式架构,由多个组件共同对外提供网络服务,如下图所示:

        由上图可以看到Neutron有以下组件构成:

  • Neutron Server:对外提供OpenStack网络API,接收请求,并调用Plugin处理请求。
  • Plugin:处理Neutron Server发来的请求,维护OpenStack逻辑网络的状态,并调用Agent处理请求。
  • Agent:处理Plugin的请求,负责在Network Provider上真正实现各种网络功能。
  • Network Provider:提供网络服务的虚拟或者物理网络设备,比如Linux Bridge,OpenVSwitch或者其他支持Neutron的物理交换机。
  • Queue:Neutron Server,Plugin和Agent之间通过Messaging Queue通信和调用。
  • Database:存放OpenStack的网络状态信息,包括Network,Subnet,Port,Router等。

       举例说明   

       为了了解他们之间的关系,我们举个例子进行说明,创建一个VLAN100的Network,Network Provider是Linux Bridge:

        (1)Neutron Server接收到创建Network的请求,通过Message Queue(RabbitMQ)通知已注册的Linux Bridge Plugin。

        (2)Plugin将要创建的Network的信息(例如名称、VLAN ID等)保存到数据库中,并通过Message Queue通知运行在各节点上的Agent。

        (3) Agent收到消息后会在节点上的物理网卡(比如eth2)上创建VLAN设备(比如eth2.100),并创建Bridge(比如brqXXX)桥接VLAN设备。

       需要注意如下几点:

        (1)Plugin确定的是网络要配置成什么样子,而至于如何配置,则交由Agent完成。

        (2)Plugin,Agent和Network Provider是配套使用的,比如上例中Network Provider是Linux Bridge,那么就得使用Linux Bridge的Plugin和Agent;如果Network Provider换成了OVS或者物理交换机,Plugin和Agent也得替换。

        (3)Plugin的一个主要的职责是在数据库中维护Neutron网络的状态信息,这就造成一个问题:所有Network Provider的Plugin都要编写一套非常类似的数据库访问代码。为了解决这个问题,Neutron在Havana版本实现了一个 ML2(Modular Layer 2) Plugin,对Plugin的功能进行抽象和封装。有了ML2 Plugin,各种Network Provider无需开发自己的Plugin,只需要针对ML2开发相应的Driver就可以了,工作量和难度都大大减少。ML2会在后面详细讨论。

        (4)Plugin按照功能分为两类:Core Plugin和Service Plugin。Core Plugin维护Neutron的Netowrk, Subnet和Port相关资源的信息,与Core Plugin对应的Agent包括Linux Bridge,OVS等;Service Plugin提供Routing, Firewall, Load Balance等服务,也有相应的Agent。

五、Neutron Server

       由之前得知,Neutron Server向上提供API,向下调用Plugin,如下图

  • Core API: 对外提供管理Network, Subnet和Port的RESTful API。
  • Extension API: 对外提供管理Router, Load Balance, Firewall等资源的RESTful API。
  • Commnon Service: 认证和校验 API 请求。
  • Neutron Core: Neutron Server的核心处理程序,通过调用相应的Plugin处理请求。
  • Core Plugin API: 定义了Core Plgin的抽象功能集合,Neutron Core通过该API调用相应的Core Plugin。
  • Extension Plugin API: 定义了Service Plugin的抽象功能集合,Neutron Core通过该API调用相应的Service Plugin。
  • Core Plugin: 实现了Core Plugin API,在数据库中维护network, Subnet和Port的状态,并负责调用相应的Agent在Network Provider上执行相关操作,比如创建Network。
  • Service Plugin: 实现了Extension Plugin API,在数据库中维护Router, Load Balance, Security Group等资源的状态,并负责调用相应的Agent在Network Provider上执行相关操作,比如创建Router。

六、Network Provider

       由之前得知,Plugin,Agent和Network Provider的类型必须是配套的,常见的就是Linux Bridge和OVS的,分别如下图所示:

      我们以Linux Bridge为例进行说明,介绍一下Plugin和Agent的工作。

      Linux Bridge Core Plugin

  • 实现Core Plugin API。
  • 负责维护数据库信息。
  • 通知Linux Bridge Agent实现具体的网络功能。

      Linux Bridge Agent

  • 接收来自Plugin的请求。
  • 通过配置本节点上的Linux Bridge实现Neutron网络功能。

      ML2作为新一代的Core Plugin,提供了一个框架,允许在OpenStack网络中同时使用多种Layer 2网络技术,不同的节点可以使用不同的网络实现机制。

       如上图所示,采用ML2 Plugin后,可以在不同节点上分别部署Linux Bridge Agent, OpenvSwitch Agent, Hyper-V Agent以及其他第三方Agent。

       ML2 不但支持异构部署方案,同时能够与现有的Agent无缝集成:以前用的Agent不需要变,只需要将Neutron Server上的传统Core Plugin替换为ML2。有了ML2,要支持新的Network Provider就变得简单多了:无需从头开发Core Plugin,只需要开发相应的Mechanism Driver,大大减少了要编写和维护的代码。

七、ML2 Core Plugin

       ML2对二层网络进行抽象和建模,引入了Type Driver和Mechanism Driver。

       这两类Driver解耦了Neutron所支持的网络类型(Type)与访问这些网络类型的机制(Mechanism),其结果就是使得ML2具有非常好的弹性,易于扩展,能够灵活支持多种Type和Mechanism

  • Type Driver

       Neutron支持的每一种网络类型都有一个对应的ML2 Type Driver。Type Driver负责维护网络类型的状态,执行验证,创建网络等。ML2支持的网络类型包括Local, Flat, VLAN, VxLAN和GRE。

  • Mechanism Driver

       Neutron支持的每一种网络机制都有一个对应的ML2 Mechanism Driver。Mechanism Driver负责获取由Type Driver维护的网络状态,并确保在相应的网络设备(物理或虚拟)上正确实现这些状态。

       举例说明

       Type和Mechanisim都太抽象,现在我们举一个具体的例子:Type Driver为Vlan,Mechanism Driver为Linux Bridge,我们要完成的操作是创建Network VLAN100,那么:

    (1)VLAN Type Driver会确保将VLAN100的信息保存到Neutron数据库中,包括Network的名称,VLAN ID等。

    (2)Linux Bridge Mechanism Driver会确保各节点上的Linux Brige Agent在物理网卡上创建ID为100的VLAN设备和Brige设备,并将两者进行桥接。

  • Mechanism Driver有三种类型:

    (1)Agent-based: 包括Linux Bridge,OpenvSwitch等。

    (2)Controller-based: 包括OpenDaylight,VMWare NSX等。

    (3)基于物理交换机: 包括Cisco Nexus,Arista,Mellanox等。

八、Service Plugin/Agent

       Core Plugin/Agent负责管理核心实体:Net, Subnet和Port。而对于更高级的网络服务,则由Service Plugin/Agent管理。

       Service Plugin及其Agent提供更丰富的扩展功能,包括路由,Load Balancer,Firewall等,如图所示: 

  • DHCP: DHCP Agent通过dnsmasq为Instance提供DHCP服务。
  • Routing: L3 Agent可以为Project(租户)创建Router,提供Neutron Subnet之间的路由服务。路由功能默认通过IPtables实现。
  • Firewall: L3 Agent可以在Router上配置防火墙策略,提供网络安全防护。
  • Load Balancer: Neutron默认通过HAProxy为Project中的多个Instance提供Load Balancer服务。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值