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

这篇具有很好参考价值的文章主要介绍了SRv6实践项目(五):ONOS控制平面实现控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

  • 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 | 专注网络创新技术

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

这是对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 )等等

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

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可以查看流水线的信息:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SRv6实践项目(五):ONOS控制平面实现控制文章来源地址https://www.toymoban.com/news/detail-422800.html

到了这里,关于SRv6实践项目(五):ONOS控制平面实现控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生 envoy xDS 动态配置 java控制平面开发 支持restful grpc实现 EDS 动态endpoint配置

    大纲 基础概念 Envoy 动态配置API 配置方式 动静结合的配置方式 纯动态配置方式 实战 Envoy 的强大功能之一是支持动态配置,当使用动态配置时,我们不需要重新启动 Envoy 进程就可以生效。 Envoy 通过从磁盘文件或网络接口 读取配置,动态地重新加载配置。动态配置使用所谓的

    2024年02月12日
    浏览(32)
  • 数字IC实践项目(2)——高速SDRAM控制器的设计与综合(入门级工程项目)

    这个实践项目来源于研究生电子设计竞赛,在涉及到视频图像处理时需要用到DRAM存储数据 ;整个项目过程中先后学习了 小梅哥(AC620开发板资料) 、 开源骚客SDRAM控制器 、 正点原子FPGA教程 、 野火FPGA开发教程 等网络资料。 在此对上述提供学习资料的前辈表示真诚的感谢。

    2024年02月13日
    浏览(70)
  • 网络层:控制平面

    路由选择算法就是为了在端到端的数据传输中,选择路径上路由器的最好的路径。通常,一条好的路径指具有最低开销的路径。最低开销路径是指源和目的地之间具有最低开销的一条路。 根据集中式还是分散式来划分 集中式路由选择算法: 集中式算法拥有关于所有网络链路

    2024年02月05日
    浏览(38)
  • kubernetes控制平面分析

    通过kubeadm安装好kubernetes集群后,在kubernetes集群开始飞的时候,先看下集群中都有些什么。kubernetes集群可以部署为3种模式,1)独立组建模式,master节点和node节点各组件直接以守护进程方式运行,二进制程序部署就属于这种类型。2)静态Pod模式,控制平面各组件以静态Pod对

    2024年02月11日
    浏览(35)
  • 计网-控制平面

    下个月前最后一篇计网笔记,再坚挺一下,网络如同海洋,任我穿梭遨游~~ ——题记 大多数的算法更新,就是枚举 路由器与交换机的区别 概述 数据结构里面的单源最短路径俩小白,Dilistra与Bellman-Ford, 化身一个ISP内路由选择的OSPF与Internet中不同ISP间的“粘合剂”算法BGP,

    2024年02月11日
    浏览(34)
  • Istio——为微服务构建一个通用的流量控制平面

    作者:禅与计算机程序设计艺术 随着云计算、容器化和微服务架构的普及,越来越多的公司和组织开始采用基于微服务架构的分布式应用开发模式。然而,在真正将这些微服务部署到生产环境后,如何实现对应用的流量管理以及安全防护就成为一个棘手的问题。微服务架构虽

    2024年02月07日
    浏览(50)
  • 【Verilog HDL实践】汽车尾灯控制电路实现

    【Verilog HDL实践】汽车尾灯控制电路实现 使用芯片:Altera Cyclone® IV EP4CE22F17C6N FPGA 开发工具:Quartus Ⅱ 开发项目: 设计一个汽车尾灯控制电路。已知汽车左右两侧各有3个尾灯,采用K0、K1进行状态控制,要求尾灯按如下规则亮灭。 (1)汽车沿直线行驶时,两侧的指示灯全灭;

    2024年02月04日
    浏览(39)
  • 《计算机网络:自顶向下方法》第五章--网络层:控制平面

    控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理 传统上,控制平面功能与数据平面的转发功能在一起实现,在路由器中作为统一的整体 在网络层:数据平面中有转发

    2024年02月12日
    浏览(50)
  • leetcode 1053. 交换一次的先前排列

    给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。 如果无法这么操作,就请返回原数组 示例 1: 输入:arr = [3,2,1] 输出:[3,1,2] 解释:交换 2 和 1 示例 2: 输入:arr

    2024年02月15日
    浏览(53)
  • 使用mininet快速入门ONOS路由交换技术与原理

    在SDN下路由交换与传统硬件集成方式的路由交换技术有许多相似之处。其中一个比较重要的点是传统交换机中ASIC (Application Specific Integrated Circuit,专用集成电路)决定了其数据平面所支持的功能,而在SDN中,实现了控制面与数据面的分离。 这里通过一个小示例来体验下SDN下两

    2024年01月19日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包