浅析SR隧道路径批量构造方法

news2024/11/29 8:48:48

为什么要仿真PCE LSP下发隧道路径?

在大型的多区域网络中,路径计算非常复杂。在某些场景下,为了完成路径计算,需要在控制器上部署特殊的计算组件,并需要不同区域中的节点之间协作。这使得网元在进行路径计算时效率低,还会降低网元本身的转发性能。
PCE最早是为了解决大型的多区域网络路径计算问题而被提出,通过PCE可以为TE计算跨域路径。如下图所示,PCEP网络包含如下3个部分:

  • PCE(Path ComputationElement,路径计算单元):PCE是能够基于网络拓扑信息计算满足约束的路径的部件。PCE可以部署在路由设备中,也可以部署在一个独立的服务器中。大多数时候,PCE和控制器是集成在一起的。
  • PCC(Path ComputationClient,路径计算客户端):PCC是请求路径计算单元执行路径计算的客户端应用程序。PCC向PCE发送路径请求,并接受PCE返回的路径计算结果。一般情况下,路由设备集成了PCC功能,可以认为路由设备就是PCC。
  • PCEP(Path ComputationElementProtocol,路径计算单元通信协议):PCEP是PCE和PCC、PCE和PCE之间的通信协议。
    图1 应用拓扑
    在这里插入图片描述

自动化生成PCE LSP能解决什么问题?

使用仪表模拟PCE时,需要手工创建PCE LSP,并且涉及转发路径标签的确定,Adj-Sid在每次建立SR邻居时都是随机分配标签值,创建隧道路径又必须明确标签值,在创建大量的隧道路径情况下,使用自动化读取SR隧道数据方法创建PCE LSP可节省大量仪表配置精力。

如何使用自动化构造PCE LSP

信而泰Renix平台提供了python API接口,可使用python API进行PCE LSP灵活定义。假设业务如下所示:

  • SR-TE单板转发性能:创建ISIS SR-TE业务

  • PCEP隧道托管:DUT与仪表之间建立SR-TE隧道,并把其中4000条隧道路径托管到PCE。
    图2 实验拓扑
    本文选择基础API使用信而泰API(renix_py_api、MiscLibrary),不另做定义,使用时需安装相关环境。代码解析如下:

  • 导入相关库:
    from renix_py_api.renix import *
    import logging
    import pandas as pd

  • 初始化:initialize为仪表初始化
    initialize(log=True,log_level=logging.INFO,log_handle=LogHandle.LOG_FILE)
    chassis_DY = “10.1.1.7”
    port_DY_1 = “//10.1.1.7/3/1”
    path = ‘D:\pcep\pceplsp.xls’
    data = pd.DataFrame(pd.read_excel(path))
    tunnelnum = 16000
    pcelspnum = 4000
    创建自动化前需收集隧道路径参数,格式如下表所示(提供前10供参考,本实验共计250条路径用于承载vpnv4流量,250条路径用于承载6vpe流量):
    在这里插入图片描述

  • 创建仪表基本配置
    sys_entry = get_sys_entry()
    sys_entry.edit(ProductType=1)
    chassis = ConnectChassisCommand(chassis_DY)
    chassis.execute()
    port_location = (‘//10.1.1.7/3/1’)
    port_1 = Port(upper=sys_entry, Location=port_location[0], name=‘port_1’)
    BringPortsOnlineCommand(PortList=[port_1.handle]).execute()

  • 配置pcep
    interface_1 = Interface(upper=port_1)
    build_ipv4_ipv6 = BuildInterfaceCommand(InterfaceList=‘Interface_1’, NetworkLayers=‘eth’, TopLayers=[‘ipv4’, ‘ipv6’])
    build_ipv4_ipv6.execute()
    eth_layer = interface_1.get_children(‘EthIILayer’)[0]
    eth_layer.edit(Address=‘00:10:99:00:00:01’)
    ipv4_layer = interface_1.get_children(‘Ipv4Layer’)[0]
    ipv4_layer.edit(Address=‘12.5.20.2’, Step=‘0.0.0.1’, Count=‘1’, Gateway=‘12.5.20.1’)
    ipv6_layer = interface_1.get_children(‘Ipv6Layer’)[0]
    ipv6_layer.edit(Address=‘12:5:14::2’, Step=‘::1’, Count=‘1’, Gateway=‘12:5:14::1’)
    PcepSession = PcepProtocolConfig(upper=port_1)
    PcepSession.edit(UseGatewayAsDutIp=False)
    PcepSession.edit(PeerIpv4Address=“10.48.48.1”)
    select_interface_1=SelectInterfaceCommand(ProtocolList=[PcepSession.handle], InterfaceList=[interface_1.handle])
    select_interface_1.execute()

  • 配置PCE LSP,根据Excel循环创建
    tunnelperpeer = int(tunnelnum/250)
    counter = 4000
    for x in range(250):
    for y in range(tunnelperpeer):
    PceLsp = PceLspConfig(upper=PcepSession)
    SymbolicName = ‘Tunnel’+str(x*tunnelperpeer+(y+1))
    PceLsp.edit(SymbolicName=SymbolicName)
    SourceIP = data.loc[x][1]
    PceLsp.edit(SourceIpv4Address=SourceIP)
    DestIP = data.loc[x][2]
    PceLsp.edit(DestinationIpv4Address=DestIP)
    PcepSrEroObject = PcepSrEroObjectConfig(upper=PceLsp)
    PcepSrEroSubObject = PcepSrEroSubObjectConfig(upper=PcepSrEroObject)
    PcepSrEroSubObject.edit(NaiType=3)
    PcepSrEroSubObject.edit(FFlag=True)
    Adjsid = int(data.loc[x][3])
    PcepSrEroSubObject.edit(SidLabel=Adjsid)
    PcepSrEroSubObject = PcepSrEroSubObjectConfig(upper=PcepSrEroObject)
    PcepSrEroSubObject.edit(NaiType=1)
    PcepSrEroSubObject.edit(FFlag=True)
    Nodesid = int(data.loc[x][4])
    PcepSrEroSubObject.edit(SidLabel=Nodesid)
    counter -=1
    if counter == 0:
    break
    if counter == 0:
    break

  • 保存Renix平台对应XCFG文件
    save_case = SaveTestCaseCommand(TestCase=‘D:\pcep\pcep.xcfg’, ProductType=1)
    save_case.execute()

  • 执行生成配置文件效果(PCE LSPs)
    在这里插入图片描述

  • PCE LSP对应路径(ERO Object)
    在这里插入图片描述

DarYu-X系列测试仪

DarYu-X系列高性能网络测试仪是信而泰推出的面向高端路由器等高端数通设备的测试产品,具有高性能、高密度、高速率等特点,配置信而泰基于PCT架构的新一代测试软件RENIX和X2系列测试模块,可为提供路由高效组网测试解决方案,为建立一张高SLA保证、确定性时延、业务感知、灵活业务路径调优的下一代网络保驾护航。

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

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

相关文章

局部路由守卫path守卫

局部路由守卫path守卫 path守卫(beforeEnter) 代码位置:path守卫代码写在route对象中(index.js文件)beforeEnter是一个函数,参数上没有回调函数beforeEnter有三个参数: to参数:to是…

CocosCreator | 2.3.3及后续版本浏览器无法断点和控制台不显示错误代码路径的解决方案(cocos代码报错无法定位的问题)

在2.3.3正式版的官方介绍中有这么一项: 提升网页预览时的加载速度 为了进一步提升开发效率,我们优化了网页预览时的脚本加载速度。不论是对引擎还是项目中的代码,载入速度都获得了提升。特别是在开启自定义引擎,或者使用手机扫码…

实时时钟和日历电路MS85163/MS85163M

主要特点 ◼ 基于 32.768kHz 晶振提供年、月、日、 周工作日、小时、分钟和秒 ◼ 具有世纪标记,可工作于 2000-2199 年 ◼ 工作电压: 1.8V-5.5V ◼ 低功耗 ◼ 最高频率达 400kHz 的 I 2 C 接口 ◼ 可编程的时钟输出 (32.768kHz, 1.024kHz…

开发人员请注意:在 PyPI 上的 Python 包中发现 BlazeStealer 恶意软件

1、开发人员请注意:在 PyPI 上的 Python 包中发现 BlazeStealer 恶意软件 一组新的恶意 Python 包已经滑入 Python 包索引 (PyPI) 存储库,其最终目的是从受感染的开发人员系统中窃取敏感信息。这些软件包伪装成看似无害的混淆工具…

记录一次数据库内存占满

一,背景及表现 用户普遍反馈业务功能,无法加载出数据,服务挂了 二,数据库指标 三,排查方反馈 排查方反馈:查全量数据导致的,就是没查出来但是一直在查 四,分析 1.应用服务器问题…

深度系统v15.4正式发布,惊艳眼球

导读深度操作系统是一个致力于为全球用户提供美观易用、安全可靠的Linux发行版。深度桌面操作系统V15.4专业版使用全新设计的控制中心和重构桌面,采用模糊透明整体风格,全新的热区交互及窗口管理器动效,精挑细选的桌面壁纸;采用全…

VNC连接服务器实现远程桌面 --以AutoDL云服务器为例

VNC连接服务器实现远程桌面 --以AutoDL云服务器为例 针对本地机为Windows 云服务器租显卡跑些小模型很方便,但是当你想做可视化的时候,可能会遇到麻烦,云服务器没有显示输出界面,无法可视化一些检测任务的结果,或者可…

Python爬虫爬取家纺数据并分析

因为时间的原因,没法写一个详细的教程,但是我可以提供一个基本的框架。你需要根据实际情况进行修改和扩展。以下是使用Python的requests库和BeautifulSoup库来爬取网页内容的基本步骤: # 导入所需的库 import requests from bs4 import Beaut…

从零开始搭建SpringCloud微服务集群:Nacos的安装和配置

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 Nacos集群搭建 1.集群结构图 官方给出的Nacos集群图: 其中包含3个nacos节点,然后一个负载均衡器代理3个Nac…

winui3开发笔记(二)自定义标题栏

参考文章链接:https://www.programminghunter.com/article/46392310600/ 注意事项 获取 AppWindowTitleBar 的实例并设置其颜色属性时,InitializeTitleBar(AppWindow.TitleBar);,只适用于Windows App SDK 1.2及以上,所以如果用w…

基于springboot学生心理咨询评估系统的设计与实现 全套代码 全套文档 附带视频知道教程

springboot学生心理咨询评估系统,springboot vue mysql (毕业论文10784字以上,共30页,程序代码,MySQL数据库) 代码下载: 链接:https://pan.baidu.com/s/1MjiwuWdkVHFQ4toPP1vVrA?pwd4eck 提取码:4eck 【运行环境】 IDEA, JDK1.8, Mysql, Node, Vue …

Unity 跑酷游戏全部脚本(完结)

脚本1 触发器脚本 这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColliidisonTrigger : MonoBehaviour { //触发检测 …

08.Diffusion Model数学原理分析(下)

文章目录 denoising matching term σ t z \sigma_tz σt​z的猜想Diffusion Model for SpeechDiffusion Model for TextMask-Predict 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索。 书接上文。 denoising matching term E q ( x t ∣ x 0 …

适用于 iOS 的 10 个最佳数据恢复工具分享

在当今的数字时代,我们的移动设备占据了我们生活的很大一部分。从令人难忘的照片和视频到重要的文档和消息,我们的 iOS 设备存储了大量我们无法承受丢失的数据。然而,事故时有发生,无论是由于软件故障、无意删除,甚至是…

Java 算法篇-深入理解递归(递归实现:青蛙爬楼梯)

🔥博客主页: 小扳_-CSDN博客 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 递归的说明 2.0 用递归来实现相关问题 2.1 递归 - 阶乘 2.2 递归 - 反向打印字符串 2.3 递归 - 二分查找 2.4 递归 - 冒泡排序 2.5 递归 - 冒泡排序2.0 2.6 递归 - 插…

Vite依赖预构建

本文使用的包管理工具是 npm 开发工具是 vscode 本文作为对 vite的了解性内容即可,实际开发中并不会做太多的工作 依赖预构建干了啥 首先vite会找到对应的依赖, 然后调用 esbuild(对js语法进行处理的一个库), 将其他规范的代码转换成 esmodu…

虚幻C++基础 day3

常见的游戏机制 Actor机关门 创建一个Actor类,添加两个静态网格与一个触发器 UBoxComponentUStaticMeshComponent 头文件: #include “Components/BoxComponent.h”#include “Components/StaticMeshComponent.h” TriggerDoor.h // Fill out your …

Apinto 网关进阶教程,使用 API Mock 生成模拟数据

什么是 API Mock ? API Mock 是一种技术,它允许程序员在不依赖后端数据的情况下,模拟 web服务器端 API 的响应。通常使用 API Mock 来测试前端应用程序,而无需等待后端程序构建完成。API Mock 可以模拟任何 HTTP 请求方法&#x…

ai 问答时刻

妙啊 这很快 相当棒

Queue 中 poll()和 remove()的区别(详解)

系列文章目录 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. List<HashMap<String,String>>实现自定义字符串排序(key排序、Val…