Linux和TSN网络

news2024/11/25 20:45:07

   

 

时间敏感网络是传统以太网的扩展,实现实时能力和确定性通信。终端通常是基于Linux OS 的,它的实时能力是通过PREEMPT-RT 补丁实现的。而设备的实时性网络是通过时间敏感性网络技术实现。到目前为止,大多数Linux OS 的TSN 都是通过特殊的解决方案实现的,那么,是否能够在主流的Linux 中实现TSN 网络呢?时间同步和流量调度都已经能够实现了。但是并没有实现完整的TSN 标准。

      本文介绍如何在标准的Linux 系统中配置TSN ,主要是linuxptp,tc 等工具。

TSN 解决方案

        TSN 网络的核心思想是将以太网通信带宽划分为多个流(stream)。数据流具有一个优先等级。与此同时,将数据包依据优先等级排队(传统的方式是先进先出方式),调度优先等级高的帧在一个stream  中传输。Stream 的调度方法采取时隙的方式,例如,将带宽分为固定周期,每个周期分为三个时隙,Slot0,Slot1和Slot3。time slot 0 的优先等级最高,time slot 1 其次。而time slot2 传输非实时数据。

 

 

实现TSN 的必备条件

时间同步协议PTP

       显然,要实现数据的周期性时隙传输,必备的条件是网络中的所有设备和交换机需要使用全网统一时钟,这样才能够避免数据帧的发送冲突。实现时分复用(TDM time division multplexer)。在TSN中,使用IEEE1588/PTP 实现全网精确时钟同步。

        Linux 内核具有支持PTP 硬件时钟(PHC)的子系统·,可以使用POSIX 时钟显示该时钟。通过·POSIX 接口读取,设置和控制。PTP 协议不是Linux 内核的一部分,在用户空间,使用linuxptp 实现IEEE 1588 和IEEE 802.1AS-1 的PTP 协议。在TSN 中通过802.1AS 完成同步,它是IEEE1588 的一部分,并且做了某些扩展,例如在Wifi 中的时间同步。TNS 目前计划实现IEEE802.1AS-2020.它在主流Linux 上还没有实现。值得一提的是,并非所有的以太网硬件接口都支持IEEE1588。有的设备上linuxptp 是软件实现的。精度大打折扣。

 VLAN 的配置

          TSN基于IEEE 802.1Q[7]的虚拟局域网(virtual local area network,VLAN)和优先级标准。

VLAN 帧结构

      TSN有一个服务等级(class of service,CoS)的概念。对TSN网络而言,不同优先级的服务对应PRI码。3位PCP码定义了0(最低)~7(最高)这8个优先级 。

        TSN域和非TSN域的区别在于VLAN ID,即,进入TSN网络会被交换机给打上VLAN标签,然后借助于TSN机制在该网络中传输,但离开了TSN网络的时候,这个VLAN标签会被去除,它也可以变为一个标准以太网帧被传输。

    显然,TSN需要使用Linux 添加VALN。

时间敏感网络的机制

     TSN 的实时能力是通过各种整形和调度(shapers and schedulers)完成。

     时间敏感整形是一种控制在网络数据路径中的每个跃点发送哪些数据包的方法。时间敏感整形器 (TAS) 通过将时间分解为用户指定长度的周期来实现此目的。然后,这些周期进一步细分为每个周期内用户指定的时间片数。

     其中每个时间片都有一个用户指定的持续时间。在每个时间片期间,用户通过指定与每个队列对应的哪些门(可能单个或多个门)“打开”或“关闭”来配置可以传输的流量优先级/队列,如图 2 所示:

       使用此机制,可以在非常特定的确定性时间发送时间关键型流量,而不会中断,否则可能会由其他流量的拥塞引起,因为计划列表可用于保证传输窗口。此外,可以在网络中的每个传输节点上配置和同步 TAS。鉴于数据路径上的所有节点都是时间同步的(使用 gPTP (802.1AS) 完成),它们可以被协调,并且可以授予特定数据包一个保留的时间范围,以在整个网络中不受阻碍地传播。因此,用户可以非常精细地控制发送哪些数据以及何时发送。

在Linux 中配置整形和调度算法

Linux 的应用程序通过socket 接口实现通信。网络协议栈处理数据包。网络协议有TCP/IP,UDP、IP和原始的以太网数据包和硬件控制。网络栈通过调度,类和过滤器等来配置。这些机制已经建立了许多年。由于TSN 是以太网的扩展,因此,TSN 的Linux 实现仍然使用这些机制。TSN直接将它集成到Linux 网络栈中,基本原理如下图所示:

        Linux内核控制网络硬件的访问,保证数据包在正确的时间发送。这就是时间隙管理组件(Time Slot Management component)。然而内核需要正确的配置。由于需求来自于应用程序, 协议栈通过Qdiscs配置。

        Qdisc 对应一个数据包调度器,作为TSN 实现的一部分,各种Qdiscs 开发了出来,并且集成到主流Linux内核中。

      使用Linux 原有的tc 命令来设置Qdiscs。

tc 命令

       Linux操作系统中的流量控制器TC(Traffic Control)在2001 年被导入,用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。

数据包调度

  TSN 开发了几种数据包调度算法

  • MQPRIO

      MQPRIO qdisc 是一个简单的队列规则,可以通过优先级以及优先级对应的流量等级,将不同流量映射到硬件队列的区间。连续的流量等级可以1对1的映射到硬件的队列上。

  • ETF (Earliest TxTime First) 

     ETF会在发送时间(txtime)到达之前的一段时间(delta) 缓存数据包,这个时间可以由delta选项控制。

  • ETS

       ETS基于预先设定的周期性门控制列表,动态地为出口队列提供开/关控制的机制。ETS定义了一个时间窗口,是一个时间触发型网络(Time-trigged)。这个窗口在这个机制中是被预先确定的。这个门控制列表被周期性的扫描,并按预先定义的次序为不同的队列开放传输端口。

在Linux 中 ETS 被称为Time Aware Priority Shaper (TAPRIO)。

流量整形(traffic shaping)

       shaper翻译为汉语的的意思是整形器,  整形的目的是为了让数据包发送的更规律,不至于短时间发送很多,然后很长时间不发送。同时可以根据需要限定带宽。

    内核 version 4.15 实现了 Credit Based Shaper(CBS),以Qdisc 的形式设置:

 结束语

         本文介绍了在标准的Linux OS 中,配置时间敏感网络的方法。进一步的实验在后续的博文中介绍。

 

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

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

相关文章

《cuda c编程权威指南》04 - 使用块和线程索引映射矩阵索引

目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 1. 解决的问题 利用块和线程索引,从全局内存中访问指定的数据。 2. 分析 通常情况下,矩阵是用行优先的方法在全局内存中线性存储的。如下。 8列6行矩阵(nx,ny)(…

链表OJ题讲解1

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大家三连关注,一起学习,一起进步&#…

MySQL高级篇第6章(索引的数据结构)

文章目录 1、为什么使用索引2、索引及其优缺点3、InnoDB中索引的推演4、MyISAM中的索引方案5、索引的代价6、MySQL数据结构选择的合理性 1、为什么使用索引 假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2、索引及其优缺点 3、InnoDB中索引的推演 4、M…

Spring中声明式事务

声明式事务:基于Spring AOP,通过注解或XML配置实现,有助于用户将操作与事务规则进行解耦。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务…

前端小练-产品宣传页面

文章目录 前言页面结构固定钉头部轮播JS特效 完整代码总结 前言 经过一个月的爆肝,花费了一个月(期间还花费了将近半个月的时间打比赛,还要备研)算是把数二高数的内容强化了一遍,接下来刷熟练度即可,可惜的…

VirtualBox Ubuntu无法安装增强功能以及无法复制粘贴踩坑记录

在VirtualBox安装增强功能想要和主机双向复制粘贴,中间查了很多资料,终于是弄好了。记录一下过程,可能对后来人也有帮助,我把我参考的几篇主要的博客都贴上来了,如果觉得我哪里讲得不清楚的,可以去对应的博…

前端生成图片验证码怎么做?

##题记:我们实现一个功能首先想一下我们需要做哪些工作,比如我们需要生成一个随机的图片验证码,我们需要一个就是点击事件获取验证码,通过接口我们去获取图片路径进行渲染就行,这里边还要牵扯一件事情就是获取一个随机…

uniapp开发小程序-实现中间凸起的 tabbar

一、效果展示: 二、代码实现: 1.首先在pages.json文件中进行tabbar的样式和列表配置,代码如下: {"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/p…

Stable Diffusion AI绘画学习指南【本地环境搭建win+mac】

一、硬件配配置要求 系统:windows 10 / Mac os 硬盘:C 盘预留 15GB 以上,其他盘 50GB 以上,Stable Ddiffusion的很多大模型都是以 GB 起步。 显卡:4GB 以上,建议 8GB, 效率高,能玩大尺寸的图 CPU&…

Socks IP轮换:为什么是数据挖掘和Web爬取的最佳选择?

在数据挖掘和Web爬取的过程中,IP轮换是一个非常重要的概念。数据挖掘和Web爬取需要从多个网站或来源获取数据,而这些网站通常会对来自同一IP地址的请求进行限制或封锁。为了避免这些问题,数据挖掘和Web爬取过程中需要使用Socks IP轮换技术。在…

Redis秒杀:一人一单问题及初步解决

优惠券秒杀一人一单 前言一、需求以及之前存在的问题二、增加一人一单逻辑1.初步代码2.封装一人一单逻辑3.控制锁的粒度 三、事务控制问题四、总结 前言 跟随黑马虎哥学习redis: 这是我认为b站上最好的redis教程,各方面讲解透彻,知识点覆盖…

Mr. Cappuccino的第53杯咖啡——Mybatis源码分析

Mybatis源码分析 Mybatis源码分析入口1. 读取配置文件总结 2. 解析配置文件核心代码(一)核心代码(二)分析parse()方法分析build()方法 总结 3. 获取SqlSession总结 4. 获取mapper代理对象总结 5. 使用mapper代理对象执行Sql语句二…

基于SpringBoot+Vue的会员制医疗预约服务管理信息系统设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Android Studio log的快捷键和使用

输入logi,然后按下Tab键,会自动补全一条info级别的打印日志。输入logw,按下Tab键,会自动补全一条warn级别的打印日志,以此类推。 如下图所示:

C#项目发布

C#项目发布 vs code 打包iis 配置 vs code 打包 iis 配置

VMware Linux Centos 配置网络并设置为静态ip

在root用户下进行以下操作 1. 查看子网ip和网关 (1)进入虚拟网络编辑器 (2)进入NAT设置 (3)记录子网IP和子网掩码 2. 修改网络配置文件 (1)cd到网络配置文件路径下 [rootlo…

【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

"不言而善应" 0. 基础知识1. 特征提取和匹配1.1 FAST关键点1.2 ORB的关键点--改进FAST1.3 ORB的描述子--BRIEF1.4 总结 2. 对极几何,对极约束2.1 本质矩阵(对极约束)2.1.1 求解本质矩阵2.1.2 恢复相机运动 R , t R,t R,…

推荐几款小众且无广告的软件,你值得拥有

你是否喜欢一些小众且无广告的软件?如果是的话,我这边有一些给你推荐的。 护眼软件——EyeLoveU ​ EyeLoveU是一款免费的护眼软件,可以在你使用电脑一段时间后,提醒你该让眼睛休息。EyeLoveU是一种智能的眼睛保护程序&#xff…

python tkinker界面

import tkinter from PIL import Image, ImageTkdog tkinter.Tk() # 设置图片描绘的坐标,注意乘号是字母x dog.geometry(500x500200100) # 不允许修改大小 dog.resizable(False, False) # 不显示标题栏 dog.overrideredirect(True) # 设置白色透明色,这…

【玩转pandas系列】数据清洗(文末送书福利)

文章目录 一、重复值检测二、元素替换1️⃣ 元素替换replace2️⃣ 数据映射map 三、修改索引1️⃣ 修改索引名rename2️⃣ 设置索引和重置索引 四、数据处理1️⃣ apply与applymap2️⃣ transform 五、异常值处理六、抽样聚合函数1️⃣ 抽样2️⃣ 数学函数 七、分组聚合&#x…