[云计算]OpenStack - Neutron

2023-05-16

Neutron在OpenStack中的位置

可以为虚拟机或者 OpenStack 组件提供网络服务,(由 Nova-network 独立出来的)随着需承载业务的能力的增长作为 Nova 子组件无法满足。

过程:neutron-server 接收网络请求,会将其记录到 DB 中,调用不同的Agent,Agent 通过不同的驱动实现网络服务。

Neutron 架构

网络结构功能
Management Network提供OpenStack组件间的内部通信,该网络内的IP地址只有数据中心内部可达。
Data Network提供云内部VM间的数据通信,该网络内的IP地址取决于使用的网络插件程序。
External Network提供VM与Internet的通信,Internet上的任何人都可以访问该网络内的IP地址。
API Network为租户提供包括Networking API在内的所有OpenStack API,可被Internet上任何人访问。 与External Network基本一致,甚至可以创建一个external network子网作为该网络。

Neutron 组件

模块功能一般部署位置
Neutron-server & plugin接收REST请求,向keystone鉴权,与数据库交互,提供API功能控制节点
Neutron databaseNeutron数据库,管理数据控制节点
L2 agent(ovs-agent)连接网络端口,处理数据包计算节点
Dhcp-agent提供DHCP服务网络节点
L3-agent为客户机访问外部网络提供3层转发服务网络节点
RPC(Message Queue)消息队列,用于Plugin与agent之间的通信所有节点
  • Neutron本身是一套开放的SDN框架和接口,实现允许第三方的SDN接入OpenStack。

  • Neutron同时他有一套默认的SDN实现(ML2等)。

Neutron Server机制

  • Neutron Server包含两个部分:Neutron-common、Plugin。

  • API —— Core

    • 插件功能的最小集合,即每个插件都必须有的功能,也就是对网络、子网、端口的CRUD操作。

  • API —— API Extensions

    • 针对具体插件实现,租户可以利用这些插件的独特功能,如ACL、QoS。

  • Plugin

    • 存储当前逻辑网络的配置信息,判断和存储逻辑网络和物理网络的对应关系(比如为一个逻辑网络选择一个vlan),并与一种或多种交换机通信来实现这种对应关系(一般通过宿主机上的插件代理来实现这种操作,或者远程登录到交换机上来配置)。

Neutron Server - ML2/L2

  • ML2插件:通过TypeManager和MechanismManager实现二层的互通

  • ML2:Module Layer 2

  • 好处:

    • 抽象出Plugin中共性代码(例如:DB),减少厂家新增和维护Plugin的工作量,仅需实现driver即可。

    • 解决原结构中只支持一个Plugin的问题,同时支持多个driver。

    • 通过l2 population减少overlay网络广播流量。

    • 实现异构部署:每个hypervisor node可使用不同的driver

每天都有技术公开课分享【免费订阅,永久学习】学习地址: 

C/C++Linux服务器开发/后台架构师【学习视频教程】

LinuxC/C++服务器开发/架构师 面试题、学习资料、教学视频和学习路线图(资料包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis、MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等),或点击这里加qun免费领取,关注我持续更新哦! ! 

 【免费订阅,永久学习】学习地址: 

 Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

Neutron L2 资源对象

网络虚拟化实现原理

  • 在Linux-br上配置iptable规则,实现安全组。

  • 在OVS网桥上配置流表规则,为不同端口配置不同的Vlan Tag,实现VLAN隔离。

  • 为网卡命名,Neutron将虚拟网络的流量到处网卡。

Neutron服务与管理对象

  • Neutron是一种虚拟网络服务,为OpenStack计算提供网络连通和寻址服务。

  • Neutron管理对网络进行了抽象,有如下管理对象:

    • Network

    • Subnet

    • Port

    • Router

    • Floating IP

Neutron对象 - Network

  • 基本资源对象:

  • Network:

    • 一个隔离的虚拟二层广播域,所有报文从虚拟机发出会被添加一个VLAN Tag,进入虚拟机会剥掉Vlan Tag

    • 可以看作一个Virtual Switch或Logical Switch

  • 重要属性:

    • tenant_id:标识一个租户,不同的租户间网络隔离,不允许相互访问

  • router:external:可以从外部访问该网络

    • provider:physical_network:虚拟网络上的流量将映射到物理网络,名称在安装部署时指定

    • provider:network_type:表示物理网络支持VLAN隔离的

    • provider:segmentation_id:表示VLAN ID

Neutron对象 - Subnet

  • 基本资源对象:

  • Subnet:

    • 包含IP地址段(CIDR)

    • 必须与Network关联

    • VM从CIDR取得IP,也可指定allocation_pool作为IP地址资源池

    • 可选属性:DNS,网关IP,静态路由等

Neutron对象 - Port

  • 基本资源对象:

  • Port:

    • 逻辑网络交换机上的虚拟交换端口

    • VM通过逻辑端口到附着到network上

    • 定义了指派到该网络上虚拟机端口的IP地址和Mac地址等

    • 通过vnic_type区分网卡类型:normal(ovs)、direct(sr-iov)

Neutron对象 - Security Group

  • 扩展资源对象:

  • Security Group:

    • 关联到Port对象

    • 将多个虚拟机端口组成一个集合,流量符合自定义规则的允许通过

  • Security group 安全组

    • Security Group主要是通过Iptables实现,能够对进出的流量按照协议、端口进行限制,能防止不知名协议,端口流量的攻击;

    • 安全组由L2 agent实现,如neutron-openvswitch-agent会将安全组规则转换成IPTables规则,一般发生在计算节点;

    • 在Compute节点上引入了qbr*这样的Linux传统bridge(iptables规则目前无法加载到直接挂在到ovs的tap设备上)

Neutron模块 - 安全组

Neutron模块 - OVS-agent

  • Neutron-openvswitch-agent

    • 网桥管理:br-int、brcps、br-tun等

    • 端口管理:监控网桥上端口,为端口打tag,下发流表等

    • 刷新安全组

    • QoS设置

  • 主线程,主要处理rpc_loop(1个);处理打tag,加流表等ovs-agent主要操作

    • 上报心跳线程(1个)

    • rpc消息处理线程(多个):主要处理fdb消息

    • 监听子进程输出线程(2个):判断是否有新增或删除端口

Neutron模块 - DHCP-agent

  • 每一个Network对象对应一个DHCP服务(即一个命名空间)

  • Neutron在Network上创建DHCP端口

  • 在命名空间内,使用Dnsmasq监听DHCP端口

  • Neutron配置Dnsmasq配置文件,将mac、IP、路由、网关等信息保存

  • Neutron-dhcp-agent

    • 用于创建和管理虚拟DHCP Server,每个虚拟网络都会有一个DHCP Server,这个DHCP Server为这个虚拟网络里面的虚拟机提供IP。

    • 现在FS版本分集中式DHCP和分布式DHCP两种。

  • Neutron-server负责处理外部的REST API请求,将数据刷新到DB中。

  • 当操作network、subnet、port等对象时,neutron-server会发生rpc消息给dhcp-agent,通知其做进一步处理。

  • dhcp-agent接收到rpc消息后,调用driver进行实施,包括创建dhcp port、命名空间、tap设备、路由信息,并启动dnsmasq进程提供ip地址分配服务。

分布式DHCP实现背景:

  • 级联层与被级联层的逻辑与物理分离。

  • 网络节点命名空间过多(性能问题)

集中式DHCP与分布式DHCP比较:

  • 集中式DHCP中network下的mac,ip信息在几个集中式的dhcp-agent下全量存有; 分布式条件下dhcp-agent仅存有network下在当前host的mac,ip对应关系。

  • 集中式DHCP的neutron port与tap口一一对应; 分布式条件下则为一对多。

Neutron模块 - Metadata

  • Metadata:用于获取客户自己定义、我们又无法直接传送给虚拟机的数据,目前定义在DHCP上,每个网络有一个metadata,数据只走二层,一个网络有一个metadata_proxy,一个主机有一个metadata_agent,meta_proxy由dhcp_agent拉起

  • 为租户虚拟机获取自己定义数据提供网络通道。

  • 提供两种方式:DHCP和Router。

Neutron L2 组网及二层特性

Neutron 二层组网

Neutron模块 - EVS

  • 用户态EVS

  • NFV场景下的高速虚拟软交换

  • 借助DPDK高速数据通道技术

  • 使用多线程转发、vhost-user和大页技术,通过减少内核切换和报文拷贝,提高软件交换能力

Neutron VLAN网络隔离

  • 物理网络使用Vlan隔离

  • Neutron通过配置vSwitch,将一个虚拟网络映射到一个Vlan网络

  • 虚拟机的报文,经过vSwitch,添加上Vlan Tag,发送到物理网络或vSwitch内部交换,到达虚拟网络隔离的效果

端口QoS

  • 网络QoS特性提供虚拟网卡和系统接口的流量整形和带宽优先级控制

  • 保证网络平面和用户的虚拟机网络通信质量的场景

Neutron模块 - ServiceChain

  • 当网络流量按照业务逻辑所要求的既定的顺序,经过既定的业务点,这就是服务链(Service Chain)。ServiceChain技术是一种引导网络流量次序通过多个业务处理节点的转发技术。

  • evs-agent的处理逻辑:

    • 读取配置文件获取本接口上的ebr-int网桥,监控并判断add delete update的端口,并对add delete update的端口进行处理

  • sc-agent的处理逻辑:

    • 接收portflow信息,根据portflow中的端口信息判断出该端口在哪个evs类型的网桥上,并对网桥进行监控,如果端口存在则对其下发流表,并将下发的结果rpc通知给server

Neutron模块 - SRIOV

  • SR-IOV直通网络是和OVS网络独立的通信模型,借助直通网卡虚拟出的PCI设备直接挂载到虚拟机,虚拟机利用这种通信方式可以达到硬件网卡的性能,所以叫硬直通,相对应的也有软直通技术,如netmap。

Neutron部署模型

  • Neutron部署模型

    • Controller

      • neutron-server

    • DHCP

      • neutron-dhcp-agent

      • neutron-metadata-agent

    • Compute

      • neutron-openvswitch-agent

      • neutron-servicechain-agent

      • neutron-evs-agent

      • neutron-sriov-nic-agent

      • neutron-netmap-nic-agent

    • Router

      • neutron-l3-agent

      • neutron-metering-agent

  • CPS在FS版本中承担服务安装部署的任务。

Neutron L2 典型操作

1. 创建网络

租户创建一个network


neutron  net-create <net-name> --provider:network_type=vlan --provider:physical_network=physnet1   

2. 创建子网

租户通过指定网络关联一个子网,可以关联多个子网


neutron subnet-create < net-name > 100.100.100.0/24(CIDR)  

3. 创建虚拟机并附着网络

租户启动虚拟机并且指定一个vNIC连接到网络。该步骤有两种方式 (1)租户创建port,租户在创建虚拟机时指定network和port


nova boot --image <image_id> --flavor 1 --nic net-id=<net_id> <VM_name>  

(2)租户在创建虚拟机是仅指定network, Nova动态创建port


nova boot --image <image_id> --flavor 1 --nic port-id=<port_id> <VM_name>  

4. 删除虚拟机

租户删除虚拟机,Nova连接到Neutron并删除端口,被分配的IP地址回收到有效IP地址池。


nova delete <vm-id>  

5. 删除端口

如果是租户创建了port,则需要删除该网络上的所有端口。虚拟机删除后,对应的端口也已经删除。


neutron port-delete <port_id>  

6. 删除网络

租户删除网络,Neutron同时会自动删除关联在该网络上的子网。


neutron net-delete <net_id>  

Neutron L3 基础概念

  • Neutron L3 作用:

    • L3即vRouter

    • DC内部VM通信:东西向流量,连接租户同一network或不同network之间的子网。

    • VM与外部通信:南北向流量,连接内外网(Float IP/SNAT)。

  • vRouter分为两种模式:集中式、分布式

    • 集中式:指的是vRouter实例化在network节点,compute节点不实例化vRouter,当两个不同子网的VM通信的时候,流量需要在network节点上的vRouter做一次三层转发。

    • 分布式:指的是vRouter实例化在所有compute节点,三层转发的功能在本节点的vRouter实例中完成,从而只需要走一次隧道。

Neutron L3 - 集中式路由

集中式路由——概念

  • 集中式路由只和网络节点有关系,Router所在节点即为网络节点,只有网络节点上部署L3-agent,实现3层通信的功能。

  • 所有3层流量必须经过网络节点。

集中式路由——流量走向(东西向)

集中式路由——流量走向(南北向)

Neutron L3 - 分布式路由

分布式路由——概念

  • 出现背景

    • 网络节点的可靠性,一旦网络节点挂了,那么三层功能就无法使用了。

    • 网络节点的性能瓶颈,所有的三层流量都经过网络节点,性能问题。

  • 设计模型

    • vRouter和计算节点(L3-agent)有绑定关系,一旦vRouter下有虚拟机创建在计算节点,则添加vRouter和该计算节点的绑定关系,使该虚拟机能够进行三层通信。

分布式路由——流量走向(同节点东西向)

分布式路由——流量走向(跨节点东西向)

分布式路由——流量走向(南北向)

Neutron L3 - 浮动IP

浮动IP——概念

  • NAT原理(SNAT/DNAT)

    • 将私有地址和公网地址进行一个转换,可以解决IP地址不足的问题,还能避免来自外网的攻击,隐藏和保护内部的虚拟机。

  • 浮动IP原理

    • 利用NAT原理给虚拟机配置一个外网IP,虚拟机访问外网时将源地址转换成该外网IP,外网访问该外网IP时转换成虚拟机IP,实现通信。

访问外网: 1.绑定弹性IP 2.启动SNAT,路由器开启SNAT

浮动IP——公有云场景

为何公有云使用NGFW完成Float IP特性(两次NAT)?:

  1. 需要借用专业防火墙设备提升Float IP通信的性能和转换能力。

  2. 在使用Float IP的同时,可以使用NGFW的防火墙特性。

原文链接: https://www.cnblogs.com/Skybiubiu/p/14719271.html  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[云计算]OpenStack - Neutron 的相关文章

随机推荐

  • 基于51单片机的数字气压计

    1 概述 本设计是基于MPX4115的数字气压计 xff0c 硬件处理电路为大气压传感器模拟信号的采集 转换 处理和显示 xff0c 并根据相应的软件需求设计控制程序 2 硬件设计 xff08 1 xff09 硬件总体框图 气压计的硬件主要
  • 一站式开源分布式集群云真机测试平台Sonic——基于Docker方式部署sonic前后端(体验版)

    Sonic xff1a 一站式开源分布式集群云真机测试平台 xff0c 致力服务于中小企业的客户端UI测试 xff0c 永久免费 sonic官网 xff1a Sonic 开源云真机测试平台 开源不易 xff0c 请大家多多支持作者 xff0
  • Policy Gradient Algorithms

    Policy Gradient Algorithms 2019 10 02 17 37 47 This blog is from https lilianweng github io lil log 2018 04 08 policy gr
  • 基于51单片机的多功能八路抢答器

    1 功能介绍 多功能八路抢答器是基于51单片机来设计的 xff0c 除了可以实现最基本功能 8路抢答外 xff0c 还具有自动处理犯规选手 xff0c 抢答时间调整 xff0c 还可以进行答题 xff0c 计分 xff0c 并且可以查询或修
  • 基于51单片机的贪吃蛇游戏

    1 简介 本设计为一款贪吃蛇游戏 xff0c 显示器采用8 8点阵 xff0c 主控制器采用51单片机 xff0c 并通过按键实现对游戏的操作 2 贪吃蛇算法介绍 吃蛇游戏算法的实现 xff0c 即如何通过液晶屏显示蛇的移动 其实蛇看似移动
  • 基于51单片机的便携式输液点滴控制报警器

    1 简介 基于单片机输液点滴控制报警器组成 该系统主要由光电传感器检测电路 键盘 数码管显示 报警提示电路 液滴流速监测电路 电机驱动电路等组成 利用光电感器测量出液滴流速 xff0c 并将将信息返回给单片机 xff0c 单片机对流速信号与
  • PCB加工文件—Gerber文件的导出

    当我们使用软件将一个板卡的PCB图纸设计好后 xff0c 想到PCB厂家制作成电路板 简单的 xff0c 你可以把自己的设置PCB文件 PcbDoc 直接发给厂家加工 xff0c 但是有些PCB厂家会要求你提供Gerber文件 但是这个Ge
  • AD13如何导出坐标文件

    在电子行业加工生产大批量的电路板 xff0c 都是利用贴片机进行生产和制造 xff0c 在生产之前 xff0c 我们需要提供PCB的坐标文件给贴片厂家 xff0c 这样厂家才能确定每个元器件应该贴在PCB板上什么位置 所以下面我们就来讲一下
  • 基于PID算法的水箱温度控制系统

    1 概述 本设计为基于STC89C52单片机的智能水温控制系统 xff0c 控制对象以500mL陶瓷水箱为容器 xff0c 并使用PID控制算法来调整水箱中500ml纯净水的温度 水温可以在一定范围内人为设定 xff0c 并能实现在下限温度
  • 基于51单片机的数字电流电压表

    1 简述 本文介绍了基于STC89C52单片机为核心 xff0c 分别以ACS712 05芯片和串联分压电路为为电流检测和电压检测电路 xff0c 并通过AD0809数模转换芯片对电压信号进行采集和转换 xff0c 传输给单片机进行处理 x
  • OpenStack快速入门

    一 登陆OpenStack 查看用户名和密码 查看文件 用户名admin和demo 登录 页面显示 修改密码 点击设置 gt 更改密码 创建和操作虚拟机实例 xff08 一 xff09 创建虚拟机实的前提 创建虚拟机实例的前提条件 1 实例
  • vnc view远程登录Linux

    转自http blog sina com cn s blog 49c306b201011had html 尽管我们可以使用 SSH连接远程通过字符界面来操作Linux xff0c 但是对于更多熟悉图形人来说是很不方便的 xff0c 因此开启
  • 【Python基础】之装饰器

    这是我初次接触装饰器 xff0c 先从初学者的角度介绍装饰器 xff0c 关于装饰器的应用场景举例 xff0c 后面再补充 1 装饰器的作用 装饰器可以让一个函数在不做任何变动的情况下新增额外的功能 如下代码 xff0c func name
  • Sonic simple服务中设备图片、测试用例运行异常图片、失败录像路径映射配置

    使用docker ps查看容器信息 使用docker exec it a2d69c075875 sh进入容器 xff0c 并查看容器文件 相关文件夹说明 xff1a imageFiles xff1a 测试用例运行截图信息 keepFiles
  • ubuntu vmware 虚拟网络编辑 ping 外网不通问题

    内网环境在192 168 1 1 网段 虚拟机想要ssh 接入 xff0c 并且可以上网 使用桥接方式和NAT方式都可以 互ping xff0c 但是上网遇到了问题 NAT解决方法如下 xff0c 桥接方式随后再研究 NAT 模式下子网IP
  • 深入解读相机矩阵

    在这片文章里 xff0c 你将了解到以下内容 xff1a 1 相机的针孔模型 2 相机矩阵的概念 3 相机内参的含义 4 相机外参的含义 1 相机针孔模型 针孔模型是相机成像的基础模型 xff0c 是理解后续相机矩阵内容的基础 下图描述了基
  • python 循环输入,用户输入回车结束

    输入的回车会被视为空字符 xff0c 可以用a 61 61 39 39 来作为结束循环的标志 n 61 while 1 a 61 input if a 61 61 39 39 break else n append a print n
  • OpenvSwitch 子项目 OVN 功能介绍(一)

    众所周知 xff0c OpenvSwitch 以其丰富的功能和不错的性能 xff0c 已经成为 Openstack 部署中最受欢迎的虚拟交换机 由于 Openstack Neutron 的架构引入了一些性能问题 xff0c 比如 neutr
  • SDN网络中的转发数据和数据传输

    数据驱动的网络 从数据驱动的角度来看网络 xff0c 会发现一张现实中的网络存在着各种数据 设计和管理一张网络 xff0c 主要是设计数据 xff0c 存储数据 xff0c 管理数据和分析数据 网络数据的规模 复杂度和变化速度 xff0c
  • [云计算]OpenStack - Neutron

    Neutron在OpenStack中的位置 可以为虚拟机或者 OpenStack 组件提供网络服务 xff0c xff08 由 Nova network 独立出来的 xff09 随着需承载业务的能力的增长作为 Nova 子组件无法满足 过程