TSN CB:恢复算法与潜在错误检测
1.概述
基础恢复功能位于排序功能中。它评估从较低层向上传递的一个或多个成员流的数据包的sequence_number子参数,以丢弃重复的数据包。基本恢复功能的给定实例化可以作为序列恢复功能或单个恢复功能。
序列恢复功能有两种序列恢复算法,因此它既可用于间歇流,也可用于批量流。只要给定序列恢复功能所服务的成员流所采取的所有路径中飞行中的数据包数量的最大差异不超过SequenceHistory变量的大小,数据包就可以无重复地传递,但也可以乱序传递。如果差值超过此值,则可以传递重复的数据包。
FRER恢复功能不得处理数据包,除非已成功完成较低级别的数据包有效性检查(例如IEEE Std 802.3[B2],帧校验序列)。
简单描述:参考sequence_number子参数,判断是否为重复的数据包,丢弃重复数据包。
2.基础恢复功能
2.1 VRA
VRA(Vector Recovery Algorithm):在调用SequenceRecoveryReset后,VectorRecoveryAlgorith立即接受接收到的第一个数据包为有效数据包。在第一个数据包被接受后,窗口中最后一个数据包编号接受±frerSeqRcvyHistoryLength的所有后续数据包都将被接受,序列号值超出该范围的数据包将被丢弃。每个被接受并向上传递到堆栈的数据包都会重置计时器变量RemainingTicks。如果该变量向下勾选为0,这意味着在frerSeqRcvyResetMSec毫秒内没有接受任何数据包,则SequenceRecoveryReset会再次重置算法,并接受下一个接收到的数据包。
如果托管对象frerSeqRcvyHistoryLength包含值1,则此算法适用于间歇流。在这种情况下,SequenceHistory变量仅记录RecovSeqNum是否记录了接收到的数据包的sequence_number子参数。如果frerSeqRcvyHistoryLength包含大于1的值,则VectorRecoveryAlgorith将作为适用于批量流的更复杂的算法。
VRA通过构建向量来存储最大可以转发的sequence number,并且保存了一个已经转发的number的历史记录。这种算法不仅考虑了最新的sequence number,还追踪了帧的传输历史,从而能够在更复杂的网络环境中准确地判断和处理帧的重复与丢失问题。
简单描述:在一个窗口内判断序列号是否重复,丢弃重复的数据包。
2.2 MRA
MRA(Match Recovery Algorithm):这种算法存储了最后一个访问的sequence number。当接收到一个新的帧时,如果其sequence number与存储的最后一个访问的sequence number不同,则进行转发;如果相同,则表示该帧为副本,因此进行丢弃。这种机制有助于消除重复的数据帧,确保数据的唯一性和有效性。
MatchRecoveryAlgority立即接受收到的第一个数据包为有效数据包。在第一个数据包被接受后,所有后续数据包要么与最后一个被接受的数据包编号匹配,因此被丢弃,要么不匹配,在这种情况下,它们被接受。每个被接受并向上传递到堆栈的数据包都会重置计时器变量RemainingTicks。如果该变量向下勾选为0,这意味着在frerSeqRcvyResetMSec毫秒内没有接受任何数据包,则SequenceRecoveryReset会再次重置算法,并接受下一个接收到的数据包。
简单描述:2.1中的窗口值为1。
3.独立恢复功能
定义了个体恢复功能,以满足稳健性目标。它通过删除从卡住的发射机接收到的重复序列号数据包来实现这一点。Individual恢复功能的实例化由Base恢复功能的实例化组成,其frerSeqRcvyPindividualRecovery对象设置为True,配置为应用于单个成员流。[序列恢复功能在复合流的所有成员流上运行。]单个恢复功能的实例化不包括潜在错误检测功能的实例。个体恢复功能的实例化可以采用矢量恢复算法或匹配恢复算法。
这里建议使用匹配恢复算法。
4.Latent error detection function
4.1 概述
潜在错误检测功能的每个实例都是序列恢复功能的一部分。它监视与Base恢复功能的单个实例关联的受管对象,以检测该功能丢弃的数据包相对较少的情况。潜在错误检测基于以下假设进行操作:在使用n条路径进入当前系统的功能正常的复合流中,通过基础恢复功能的每个数据包都会丢弃n-1个数据包。当违反该假设时,潜在错误检测功能会发出信号警报。
每个端口每个stream_handle值每个方向(面向内或面向外)最多有一个潜在的错误检测功能,如通过控制这两个功能的管理对象所指定的。对于配置的每个基本恢复功能,只能有零个或一个相关的潜在错误检测功能。任何支持基础恢复功能的实现都应支持潜在错误检测功能。
潜在错误检测由两个周期函数完成。第一个(LatentErrorTest,7.4.4.4)检查通过和丢弃的数据包数量,如果这些计数器之间的差异超过设定的阈值,则报告潜在错误。另一个周期性函数(LatentErrorReset,7.4.4.3)重置第一个函数使用的变量,这样偶尔的随机数据包丢失就不会永远累积。这些功能是由计时器驱动的,而不是由数据包的接收或传输驱动的。
4.2 参数说明
4.2.1 CurBaseDifference
CurBaseDifference 变量是一个无符号整数,其大小与计算其值的计数器(例如 frerCpsSeqRcvyPassedPackets,10.8.5)相同。它包含上次调用 LatentErrorReset 函数(7.4.4.3)时预期丢弃数据包数量与实际丢弃数据包数量之间的偏移量。
计算预期丢弃数据包数量与实际丢弃数据包数量之间的偏移量
4.2.2 LatentErrorReset
每当发生 BEGIN 事件或 RESET_LATENT_ERROR事件时,都会调用 LatentErrorReset。
它会根据 frerCpsSeqRcvyPassedPackets、frerSeqRcvyLatentErrorPaths和 frerCpsSeqRcvyDiscardedPackets重新计算 CurBaseDifference变量,并增加 frerCpsSeqRcvyLatentErrorResets。
void LatentErrorReset ()
{ CurBaseDifference = (frerCpsSeqRcvyPassedPackets *
(frerSeqRcvyLatentErrorPaths - 1)) - frerCpsSeqRcvyDiscardedPackets;
frerCpsSeqRcvyLatentErrorResets = frerCpsSeqRcvyLatentErrorResets +1;
}
frerCpsSeqRcvyPassedPackets:对于通过VectorRecoveryAlgority或MatchRecoveryAlgrithm向上传递的每个数据包递增一次。
- 通过包的数量 A
frerSeqRcvyLatentErrorPaths: FRER在此基础恢复功能和潜在错误检测功能的实例中运行的路径的整数。
- 路径数量 B
frerCpsSeqRcvyDiscardedPackets: 对于矢量恢复算法或匹配恢复算法因序列号重复而丢弃的每个数据包,frerCpsSeqRcvyDiscardedPackets计数器递增一次
- 丢弃数据包的数量 C
偏移量 D =A*(B-1)-C
4.2.3 LatentErrorTest
每当发生 TRIGGER_LATENT_ERROR_TEST 事件时,就会调用 LatentErrorTest。它使用 CurBaseDifference、frerCpsSeqRcvyPassedPackets、frerSeqRcvyLatentErrorPaths、frerCpsSeqRcvyDiscardedPackets、frerSeqRcvyLatentErrorPeriod和 frerSeqRcvyLatentErrorDifference来测试序列恢复函数丢弃的数据包数量是否大约为预期数量,如果不是,则触发事件。
void LatentErrorTest () { int diff = CurBaseDifference - ((frerCpsSeqRcvyPassedPackets * (frerSeqRcvyLatentErrorPaths - 1)) -frerCpsSeqRcvyDiscardedPackets); if (frerSeqRcvyLatentErrorPaths > 1 && // 有多条路径 frerSeqRcvyLatentErrorPeriod > 0 ) // LE 检测已开启{ if (diff < 0)diff = - diff; if (diff > frerSeqRcvyLatentErrorDifference){ SIGNAL_LATENT_ERROR; } }
}
frerSeqRcvyLatentErrorPeriod: LatentErrorTest 函数运行实例之间经过的整数毫秒数(7.4.4.4)。默认值为 2000(2 秒)。可以设置 frerSeqRcvyLatentErrorPeriod 的最小值,低于该值则无法设置,但该最小值不得大于 1000 毫秒(1 秒)。
frerSeqRcvyLatentErrorDifference: 一个整数,指定 frerCpsSeqRcvyDiscardedPackets 与 frerCpsSeqRcvyPassedPackets 和 (frerSeqRcvyLatentErrorPaths – 1) (10.4.1.12.3) 的乘积之间的最大允许差值。任何较大的差值都将触发 LatentErrorTest 函数 (7.4.4.4) 对潜在错误的检测。
注意——该算法实际上具有 2 的量化误差。也就是说,如果用户在 LatentErrorTest 和 LatentErrorReset 的时间安排上运气不佳,则可能需要 2*frerSeqRcvyLatentErrorDifference 的差异才能触发故障。
欢迎大家交流讨论
相关文章:
TSN CB:恢复算法与潜在错误检测
1.概述 基础恢复功能位于排序功能中。它评估从较低层向上传递的一个或多个成员流的数据包的sequence_number子参数,以丢弃重复的数据包。基本恢复功能的给定实例化可以作为序列恢复功能或单个恢复功能。 序列恢复功能有两种序列恢复算法,因此它既可用于间…...
【sql靶场】第11、12关-post提交注入
目录 【sql靶场】第11、12关-post提交注入 POST 一、URL 二、核心组成部分 三、数据编码规范 四、应用场景与请求方法 第十一关 方法一 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 方法二 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 第…...
框架、云原生、微服务的基本概念
架构 互联网应用的架构设计随着业务需求的增长和技术的发展经历了从单一架构到垂直架构,再到分布式架构的演变。以下是这三种架构的定义、特点以及具体的例子: 1. 单一架构(Monolithic Architecture) 定义 单一架构是一种将所有…...
Discuz建站教程之论坛头部logo跳转链接怎么修改?
在修改头部logo跳转链接前,我们需要知道对应代码在哪个文件目录,进入宝塔或是服务器,找到文件:\template\default\common\header.htm,编辑器打开,搜索以下代码,大概在135行 <a href"{i…...
AI重构SEO关键词布局
内容概要 在搜索引擎优化(SEO)领域,AI技术的深度应用正在颠覆传统关键词布局逻辑。通过机器学习算法与语义分析模型,智能系统能够实时解析海量搜索数据,构建动态词库并精准捕捉用户意图。相较于依赖人工经验的关键词筛…...
贪心算法简介(greed)
前言: 贪心算法(Greedy Algorithm)是一种在每个决策阶段都选择当前最优解的算法策略,通过局部最优的累积来寻求全局最优解。其本质是"短视"策略,不回溯已做选择。 什么是贪心、如何来理解贪心(个人对贪心的…...
OpnenHarmony 开源鸿蒙北向开发——1.开发环境搭建(DevEco Studio 5.03)
我这边是基于window下对OpenHarmony开源鸿蒙进行北向开发。 一、安装DevEco Studio 1、下载 下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态 2、安装 下载完成之后进行解压 双击进行安装 按照我的步骤进行 选择安装目录,全部配置完成后…...
钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛
在钉钉在线表格中,虽然功能相对Excel有所简化,但仍然可以通过条件格式实现对特定内容的高亮显示。以下是具体步骤: 一、在钉钉在线表格中设置条件格式 1. 打开钉钉在线表格 登录钉钉,进入“钉钉在线表格”应用。 打开你需要操作…...
【工具】ReConPlot一个可视化和解释基因组重排的R包
文章目录 介绍代码案例加载R包导入数据 参考 介绍 人类肿瘤的全基因组测序研究表明,复杂形式的结构变异,统称为复杂基因组重排(cgr),在不同类型的癌症中普遍存在。cgr的检测、分类和机制解释需要对体细胞拷贝数畸变&a…...
OSPF-2 邻接建立关系
上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例 这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例 一、概述 在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关…...
最完美的WPF无边框设计!
常规的无边框方法设计 常规的WPF无边框设计方法都是通过AllowsTransparency="True"和WindowStyle=“None”,并且使用WindowChrome样式来实现,但是这样会有问题就是,窗体最大化的时候将底部任务栏给挡住了,另外最大化的时候不能拖动窗体。参考这个大佬的设计@ 若…...
无限使用Typora
下载 Typora https://www.typora.net/#home 安装 找到 /Applications/Typora.app/Contents/Resources/TypeMark/page-dist/static/js/LicenseIndex.180dd4c7.5b0f7af9.chunk.js 文件 打开文件 搜索 e.hasActivated"true"e.hasActivated,修改成 e.hasActivated&…...
工作记录 2017-01-12
序号 工作 相关人员 1 协助BPO进行Billing的工作。 处理Amazing Charts的数据查询。 修改BillingJobPoster,处理CCDA 的自动导入,预计还需一天才能完成。 修改录入Code的界面(code 移动到指定位置),预计明天更新。…...
【Linux】从互斥原理到C++ RAII封装实践
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...
爬虫案例十三js逆向模拟登录中大网校
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码 前言 提示:这里可以添加本文要记录的大概内容: js 逆向模拟登录中大网校 提示:以下是本篇文章正文内…...
WPF窗口读取、显示、修改、另存excel文件——CAD c#二次开发
效果如下: using System.Data; using System.IO; using System.Windows; using Microsoft.Win32; using ExcelDataReader; using System.Text; using ClosedXML.Excel;namespace IfoxDemo {public partial class SimpleWindow : Window{public SimpleWindow(){Initi…...
01 | Go 项目开发极速入门课介绍
提示: 所有体系课见专栏:Go 项目开发极速入门实战课。 你好,欢迎学习本课程。本课程是一个 Go 项目开发极速入门课程。旨在帮助刚学习完 Go 基础语法的 Go 开发者,快速掌握如何开发一个功能相对全面的 Go 项目。 根据课程设计目标…...
Spring Cloud LoadBalancer 原理与实践
背景 当前我们的微服务架构基于Spring Cloud Alibaba体系,通过定制NacosRule实现了跨集群访问和灰度发布功能。但随着Spring Cloud与Nacos版本升级,官方已弃用Ribbon转向LoadBalancer,这要求我们完成以下技术升级: 负载均衡机制…...
Vmware下的openEuler
1.下载openEuler操作系统镜像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/ 2.在VM新建虚拟机 3.虚拟机联网 我是出现了没有网络,ping不通的问题 参考:https://blog.csdn.net/FHY26828/article/details/140941234 修改文件: 在…...
spring security学习入门指引
学习 Spring Security 可以从以下几个方面逐步深入,结合理论与实践,以下是具体的学习路径建议: 1. 基础准备 • 熟悉 Spring 框架: 先掌握 Spring Core、Spring MVC 和 Spring Boot 的基础,理解依赖注入(D…...
【瞎折腾/Dify】使用docker离线部署Dify
文章目录 说在前面安装Docker(外网)获取Dify源码(外网)拉取docker镜像(外网)导出镜像(内网)导入镜像(内网)运行问题 说在前面 外网操作系统:windows内网操作系统:ubuntu外网docker desktop版本:4.29.0外网docker版本:version 26.0…...
Java EE Web环境安装
Java EE Web环境安装 一、JDK安装与测试(Windows环境) 1. 安装JDK 官网下载:Oracle JDK(选择Windows x64 Installer)双击安装包,按向导完成安装 2. 环境变量配置 右键【此电脑】→【属性】→【高级…...
Node.js中HTTPS模块应用详解
1. HTTPS 模块的概念 HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,通过 SSL/TLS 协议对数据进行加密,确保数据在传输过程中不被窃取或篡改。在 Node.js 中,https 模块提供了创建 HTTPS 服务器和客户…...
我测试了AI搜索:试图替代谷歌搜索
随着人工智能工具的不断进步,探讨它们是否能够取代传统搜索引擎如谷歌,已成为一个引人入胜的话题。 有一点是确定的:并非所有的人工智能都可用。它们需要的主要特性是能够访问互联网以获取最新信息,这就排除了Anthropic的Claude。 人工智能在某些方面可以增强或改进谷歌搜…...
大语言模型基础之‘显存优化‘
上一篇可扩展的训练技术(二)中,我们介绍了零冗余优化器(Zero Redundancy Optimizer, Zero),该技术由DeepSpeed代码库提出,主要用于解决数据并行中的模型冗余技术,即在数据并行训练中,每个GPU上都…...
【Nexus】Maven 私服搭建以及上传自己的Jar包
Nexus 安装 docker run -d -uroot --name nexus3 --restartalways -p 8081:8081 -v /data/nexus-data/blobs:/nexus-data/blobs -v /etc/localtime:/etc/localtime sonatype/nexus3这里也提供一下docker-composer的方法 .env 文件 VERSIONlatest CONTAINER_NAMECONTAINER_N…...
css模拟雷达扫描动画
<div class"radar-scan"><div class"radar-container" /></div> 样式: .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…...
冠珠瓷砖×郭培“惟质致美”品质主题片上映,讲述高定艺术背后的致美品质故事
168年前,一位英国服装设计师,开创了「高级定制」的先河。时至今日,从服装到各行各业「高级定制」始终代表着对完美的极致追求,成为了行业至高境界的象征。 被誉为“中国高定第一人”,高级定制服装设计师郭培࿰…...
【Java 基础(人话版)】进制转换
进制的简单介绍 整数可以使用四种不同的进制表示方式: 二进制 (Binary):由 0 和 1 组成,满 2 进 1,以 0b 或 0B 开头表示。十进制 (Decimal):由 0-9 组成,满 10 进 1,是最常用的数值表示方式。…...
3DS模拟器使用(pc+安卓)+金手指+存档互传
1、引言 3ds模拟器已经能够在手机端近乎完美模拟了,那么多的3ds游戏,比玩手机游戏舒服多了。 本人是精灵宝可梦的老玩家,从第一世代就一直在玩,刚耍完NDS的第五世代,黑白系列。现在到宝可梦XY了,需要在3d…...
