【星海出品】SDN neutron (四) 流分析

news2025/1/23 14:19:29

在这里插入图片描述

Neutron框架之流分析

1.控制端neutron-server通过wsgi接收北向REST API请求,neutron-plugin通过rpc与设备端进行南向通信。
2.设备端agent则向上通过rpc与控制端进行通信,向下则直接在本地对网络设备进行配置。
3.Neutron-agent的实现很多,彼此之间也没什么共性的地方,下面选取比较具有代表性的ovs-neutron-agent的实现进行简单的介绍。
在这里插入图片描述
在这里插入图片描述

Nova-compute向neutron-server请求虚拟机对应的Port资源。
Neutron-server根据neutron-database生成Port资源。
Neutron-server通知Dhcp agent虚拟机信息。
Dhcp agent将虚拟机信息通知给dhcp server。
虚拟机接入并启动。
虚拟机从dhcp server处获得IP地址。
在这里插入图片描述

(1)qbr:Linux Bridge网桥 Bridge 设备是基于内核实现的二层数据交换设备
(2)br-int:OVS网桥
(3)br-tun:OVS隧道网桥
(4)VXLAN封装:网络类型的转变
在这里插入图片描述

网络节点部署了Router、DHCP Server服务,网桥连接物理网卡。
(1)Router:路由转发
(2)DHCP: 提供DNS、DHCP等服务。
(3)br-ex: 连接物理网口,连接外网
在这里插入图片描述
在这里插入图片描述
计算节点的 br-int 上,Neutron 为每个虚机连接 OVS 的 access port 分配了内部的 VLAN Tag。这种 Tag 限制了网络流量只能在 Tenant Network 之内。
计算节点的 br-tun 上,Neutron 将内部的 VLAN Tag 转化为 VXLAN Tunnel ID,然后转发到网络节点。
网络节点的 br-tun 上,Neutron 将 VXLAN Tunnel ID 转发了一一对应的 内部 VLAN Tag,使得 网络流被不同的服务处理。
网络节点的 br-int 上连接的 DHCP 和 L3 agent 使用 Linux Network Namespace 进行隔离。

patch-port ovs里的不同bridge之间可以通过patch port进行连接,类似于linux的veth接口。成对出现。
TAP 设备是一种工作在二层协议的点对点网络设备,每一个 TAP 设备都有一个对应的 Linux 字符设备,用户程序可以通过对字符设备的读写操作,完成与 Linux 内核网络协议栈的数据交换工作,在虚拟化环境中经常被模拟器使用。
Neutron利用网络控制节点上的Network Namespace中的iptables,实现了进出租户网络的网络防火墙,从而保证了进出租户网络的安全性
qvo 为了实现IPtables 建立了一层中间层 qbr 用网络空间实现, br-int端为qvo
qvb 为了实现IPtables 建立了一层中间层 qbr 用网络空间实现, 近tap端为qvb
在这里插入图片描述
Vxlan的模型和vlan的模型十分相似,从表面上来看,他俩相比只有一个不同,vlan对应的是ethx网桥,而vxlan对应的是tun网桥。
在这里ethx和tun都是ovs网桥,所以说两者的差别不是实现组件的差别而是组件所执行功能的差别,ethx执行的是普通二层交换机的功能,tun执行的是vxlan中的vtep的功能,图中俩tun对应的接口ip就是vxlan的隧道终结点ip。所以说虚机的数据包在到达tun网桥之前是打的是vlan tag,而到达tun之后会发生网络类型的转换,从vlan封装为vxlan然后到达网络节点。而之前的vlan类型的网络,虚机数据包的类型一直都是vlan。

VTEP是直接与终端连接的设备,负责原始以太报文的VXLAN封装和解封装。

物理的二层与虚拟的二层(VLAN模式)
(1)物理的二层指的是:物理网络是二层网络,基于以太网协议的广播方式进行通信。
(2)虚拟的二层指的是:Neutron实现的虚拟网络也是二层网络(openstack的vm机所用的网络必须是大二层),也是基于以太网协议的广播方式进行通信,但毫无疑问的是该虚拟网络是依赖于物理的二层网络。
(3)物理二层+虚拟二层的典型代表:VLAN网络模式。

物理的三层与虚拟的二层(GRE模式与VXLAN模式)
(1)物理三层指的是:物理网络是三层网络,基于IP路由的方式进行通信。
(2)虚拟的二层指的是:Neutron实现的虚拟网络仍然是二层网络(openstack的vm机所用的网络必须是大二层),仍然是基于以太网的广播方式进行通信,但毫无疑问的是该虚拟机网络是依赖于物理的三层网络,这点有点类似于VPN的概念,根本原理就是将私网的包封装起来,最终打上隧道的ip地址传输。
(3)物理三层+虚拟二层的典型代表:GRE模式与VXLAN模式。

在这里插入图片描述
关于上图,整体的理解为:

1、首先通过dashboard或命令行CLI的形式获取用户登录信息,调用keystone的restful api去做身份验证

2、keystone对用户登录信息进行校验,然后会产生token并返回给对应的认证请求

3、然后携带着这个token通过restful api向nova-api发送一个boot instance请求

4、nova-api接受请求后会先向keystone发送token校验和权限认证请求

5、keystone校验token是否有效,并将结果返回给nova-api

6、通过认证之后nova-api会向nova-database进行通信,为新实例创建一个数据库条目

7、nova-api调用rabbit MQ,向nova-scheduler请求是否有创建虚机的资源主机

8、nova-scheduler进程监听消息队列,获取到nova-api的请求

9、nova-scheduler与nova-database交互,获取集群中计算节点的信息和状态,并通过调度算法计算出合适的计算节点(host)

10、对于符合虚拟机创建的主机,nova-scheduler更新数据库中的虚机对应的物理主机信息

11、nova-scheduler通过rpc调用向找到的那个host上的nova-compute发送创建虚机的请求,目标主机上的nova-compute会从对应的消息队列中获取到创建虚机的请求

12、nova-compute通过rpc调用向nova-conductor发送请求创建虚机的信息,如host ID,flavor等;nova-conductor从消息队列中获取到nova-compute的请求

13、nova-conductor与nova-database交互,查询到虚机的信息

14、nova-conductor把信息通过消息的形式发送到消息队列中,nova-compute从消息队列中获取到虚机信息

15、nova-compute会向glance-api请求获取虚机创建所需的镜像

16、glance-api会先向keystone验证token,并返回验证结果

17、验证通过后,nova-compute获得image数据

18、nova-compute调用neutron api,传入token,去分配和配置网络,比如虚机的IP地址等

19、neutron-server向keystone验证token是否有效,并返回结果

20、验证通过之后,nova-compute获得虚机网络信息

21、nova-compute请求cinder-api获取虚机所需要的持久化存储信息

22、cinder-api向keystone验证token是否有效,并返回结果

23、验证通过之后,nova-compute获得虚机的块存储信息

24、nova-compute根据instance信息调用配置的虚拟化驱动来创建虚拟机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1209759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络中的量化与蒸馏

本文将深入研究深度学习中精简模型的技术:量化和蒸馏 深度学习模型,特别是那些具有大量参数的模型,在资源受限环境中的部署几乎是不可能的。所以就出现了两种流行的技术,量化和蒸馏,它们都是可以使模型更加轻量级&…

Kubernetes介绍以及Kubernetes快速部署

Kubernetes介绍以及Kubernetes快速部署 文章目录 Kubernetes介绍以及Kubernetes快速部署1.Kubernetes介绍:1.1.Kubernetes简介1.2. Kubernetes应用部署方式演变1.3.Kubernetes功能1.4.Kubernetes工作原理1.5.工作流程1.6.优缺点 2.Kubernetes环境部署2.1.环境说明2.…

Leetcode179. 最大数

Every day a Leetcode 题目来源:179. 最大数 解法1:贪心 对于数组 nums 中的任意两个数 a 和 b,我们将其转换为字符串后,如果 to_string(a) to_string(b) > to_string(b) to_string(a),说明 a 应该放在 b 的前…

arcgis--填充面域空洞

方法一:使用【编辑器】-【合并工具】进行填充。首选需要在相同图层中构造一个填充空洞的面域,然后利用【合并】工具进行最后填充。 打开一幅含有空洞的矢量数据,如下: 打开【开始编辑】-【构造工具】-【面】进行覆盖空洞的面域的…

k8s_base

应用程序在服务器上部署方式的演变,互联网发展到现在为止 应用程序在服务器上部署方式 历经了3个时代1. 传统部署 优点简单 缺点就是操作系统的资源是有限制的,比如说操作系统的磁盘,内存 比如说我8G,部署了3个应用程序,当有一天…

客服易中招的3大常见职业病及缓解方法分享

1️⃣无论和谁聊天都可以“亲”~“亲亲”我也很无奈,但真的习惯了(其实也不是什么病啦,还能让朋友觉得我性格变好了呢哈哈哈) 2️⃣鼠标手(腕管综合征)其实很多上班族都有这个职业病。但由于我们客服工作属…

中睿天下加入中关村华安关键信息基础设施安全保护联盟

近日,中睿天下正式加入中关村华安关键信息基础设施安全保护联盟,成为其会员单位。 中关村华安关键信息基础设施安全保护联盟是由北京市科学技术委员会、中关村科技园区管理委员会指导支持,经北京市民政局批准,于2023年8月正式注册…

【JavaEE】Servlet API 详解(HttpServlet类)

一、HttpServlet 写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自HttpServlet, 并重写其中的某些方法 1.1 HttpServlet核心方法 1.2 Servlet生命周期 这些方法的调用时机, 就称为 “Servlet 生命周期”. (也就是描述了一个 Servlet 实例从生到死的过程) 1.3 处理G…

pycharm/vscode 配置black和isort

Pycharm blackd Pycharm中有插件可以实现后台服务运行black:BlackConnect 安装 配置 Pycharm isort pycharm中,isort没有插件,暂使用外部工具实现,外部工具也可添加快捷键实现快捷对文件、文件夹进行format import&#xff1…

向量矩阵范数pytorch

向量矩阵范数pytorch 矩阵按照某个维度求和(dim就是shape数组的下标)1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下,PyTorch会累积梯度,我们需要清除之前的值 范数是向量或…

学【Java多态】-- 写高质量代码

多态的实现条件 在java中要实现,必须要满足如下几个条件,缺一不可。 1.必须在继承体系下2.子类必须要对父类中的方法进行重写3.通过父类的引用调用冲写的方法。 想要真正的学好多态需要去学习一些前置知识,那我们直接开始吧! …

Learning reliable modal weight with transformer for robust RGBT tracking

论文:《Learning reliable modal weight with transformer for robust RGBT tracking》 针对问题:局部线性匹配容易丢失语义信息 解决方法:为了增强特征表示和深化语义特征,分别设计了一种基于改进的Resnet-50的模态权值分配策略…

HDP集群Kafka开启SASLPLAINTEXT安全认证

hdp页面修改kafka配置 java代码连接kafka增加对应的认证信息 props.put("security.protocol","SASL_PLAINTEXT");props.put("sasl.mechanism","PLAIN");props.put("sasl.jaas.config","org.apache.kafka.common.securi…

2023年03月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 已知一个列表lst = [2,3,4,5,6],lst.append(20),print(lst)的结果是?( )(2分) A.[10,2,3,4,5,6,20] B.[20,2,10,3,4,5,6] C.[2,3,4,5,6,20] D.[2,3,4,5,6,10,20] 答案:C 第2…

计算机毕业设计 基于SpringBoot的销售项目流程化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Kyligence 入选 Gartner® 2023 客户之声报告,高分获评“卓越表现者”

近日,Gartner 发布了最新的《2023 分析和商业智能平台“客户之声”报告》(Voice of the Customer for Analytics and Business Intelligence Platforms, 2023, October 2023)。跬智信息(Kyligence)成功入选该报告,并凭借 4.7 分&a…

使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统

随着时间的积累,日志数据会越来越多,当您需要查看并分析庞杂的日志数据时,可通过FilebeatKafkaLogstashElasticsearch采集日志数据到Elasticsearch中,并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。 一、背景信息 …

软件工程-第7章 面向对象方法基础

第7章 面向对象方法基础 面向对象的基本概念 面向对象方法的世界观:一切系统都是由对象构成的,他们的相互作用、相互影响,构成了大千世界的各式各样系统。面向对象方法是一种以对象、对象关系等来构造软件系统模型的系统化方法。 面向对象 …

浅谈:Flutter现状、与为什么选择Flutter——其实大家都在用只是你不知道罢了

浅谈:谁将会动那些抵制学习还装懂的人的蛋糕 开发环境现状与为什么选择Flutter 我本从不屑于写这种技术外的技术文章,但是今天刷某应用优点上头,想发唯一一篇。这篇文章可能会得罪一些就喜欢地址学新架构的,以及还不了解就开始起哄…

MySQL是如何进行排序的,ORDER BY是如何执行的

MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 假设找出在杭州居住的人,按名字排序前1000个人(假设city有索引,那么非常舒服,不用全表扫描) select city,name,age from t where city杭州 or…