工博會忙完,又該繼續(xù)TSN系列連載時(shí)間!沒記錯的話這已經(jīng)是第4期了。
例行回顧,在上一期文章中,我們從三大方面了解了TSN網(wǎng)絡(luò)的是如何工作【TSN系列連載3:TSN網(wǎng)絡(luò)的工作方式是怎樣的?分三點(diǎn)給你講清楚】。這三大方面分別為:
一,時(shí)間同步
二,調(diào)度和流量整形
三,選擇信道、信道預(yù)留和容錯
其中提到的TSN網(wǎng)絡(luò)的“調(diào)度和流量整形”,當(dāng)時(shí)我們并沒有展開做深入的分析解釋,但后臺有不少小伙伴留言表示對這一問題比較感興趣,在C小C強(qiáng)烈請求(SiChanLanDa)下,這一期就讓技術(shù)小哥哥給咱們仔細(xì)分析一下TSN網(wǎng)絡(luò)的調(diào)度和流量整形。
下邊這個(gè)示例表,是IEEE802.1Qbv調(diào)度程序配置的一個(gè)示例顯示▼:
↑↑↑圖1:IEEE802.1Qbv調(diào)度程序示例
在此示例中,每個(gè)循環(huán)由兩個(gè)時(shí)間片組成。
時(shí)間片1僅允許傳輸標(biāo)記有VLAN優(yōu)先級3的流量,并且每個(gè)周期中的時(shí)間片2允許發(fā)送其余優(yōu)先級。由于IEEE802.1Qbv調(diào)度程序要求所有網(wǎng)絡(luò)設(shè)備(包括以太網(wǎng)交換機(jī)和終端設(shè)備)上的所有時(shí)鐘都要同步并且要遵循相同的調(diào)度,因此所有設(shè)備都知道在一個(gè)給定時(shí)間點(diǎn)可以將哪個(gè)優(yōu)先級的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)。由于時(shí)間片2能夠分配給其他的多個(gè)優(yōu)先級,因此在該時(shí)間片內(nèi),可以根據(jù)標(biāo)準(zhǔn)IEEE802.1Q所規(guī)定的優(yōu)先級調(diào)度來處理優(yōu)先級。
通過包括其他調(diào)度或流量整形算法,在IEEE802.1所規(guī)定的TSN網(wǎng)絡(luò)中,定義了不同調(diào)度和流量整形程序,可以實(shí)現(xiàn)硬實(shí)時(shí)數(shù)據(jù)傳輸、軟實(shí)時(shí)數(shù)據(jù)傳輸和后臺業(yè)務(wù)能夠在同一個(gè)以太網(wǎng)介質(zhì)中共存。
IEEE802.1Qbv進(jìn)行了更詳細(xì)的定義:時(shí)間片和保護(hù)帶
以太網(wǎng)接口必須在一次數(shù)據(jù)完成后才能開始新的數(shù)據(jù)傳輸,包括在幀結(jié)束時(shí)傳輸CRC32校驗(yàn)數(shù)據(jù)。因此,以太網(wǎng)的這種特性再次對IEEE802.1Qbv調(diào)度程序的TDMA方法提出了挑戰(zhàn)。這在圖2中可見▼:
圖2:在盡力而為時(shí)間片中發(fā)送太晚的幀侵犯了高優(yōu)先級時(shí)間片
如上圖所示,在周期n中時(shí)間片1尚有空閑,一個(gè)新的數(shù)據(jù)幀開始傳送,但由于數(shù)據(jù)幀太大,無法適應(yīng)調(diào)度程序所規(guī)定的時(shí)間片,但由于該數(shù)據(jù)幀的傳輸不能被中斷,所以就會侵犯下一個(gè)周期n+1的時(shí)間片1。由于關(guān)鍵時(shí)間片被部分或全部占用,實(shí)時(shí)幀可能會發(fā)生延遲,以至于不能滿足應(yīng)用要求。這與非TSN以太網(wǎng)交換機(jī)中發(fā)生的緩沖效果其實(shí)是非常相似的,因此TSN必須指定一種機(jī)制來防止這一情況的發(fā)生。
所以,在實(shí)際應(yīng)用中,IEEE802.1Qbv時(shí)間感知調(diào)度程序必須確保時(shí)間片在切換時(shí)以太網(wǎng)接口是空閑的。
為滿足這一要求,調(diào)度程序會在每個(gè)用于傳輸關(guān)鍵流量的時(shí)間片前面放置一個(gè)保護(hù)帶。在該保護(hù)帶間,不能啟動新的以太網(wǎng)幀傳輸,僅可以完成正在傳輸?shù)臄?shù)據(jù)幀。而該保護(hù)帶的時(shí)長則必須與進(jìn)行安全傳輸最大幀所需的時(shí)長一致。
對于符合IEEE802.3的以太網(wǎng)幀,如果具有單個(gè)IEEE802.1QVLAN標(biāo)記并包括幀間間隔,其最大總長度為:1500字節(jié)(有效幀數(shù)據(jù))+18字節(jié)(以太網(wǎng)地址,類型和CRC)+4字節(jié)(VLAN標(biāo)簽)+12字節(jié)(幀間隔)+8字節(jié)(前導(dǎo)碼和SFD)=1542字節(jié)。
另外,發(fā)送此幀所需的總時(shí)間取決于以太網(wǎng)的速度。在100Mbit/s傳輸速率的以太網(wǎng)中,傳輸持續(xù)時(shí)間如下▼:
因此,此時(shí)保護(hù)帶至少為123.36μs長。
由于保護(hù)帶的存在,(總帶寬/時(shí)間片內(nèi)的有效時(shí)間)實(shí)際上隨著保護(hù)帶的增加而減小了。這在圖3中可見:
圖3:防護(hù)帶防止了關(guān)鍵流量時(shí)間片的沖突
溫馨提示:為了便于呈現(xiàn)該主題,↑↑↑圖3中保護(hù)帶的實(shí)際尺寸不是按比例的,而是明顯小于圖2所示。
在↑↑↑圖3示例中,時(shí)間片1總是包含高優(yōu)先級數(shù)據(jù)(例如,用于運(yùn)動控制),而時(shí)間片2總是包含Best-Effort服務(wù)數(shù)據(jù)。因此,需要將保護(hù)帶放置在時(shí)間片1的每個(gè)轉(zhuǎn)換點(diǎn)處以保護(hù)傳輸關(guān)鍵數(shù)據(jù)的時(shí)間片。
不過值得注意的是,雖然保護(hù)段能夠保護(hù)具有高優(yōu)先級、傳輸關(guān)鍵流量的時(shí)間片,但它們也有一些明顯的缺點(diǎn):
為了部分地減輕通過保護(hù)帶造成的帶寬損失,在標(biāo)準(zhǔn)IEEE802.1Qbv中還包括了長度感知調(diào)度機(jī)制,當(dāng)使用存儲轉(zhuǎn)發(fā)交換時(shí)則可使用該機(jī)制,即:
在接受完上一個(gè)以太網(wǎng)幀,需要在保護(hù)帶內(nèi)發(fā)送下一個(gè)數(shù)據(jù)幀時(shí),調(diào)度程序會檢測待發(fā)送幀的長度。如果幀長可以滿足在保護(hù)帶內(nèi)發(fā)送完畢,而不會影響到下一個(gè)高優(yōu)先級時(shí)間片,則調(diào)度程序可以發(fā)送此幀,這樣就可以保證在有保護(hù)帶的同時(shí)減少帶寬的浪費(fèi)。
但是,當(dāng)直通轉(zhuǎn)發(fā)時(shí),由于需要預(yù)先知道待發(fā)送數(shù)據(jù)幀的幀長,因此不能使用這種機(jī)制。
因此,當(dāng)使用直通轉(zhuǎn)發(fā)時(shí)進(jìn)行實(shí)時(shí)數(shù)據(jù)傳輸時(shí),仍然會發(fā)生帶寬浪費(fèi)。而且,這也無助于算短循環(huán)時(shí)間。因此,長度感知調(diào)度機(jī)制是一種有效的改進(jìn),但也并不能消除引入保護(hù)帶所帶來的所有缺點(diǎn)。
幀搶占和最小化保護(hù)帶
為了進(jìn)一步減輕保護(hù)帶的負(fù)面影響,IEEE工作組802.1和802.3為此設(shè)計(jì)了幀搶占機(jī)制。這兩個(gè)工作組合作進(jìn)行了這項(xiàng)工作,因?yàn)樵摷夹g(shù)需要改變IEEE802.3控制下的以太網(wǎng)媒體訪問控制(MAC)方案,同時(shí),也需要改變IEEE802.1控制下的管理機(jī)制。因此,幀搶占是兩個(gè)不同的標(biāo)準(zhǔn)文件中進(jìn)行描述:IEEE802.1Qbu為橋接管理組件;IEEE802.3br用于以太網(wǎng)MAC組件。
圖4:幀搶占的示例
圖4給出了幀搶占如何工作的基本示例。我們可以看到,在發(fā)送Best-Effort幀的過程中,MAC在保護(hù)帶開始之前中斷幀傳輸,這部分幀用一個(gè)CRC校驗(yàn)來結(jié)束,并存儲在下一個(gè)交換緩存中,以等待幀的第二部分到達(dá)。當(dāng)時(shí)間片1中的高優(yōu)先級任務(wù)傳送完畢,時(shí)間周期切換回時(shí)間片2之后,恢復(fù)中斷的幀傳輸。幀搶占總是以逐段鏈路為基礎(chǔ),并且只在兩個(gè)交換機(jī)之間傳送數(shù)據(jù),幀在交換機(jī)被重新組裝。
與IP協(xié)議的分段對比,該機(jī)制不支持端到端的分段傳送。而在分段傳輸時(shí),數(shù)據(jù)幀的每一部分都由CRC32結(jié)束以進(jìn)行錯誤檢測,與常規(guī)以太網(wǎng)的CRC32校驗(yàn)相比,部分幀的CRC32中最后16位被反轉(zhuǎn)以使其能夠與常規(guī)以太網(wǎng)幀區(qū)分開來。此外,在傳輸中,幀起始界定符(SFD)也被改變。
為實(shí)現(xiàn)幀搶占機(jī)制,設(shè)備之間的每個(gè)鏈路上都必須單獨(dú)支持幀預(yù)占。以太網(wǎng)交換機(jī)通過LLDP(鏈路層發(fā)現(xiàn)協(xié)議)標(biāo)記鏈路的幀搶占能力。當(dāng)具備幀搶占功能的網(wǎng)絡(luò)設(shè)備在端口上收到此類LLDP通知時(shí),它就會激活幀搶占功能。相鄰設(shè)備之間無法直接協(xié)商和激活該功能。能夠接收LLDP幀搶占通知的任何設(shè)備都默認(rèn)鏈路另一端的設(shè)備可以兼容為適應(yīng)幀搶占而進(jìn)行的幀格式變化(CRC32和SFD的變化)。
幀搶占機(jī)制可以明顯減少保護(hù)帶的影響。在使用幀搶占機(jī)制時(shí),保護(hù)帶的長度取決于幀搶占機(jī)制的精度:幀搶占機(jī)制能夠搶占的幀究竟有多小。由于以太網(wǎng)幀的最小長度是64字節(jié),因此IEEE802.3br則規(guī)定了在64字節(jié)時(shí)的最佳精度:
127字節(jié),64字節(jié)(最小幀)+63字節(jié)(不能預(yù)占的剩余長度)。所有大于64字節(jié)的幀都可以再次搶占,因此,不需要使用防護(hù)帶來防止這一尺寸。
使用幀搶占機(jī)制可以最大限度地減少浪費(fèi)的Best-Effort傳輸帶寬,并且可以在較慢的以太網(wǎng)速率(例如100Mbps或更低)下縮短周期時(shí)間。由于搶占發(fā)生在MAC層的硬件中,因此當(dāng)幀通過時(shí),也可以支持直通轉(zhuǎn)發(fā)(因?yàn)椴恍枰A(yù)先檢測幀的大?。?。MAC接口只負(fù)責(zé)每隔64字節(jié)進(jìn)行檢查以判斷否需要進(jìn)行幀搶占。
時(shí)間同步,IEEE802.1Qbv調(diào)度程序和幀搶占的組合構(gòu)成了一套有效的標(biāo)準(zhǔn),以用于保證網(wǎng)絡(luò)上不同要求任務(wù)類別的共存,同時(shí)還保證了端到端實(shí)時(shí)數(shù)據(jù)的傳輸。
TSN網(wǎng)絡(luò)利用時(shí)間片進(jìn)行網(wǎng)絡(luò)調(diào)度和流量整形就是其核心技術(shù),所以,這才是TSN網(wǎng)絡(luò)“厲害”的地方啊。
而CC-LinkIETSN網(wǎng)絡(luò)正是使用了IEEE802.1AS和IEEE802.3Qbv協(xié)議,充分利用了這一思路和方法實(shí)現(xiàn)了不同類型的數(shù)據(jù)流,并使其能夠共享同一個(gè)網(wǎng)絡(luò)介質(zhì)以滿足實(shí)時(shí)數(shù)據(jù)的傳輸需求。
好啦,這一期的內(nèi)容可以說是非常干貨了,大家慢慢消化。近期C小C跟同事們都在準(zhǔn)備東莞的技術(shù)研討會和本月17日上海工博會,也希望大伙兒能繼續(xù)關(guān)注CC-Link協(xié)會的各方動態(tài)。