ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

云计算openstack共享组件-neutron网络服务6

2019-10-19 12:52:29  阅读:317  来源: 互联网

标签:subnet 网络服务 plugin 网络 instance neutron openstack 节点 Neutron


  Neutron 的设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。 SDN 模式服务— NeutronSDN( 软件定义网络 ), 通过使用它,网络管理员和云计算操作员可以通过程序来动态定义虚拟网络设备。Openstack 网络中的 SDN 组件就是 Quantum.但因为版权问题而改名为Neutron 。 Neutron网络基本概念 (1)neutwork network 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。 local local 网络与其他网络和节点隔离。local 网络中的 instance (实例)只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。 flat flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨多个节点。 vlan vlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。 vxlan vxlan 是基于隧道技术的 overlay 网络。vxlan 网络通过唯一的 segmentation ID(也叫 VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UDP 包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。 (Overlay在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。) gre gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。 (Overlay在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。) network 必须属于某个 Project( Tenant 租户),Project 中可以创建多个 network。 network 与 Project 之间是 1对多 关系。 (2)subnet subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。 network 与 subnet 是 1对多 关系。一个 subnet 只能属于某个 network;一个 network 可以有多个 subnet,这些 subnet 可以是不同的 IP 段,但不能重叠。 network A   subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}                    subnet A-b: 10.10.2.0/24  {"start": "10.10.2.1", "end": "10.10.2.50"} 如果上面的IP地址是可以重叠的,那么就可能存在具有相同 IP 的两个 instance,这样会不会冲突? 简单的回答是:不会! 具体原因: 因为 Neutron 的 router 是通过 Linux network namespace 实现的。network namespace 是一种网络的隔离机制。通过它,每个 router 有自己独立的路由表。上面的配置有两种结果: 1. 如果两个 subnet 是通过同一个 router 路由,根据 router 的配置,只有指定的一个 subnet 可被路由。 2. 如果上面的两个 subnet 是通过不同 router 路由,因为 router 的路由表是独立的,所以两个 subnet 都可以被路由。
(3)port
port 可以看做虚拟交换机上的一个端口。port 上定义了 MAC 地址和 IP 地址,当 instance 的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。 subnet 与 port 是 1对多 关系。一个 port 必须属于某个 subnet;一个 subnet 可以有多个 port。 Neutron 功能 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 VPN 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。 二层交换switching: Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。router 通过 IP forwarding,iptables 等技术来实现路由和 NAT。我们将在后面章节讨论如何在 Neutron 中配置 router 来实现 instance 之间,以及与外部网络的通信。 Nova 的 Instance 是通过虚拟交换机连接到虚拟二层网络的。Neutron 支持多种虚拟交换机,包括 Linux 原生的 Linux Bridge 和 Open vSwitch。 Open vSwitch(OVS)是一个开源的虚拟交换机,它支持标准的管理接口和协议。 三层路由routing: Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。router 通过 IP forwarding,iptables 等技术来实现路由和 NAT。 负载均衡Load-Balancing: Openstack 在 Grizzly 版本第一次引入了 Load-Balancing-as-a-Service(LBaaS),提供了将负载分发到多个 instance 的能力。LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,目前默认的 Plugin 是 HAProxy。   防火墙Firewalling: Neutron 通过下面两种方式来保障 instance 和网络的安全性。 (1) Security Group 通过 iptables 限制进出 instance 的网络包。 (2) Firewall-as-a-Service FWaaS,限制进出虚拟路由器的网络包,也是通过 iptables 实现。 Neutron 优点: Openstack 中的 SDN 组件架构也属于可插拔类型。通过各种插件可以管控不同种类的交换机、路由器、防火墙、负载均衡器并实现 firewall as a service 等许多功能。通过软件来定义的网络,可以对整个云计算设施进行更为精细的掌控。 Neutron 部署方案 方案1:控制节点 + 计算节点:   控制节点:部署的服务包括:neutron server, core plugin 的 agent 和 service plugin 的 agent。   计算节点:部署 core plugin 的agent,负责提供二层网络功能。 这里有几点需要说明:  1. core plugin 和 service plugin 已经集成到 neutron server,不需要运行独立的 plugin 服务。 2. 控制节点和计算节点都需要部署 core plugin 的 agent,因为通过该 agent 控制节点与计算节点才能建立二层连接。   3. 可以部署多个控制节点和计算节点。     方案2:控制节点 + 网络节点 + 计算节点 在这个部署方案中,OpenStack 由控制节点,网络节点和计算节点组成。   控制节点:部署 neutron server 服务。   网络节点:部署的服务包括:core plugin 的 agent 和 service plugin 的 agent。   计算节点:部署 core plugin 的agent,负责提供二层网络功能。 这个方案的要点是将所有的 agent 从控制节点分离出来,部署到独立的网络节点上。
  1. 控制节点只负责通过 neutron server 响应 API 请求。  
  2. 由独立的网络节点实现数据的交换,路由以及 load balance等高级网络服务。  
  3. 可以通过增加网络节点承担更大的负载。  
  4. 可以部署多个控制节点、网络节点和计算节点。
该方案特别适合规模较大的 OpenStack 环境。   OpenStack 至少包含下面几类网络流量 Management API VM External Management 网络 用于节点之间 message queue 内部通信以及访问 database 服务,所有的节点都需要连接到 management 网络。 API 网络(API,全称Application Programming Interface,即应用程序编程接口。 OpenStack 各组件通过该网络向用户暴露 API 服务。Keystone, Nova, Neutron, Glance, Cinder, Horizon 的 endpoints 均配置在 API 网络上。通常,管理员也通过 API 网络 SSH 管理各个节点。 VM 网络 VM 网络也叫 tenant 网络,用于 instance 之间通信。 VM 网络可以选择的类型包括 local, flat, vlan, vxlan 和 gre。 VM 网络由 Neutron 配置和管理。   External 网络 External 网络指的是 VM 网络之外的网络,该网络不由 Neutron 管理。 Neutron 可以将 router attach 到 External 网络,为 instance 提供访问外部网络的能力。 External 网络可能是企业的 intranet,也可能是 internet。 这几类网络只是逻辑上的划分,物理实现上有非常大的自由度。 我们可以为每种网络分配单独的网卡;也可以多种网络共同使用一个网卡;为提高带宽和硬件冗余,可以使用 bonding 技术将多个物理网卡绑定成一个逻辑的网卡 二、neutron 架构: Neutron 由如下组件构成:   Neutron Server 对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。   Plugin 处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。   Agent 处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。   network provider 提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。   Queue Neutron Server,Plugin(插件) 和 Agent 之间通过 Messaging Queue (消息队列)通信和调用。   Database 存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。 归纳起来,Neutron Server 包括两部分: 1. 提供 API 服务。 2. 运行 Plugin。 即 Neutron Server = API + Plugins

 

三、ML2 Core Plugin 详解:  Moduler Layer 2(ML2):是 Neutron 在 Havana 版本实现的一个新的 core plugin,用于替代原有的 linux bridge plugin 和 open vswitch plugin。 作为新一代的 core plugin,提供了一个框架,允许在 OpenStack 网络中同时使用多种 Layer 2(二层网络交换机) 网络技术,不同的节点可以使用不同的网络实现机制。 ML2 对二层网络进行抽象和建模,引入了 type driver 和 mechansim driver。这两类 driver 解耦了 Neutron 所支持的网络类型(type)与访问这些网络类型的机制(mechanism),其结果就是使得 ML2 具有非常好的弹性,易于扩展,能够灵活支持多种 type 和 mechanism。 四、Neutron 架构框架总结:   与 OpenStack 其他服务一样,Neutron 采用的是分布式架构,包括 Neutorn Server、各种 plugin/agent、database 和 message queue。 1. Neutron server 接收 api 请求。 2. plugin/agent 实现请求。 3. database 保存 neutron 网络状态。 4. message queue 实现组件之间通信。  

标签:subnet,网络服务,plugin,网络,instance,neutron,openstack,节点,Neutron
来源: https://www.cnblogs.com/kittywerwer/p/11703503.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有