OpenStack Networking网络

交换 同时被 2 个专栏收录
44 篇文章 0 订阅
40 篇文章 0 订阅

OpenStack Networking允许n你创建和管理网络对象,例如网络、子网和端口,其它OpenStack服务可以使用它们。插件可以实现为服务不同的网络设备和软件,为OpenStack架构和部署提供灵活性。

名称为Neutron的Networking服务提供了一个API,可以让你在云中定义网络连接和地址。Networking服务使运营者能够利用不同的网络技术为他们的云网络提供动力。Networking服务还提供配置和管理各种网络服务的API,范围从L3转发和网络地址转换(NAT)到负载均衡、边缘防火墙和虚拟专用网络VPN。

它包括以下的组件:

API server

OpenStack Networking API 包括对二层网络和IP地址管理(IP Address Management - IPAM)的支持,以及三层路由器的扩展实现二层网络和网关之间到外部网络的路由功能。OpenStack Networking 包括越来越多插件,赋予了与各种商用和开源的网络技术的互操作性,包括路由器、交换机、虚拟交换机和软件定义的网络(SDN)控制器。

OpenStack Networking plug-in and agents

Plugs 和 unplugs端口,创建网络或子网,并提供IP地址。所选的插件和代理因特定云中使用的厂商和技术而不同。非常重要的是plug-in一次只能使用一个。

Messaging queue

在代理之间接受并路由RPC请求以完成API操作。ML2插件中的消息队列用于Neutron服务器和运行在每个Hypervisor上的Neutron代理之间的RPC通信,或者用于Open vSwitch和Linux网桥的ML2 mechanism驱动程序。

理念 Concepts

要配置丰富的网络拓扑,可以创建和配置网络和子网,并指示其他OpenStack服务(如计算服务)将虚拟设备连接到这些网络的端口。

OpenStack Compute是OpenStack网络的一个重要消费者,为其实例提供连接。

尤其是,OpenStack Networking支持每个project具有多个私有网络,并允许project选择自己的IP地址方案,即使这些IP地址与其它project使用的IP地址重叠。有两种类型的网络:project网络和provider网络。作为网络创建过程的一部分,可以在项目之间共享任何此类网络。

Provider 网络 networks

Provider网络提供到实例的二层连接,并支持可选的DHCP和metadata服务。这些网络连接或映射到数据中心现有的二层网络,通常使用VLAN(802.1q)标签来识别和分离它们。

Provider网络通常以灵活性为代价提供简单性、性能和可靠性。默认情况下,只有管理员可以创建或更新provider网络,因为它们需要配置物理网络基础设施。可以使用以下方法的“policy.json”参数更改允许创建或更新provider网络的用户:

  • “create_network:provider:physical_network”
  • “update_network:provider:physical_network“

警告:

创建和修改provider网络开启了物理网络资源的使用,如VLAN-S。仅为受信任的project启用这些更改。

此外,provider网络只处理实例的二层连接,因此不支持路由器和浮动IP地址等功能。

在许多情况下,已经熟悉依存在物理网络(二层、三层或其它服务)基础设施之上的虚拟网络体系结构的运营者可以无缝部署OpenStack网络服务。特别是,provider网络吸引了希望从计算网络服务(nova-network)迁移到OpenStack Networking 服务的运营者。随着时间的推移,运营者可以在这个最小的体系结构上构建更多的云网络功能。

通常,处理三层操作的OpenStack Networking软件组件对性能和可靠性影响最大。为了提高性能和可靠性,provider网络将三层操作转移到物理网络基础设施。

在一个特定的用例中,OpenStack部署在具有传统虚拟化和使用大量物理网络基础设施的裸机所混合的环境。在OpenStack部署内部运行的应用程序可能需要直接通过对二层网络的访问,与部署之外的应用程序通信,典型的使用VLAN。

路由provider网络

路由provider网络提供实例的三层连接。这些网络映射到数据中心中现有的三层网络。更具体来说,这些网络映射到多个二层网段,每个网段本质上是一个provider网络。每个网段都有一个路由器网关连接到它,在它们之间以及和外部之间路由流量。Networking服务没有提供路由。

路由provider网络以有保障的二层连通性为代价,提供通过一个简单的provider网络难以实现的规模性能。

Self-service 网络 networks

Self-service网络主要支持一般(非特权)project在不涉及管理员的情况下管理网络。这些网络是完全虚拟的,需要虚拟路由器提供与provider或外部网络(如 互联网)的交互。Self-service网络通常也为实例提供DHCP和metadata服务。

在大多数情况下,self-service网络使用覆层协议,如VXLAN或GRE,因为它们可以支持比使用VLAN标签(802.1q)进行二层分段更多的网络。此外,VLAN通常需要额外的物理网络基础设施的配置。

IPv4 self-service网络通常使用私有IP地址范围(RFC1918)并通过虚拟路由器上的源NAT与provider网络进行交互。浮动IP地址通过虚拟路由器上的目的NAT允许从provider网络访问实例。IPv6 self-service网络总是使用公共IP地址范围并通过带有静态路由的虚拟路由器与provider网络交互。

Networking服务使用三层代理实现路由器,三层代理通常至少驻留在一个网络节点。与为实例提供到物理网络基础设施的二层连接的provider网络不同,self-service网络必须穿越三层代理。因此,三层代理或网络节点的超额订阅或失败将影响使用它们的self-service网络和实例的数量。考虑实施一个或更多高可用性功能以增加self-service网络的冗余和性能。

用户为project内的连接创建project网络。默认情况下,它们是完全隔离的,不与其它project共享。OpenStack Networking支持以下类型的网络隔离和覆层技术。

Flat
所有实例都位于同一网络上,也可以与宿主机共享网络。不会发生VLAN标记或其它网络隔离。

VLAN
Networking允许用户创建多个provider或project网络,使用与物理网络中存在的VLAN相对应的VLAN ID(802.1q 标记)。这允许实例在整个环境中彼此通信。它们还可以与专用服务器,防火墙、负载均衡及其它位于相同二层VLAN上的网络基础设施通信。

GRE and VXLAN
VXLAN和GRE是创建覆层网络的封装协议,用于激活和控制计算实例之间的通信。网络路由器允许流量流出GRE或VXLAN project 网络。路由器还被需要来连接直连的project网络与外部网络,包括互联网。路由器通过使用浮动IP地址提供从外部网络直接连接实例的能力。

Project and provider networks

子网 Subnets

一段IP地址块和相关的配置状态。这个也被称为原生IPAM(IP地址管理),由Networking服务提供给project网络和provider网络。当网络上创建新端口时,子网负责为其分配IP地址。

子网池 Subnet pools

最终用户通常可以不受限的创建具有任何有效IP地址的子网。但是,在某些情况下,好的做法时由管理人员或projec预先定义一个地址池,从其中创建子网,并自动分配地址。

使用子网池可通过要求每个子网位于定义的池内,来限制哪些地址可以使用。它还防止地址重用或同一池中的两个子网重叠。

端口 Ports

端口是用于连接单个设备到虚拟网络的连接点,如虚拟服务器的NIC网卡。端口还描述了关联的网络配置,如要在端口上使用的MAC地址和IP地址。

路由器 Routers

路由器提供虚拟三层服务,如在self-service和provider网络间,或者属于同一个project的self-servie网络间的路由和NAT。Networking服务使用三层代理通过命名空间间管理路由器。

安全组 Security groups

安全组为虚拟防火墙规则提供一个容器,这些规则控制端口级别的ingress(inbound到实例)和egress(outbound到实例)网络流。安全组使用默认拒绝策略,仅包含允许特定流量的规则。每个端口可以引用一个或以附加方式引用多个安全组。防火墙驱动程序将安全组规则转换为底层报文过滤配置,如“iptables”。

每个project都包含一个允许所有egress流量和拒绝所有ingress流量的“default”安全组。你可以在“default”安全组中更改这些规则。如果你启动一个没有指定安全组的实例,此“default”安全组将自动应用于它。同样,如果在不指定安全组的情况下创建端口,则“default”安全组也将自动应用于它。

:

如果使用metadata服务,则删除默认egress规则会拒绝访问169.254.169.254上的TCP端口80,从而阻止实例获取元数据。

安全组规则是有状态的。因此,允许ingress的用于secure shell的TCP端口22自动创建允许返回egress流量的规则,以及涉及这些TCP连接的ICMP错误消息。

默认情况下,所有安全组都包含一系列基本(健全)和反欺诈规则,执行以下的操作:

  • 仅当使用实例端口的源MAC和IP地址时才允许放行egress流量,源MAC和IP组合在“allowed-address-pairs”中,或有效的MAC地址(端口或“allowed-address-pairs”)和关联的EUI64链路本地IPv6地址。

  • 允许使用实例端口的源MAC地址和未指定的IPv4地址(0.0.0.0),以放行egress方向的DHCP发送和请求报文。

  • 允许来自子网上的DHCP服务器的ingress方向的DHCP和DHCPv6响应报文,以便实例可以获取IP地址。

  • 拒绝egress方向的DHCP和DHCPv6响应报文,以防止实例作为DHCP(v6)服务器。

  • 允许ingress/egress方向的ICMPv6 MLD、邻居请求和邻居发现消息以便实例可以发现邻居并加入多播组。

  • 拒绝egress方向的ICMPv6路由器通告,以阻止实例作为IPv6路由器,为其它实例转发IPv6流量。

  • 允许egree方向的ICMPv6 MLD报告(v1和v2)和使用特定实例的源MAC地址和未指定的IPv6地址(::)的邻居请求。重复地址检测(DAD)依赖于这些信息。

  • 允许egress方向的来自实例端口的MAC地址和来自实例端口的“allowed-address-pairs“中的任何额外MAC地址的非IP流量。

虽然不是IP流量,但是安全组并不隐式地允许所有的ARP流量。独立的ARP过滤规则阻止实例使用ARP拦截另一个实例的流量。不能禁用或删除这些规则。

你可以禁用安全组,包括基本和反欺骗规则,通过将端口属性“port_security_enabled”设置为“False”。

扩展 Extensions

OpenStack Networking服务是可扩展的。有两个用途:它们允许在API中引入新功能不需要更改版本;它们允许引入厂商特定的商业功能。应用程序可以编程方式执行/extensions uri的GET请求获得可用的扩展列表。注意,这是一个版本化的请求;即是,一个API版本中可用的扩展可能在另一个版本不可用。

DHCP

可选的DHCP服务为provider和self-service网络上的实例管理IP地址。Networking服务使用管理“qdhcp”命名空间的代理和“dnsmasq”服务实现DHCP服务。

Metadata

可选的metadata服务为实例提供API获取metadata,如SSH秘钥.

服务和组件架构

Server

  • 提供API,管理数据库等

Plug-ins

  • 管理代理

Agents

  • 提供到实例的 layer 2/3 连通性

  • 处理物理-虚拟网络转换

  • 处理 metadata, etc.

二层 (以太网 和 交换)

  • Linux Bridge

  • OVS

Layer 3 (IP 和路由)

  • L3

  • DHCP

杂项

  • Metadata

Services

路由服务

VPNaaS

Virtual Private Network-as-a-Service (VPNaaS) 是提供VPN特性的Neutron扩展.

LBaaS

负载均衡即服务(Load-Balancer-as-a-Service,LBAAS)API初始化和配置负载平衡器。参考实现基于HAProxy软件负载均衡器。

FWaaS

Firewall-as-a-Service(FWaas)API是一个实验性的API,使早期采用者和厂商能够测试其网络实现。

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值