TSN網卡是TSN網絡提供端到(dào)端确定性交換服務的關鍵設備。由于應用(yòng)需求不同,TSN網卡連接的端系統計(jì)算(suàn)平台在計(jì)算(suàn)能(néng)力,資源管理(lǐ)方法和(hé)通信需求等方面差異較大(dà),因此設計(jì)盡可能(néng)滿足多種應用(yòng)場景需求的TSN網卡是OpenTSN開(kāi)源項目的重要目标。本文(wén)分析了(le)不同TSN端系統的差異,提出了(le)OpenTSN網卡與端系統松耦合的實現(xiàn)思路。
一、TSN端系統分析
我們認爲TSN網卡連接的端系統節點主要分爲三類,即I/O節點、計(jì)算(suàn)節點以及支持雲計(jì)算(suàn)的虛拟化節點,如圖1所示。
圖1 TSN端系統的分類
其中I/O節點實現(xiàn)簡單,對(duì)成本、體積和(hé)功耗要求較高(gāo),通常沒有操作(zuò)系統,難以面向TSN進行定制化設計(jì);計(jì)算(suàn)節點包含通用(yòng)CPU和(hé)操作(zuò)系統,TSN網卡可以通過修改驅動程序對(duì)TSN端系統的操作(zuò)進行适配;而虛拟化節點主要面向邊緣計(jì)算(suàn)或嵌入式雲計(jì)算(suàn),需要對(duì)TSN網卡進行虛拟化,TSN網卡在提供确定性I/O的同時(shí),還要支持I/O的虛拟化,實現(xiàn)不同應用(yòng)之間網絡I/O的隔離。
每種TSN端系統的比較如下(xià)表所示。由于不同端節點具有不同的特點,在主機測和(hé)網卡側的TSN功能(néng)劃分差異較大(dà),因此難以實現(xiàn)通用(yòng)的TSN網卡設計(jì)。
值得關注的是,當TSN端節點爲虛拟化平台時(shí),主機側會(huì)虛拟出多個具有獨立MAC和(hé)IP地址的節點。一方面提高(gāo)了(le)TSN網絡離線規劃的複雜(zá)性,另一方面給TSN端系統收發分組時(shí)的确定性保證帶來(lái)了(le)新的困難。
二、OpenTSN網卡實現(xiàn)思路
爲了(le)最大(dà)限度适配不同類型的端系統,OpenTSN網卡與端系統主機側采用(yòng)松耦合的方式,通過千兆以太網與端系統計(jì)算(suàn)平台進行連接,如圖2所示。與PCIe、SPI等連接方式相比,使用(yòng)千兆以太網連接的優點是:
(1)通信帶寬比SPI總線高(gāo),基本可滿足多種終端的通信帶寬需求;
(2)很(hěn)多CPU已經内嵌千兆以太網,因此無需在主機側再增加新的網卡;
(3)網卡側存儲空(kōng)間不會(huì)映射到(dào)主機側的存儲空(kōng)間,不需要額外(wài)的驅動程序支持;
(4)對(duì)于虛拟化平台,主機側可以選擇支持SR-IOV的網卡,主機内部虛拟機/容器的交換可以不經過TSN網卡實現(xiàn)。
圖2 OpenTSN網卡實現(xiàn)思路
除了(le)采用(yòng)松耦合的以太網物理(lǐ)連接外(wài),OpenTSN網卡在邏輯功能(néng)上(shàng)也(yě)實現(xiàn)了(le)與主機側計(jì)算(suàn)平台的解耦,主要表現(xiàn)在:
(1)延時(shí)确定性保證機制的解耦
OpenTSN網卡通過内設RX_buf/TX_buf,實現(xiàn)了(le)端到(dào)端交換路徑上(shàng),應用(yòng)與網卡間延時(shí)确定性保證與TSN網絡(發送網卡-TSN網絡-接收網卡)延時(shí)确定性保證機制之間的解耦。OpenTSN隻需要保證從(cóng)發送方網卡上(shàng)的TX_buf到(dào)接收方網卡上(shàng)RX_buf之間的延時(shí)确定性即可。
如果應用(yòng)對(duì)通過計(jì)算(suàn)平台與網卡RX_buf/Tx_buf通信的延時(shí)有嚴格的确定性要求,可以通過定制優化計(jì)算(suàn)平台的軟硬件實現(xiàn)确定性保證,與網卡無關。
(2)TSN功能(néng)到(dào)網卡的全卸載
端系統主機側不用(yòng)針對(duì)TSN進行任何修改。在OpenTSN網卡上(shàng)實現(xiàn)了(le)TSN管理(lǐ)Agent,爲全局規劃提供完整的,與端系統無關的資源抽象,并接受TSN網絡控制器對(duì)網卡的配置,包括RX/TX調度表配置,TSN流水(shuǐ)線中的整型、調度和(hé)冗餘控制等機制進行配置。
由于TSN功能(néng)全部卸載到(dào)網卡上(shàng),因此主機計(jì)算(suàn)平台的處理(lǐ)不需要全網同步的時(shí)間基準。
三、總結
網卡上(shàng)RX_buf/Tx_buf的設置和(hé)Tx/Rx調度表設計(jì)對(duì)OpenTSN網卡與端系統解耦十分重要。這(zhè)也(yě)是其他(tā)類型時(shí)間觸發通信(如TTP)實現(xiàn)通信控制器與主機消息交互的方法。
TSN邊緣注入時(shí)間規劃功能(néng)可通過RX調度控制Rx_buf中分組進入TSN流水(shuǐ)線的時(shí)刻實現(xiàn)。同時(shí),基于Tx調度,網卡也(yě)可以精确控制按指定時(shí)刻向計(jì)算(suàn)平台和(hé)應用(yòng)提交接收到(dào)的分組。
圖2隻給出了(le)網卡處理(lǐ)時(shí)間觸發流量(scheduled Traffic)的方法,我們将在後續文(wén)章中進一步給出OpenTSN網卡同時(shí)支持時(shí)間觸發、AVB和(hé)BE流量的方法。