上次把TSN的背景的事情說了一下,就是為什么(Why)要推進TSN?以及TSN的歷史,這次我們談談它是如何運行的(How)?
TSN到底怎么運行的?(How)
簡而言之,TSN核心工作就是三件事,(1)對表,(2)控制紅綠燈開關(guān)讓車流通過的流量調(diào)度策略,(3).配置網(wǎng)絡的工具。
第一件事情:對表
先說對表吧!小時候看電影(80年代初,很多是黑白的)最喜歡就是看打仗的片子,小時候不明白,為啥每次打仗前指戰(zhàn)員們都會亮起胳膊說“對表”—困惑了很多年,后來慢慢的悟出點門道了,古代的打仗就是騎兵、機弩、強弩、還有什么投石車、云梯、耬車、攻城車輛,這些兵種都得按時間順序進行配合,別騎兵沖太快,被自己后面的強弩給射死了,應該是剛好箭的壓制到對方不能抬頭,然后騎兵剛好到,讓對方無法準備,這都要考慮箭的射速、最大射程、騎兵運動距離與速度,實現(xiàn)最佳的匹配—這就是所謂的協(xié)同作戰(zhàn),制造過程里也是一樣的??!所有機器要協(xié)調(diào),必須對表??!否則,刀具就被磕壞了,模具就被撞了,那多麻煩,只不過,制造這個時間的精度是微秒級,而那個騎兵打仗可以到秒這個準確度上就好了,當然現(xiàn)在的打仗也要精度很高,否則一顆導彈扔偏了損失幾十萬幾百萬美刀不說,還可能把自己的盟友炸了(美國海灣戰(zhàn)爭不就經(jīng)常干這種事嗎?)。
對表得先有個基準
怎么對表呢?以誰的表為基準呢?這個世界的原則其實很簡單—誰的表貴就是誰的,你要是帶快那種幾十塊的不知道啥牌子的,那不行,人家天梭(Tissot)就得壓你一頭,當主時鐘,你要是像B和抖音里那個朱一旦一樣,動輒拿出塊奧米伽(Omega),那起步也得5千歐羅,你行你上,這時突然有一老派男人悠然掏出一塊百達.翡麗(PartekPhilippe)—“你并不真正擁有著塊表,你只是替你的后代保存這塊表”,識貨的主就會讓它做主時鐘(Master)你不讓人家做主時鐘行嗎?然后,你們都變成奴隸(Slave),聽人家的。
選好主時鐘,然后就得把時鐘信息發(fā)給你們每個人了,你們就以人家為準,調(diào)整自己的時間吧!當然了,這里還有問題就是這個線路上總會消耗點時間、時間信息出去了,你如果不給閉環(huán)反饋一下,它這個時間在路上走了多少時間,其實你也不知道,比如昨天我經(jīng)過路口剛好趕上綠燈,今天我剛好一路上老碰到紅燈,這個時間就具有不確定性?。∧沁@個延遲怎么被計算出來讓其它人都知道,你到底啥時候出發(fā)的?估計啥時候能到?。繉Ρ硎菫榱俗尨蠹叶贾罆r間,然后延遲計算就是讓大家能夠清楚的知道耽誤了多少時間?
TSN是由一系列標準構(gòu)成的,其中第一類標準就是對表和延遲計算用的,叫IEEE802.1AS,IEEE802.1AS-Rev,都是在IEEE1588時鐘同步協(xié)議上發(fā)展的升級版。
第二件事情就是流量調(diào)度
什么叫調(diào)度策略?
醫(yī)院里掛號10個窗口10個隊,而浦東機場國際進關(guān)是1個隊列對20個窗口,哪個效率更高?據(jù)我的老師在進行數(shù)據(jù)分析說,機場這個隊列的調(diào)度機制會效率更高,因為,大家都知道,你發(fā)現(xiàn)你前面總是會遇到一個要么到了才拿出卡或錢包、然后還問來問去搞不清楚,但是,機場就是只要前面一個窗口結(jié)束,馬上隊列就可以補上去,所以,是比較快的—這就是好的調(diào)度和差的調(diào)度機制設(shè)計,它不牽扯到任何的技術(shù),只是一個策略選擇問題,所以,選擇一種策略機制本身也是關(guān)乎效率的。
交通流量調(diào)度
TSN作為通信,其實它的流量調(diào)度,就跟路口的交通里的紅綠燈一樣,都是為了最大的效率,降低擁堵,提高通行效率。其實,交通系統(tǒng)里為了降低擁塞、提高吞吐能力(負荷)的方式可多了,像高鐵,那就是專用通道,人家是專用的軌道上跑的,別的車跑不了,你要說交通的話,還有這個不用紅綠燈的,提高效率,上海、北京很多城市都有高架,有立交橋來進行流量分配,不過,聽說西二環(huán)那個立交橋都會讓司機繞圈,所以流量調(diào)度還是很講究的。
高鐵這種專用通道,一般來說就像是以前的實時以太網(wǎng),它必須得有鐵軌,而且這個鐵軌還不能隨便開叉,八橫八縱,而且它太快了,你不能一個小站都停一下,它啟動和制動的過程消耗的時間就挺長—從北京到上海的高鐵,停站3個的和停站10個就差了1個小時,你不能像高速公路可以深入到小的城市,而且到處有入口出口,高速公路算是一種提高效率的辦法,比以前國道那種到處都是開口的就方便了,越是少的道口就速度越高,但是,那樣就不靈活了,必須你們才能走,而且還比較貴—因為我們擁有全世界最長的收費高速公路,也不是誰都消耗的起的,所以,還得有國道、省道這種普通公路,還得有鄉(xiāng)間低等級公路,經(jīng)濟實惠。
TSN其實就是一種混合模式的交通方式—既可以有專用通道讓你緊急的車走,還有讓你消防車也可以、還有就是普通車,這個時候就不管你們開BMW還是夏利,都按照那兩根車道走。
TSN的幾個調(diào)度器(Shaper)
TSN如果從技術(shù)上來說,有幾種常用的Shaper-可以翻譯成“整形器”、“賦型器”,或者有的也叫“Scheduler”-調(diào)度器,都可以,因為它的本質(zhì)就是一個數(shù)據(jù)調(diào)度的策略,策略這個詞看上去挺高大上,其實,簡單就是誰先走,誰后走的問題。
嚴格優(yōu)先級
在說TSN調(diào)度策略之前,我們先要說一下“優(yōu)先級”的問題,在TSN的數(shù)據(jù)包里,它與標準以太網(wǎng)包不同,是插入了32位標記數(shù)據(jù)幀,其中有3位是優(yōu)先級標記的,這個是按照一種嚴格優(yōu)先級,就是0/1/2/3/4/5/6/7這個順序,在策略上稱為“嚴格優(yōu)先級”,你們按照優(yōu)先級順序,人家走了你才能走,不要跟我說你有十萬火急的事情,爺這里就這規(guī)矩,想插隊沒門。
TSN調(diào)度策略(基于多種整形器來實現(xiàn))
策略1:基于信用的整形器(CBS)
基于信用的整形器(Credit-BasedShaper),是比較早的一個策略,在2012年那會人家就已經(jīng)開始研究了,在這個調(diào)度策略里,有兩個VIP客戶,他們不能等你們按照那個嚴格優(yōu)先級來走的,其中兩個隊列賦予了較高的優(yōu)先級,你們兩個先走,但是,1號隊列走的時候你的信用—這個重要的指標就會下降,2號隊列里的數(shù)據(jù),它信用會上升,然后1號傳完或信用沒了,2號來傳,等1號和2號傳完了,其它隊列在按照所謂的優(yōu)先級來傳。
萬一它兩個隊列占著這個電話線不放呢?不行,他們兩個加起來不能超過整個帶寬的75%,否則,你碰到兩個話多的,別人就沒有機會插話了,那信息就無法協(xié)同了。
這個機制它在7個跳轉(zhuǎn)(Hop-數(shù)據(jù)流經(jīng)過一個交換機叫一個跳轉(zhuǎn))它會有250μS的延時,這個對于ADAS還是可以接受的,因此,目前汽車工業(yè)主要是這個整形器的研發(fā)為主。
在汽車行業(yè)里,他們把這個CBS對應的標準IEEE802.1Qav和IEEE802.1Qat和IEEE802.1AS三個標準打了個包,叫IEEE802.1AVB,Qav就是整形器,Qat則是一個網(wǎng)絡配置的方法,AS就是對表的標準,所以,這是一個標準包,就人家汽車行業(yè)那幫大佬寶馬、大眾、奧迪、奔馳等一幫大眾在玩。
策略2:時間感知整形器(IEEE802.1Qbv-TAS)
工業(yè)里的時間要求比較苛刻—實時網(wǎng)絡因此有時候也叫時間嚴苛型網(wǎng)絡(TimeCriticalNetwork),在工業(yè)里覺得AVB那個還不夠用,因此整了個叫時間感知整形器的策略(TimeAwarenessShaper)--這個整形器的概念倒是比較容易理解:
你們每個數(shù)據(jù)節(jié)點的數(shù)據(jù)進了這個交換機的隊列后,有很多個隊列,然后,它有一個門控制列表,把你們分成1-8,然后它搞個周期性的隊列掃描—特別提醒,這里是一個周期性的開關(guān)門列表,然后給你們調(diào)度:
ScheduledTraffic車輛:每個周期,第一個先走的,就是VVVIP車輛,這就是所謂的“周期性”、“確定性”數(shù)據(jù),干工業(yè)的都很清楚,這個數(shù)據(jù)都是很高要求的,微秒級別的刷新。
ReservedTraffic-預留數(shù)據(jù)流,大家記得高速公路最右側(cè)有個應急車道吧?不讓你們走的,因為這個是給應急車輛比如消防車、救護車、警車,這些車輛平時未必會占用這個車道,但是,你也得給人家留著,萬一有十萬火急的事情,不能耽擱。
BestEffort:第三類就是其它那些數(shù)據(jù),你們被定義為BestEffort—看這英文名字,感覺就是不受待見的感覺,我會盡最大努力的,我向你保證,但是,你自己心里有點數(shù)??!人家還有VVVIP,VVIP,VIP在前面呢!
策略3:搶占式MAC(Qbu+802.3br)
其實,在Qbv的機制里,已經(jīng)很快了,不過,人類追求更快、更高、更強的腳步從未停歇,咱們前面說這個Qbv會周期性的掃描端口,然后開門,但是,你知道,這個網(wǎng)絡太龐大了,誰知道網(wǎng)絡上還有誰正在傳數(shù)據(jù),所以,為了安全起見,每個周期開始前都留了一個“保護帶寬”(Guardband),就是確保我這個周期一定網(wǎng)絡是空閑的,這個保護帶寬占了多少時間?它是一個標準以太網(wǎng)幀,對于千兆網(wǎng)來說,大概是1.5μS,所以,得想辦法壓縮一下這個時間,第二種情況在于—TSN網(wǎng)絡的節(jié)點可不像以前的工業(yè)總線,一般都是小負載數(shù)據(jù),TSN網(wǎng)絡里可能傳輸?shù)氖且曈X、視頻信息,他們拿到帶寬使用權(quán)后,有可能占著帶寬不放—這怎么行,低優(yōu)先級絕對不能占據(jù)太多高優(yōu)先級人的時間。
搶占式MAC這個機制大概需要點硬件配合,就是在設(shè)計網(wǎng)絡端口的時候采用了兩塊MAC芯片,一個叫可被搶占的MAC,一個叫快速的MAC,快速MAC發(fā)現(xiàn)我的周期到了,調(diào)度器就會把可被搶占推到堆棧里,你先等會,兄弟,我事情比較急,先過去,反正你不著急,打斷就打斷了,等他們走了再傳一樣的。
這個機制在標準里由IEEE802.1Qbu+IEEE802.1br,這個IEEE802.3br就是硬件的MAC標準,Qbu則是這個調(diào)度機制的名字。
這個機制就是有點麻煩,得硬件上專門弄個兩塊MAC這種的方式,所以,可能價格會貴點吧,但是,效率肯定比Qbv還要高點,否則,這錢花的沒有頭腦的。
策略4:周期性排隊與轉(zhuǎn)發(fā)(IEEE802.1Qch)
還有一種機制,叫周期性排隊與轉(zhuǎn)發(fā)(CyclicQueningandFowarding),這個機制針對橋節(jié)點轉(zhuǎn)發(fā)的時候有個“一個周期走一步”的策略,比如,從這個點到另一個點,中間要經(jīng)過好幾個橋—比如隊列里的4/5兩個人,他們就每個周期相互客氣一下,4號說,5號兄弟你先走,我這里輸入數(shù)據(jù),你輸出,下一個周期,5號隊列說,我這會輸入數(shù)據(jù),4號大哥你走吧,這個有點不好,就是對于這4號、5號兩個兄弟來說,他們都是每隔一個周期才能經(jīng)過一個橋,不過,好處也是有的,就是具有了“確定性”—怎么說這個時間也是確定的??!當然了,這個同時也是要跟Qbv里提到的那個門控制隊列有關(guān),就是整個隊列都有一個門控制隊列給掃描開關(guān)端口。
當然了,還有一些其它的整形器和調(diào)度策略,例如ATS-針對異步數(shù)據(jù)整形器,進一步優(yōu)化帶寬使用效率,而IEEE802.1CB則是冗余方案,幀復制和丟棄的機制,這里就不多說了,否則太長了。
第三件事情:網(wǎng)絡配置
你家里買了個電飯煲,你做飯的時候也要設(shè)置一下參數(shù)吧?
這個想起來似乎不夠直觀,大家想象一下鐵路調(diào)度系統(tǒng),每個車輛的速度(如復興號、和諧號、動車組都不相同)、運行站點間距(北京到上海有??繑?shù)量不同的車輛)、需要經(jīng)停車站名稱、車廂數(shù)量(8編組、12編組、16編組-對應展臺也會不同),這些都是鐵路這個輸送系統(tǒng)節(jié)點的能力、需求信息,而每個鐵路站點就相當于站臺號(入站臺軌道切換信息)、站臺的??课恢茫ㄟ€要每個車廂??康脚抨牭某丝驼镜奈恢茫?、列車的延時信息(有時候也會晚點)、其它車輛的進出時間信息,而且在鐵路調(diào)度中,會有閉塞系統(tǒng),即,每個列車進入軌道運行期間需要先申請授權(quán),然后占用后,別的車輛就不能使用,這些都是需要嚴格的調(diào)度的,整個全國火車的調(diào)度就是在既定的《全國鐵路列車時刻表》—就是整個鐵路網(wǎng)絡的調(diào)度配置表。
而具體的乘客則根據(jù)售票系統(tǒng)搜集需求,并且自動計費,包括退票、換票的機制,這些都是網(wǎng)絡需求在變化,然后分配車票的預售系統(tǒng),給各個路段配置車票額度等,包括根據(jù)歷史信息來調(diào)配車票—以實現(xiàn)最大的經(jīng)濟效益,這些都是智能調(diào)度系統(tǒng)來完成。
是的,鐵路調(diào)度系統(tǒng)就是在復雜的網(wǎng)絡節(jié)點、用戶需求及動態(tài)變化中,為網(wǎng)絡調(diào)度處最高效的運行效率,獲得高的經(jīng)濟效益。
TSN也有類似這個過程,TSN第三個重要的標準在于網(wǎng)絡和用戶配置,因為,你這個網(wǎng)絡數(shù)據(jù)類型比較復雜、節(jié)點數(shù)又比較大,又有橋節(jié)點(交換機)和終端節(jié)點(如控制器、IO站、儀表),他們各自的需求如帶寬、周期、丟包率、數(shù)據(jù)負載都不同,這是用戶的需求,而網(wǎng)絡的節(jié)點能力,如時鐘精度、支持的調(diào)度機制等都是不同的,那么,就需要一個整體的優(yōu)化和路徑的確定,這個就是IEEE802.1Qcc-這個稱為增強型的流預留協(xié)議,其實在前面提到的汽車行業(yè)里IEEE802.1Qat就是一種配置方式,這個方式比較簡單。
Qcc是一個數(shù)據(jù)節(jié)點、橋節(jié)點的注冊信息,把網(wǎng)絡節(jié)點能力、用戶需求進行匹配,然后生成最佳路徑表發(fā)給每個節(jié)點,由他們進行數(shù)據(jù)流的調(diào)度和管理,當網(wǎng)絡發(fā)生變化時,這些信息被更新,并重新定義網(wǎng)絡的調(diào)度表。
TSN要干的三個大事講完了,大家就大致明白了TSN就是個對表、調(diào)度、配置三件事的各種標準組合。
下次再講講現(xiàn)在TSN的進展吧,誰都干什么了?進展到什么程度了?要想開發(fā)的話,有什么資源可以用?