尹震宇,劉浩林1,,張飛青1,,谷 艾1,,李 岳1,
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
隨著工業制造領域智能化和信息化的不斷發展,應用于工業自動控制系統的工業以太網不僅要滿足基本的通信需求,還應能保證數據通信的實時性與確定性.工業以太網中的數據根據通信需求可分為周期性實時數據、非周期性實時數據和非實時數據.周期性實時數據負責周期性控制和采樣,非周期性實時數據用于傳輸報警信息和運維信息,非實時性數據用于系統管理及狀態維護[1].當不同類型的數據流匯聚到網絡中的交換設備上進行轉發時,數據會因網絡擁塞而造成沖突,導致實時性數據的通信延遲過大,周期性數據的周期性難以保證[2].因此,傳統工業以太網難以滿足工業自動生產對通信網絡的實時性和周期性要求.
時間敏感網絡是在IEEE 802.1標準框架下,基于特定應用需求制定的一組“子標準”,其目的在于為以太網協議建立“通用”的時間敏感機制,以確保網絡數據傳輸的時間確定性[3].由于時間敏感網絡可以提高網絡的通信性能,已成為國內外研究的熱點,并應用到多個領域中.吳源等人中運用TSN基于信用的流量整形器對不同數據流進行隔離,解決網絡中低優先級數據的饑餓問題[4].Nsaibi等人在串行通信協議的基礎上對TSN標準子協議進行擴展,應用在工業以太網中[5].
將TSN引入工業以太網中,可以隔離網絡中的時間敏感數據和非時間敏感數據,使時間敏感流交換延遲得到保證.本文通過對數據劃分優先級,在TSN時間感知整形器的基礎上,結合改進的加權輪詢調度算法,提出一種TAS-WRR調度算法,以保證時間敏感數據通信的實時性和延遲確定性.
TSN調度算法的前提是需要網絡中的各個設備具有同步的時鐘,對時間有一致理解.時間同步機制是指網絡中各個設備時鐘之間的同步,而不是指網絡中的時鐘同外部的原子鐘進行同步[6].TSN協議組中的802.1AS協議可以對網絡中的設備進行時鐘同步.
網絡中的時鐘根據相互之間的通信關系,分為主時鐘和從時鐘,對應的節點為主從節點[7].從時鐘需要與主時鐘進行校準,從時鐘的校準過程是通過交換帶有時間戳的數據報文來實現的.報文中攜帶著數據報文發送時的時間戳信息,從時鐘根據時間戳來計算與主時鐘的頻率和相位偏差,從而糾正本地時鐘,同時保證主從節點間的傳輸時間要一致[8].802.1AS協議允許在網絡中分布的各個時鐘精確同步到誤差在1微秒內[9].
根據工業以太網中數據的通信需求,時間敏感網絡采用IEEE 802.1Q協議中的優先級字段來對不同數據流劃分優先級,以保證不同類型數據的通信質量.TSN中傳輸的數據幀是在普通以太網數據幀的基礎上添加802.1Q標簽,而在802.1Q標簽中則可以對數據的優先級進行標定.數據幀的格式如圖1所示.

圖1 IEEE 802.1Q數據幀結構
802.1Q定義了數據幀的具體格式,允許在以太網數據幀頭部中添加一個32位的域,該域位于源地址和以太網類型長度字段之間[10].該域包含16位的標簽協議識別符(TPID)、3位的優先權代碼點(PCP)、1位的標準格式指示(CFI)和12位預留位.其中,TPID的數值設置為0x8100,標識以太網幀支持802.1Q標簽.PCP的長度為3比特,數值范圍是從0到7,用來作為數據流的優先級.
在支持802.1Q的以太網交換設備中,可在端口緩沖區設置優先級隊列,被轉發到輸出端口的數據幀根據優先級進入對應的隊列中,優先級隊列的數量設置為8個.
TSN協議組中的IEEE 802.1Qbv子協議定義了時間感知整形器(Time Awareness Shaper,TAS).TAS通過預測并計算傳輸時間來對以太網幀的傳輸進行優化,并以此來保證數據在規定的時間內進行轉發和送達[11].TAS在交換設備的緩沖隊列后添加了門結構,門的開關狀態隨著時間的變化進行周期性變化,用門的開關狀態來控制隊列出隊操作[12].門的開啟關閉狀態通過門控制列表(Cate Control List,GCL)來維護.
時間感知整形器的思想是將以太網上的通信劃分固定周期,對不同優先級隊列分配不同的門狀態,將不同優先級的數據通信劃分在同一周期內的不同時間片中[13].通過隔離高優先級的時間敏感流和低優先級的非時間敏感流,TAS可以保證時間敏感數據的通信質量.
本文使用IEEE 802.1Q協議的優先級字段將不同類型數據劃分為8個優先級.周期性實時數據由于對通信的實時性和周期性有較高要求,所以被標記為最高優先級.非周期性實時數據要求具有較低的通信延遲,被標記為第6優先級.非周期非實時數據根據流量類型和數據用途標記被為剩下的優先級.不同優先級的數據對應不通過的優先級緩沖隊列.
針對不同類型數據在工業以太網交換設備中轉發調度時存在的周期性和實時性問題,本文提出了TAS-WRR調度算法.該算法在將不同類型數據劃分優先級的基礎上,對數據通信時間進行劃分,隔離高優先級的時間敏感性數據和低優先級的非時間敏感性數據,保證實時性數據的通信帶寬.同時為了解決低優先級數據由于長時間得不到發送而造成的饑餓現象,算法采用加權輪詢(Weighted Round Robin,WRR)的方法對不同優先級的非實時性數據進行調度轉發.總體算法流程如圖2所示.

圖2 TAS-WRR調度算法流程
時間感知整形器利用門結構控制不同優先級數據的發送,當優先級隊列的門為開啟狀態時,允許數據在該時間段內進行轉發通信.門控制列表維護門的開關信息,門狀態是由8位二進制數組成,分別對應8個優先級隊列,0代表對應緩沖隊列的關閉狀態,1代表對應緩沖隊列的開啟狀態,門狀態隨著同步時鐘的變化而進行周期性變化.
利用門控制列表,將通信時間進行周期性劃分,同時每個周期又劃分為兩個時間片.最高優先級隊列在第1個時間片內將門狀態設置為開啟,允許周期性實時數據進行轉發通信;優先級0~5的隊列在第2個時間片內將門狀態設置為開啟,允許非實時性進行轉發通信;非周期性實時數據不受門狀態的控制,在周期性實時數據的發送間隔內進行轉發通信,并可以搶占低優先級非實時性數據的發送.在每個周期的末尾設置一個保護帶,在保護帶里禁止發送任何數據,避免因上個周期數據幀傳送未完成而對下個周期數據傳送造成影響.通信時間的劃分如圖3所示.

圖3 通信周期的劃分
最高優先級的周期性實時數據進入緩沖隊列后,根據門狀態和預留的傳輸帶寬進行轉發通信,在每個周期的第1個時間片內進行轉發通信.同時,其轉發通信時間記錄在流預流信息表內.
非周期性數據在轉發時,首先獲取流預留信息表,在周期性數據的通信空閑時進行轉發.如果發送端口有低優先級的非實時數據進行轉發,非周期性實時數據會打斷其通信,進行搶占式發送.
進入第2個時間片后,不同優先級的非實時性數據初始化緩沖隊列的權重,進行加權優先級的調度.
在周期的第2個時間片,控制所有非實時數據優先級隊列的門狀態都設置為開啟轉態,允許非實時性數據進行轉發通信.對不同優先級的緩沖隊列分配權重,進行加權輪詢調度,只有符合發送條件的隊列才允許發送數據.算法所用到的參數:priority[i]表示第i個隊列的優先級;weight[i]表示第i個隊列的權重值;Head_size[i]表示第i個隊列隊頭數據幀的字節數;num表示隊列的總個數;Max_byte[i]表示第i個隊列允許連續發送的最大字節數.Send_byte[i]表示該隊列當前已連續發送的字節數.
首先,將每個隊列的Send_byte[i]初始化為0,表示當前該隊列沒有發送數據.隊列的初始權重值和優先級別有關,優先級別越大,隊列的權重便越大.權重和優先級的關系公式為:
weight[i]=priority[i]×2+1
(1)
為了保證高優先級的數據優先發送,所以連續發送的最大字節數也和優先級別有關,優先級別越高的隊列,能夠連續發送的字節數就越多.由于802.1Q數據幀的最大長度為1522字節,所以連續發送的最大字節數和優先級別的關系公式為:
Max_byte[i]=1522×(priority[i]+1)
(2)
對隊列進行輪詢,比較隊列的權重大小,選擇出權重最大的隊列,同時比較當前的已發送的字節數和最大連續發送字節數Send_byte[i]和最大連續發送字節數Max_byte[i].如果Send_byte[i] Send_byte[i]=Send_byte[i]+Head_size[i] (3) weight[i]=weight[i]-1 (4) 如果Send_byte[i]>Max_byte[i],則表示當前優先級別的隊列已經發送了足夠多的字節,不能過多的占用通信資源,轉而查詢出去該隊列的權重最大的隊列,同時初始化Send_byte[i]的值為0.當隊列的權重值都為0是,則重新初始化隊列的權重值. 本文在交換設備網絡協議棧的基礎上,根據TAS-WRR調度算法,設計并實現了TAS-WRR調度模型. 交換設備的軟件實現環境為Linux系統,數據發送和接收端口的網卡型號為Intel e1000.不同類型的數據由交換設備的接收端口進入,根據MAC表信息轉發進入發送端口. 首先,設計并實現發送端口的數據幀分類器,運用frame_classify()函數讀取IEEE 802.1Q標簽中的3位VLAN優先權代碼,從而獲取到該數據幀的優先級,并根據優先級推入到不同的優先級緩沖隊列中進行排隊等待發送. 其次,將發送端口的存儲結構進行修改,設置成多級隊列結構,來對不同優先級的數據進行分類存儲. 最后,設計并實現數據調度模塊,數據調度模塊又分為門控制列表、流預留信息表和WRR數據調度子模塊.修改網卡驅動的發送函數,利用門控制列表將通信時間劃分調度周期;根據流預留對對周期性數據進行調度轉發;利用WRR數據調度子模塊對非實時性數據進行加權輪詢調度. 整體的調度模型如圖4所示. 圖4 TAS-WRR調度模型 網卡驅動修改后,進行模塊化的編譯,生成e1000.ko文件.并將生成e1000模塊重新加載如內核. 測試平臺由多網口服務器和PC機組成.多網口服務器作為交換設備對數據進行調度轉發;3臺PC機分別作為周期性實時數據、非周期性實時數據和非實時性數據的發送端.2臺PC機作為數據的接收端.設備配置如表1所示. 表1 設備配置 數據接收端和數據發送端通過交換設備進行連接通信,組成工業以太網.交換設備的5個網口分別連接一個數據發送端或數據接收端.3個數據發送端通過交換設備,同時向兩個數據接收端發送數據.整體網絡搭建如圖5所示. 圖5 測試網絡的搭建 數據報文的通信延遲是指從數據發送端到數據接收端所用的時間,可以對網絡通信的實時性進行判斷.通信延遲是通過在數據接收端獲取數據報文時間戳中記錄的發送時間,并根據當前系統時間進行計算的.周期性實時數據多用于攜帶控制信息,其數據負載較小,數據包大小設置為68字節,進行周期性連續發送.非周期性實時數據多用于攜帶報警和運維信息,數據負載小,數據包大小設置為68字節,且隨機進行發送.非實時性數據攜帶的信息量較大,設置為1022字節,不同優先級數據隨機進行發送. 將網絡中的設備進行同步,保證不同設備間對時間有一致的理解,通信周期設置為2ms.3個數據發送端同時開啟,向兩個數據接收端發送數據,并在接收端對數據通信延遲進行計算統計. 對周期性數據在標準工業以太網和運用TAS-WRR調度算法改進后工業以太網中的通信延遲進行對比測試.周期性數據每個周期連續發送50個數據包,截取兩個通信周期的數據,進行統計如表2所示. 表2 周期性數據通信延遲統計 周期性實時數據在標準工業以太網和運用TAS-WRR調度算法改進后的工業以太網中的通信延遲詳細統計如圖6所示. 圖6 周期性數據延遲統計 同樣,對非周期性實時數據在標準工業以太網和運用TAS-WRR調度算法改進后工業以太網中的通信延遲進行對比測試.非周期性實時數據根據周期性數據預留信息表,在周期性數據發送的空閑時間段進行隨機發送,統計100個非周期性實時數據如表3所示. 表3 非周期性實時數據延遲統計 非周期性實時數據在標準工業以太網和運用TAS-WRR調度算法改進后的工業以太網中的通信延遲詳細統計如圖7所示. 圖7 非周期性實時數據延遲統計 對非實時數據在標準工業以太網和運用TAS-WRR調度算法改進后工業以太網中的通信延遲進行對比測試.非實時性數據源對不同的優先級數據進行隨機發送,截取每個優先級100個數據包進行統計分析,如表4所示. 表4 非實時數據延遲統計 通過周期性數據、非周期性實時數據和非實時數據在標準工業以太網和運用TAS-WRR調度算法改進后的工業以太網中通信的對比測試,本文進行如下分析: 周期性數據在運用TAS-WRR調度算法改進后的網絡中具有較小的通信延遲,并且數據的抖動較小.分析來看,由于改進后的網絡為周期性數據預留了帶寬,使其不再進行搶占式的傳輸,避免了因搶占操作帶來的時間開銷造成通信延遲增加和波動. 非周期性實時數據在改進后的網絡中具有較小延遲.這是由于非周期性實時數據在改進的網絡中進行發送時,提前獲取了周期性數據的發送信息,在其發送空閑時間內進行發送,避免了在交換設備中的排隊等待現象.同時,由于發送端口存儲結構改為多級緩沖隊列,數據幀在隊列中查詢和出隊操作更高的效率. 不同優先級的非實時數據在原始網絡中具有較高的通信延遲,并且低優先級數據包通信延遲過高,出現饑餓現象.而在改進后的網絡中,不同優先級的轉發調度采用加權輪詢算法,低優先級數據包的通信延遲有了很大的減少,有效地解決了因長時間等待而造成的饑餓現象. 綜上所述,將TAS-WRR調度算法應用于交換式工業以太網,可以很好的提高網絡通信的實時性和確定性. 為了提高不同類型數據在工業以太網交換設備中轉發通信的實時性和確定性,本文將時間敏感網絡引入工業以太網,提出了TAS-WRR調度算法,根據該調度算法設計并實現了TAS-WRR調度機制.通過對不同類型數據在原始工業以太網和運用TAS-WRR調度算法的工業以太網中通信進行對比測試,結果表明TAS-WRR調度算法可以很好的保證周期性實時數據的實時性和周期性,減小非周期性實時數據的通信延遲,并能有效的提高非實時數據的通信質量.在本文試驗研究的基礎上,下一步的研究工作應放在提高具有多級交換設備復雜工業以太網的通信性能上.3.3 TAS-WRR調度機制的設計與實現

4 實驗測試與分析
4.1 測試平臺的搭建


4.2 測試及分析





5 結 論