当前位置:
通俗易懂TSN(中)-它的三个重要工作
回复 | 人气 | 打印
SeanSong 个人主页 给TA发消息 加TA为好友 发表于:2020-03-04 11:10:20 楼主

上次把TSN的背景的事情说了一下,就是为什么(Why)要推进TSN?以及TSN的历史,这次我们谈谈它是如何运行的(How)?

 

TSN到底怎么运行的?(How)

简而言之,TSN核心工作就是三件事,(1)对表,(2)控制红绿灯开关让车流通过的流量调度策略,(3).配置网络的工具。

image.png

第一件事情:对表

先说对表吧!小时候看电影(80年代初,很多是黑白的)最喜欢就是看打仗的片子,小时候不明白,为啥每次打仗前指战员们都会亮起胳膊说“对表”—困惑了很多年,后来慢慢的悟出点门道了,古代的打仗就是骑兵、机弩、强弩、还有什么投石车、云梯、耧车、攻城车辆,这些兵种都得按时间顺序进行配合,别骑兵冲太快,被自己后面的强弩给射死了,应该是刚好箭的压制到对方不能抬头,然后骑兵刚好到,让对方无法准备,这都要考虑箭的射速、最大射程、骑兵运动距离与速度,实现最佳的匹配—这就是所谓的协同作战,制造过程里也是一样的啊!所有机器要协调,必须对表啊!否则,刀具就被磕坏了,模具就被撞了,那多麻烦,只不过,制造这个时间的精度是微秒级,而那个骑兵打仗可以到秒这个准确度上就好了,当然现在的打仗也要精度很高,否则一颗导弹扔偏了损失几十万几百万美刀不说,还可能把自己的盟友炸了(美国海湾战争不就经常干这种事吗?)。

 

对表得先有个基准

怎么对表呢?以谁的表为基准呢?这个世界的原则其实很简单—谁的表贵就是谁的,你要是带快那种几十块的不知道啥牌子的,那不行,人家天梭(Tissot)就得压你一头,当主时钟,你要是像B和抖音里那个朱一旦一样,动辄拿出块奥米伽(Omega),那起步也得5千欧罗,你行你上,这时突然有一老派男人悠然掏出一块百达.翡丽(Partek Philippe)—“你并不真正拥有着块表,你只是替你的后代保存这块表”,识货的主就会让它做主时钟(Master)你不让人家做主时钟行吗?然后,你们都变成奴隶(Slave),听人家的。

image.png

选好主时钟,然后就得把时钟信息发给你们每个人了,你们就以人家为准,调整自己的时间吧!当然了,这里还有问题就是这个线路上总会消耗点时间、时间信息出去了,你如果不给闭环反馈一下,它这个时间在路上走了多少时间,其实你也不知道,比如昨天我经过路口刚好赶上绿灯,今天我刚好一路上老碰到红灯,这个时间就具有不确定性啊!那这个延迟怎么被计算出来让其它人都知道,你到底啥时候出发的?估计啥时候能到啊?对表是为了让大家都知道时间,然后延迟计算就是让大家能够清楚的知道耽误了多少时间?

 

TSN是由一系列标准构成的,其中第一类标准就是对表和延迟计算用的,叫IEEE802.1AS,IEEE802.1AS-Rev,都是在IEEE1588时钟同步协议上发展的升级版。

 

第二件事情就是流量调度


什么叫调度策略?

医院里挂号10个窗口10个队,而浦东机场国际进关是1个队列对20个窗口,哪个效率更高?据我的老师在进行数据分析说,机场这个队列的调度机制会效率更高,因为,大家都知道,你发现你前面总是会遇到一个要么到了才拿出卡或钱包、然后还问来问去搞不清楚,但是,机场就是只要前面一个窗口结束,马上队列就可以补上去,所以,是比较快的—这就是好的调度和差的调度机制设计,它不牵扯到任何的技术,只是一个策略选择问题,所以,选择一种策略机制本身也是关乎效率的。

 

交通流量调度

TSN作为通信,其实它的流量调度,就跟路口的交通里的红绿灯一样,都是为了最大的效率,降低拥堵,提高通行效率。其实,交通系统里为了降低拥塞、提高吞吐能力(负荷)的方式可多了,像高铁,那就是专用通道,人家是专用的轨道上跑的,别的车跑不了,你要说交通的话,还有这个不用红绿灯的,提高效率,上海、北京很多城市都有高架,有立交桥来进行流量分配,不过,听说西二环那个立交桥都会让司机绕圈,所以流量调度还是很讲究的。

image.png

高铁这种专用通道,一般来说就像是以前的实时以太网,它必须得有铁轨,而且这个铁轨还不能随便开叉,八横八纵,而且它太快了,你不能一个小站都停一下,它启动和制动的过程消耗的时间就挺长—从北京到上海的高铁,停站3个的和停站10个就差了1个小时,你不能像高速公路可以深入到小的城市,而且到处有入口出口,高速公路算是一种提高效率的办法,比以前国道那种到处都是开口的就方便了,越是少的道口就速度越高,但是,那样就不灵活了,必须你们才能走,而且还比较贵—因为我们拥有全世界最长的收费高速公路,也不是谁都消耗的起的,所以,还得有国道、省道这种普通公路,还得有乡间低等级公路,经济实惠。

image.png


TSN其实就是一种混合模式的交通方式—既可以有专用通道让你紧急的车走,还有让你消防车也可以、还有就是普通车,这个时候就不管你们开BMW还是夏利,都按照那两根车道走。

 

TSN的几个调度器(Shaper)

TSN如果从技术上来说,有几种常用的Shaper-可以翻译成“整形器”、“赋型器”,或者有的也叫“Scheduler”-调度器,都可以,因为它的本质就是一个数据调度的策略,策略这个词看上去挺高大上,其实,简单就是谁先走,谁后走的问题。

 

严格优先级

在说TSN调度策略之前,我们先要说一下“优先级”的问题,在TSN的数据包里,它与标准以太网包不同,是插入了32位标记数据帧,其中有3位是优先级标记的,这个是按照一种严格优先级,就是0/1/2/3/4/5/6/7这个顺序,在策略上称为“严格优先级”,你们按照优先级顺序,人家走了你才能走,不要跟我说你有十万火急的事情,爷这里就这规矩,想插队没门。

  

TSN调度策略(基于多种整形器来实现)

策略1:基于信用的整形器(CBS)

基于信用的整形器(Credit-Based Shaper),是比较早的一个策略,在2012年那会人家就已经开始研究了,在这个调度策略里,有两个VIP客户,他们不能等你们按照那个严格优先级来走的,其中两个队列赋予了较高的优先级,你们两个先走,但是,1号队列走的时候你的信用—这个重要的指标就会下降,2号队列里的数据,它信用会上升,然后1号传完或信用没了,2号来传,等1号和2号传完了,其它队列在按照所谓的优先级来传。

image.png


万一它两个队列占着这个电话线不放呢?不行,他们两个加起来不能超过整个带宽的75%,否则,你碰到两个话多的,别人就没有机会插话了,那信息就无法协同了。

 

这个机制它在7个跳转(Hop-数据流经过一个交换机叫一个跳转)它会有250μS的延时,这个对于ADAS还是可以接受的,因此,目前汽车工业主要是这个整形器的研发为主。

 

在汽车行业里,他们把这个CBS对应的标准IEEE802.1Qav和IEEE802.1Qat和IEEE802.1AS三个标准打了个包,叫IEEE802.1AVB,Qav就是整形器,Qat则是一个网络配置的方法,AS就是对表的标准,所以,这是一个标准包,就人家汽车行业那帮大佬宝马、大众、奥迪、奔驰等一帮大众在玩。

 

策略2:时间感知整形器(IEEE802.1Qbv-TAS)

 

工业里的时间要求比较苛刻—实时网络因此有时候也叫时间严苛型网络(Time Critical Network),在工业里觉得AVB那个还不够用,因此整了个叫时间感知整形器的策略(Time Awareness Shaper)--这个整形器的概念倒是比较容易理解:

你们每个数据节点的数据进了这个交换机的队列后,有很多个队列,然后,它有一个门控制列表,把你们分成1-8,然后它搞个周期性的队列扫描—特别提醒,这里是一个周期性的开关门列表,然后给你们调度:

ScheduledTraffic车辆:每个周期,第一个先走的,就是VVVIP车辆,这就是所谓的“周期性”、“确定性”数据,干工业的都很清楚,这个数据都是很高要求的,微秒级别的刷新。

ReservedTraffic-预留数据流,大家记得高速公路最右侧有个应急车道吧?不让你们走的,因为这个是给应急车辆比如消防车、救护车、警车,这些车辆平时未必会占用这个车道,但是,你也得给人家留着,万一有十万火急的事情,不能耽搁。

Best Effort:第三类就是其它那些数据,你们被定义为Best Effort—看这英文名字,感觉就是不受待见的感觉,我会尽最大努力的,我向你保证,但是,你自己心里有点数啊!人家还有VVVIP,VVIP,VIP在前面呢!

 

策略3:抢占式MAC(Qbu+802.3br)

 

其实,在Qbv的机制里,已经很快了,不过,人类追求更快、更高、更强的脚步从未停歇,咱们前面说这个Qbv会周期性的扫描端口,然后开门,但是,你知道,这个网络太庞大了,谁知道网络上还有谁正在传数据,所以,为了安全起见,每个周期开始前都留了一个“保护带宽”(Guardband),就是确保我这个周期一定网络是空闲的,这个保护带宽占了多少时间?它是一个标准以太网帧,对于千兆网来说,大概是1.5μS,所以,得想办法压缩一下这个时间,第二种情况在于—TSN网络的节点可不像以前的工业总线,一般都是小负载数据,TSN网络里可能传输的是视觉、视频信息,他们拿到带宽使用权后,有可能占着带宽不放—这怎么行,低优先级绝对不能占据太多高优先级人的时间。

image.png


抢占式MAC这个机制大概需要点硬件配合,就是在设计网络端口的时候采用了两块MAC芯片,一个叫可被抢占的MAC,一个叫快速的MAC,快速MAC发现我的周期到了,调度器就会把可被抢占推到堆栈里,你先等会,兄弟,我事情比较急,先过去,反正你不着急,打断就打断了,等他们走了再传一样的。

 

这个机制在标准里由IEEE802.1Qbu+IEEE802.1br,这个IEEE802.3br就是硬件的MAC标准,Qbu则是这个调度机制的名字。

这个机制就是有点麻烦,得硬件上专门弄个两块MAC这种的方式,所以,可能价格会贵点吧,但是,效率肯定比Qbv还要高点,否则,这钱花的没有头脑的。

 

策略4:周期性排队与转发(IEEE802.1Qch)

还有一种机制,叫周期性排队与转发(Cyclic Quening and Fowarding),这个机制针对桥节点转发的时候有个“一个周期走一步”的策略,比如,从这个点到另一个点,中间要经过好几个桥—比如队列里的4/5两个人,他们就每个周期相互客气一下,4号说,5号兄弟你先走,我这里输入数据,你输出,下一个周期,5号队列说,我这会输入数据,4号大哥你走吧,这个有点不好,就是对于这4号、5号两个兄弟来说,他们都是每隔一个周期才能经过一个桥,不过,好处也是有的,就是具有了“确定性”—怎么说这个时间也是确定的啊!当然了,这个同时也是要跟Qbv里提到的那个门控制队列有关,就是整个队列都有一个门控制队列给扫描开关端口。

 

当然了,还有一些其它的整形器和调度策略,例如ATS-针对异步数据整形器,进一步优化带宽使用效率,而IEEE802.1CB则是冗余方案,帧复制和丢弃的机制,这里就不多说了,否则太长了。

 

第三件事情:网络配置

 

你家里买了个电饭煲,你做饭的时候也要设置一下参数吧?

 

这个想起来似乎不够直观,大家想象一下铁路调度系统,每个车辆的速度(如复兴号、和谐号、动车组都不相同)、运行站点间距(北京到上海有停靠数量不同的车辆)、需要经停车站名称、车厢数量(8编组、12编组、16编组-对应展台也会不同),这些都是铁路这个输送系统节点的能力、需求信息,而每个铁路站点就相当于站台号(入站台轨道切换信息)、站台的停靠位置(还要每个车厢停靠到排队的乘客站的位置)、列车的延时信息(有时候也会晚点)、其它车辆的进出时间信息,而且在铁路调度中,会有闭塞系统,即,每个列车进入轨道运行期间需要先申请授权,然后占用后,别的车辆就不能使用,这些都是需要严格的调度的,整个全国火车的调度就是在既定的《全国铁路列车时刻表》—就是整个铁路网络的调度配置表。

image.png

而具体的乘客则根据售票系统搜集需求,并且自动计费,包括退票、换票的机制,这些都是网络需求在变化,然后分配车票的预售系统,给各个路段配置车票额度等,包括根据历史信息来调配车票—以实现最大的经济效益,这些都是智能调度系统来完成。

 

是的,铁路调度系统就是在复杂的网络节点、用户需求及动态变化中,为网络调度处最高效的运行效率,获得高的经济效益。

image.png


来源:微信号 说东道西

作者:宋华振

该作品已获作者授权,未经许可,禁止任何个人及第三方转载。


分享到: 关注收藏 邀请回答 回复 举报


周点击排行
周回复排行
最新求助