前文回顧
虹科干貨 | Linux終端設(shè)備的時間敏感網(wǎng)絡(luò)協(xié)議實現(xiàn)(1)
在上一篇文章中,我們介紹了TSN技術(shù)不斷發(fā)展的背景,及其技術(shù)層面和實際應(yīng)用層面的挑戰(zhàn),并介紹了IEEE 802.1ASrev和IEEE 802.1Qbv這兩個基本標(biāo)準。下面,我們將沿著這一方向探討如何在Linux終端設(shè)備中實現(xiàn)TSN時間敏感網(wǎng)絡(luò)協(xié)議。
Part 3
TSN實施的背景
TSN實施已在不同部門和應(yīng)用中被廣泛提出和分析。一些研究指出,確定性延遲是通過時間同步和全局調(diào)度的應(yīng)用實現(xiàn)的,分別對應(yīng)于 IEEE 802.1AS 和 802.1Qbv TSN 標(biāo)準。因此,原則上可以使用這兩個標(biāo)準更確定地安排關(guān)鍵流量。但如果延遲和抖動的要求非常低,IEEE 802.1Qbv調(diào)度必須與時鐘同步機制相結(jié)合,而將IEEE 802.1ASrev時鐘同步于IEEE 802.1Qbv標(biāo)準包括在內(nèi)非常具有挑戰(zhàn)性,比如在包含許多流的網(wǎng)絡(luò)中決定如何調(diào)度它們是一件復(fù)雜的事情。
另一個重大挑戰(zhàn)是將最初不支持TSN的設(shè)備集成到TSN網(wǎng)絡(luò)中。例如,大多數(shù)分析的實現(xiàn)都是基于Linux操作系統(tǒng)的,而Linux也有實時性能的不確定性來源,例如搶占或中斷,但它包括許多機制來實現(xiàn)更好的可靠性。
Part 4
TSN實施的方案
正如前文所述,同步帶來了許多挑戰(zhàn)。而當(dāng)我們尋求使用Slot并調(diào)整線路中的流量時,這些挑戰(zhàn)就會增加。為了,我們推出了應(yīng)對這些挑戰(zhàn)的解決方案。該方案基于一款可用于TSN協(xié)議的PCIe網(wǎng)卡——RELY-TSN-PCIe。該網(wǎng)卡基于現(xiàn)場可編程門陣列 (FPGA) 和英特爾i210 芯片,其中英特爾i210芯片支持TSN,而FPGA提供多路徑(嵌入式以太網(wǎng)交換機)和實時功能。這種組合允許在PC中使用標(biāo)準驅(qū)動程序,這在操作系統(tǒng)缺乏TSN支持時至關(guān)重要。同時,它還允許Intel芯片不支持的高級調(diào)度。RELY-TSN-PCIe卡是第一個已知的TSN解決方案,它允許部署從用戶終端設(shè)備及其將要使用的應(yīng)用中抽象出來的確定性以太網(wǎng)網(wǎng)絡(luò)。換句話說,它可以用于不同的終端設(shè)備(監(jiān)控和數(shù)據(jù)采集(SCADA)、物聯(lián)網(wǎng)網(wǎng)關(guān)),從而在設(shè)備中引入TSN技術(shù)并將其集成到確定性網(wǎng)絡(luò)中。
從操作系統(tǒng)的角度來看,插入是透明的,因為它只檢測標(biāo)準以太網(wǎng)卡。如果OS想要使用高級調(diào)度,這個方案就變得不那么透明了,但是TSN網(wǎng)絡(luò)操作不需要這樣的改變。該解決方案是在 Ubuntu 20.04 LTS 中開發(fā)的。
1
IEEE 802.1ASrev實施
為實現(xiàn)時間敏感應(yīng)用的802.1ASrev 定時和同步標(biāo)準,首先確定必須參與該標(biāo)準的網(wǎng)絡(luò)時鐘。圖3顯示了已識別的時鐘和同步鏈路。從圖中可以看出,可以區(qū)分為六個不同的時鐘。
圖3 需要同步的網(wǎng)絡(luò)時鐘
有必要區(qū)分同步所有時鐘的方式。同步有兩種:
- 網(wǎng)絡(luò)同步
- 設(shè)備-網(wǎng)絡(luò)同步
網(wǎng)絡(luò)同步是基于同步I210和PCIe的四個PTP硬件時鐘(PHC);為此,將使用linuxptp包中包含的ptp4l命令。linuxptp是Linux的PTP實現(xiàn)。ptp4l實現(xiàn)邊界時鐘(BC)和普通時鐘(OC)。另一方面,作為軟件的系統(tǒng)時鐘使用NTP或GPS從Internet獲取時間以實現(xiàn)設(shè)備網(wǎng)絡(luò)同步。盡管如此,在這種情況下,系統(tǒng)時鐘將通過linuxptp包中包含的phc2sys命令從TSN網(wǎng)絡(luò)獲取時間,而不是直接使用硬件時間戳的gPTP。
2
IEEE 802.1Qbv實施
有兩種選擇可以構(gòu)建一個端到端實現(xiàn)Qbv的網(wǎng)絡(luò)。第一種是僅在充當(dāng)talker的Linux端點的輸出上激活Qbv。這樣,數(shù)據(jù)包將有序地離開Linux內(nèi)核,理論上在整個網(wǎng)絡(luò)中無序傳播,直到到達偵聽器。但是,這不是最好的方法。從內(nèi)核輸出到線路,有幾層注入抖動。這種抖動可能導(dǎo)致不符合分配的時隙。
第二種選擇是在兩點激活Qbv:在Linuxtalker的內(nèi)核中,和在連接到talker的以太網(wǎng)卡的輸出端口中,如圖4所示。第二種方法是一直使用的方法。在兩點配置相同的Qbv。以這種方式,數(shù)據(jù)包跟隨線路上分配的時隙。當(dāng)所有網(wǎng)絡(luò)元素也都具有TSN感知能力時,這些時隙將一直保留到接收方。
圖4Qbv網(wǎng)絡(luò)結(jié)構(gòu)
已創(chuàng)建內(nèi)核補丁以向Linux機器提供Qbv功能。在下文中,我們將解釋數(shù)據(jù)包轉(zhuǎn)發(fā)在Linux機器上的工作原理、為處理時隙而創(chuàng)建的兩個補丁,以及它們在最終Linux機器上的實現(xiàn)。
Linux系統(tǒng)上的流量轉(zhuǎn)發(fā)是通過內(nèi)核的流量控制(TC)子系統(tǒng)完成的。TC子系統(tǒng)代碼在知識產(chǎn)權(quán)(IP)和將數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)的網(wǎng)絡(luò)接口驅(qū)動程序之間運行。該子系統(tǒng)負責(zé)不斷提供要發(fā)送給驅(qū)動程序的數(shù)據(jù)包。
TC由隊列規(guī)則(qdisc)組成。qdiscs表示應(yīng)用于隊列的調(diào)度策略。它根據(jù)該調(diào)度程序中安裝的規(guī)則重新組織到達隊列的數(shù)據(jù)包,并以新的順序發(fā)送它們。默認情況下,此調(diào)度程序維護一個先進先出(FIFO)隊列。因此,需要一種能夠按照802.1Qbv標(biāo)準,按照時間間隔重組數(shù)據(jù)包,有序發(fā)送流量的qdisc。
vanilla Linux內(nèi)核沒有這種排隊規(guī)則,因此開發(fā)了內(nèi)核補丁,引入了在Linux系統(tǒng)上實施802.1Qbv的必要工具。這些補丁引入了兩個新的qdisc:
Earliest TxTime First Qdisc (ETF)允許應(yīng)用程序控制將數(shù)據(jù)包發(fā)送到網(wǎng)卡驅(qū)動程序的確切時間。ETF通過緩沖數(shù)據(jù)包直到傳輸時間之前的可配置時間來實現(xiàn)這一點。
時間感知優(yōu)先級整形器(TAPRIO)實現(xiàn)了IEEE802.1Qbv標(biāo)準定義的狀態(tài)機的簡化版本(請參閱IEEE802.1Qbv標(biāo)準),允許配置一系列網(wǎng)關(guān)狀態(tài),其中每個狀態(tài)允許或禁止流量出口對于流量類別的子集。
這些補丁還為系統(tǒng)套接字引入了一個名為SO_TXTIME的新選項,以啟用套接字進行基于時間的傳輸,從而配置其參數(shù)。
Part 5
結(jié)果
我們已經(jīng)創(chuàng)建了一個高級應(yīng)用程序來以圖形方式配置這兩個標(biāo)準。它使網(wǎng)絡(luò)管理員能夠配置和觀察網(wǎng)絡(luò)提供的插槽信息,類似于圖5中所示的Wireshark的I/0圖表,但是是實時的。概念證明是在一個專門設(shè)置的網(wǎng)絡(luò)中開發(fā)的,該網(wǎng)絡(luò)由通過單個交換機組成的TSN感知網(wǎng)絡(luò)連接的兩臺PC(talker和listener)組成。
圖5 Wireshark捕獲演示插槽
第一步是檢查所有不同系統(tǒng)之間的同步。檢查PCIe板的每秒脈沖輸出和PTP守護程序提供的信息,以太網(wǎng)卡在10ns內(nèi)同步,而系統(tǒng)在100ns范圍內(nèi)(參見圖6)。
圖6 完全同步的系統(tǒng)
卡的內(nèi)部交換機之間、內(nèi)部交換機與i210芯片之間、芯片與PC之間都建立了gPTP關(guān)系。
已創(chuàng)建演示以測試補丁在端點上的操作。該演示在talker中配置Qbv補丁以發(fā)送ST和盡力而為流量。Listener接收此數(shù)據(jù)并以圖形方式實時顯示每個數(shù)據(jù)如何到達其插槽。由此產(chǎn)生的流量可以在圖7中看到,由開發(fā)的應(yīng)用程序的實時窗口顯示。這些演示展示了標(biāo)準的正確操作及其與PCIe卡的集成。結(jié)果是有序和整形的流量。
圖7創(chuàng)建的應(yīng)用程序演示槽的實時捕獲
這種實時視圖允許網(wǎng)絡(luò)設(shè)計人員跟蹤網(wǎng)絡(luò)的運行并將不同的配置調(diào)整到所需的要求。
其結(jié)果與Wireshark提供的結(jié)果相似,但在這種情況下是實時獲得的。該應(yīng)用程序允許對鏈接進行輕松管理。同時,它們有助于證明支持TSN的系統(tǒng)的正確操作。
使用此配置框架,設(shè)計人員可以創(chuàng)建具有不同配置的網(wǎng)絡(luò)并查看其結(jié)果。圖8中展示了一個更復(fù)雜的例子。在此示例中,TSN中的每種流量類型都基于虛擬局域網(wǎng) (VLAN) 標(biāo)簽的優(yōu)先級代碼點(PCP) 位。在此設(shè)置中,流量分類如下:
- ST: 制動信息(數(shù)據(jù)分發(fā)服務(wù)(DDS)流1、VLAN11、PCP2)
- RT: 攝像機實時視頻(DDS流2、VLAN12、PCP5)
- BE: 剩余的TCP/IP流量(VLAN3,PCP6)
TSN配置分布在四個時隙中,完成 10毫秒的周期時間。每個時隙的流量分配如下:(1) Free. (2) ST. (3) Free. (4)RT+BE. 可以看出,不同的流被限制在配置的slot中。
圖8 車載網(wǎng)絡(luò)的真實示例
ST由剎車信息組成。RT提供實時視頻,而BE由其余信息娛樂數(shù)據(jù)組成。
Part 6
結(jié)論
本文所述工作的主要成果是構(gòu)建了一個支持TSN的系統(tǒng),該系統(tǒng)可用于提供可靠且可擴展的網(wǎng)絡(luò)。因此,可以在Linux終端設(shè)備中實施兩個主要的TSN標(biāo)準并驗證RELY-TSN-PCIe卡的正確操作。終端設(shè)備已包含在TSN網(wǎng)絡(luò)中。一方面,所有網(wǎng)絡(luò)時鐘都已通過在終端設(shè)備中使用開源守護程序?qū)嵤㊣EEE 802.1ASrev標(biāo)準來同步。另一方面,我們使用公共Linux內(nèi)核補丁按照IEEE 802.1Qbv標(biāo)準在時隙中實現(xiàn)了數(shù)據(jù)包的有序發(fā)送。此外,我們還創(chuàng)建了一個配置和可視化工具,可幫助網(wǎng)絡(luò)設(shè)計人員設(shè)置和了解系統(tǒng)的操作。由于這項工作和所使用的兩種開放技術(shù),在標(biāo)準設(shè)備(即非專有設(shè)備)中實施TSN方面正在取得進展。
END
本文由虹科技術(shù)工程師翻譯整理。文章出處:https://www.mdpi.com/2227-7080/10/3/55
本文中使用的RELY-TSN-PCIe板卡是由虹科合作伙伴RELYUM推出的一款智能NIC卡,它可以插入任何windows和linux電腦,且不需要在主機上安裝任何特殊軟件,快速引入TSN技術(shù)。它能夠在TSN網(wǎng)絡(luò)中使用典型的工業(yè)應(yīng)用和軟件,如SCADA、MES、OPC(UA)、MTConnect等。此外,RELY-TSN-PCIe 支持使用標(biāo)準中定義的 YANG 模型進行自動配置。但是,為了便于早期試用,該板卡允許手動 TSN 配置
虹科進入TSN技術(shù)領(lǐng)域多年并已有豐富的技術(shù)積累,并面向國內(nèi)客戶推出了TSN的IP核、網(wǎng)卡、交換機、流量記錄儀、測試工具、配置軟件等多款軟硬件產(chǎn)品,能夠幫助用戶快速加入TSN流量,享受新興技術(shù)發(fā)展帶來的好處。
-
Linux
+關(guān)注
關(guān)注
87文章
11123瀏覽量
207914 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7389瀏覽量
88213
發(fā)布評論請先 登錄
相關(guān)推薦
評論