SRv6实践项目(五):ONOS控制平面实现控制

news2024/10/2 20:37:30

在先前的几个小结中,一共了解了:

  • p4的编译过程
  • p4runtime的实现原理
  • NDP协议的简单工作流程
  • YANG模型的定义以及用处
  • 基于YANG的配置和状态的读写

一共实现了:

  • Mininet拓扑创建
  • p4的基本框架编写
  • 对数据平面进行订阅以实现状态读取
  • 对数据平面进行进行配置操作
  • 对数据平面的p4交换机进行流表操作

1 ONOS的介绍

在本文中,我们将进一步的介绍ONOS作为控制平面的工作原理:

 让我们打开docker -compose.yml可以看见ONOS的应用程序有哪些

- ONOS_APPS=gui2,drivers.bmv2,lldpprovider,hostprovider

首先make restart,当我们打开的时候,启动了ONOS控制平面,控制平面集成了几个重要功能:

  1. gui2: ONOS的用户界面
  2. drivers.bmv2: 基于 P4Runtime, gNMI, and gNOI的BMv2/Stratum驱动,stratum中最下层就是bmv2,然后第二层就是它提供的P4RT,gNMI,gNOI,因此在ONOS中需要在协议上一一对应他们的驱动实现,双方以gRPC交流(gNMI/gNOI作为交换机的配置/操作接口)
  3. lldpprovider: 基于LLDP的链路发现运用
  4. hostprovider: 主机发现运用

这是Stratum与ONOS在网络的云原生的一些运用,来源云原生视角下的开放网络 | SDNLAB | 专注网络创新技术

这是对ONOS的一些基本介绍:来源:SDN系统方法 | 3. 基本架构 - 掘金 (juejin.cn)

Stratum在交换机与外部世界的所有交互中起到中介作用,包括加载P4编译器生成的目标文件,该文件定义了数据平面和控制平面之间的契约。契约有效的用自动生成的规范替换了OpenFlow的流规则抽象。其他Stratum管理API定义如下:

  • P4Runtime: 控制转发行为的运行时接口,是填充转发表和操作转发表状态的关键。P4Runtime独立于任何特定P4程序,并且与底层硬件无关。这与OpenFlow形成了鲜明对比,OpenFlow对转发模型以及如何与控制平面交互有着相当明确的规定。(为了完整起见,图15还列出了OpenFlow作为另一个控制接口。)
  • gNMI(gRPC Network Management Interface): 用于设置和检索配置状态。gNMI通常与OpenConfig YANG模型配对,后者定义配置和状态树的结构。
  • gNOI(gRPC Network OperationsInterfaces): 用于设置和检索运行状态,如证书管理、设备测试、软件升级、组网故障处理等。

我们基于ONOS(开放网络操作系统, Open Network Operating System) 这一特定网络操作系统作为范例来完整描述这一概念,ONOS在性能、可伸缩性和可用性方面是最好的。简单来说,ONOS负责三件事情:

  • 管理拓扑(Managing Topology): 跟踪网络基础设施及其互联设备,为平台和其他应用程序提供网络环境的共享视图。
  • 管理配置(Managing Configuration): 帮助在多个网络设备上执行、跟踪、回滚和验证原子配置操作。这可以有效反映每个交换机的配置和操作接口(也使用gNMI和gNOI),但是在网络级别而不是设备级别上实现的。
  • 控制交换(Controlling Switches): 控制网络交换机的数据平面数据包处理流水线,并对流水线内的流规则、组、监控等构建块进行后续控制。

使用make onos-cli进入ONOS建立ONOS的连接,并进入命令行:

先看看我们有多少应用程序,有这么多,但是我们总共才4个,其他应用程序时一些驱动应用(org.onosproject.drivers ),以及流水线基础(pipelines.basic )等等

2 ONOS的使用方法

在app文件夹下,有如下几个应用

  • PipeconfLoader.java:一个在应用程序激活时注册pipeconf的组件;
  • InterpreterImpl.java:PipelineInterpreter驱动程序行为的实现;
  • PipelinerImpl.java:Pipeliner驱动程序行为的实现;

我们用make app-build app reload分别build应用程序以及把应用程序装载到ONOS上面,应用程序激活后,您应该会在ONOS日志(make-ons log)中看到以下消息,表明pipeconf已经注册,并且不同的应用程序组件已经启动

在onos指令行键入pipeconfs可以查看流水线的信息:

现在ONOS和Mininet正在运行,是时候让ONOS知道如何到达四个p4交换机并控制它们了,我们通过使用位于mininet/netcfg.json的配置文件来实现这一点,该文件包含以下信息:

  • 与每个Stratum设备相关联的gRPC地址和端口;

  • 用于每个设备的ONOS驱动程序,在这种情况下均为stratum-bmv2;

  • 用于每个设备的pipeconf,在本例中为org.nosproject.ngsdn-tutorial,如PipeconfLoader.java中所定义;
  • 特定于我们的自定义应用程序的配置(fabricDeviceConfig)

我们来看看这个json文件的格式,是这样的,后续再解释应用程序的具体实现:

我们使用make netcfg来将网络配置信息装载到ONOS上,这样就使他发现了交换机了

devices -s就可以发现有这么多的设备

portstats device:spine1 查看设备上的端口信息

flows -s any device:leaf1 查看设备上的流表信息

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

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

相关文章

OJ系统刷题 第十一篇(重点题)

13463 - 折点计数(难题!重点题!) 时间限制 : 1 秒 内存限制 : 128 MB 给定 n 个整数表示一个商店连续 n 天的销售量。 如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来…

玩转车载影像传输技术 ,学习Opengl与Surface渲染提升车载影像传输效果

近年来,随着智能化汽车的快速发展,车载倒车影像逐渐成为了汽车安全辅助系统的标配,而高清传输的倒车影像则成为了目前主流的倒车影像传输方式。在这一过程中,Opengl与Surface渲染技术的应用也是不可或缺的一环。 一、高清传输倒车…

E. Archaeology(纯思维)

Problem - E - Codeforces 爱丽丝买了一个刚果总理视频的订阅,正在看一部关于苏格兰卡特林湖的因子岛的考古发现的纪录片。考古学家发现了一本书,其年代和来源都不明。也许爱丽丝可以对它进行一些解释? 这本书包含一串字符 "a"、&…

【AI绘画】Stable Diffusion的介绍及程序示例

Stable Diffusion 1.背景2.StableD 的原理3.StableD 的应用3.1.如何使用 StableD 进行图像生成3.2 图像生成与编辑3.2.1 生成新图像3.2.2 图像编辑 1.背景 近年来,随着人工智能技术的发展,图像生成和合成技术得到了很大的发展。Stable Diffusion (Stable…

MyBatis的关联映射和缓存机制

学习目标: 了解数据表之间的三种关联关系了解对象之间的三种关系熟悉关联关系中的嵌套查询和嵌套结果掌握一对一关联映射掌握—对多关联映射掌握多对多关联映射熟悉Mybatis的缓存机制 文章概述: 前面几章介绍了MyBatis的基本用法、关联映射和动态SQL等…

CompletableFuture异步编排

CompletableFuture异步编排 1、CompletableFuture异步编排1.1 为什么需要异步编排1.2 CompletableFuture介绍1.3 创建异步对象1.4 线程串行化与并行化方法1.5 多任务组合1.6 优化商品详情页(业务代码)1.6.1 未优化之前的代码1.6.2 使用CompletableFuture异步编排1.6.3 测试功能…

Linux 下 REST 客户端的新选择:Insomnia 3.0

正在为 Linux 桌面端找一个免费的 REST 客户端? 别睡不着觉了!试试 Insomnia。 这个应用是跨平台的,可以工作在 Linux、macOS、Windows。开发者 Gregory Schier 告诉我们他创造这个应用是为了“帮助开发者处理和 REST API 的通信”。他还说&a…

如何在Java中创建临时文件?

在Java程序中,有时需要创建临时文件来暂存数据或者执行某些操作。Java提供了许多方式来创建临时文件。在本教程中,我们将介绍如何使用Java标准库来创建临时文件。 一、使用File.createTempFile()方法 Java标准库中的File类提供了createTempFile()方法来…

设计模式--单例模式

介绍 所谓类的单例模式 就是采取一定的方法保证在整个软件系统中对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 比如 Hibemate的SessionFactory 它充当数据存储源的代理 并负责创建Session对象 SessionFactory并不是轻量级的 一般情况下 一个…

Java中的Map(三种双列集合万字详解)

点击可查看单列集合Set万字详解:其中还包含哈希解读和底层分析。 文章目录 前言一、Map1.Map集合常用的API代码演示:1.Map集合的基本功能2.Map集合的获取功能3.Map的getOrDefault()方法 2.Map集合的三种遍历1.键找值、值找键2.键值对3.Lambda表达式 二、…

【C++11】晦涩难懂语法系列:可变参数模板

目录 可变参数模板 1.1 概念 1.2 可变参数模板定义 1.3 参数包的展开方式 1.3.1 递归展开参数包 1.3.2 逗号表达式展开参数包 1.4 STL的emplace系列函数 可变参数模板 1.1 概念 在C语言阶段,我们已经接触过可变参数,比如scand、printf等等 这里…

9.2 回归分析

学习目标: 回归分析是一种广泛应用于数据分析和预测的统计方法,可以用来探索自变量与因变量之间的关系并进行预测。我学习回归分析,我会采取以下步骤: 学习基本概念:回归分析中的基本概念包括自变量和因变量、回归系数…

运放专题:运放输入端交直流混合信号隔直放大

运放输入不隔直放大 运放输入端不隔直,那么经过运放放大后,交流成分放大了,直流成分也被放大了。看下面的仿真: 交流信号为:振幅3V, 频率5K的正弦波,直流偏置为1V 可以看到,交流信号被放大的…

【Linux】匿名管道代码实现-mypipe

文章目录 管道介绍什么是管道:管道的原理管道的特点 具体代码详写创建初始文件makefile编写定义任务列表-task.hpp分阶段代码编写总代码展示: ctrlProcess.cc 编写头文件包含(如有不会,自己查谷歌)定义全局变量以解耦main,函数框架EndPoint定义creatProcess 创建管道…

Apollo配置中心使用篇

Apollo配置中心使用篇 常见配置中心对比Apollo核心概念Apollo核心特性Apollo架构设计各模块介绍服务端设计客户端设计Apollo与Spring集成的底层原理 Apollo安装安装apollo-portalconfig service和admin service部署多网卡问题解决修改Portal环境配置调整ApolloPortal配置 Apoll…

【产品设计】用户操作日志

日志记录了代码的执行过程,根据目的不同,可以分为系统日志和操作日志。 一、什么是日志 日志记录了代码的执行过程。根据目的不同,可分为系统日志和操作日志。 1)系统日志 记录系统中硬件、软件和系统问题的信息,同…

C#基础学习--枚举器和迭代器

目录 枚举器和可枚举类型 IEnumerator 接口 IEnumerable 接口 实现 IEnumerable 和 IEnumerator的示例 泛型枚举接口 迭代器 迭代器块 使用迭代器来创建枚举器 使用迭代器来创建可枚举类型 常见迭代器模式 产生多个可枚举类型 将迭代器作为属性 迭代器实质 枚举器和可…

【分享】比ChatGPT还厉害?可以自主解决复杂任务的Auto-GPT迅速走红(内含体验地址)

哈喽,大家好,我是木易巷~ 最近木易巷在了解Auto GPT,今天给大家分享一下~ 自主解决复杂任务的Auto-GPT 什么是Auto-GPT? Auto-GPT 是一款开源 Python 应用程序,由开发者用户 Significant Gravitas 于 2023 年 3 月 30…

钉钉接入“通义千问”大模型,输入斜杠“/”唤起智能服务

4月18日,钉钉总裁叶军在2023春季钉峰会上宣布,钉钉正式接入阿里巴巴“通义千问”大模型,输入“/”在钉钉即可唤起 10 余项 AI 能力,叶军现场演示了群聊、文档、视频会议及应用开发四个场景。 现场展示中,只…

C++:智能指针(auto_ptr/unique_ptr/shared_ptr/weak_ptr)

为什么需要智能指针&#xff1f; C没有垃圾回收机制。 #include<iostream> using namespace std;int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; }void Func() {// 1、如果p1这里new 抛异常会如何…