Neutron


Neutron 的设计目标是实现“网络即服务(Networking as a Service)。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术

OpenStack 网络服务,现已由之前的 Quantum 改名为 Neutron。Neutron 是 OpenStack 核心项目之一,提供云计算环境下的虚拟网络功能。

OpenStack Havana 版本的 Release Note 描述了 Neutron 新增加的功能:

  1. Multi-Vendor-Support:同时支持多种物理网络类型,支持 Linux Bridge、 Hyper-V 和 OVS bridge 计算节点共存;

  2. Neutron-Fwaas:支持防火墙服务;

  3. VPNaas:支持节点间 VPN 服务;

  4. More-Vendors:更多的网络设备支持和开源 SDN 实现完善和提高,新增 加了 ML2 (The Modular Layer2) 插件

 

Neutron 网络创建过程

Neutron 网络目的是为 OpenStack 云更灵活地划分物理网络,在多租户环境下 提供给每个租户独立的网络环境。另外,Neutron 提供 API 来实现这种目标。 Neutron 中用户可以创建自己的网络对象,如果要和物理环境下的概念映射的话, 这个网络对象相当于一个巨大的交换机,可以拥有无限多个动态可创建和销毁的 虚拟端口

  1. 首先管理员拿到一组可以在互联网上寻址的 IP 地址,并且创建一个外部 网络和子网

  2. 租户创建一个网络和子网

  3. 租户创建一个路由器并且连接租户子网和外部网络

  4. 租户创建虚拟机

 

OpenStack 网络类型

一个标准的 OpenStack 网络设置有 4 个不同的物理数据中心网络:

  • 管理网络:用于 OpenStack 各组件之间的内部通信

  • 数据网络:用于云部署中虚拟数据之间的通信

  • 外部网络:公共网络,外部或 internet 可以访问的网络

  • API 网络:暴露所有的 OpenStack APIs,包括 OpenStack 网络 API 给租户们

 

Neutron 服务网络管理的三种模式

Flat 模式

  • Flat 模式和 FlatDHCP 模式其实区别不大,都是基于网桥网络,只是 FLat 模式 需要管理员手动配置(包括配置网桥和外部的 DHCP 设备)

FlatDHCP 模式

  • 这种模式下与 Flat 模式不同的地方在于有一个 DHCP 进程,每一个运行 nova-network 进程的节点(网络控制节点/nove-network 主机)就是一个单独的 网络。Nova 会在 nova-network 主机建立网桥(默认名称 br100,配置项 flat_network_bridge=br100),并给该网桥指定该网络的网关 IP,同时 Nova 在网 桥处起一个 DHCP 进程,最后,会建立 iptables 规则(SNAT/DNAT)使虚拟机 能够与外界通信,同时与一个 metadata 服务器通信以取得 cloud 内的信息。 计算节点负责创建对应节点的网桥,此时的计算节点网卡可以不需要 IP 地址, 因为网桥把虚拟机与 nove-network 主机连接在一个逻辑网络内。虚拟机启动时 会发送 dhcpdiscover 以获取 IP 地址。虚拟机通往外界的数据都要通过 nova-network 主机,DHCP 在网桥处监听,分配 fixed_range 指定的 IP 段

    这种部署方式的缺点----单节点故障、无二层隔离(即所有的虚拟机都在一个广播域)

VLAN 模式

  • VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN 是一种将局 域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术

 

Neutron基本功能

  • 提供稳定的负载均衡 API

  • 支持端到端的 IPSec VPN

  • 面向租户的防火墙服务

  • 提供一个新的插件 ML2,

 

Neutron重要几部分组成

  • Neutron Server : 这 一 部 分 包 含 守 护 进 程 neutron-server 和各种插件 neutron-*-plugin, 它们 既可 以安 装在 控制 节点 也可 以安 装在 网络 节点。 neutron-server 提供 API 接口,并把对 API 的调用请求传给已经配置好的插件进行 后续处理。插件需要访问数据库来维护各种配置数据和对应关系,例如路由器、 网络、子网、端口、浮动 IP、安全组等等

  • 插件代理 (Plugin Agent): 虚拟网络上的数据包的处理则是由这些插件代理来 完成的。名字为 neutron-*-agent。在每个计算节点和网络节点上运行。一般来说 你选择了什么插件,就需要选择相应的代理。代理与 Neutron Server 及其插件的 交互就通过消息队列来支持

  • DHCP 代理(DHCP Agent): 名字为 neutron-dhcp-agent,为各个租户网络提供 DHCP 服务,部署在网络节点上,各个插件也是使用这一个代理

  • 3 层代理 (L3 Agent): 名字为 neutron-l3-agent, 为客户机访问外部网络提供 3 层转发服务。也部署在网络节点上

但但最重要的是API和插件

API 又分为两个部分

  • API Core:暂且称之为 API 核。它可以看做是插件功能的最小集合,即每个插件 都必须有的功能,也就是对网络、子网和端口的查询、加删和更新操作等

  • API Extensions:暂称之为 API 扩展。它们一般是针对具体插件实现的,这样租户 就可以利用这些插件独特的功能,比方说访问控制(ACL)和 QoS

插件

  • 存储当前逻辑网络的配置信息,这就需要一个数据库,比方说 MySQL

  • 判断和存储逻辑网络和物理网络的对应关系,比方说为一个逻辑网络选择一个 vlan

  • 与一种或多种交换机通信来实现这种对应关系。这一般通过宿主机上的插件代 理来实现这种操作,或者远程登录到交换机上来配置

 

Neutron 的配置应该说是比 Openstack 的其他组件复杂一点。 常用的配置模型有两种,把 Neutron Server 放在控制节点上,DHCP 和 L3 代理放 在网络节点上

 

网络管理

查看网络列表和网络详细信息

[root@controller ~]# neutron net-list 
[root@controller ~]# neutron net-show  

[root@controller ~]# openstack network list
[root@controller ~]# openstack network show

 

创建外部网络

[root@controller ~]# openstack network create –share –external –provider-physical-network provider –provider-network-type flat Network
--provider-physical-network  指定的是物理网段 
flat 指定类型 

[root@controller ~]# neutron  net-create  --provider:network_type=flat --provider:physical_network=provider Network

 

创建一个内部网络

[root@controller ~]# openstack network create insernet

[root@controller ~]# neutron net-create insernet 

 

删除网络

[root@controller ~]# openstack network delete insernet 
[root@controller
~]# neutron net-delete insernet

 

子网管理

创建子网

[root@controller ~]# openstack subnet create subnet1 --network Network --subnet-range 192.168.100.0/24 --gateway=192.168.100.1 --dns 114.114.114.114

[root@controller ~]#neutron subnet-create  --gateway 192.168.100.1 --dns 114.114.114.114 --name subnet1 Network 192.168.100.0/24

 

更新子网

[root@controller ~]# neutron subnet-update [参数] subnet1 

 

删除子网

[root@controller ~]# openstack subnet delete subnet1

[root@controller ~]# neutron subnet-delete subnet1 

 

路由管理

查看路由列表和详细信息

[root@controller ~]# openstack router list 

[root@controller ~]# neutron router-list 

 

创建路由器

[root@controller ~]# openstack router create router1 

[root@controller ~]# neutron router-create router1

 

添加接口

[root@controller ~]#openstack router add subnet router subnet1                 #连接内网子网接口
[root@controller ~]#openstack router set router –-external-gateway Network     #连接外网接口(不是子网)
[root@controller ~]#openstack port list -–router router                        #查看port端口 ping网关

[root@controller ~]# neutron router-gateway-set router1 Network 
[root@controller ~]# neutron router-interface-add router1 subnet1 

 

删除网关

[root@controller ~]# neutron router-gateway-clear router1 Network 

 

端口管理

查看端口的列表和详细信息

[root@controller ~]# neutron port-list 

[root@controller ~]# neutron port-show <port_id>

 

创建端口

[root@controller ~]# neutron port-create [--fixed-ip ip_address=IP ] <network>

 

删除端口

[root@controller ~]#neutron port-delete <port>

 

浮动IP

创建浮动IP

[root@controller ~]# openstack floating ip create 外网网卡id

 

查询port

[root@controller ~]# openstack port list

[root@controller ~]# openstack floating ip set –-port 主机ip的端口id –-fixed-ip-address 内网ip 外网ip


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM