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