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