《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設計應用 > 基于可靠數(shù)據(jù)傳輸協(xié)議的高速數(shù)據(jù)交換節(jié)點設計
基于可靠數(shù)據(jù)傳輸協(xié)議的高速數(shù)據(jù)交換節(jié)點設計
2015年微型機與應用第17期
張 樂,,武 杰
(中國科學技術大學 近代物理系 核探測與核電子學國家重點實驗室,,安徽 合肥 230026)
摘要: 在以太網(wǎng)物理層的基礎上,,設計了一種利用專用硬件接口結合低功耗MCU實現(xiàn)可靠數(shù)據(jù)傳輸協(xié)議,可在不同物理鏈路之間進行可靠,、可控、高速數(shù)據(jù)交換的數(shù)據(jù)節(jié)點,。與傳統(tǒng)TCP的實現(xiàn)機制不同,,傳輸協(xié)議由專用硬件接口實現(xiàn),與一般的純軟件實現(xiàn)可靠數(shù)據(jù)傳輸方案相比,,在CPU主頻和功耗相當?shù)那闆r下該設計具有更高的數(shù)據(jù)率,,本節(jié)點同時具備對采集系統(tǒng)進行分布式管理的能力。經(jīng)測試,本節(jié)點可以達到97%以上信道利用率,,具有數(shù)據(jù)傳輸可靠,、功耗低等優(yōu)點。
Abstract:
Key words :

  摘  要: 在以太網(wǎng)物理層的基礎上,,設計了一種利用專用硬件接口結合低功耗MCU實現(xiàn)可靠數(shù)據(jù)傳輸協(xié)議,,可在不同物理鏈路之間進行可靠、可控,、高速數(shù)據(jù)交換的數(shù)據(jù)節(jié)點,。與傳統(tǒng)TCP的實現(xiàn)機制不同,傳輸協(xié)議由專用硬件接口實現(xiàn),,與一般的純軟件實現(xiàn)可靠數(shù)據(jù)傳輸方案相比,,在CPU主頻和功耗相當?shù)那闆r下該設計具有更高的數(shù)據(jù)率,本節(jié)點同時具備對采集系統(tǒng)進行分布式管理的能力,。經(jīng)測試,,本節(jié)點可以達到97%以上信道利用率,具有數(shù)據(jù)傳輸可靠,、功耗低等優(yōu)點,。

  關鍵詞: 以太網(wǎng);FPGA,;高速可靠數(shù)據(jù)傳輸,;低功耗

0 引言

  在一些工業(yè)應用領域,如大規(guī)模數(shù)據(jù)采集系統(tǒng),,由于數(shù)據(jù)采集節(jié)點分布范圍廣,、數(shù)據(jù)率高,從而需要在不同數(shù)據(jù)信道間進行數(shù)據(jù)交換[1],,在數(shù)據(jù)傳輸過程中不可避免地需要數(shù)據(jù)交換節(jié)點進行數(shù)據(jù)的接收,、發(fā)送和管理。

  傳統(tǒng)傳輸協(xié)議(如TCP/IP,、TFTP,、SCTP等)的實現(xiàn)方法為在底層傳輸介質基礎上依靠復雜的CPU運算來保證數(shù)據(jù)的可靠性,在不同的CPU主頻下TCP性能測試如表1所示,。

006.jpg

  可見傳統(tǒng)的TCP實現(xiàn)方案對CPU主頻依賴性強,,隨之帶來的高功耗無法滿足系統(tǒng)低功耗的設計要求。本文在可靠數(shù)據(jù)傳輸協(xié)議基礎上,,設計了一種高速數(shù)據(jù)交換節(jié)點,,在100 Mb/s和1 000 Mb/s信道之間進行數(shù)據(jù)交換和管理,在更低CPU主頻(168 MHz)情況下具有信道利用率高(百兆97%以上,,千兆98%以上),、可靠,、可控、低功耗等特點,。

1 節(jié)點所處網(wǎng)絡的拓撲結構

  在大規(guī)模數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)采集節(jié)點數(shù)量大,、分布范圍廣,在有線數(shù)字傳感網(wǎng)絡中將采集節(jié)點采集到的數(shù)據(jù)通過百兆以太網(wǎng)鏈路回傳,,并通過數(shù)據(jù)交換節(jié)點進行匯總通過千兆以太網(wǎng)鏈路向更高級進行傳輸[5],,此方向為數(shù)據(jù)通道(上行通道)。

  另一方面需要對各采集節(jié)點進行控制和管理,,在大規(guī)模采集系統(tǒng)中,,為減輕中心節(jié)點的運算壓力,采用分布式管理對采集節(jié)點進行控制,。接收千兆以太網(wǎng)鏈路命令利用本地低功耗MCU進行分析處理,,通過百兆以太網(wǎng)鏈路向下級發(fā)送,此方向為命令通道(下行通道),。其拓撲結構如圖1所示,。

001.jpg

2 可靠數(shù)據(jù)傳輸協(xié)議

  傳統(tǒng)的通信協(xié)議(TCP/IP)需要復雜的路由協(xié)議,高層協(xié)議還需要大量的應用服務,,對于嵌入式系統(tǒng)來說過于復雜,,且對CPU運算能力有較高要求。在相對較低的主頻及功耗條件下無法滿足高速,、可靠數(shù)據(jù)傳輸?shù)囊蟆?/p>

  可靠數(shù)據(jù)傳輸協(xié)議在傳統(tǒng)通信協(xié)議的基礎上進行精心裁剪,,對于一些工業(yè)領域應用系統(tǒng),如大規(guī)模地震數(shù)據(jù)采集系統(tǒng),,本協(xié)議針對性強,、結構簡單、適應底層硬件,。上層軟件根據(jù)系統(tǒng)需要設計,,減少不必要的開銷以適合高效率數(shù)據(jù)封裝,滿足高速,、可控、可靠的數(shù)據(jù)傳輸需求[1],。

  可靠數(shù)據(jù)傳輸協(xié)議包括:ACK回應與超時重發(fā)機制,;轉發(fā)優(yōu)先及本地緩存機制;命令,、回應,、確認機制等。相比傳統(tǒng)的通信協(xié)議更適應數(shù)據(jù)采集系統(tǒng),,效率更高,。

3 數(shù)據(jù)交換節(jié)點設計與實現(xiàn)

  本數(shù)據(jù)交換節(jié)點利用FPGA邏輯實現(xiàn)專用硬件接口,,實現(xiàn)硬件ACK響應和判斷、硬件重發(fā),、硬件轉發(fā)和硬件發(fā)送仲裁等功能,,并利用低功耗MCU進行命令響應和數(shù)據(jù)處理?;诳煽繑?shù)據(jù)傳輸協(xié)議在百兆以太網(wǎng)鏈路和千兆以太網(wǎng)鏈路之間進行數(shù)據(jù)交換和命令響應,。

  3.1 硬件平臺及節(jié)點結構

002.jpg

  節(jié)點結構如圖2所示,主要由三部分組成:

 ?。?)低功耗MCU,,主要用于命令響應和數(shù)據(jù)處理。硬件接口將數(shù)據(jù)及命令通過MII高速數(shù)據(jù)接口及低速命令接口將信息傳送至中央處理單元,,經(jīng)過處理的數(shù)據(jù),、需要向上級返回的命令響應及向下級分發(fā)的命令通過對應的接口發(fā)送至硬件接口進行數(shù)據(jù)傳輸。作為原型機硬件,,MCU采用ST公司STM32F407,,其基于CortexTM-M4架構,主頻168 MHz,。在原型機平臺上實現(xiàn)了命令處理,、高數(shù)據(jù)率(>97 Mb/s)數(shù)據(jù)傳輸?shù)裙δ堋?/p>

  (2)千兆以太網(wǎng)硬件接口部分,,主要由Xilinx Spartan 6 FPGA和Broadcom千兆以太網(wǎng)芯片組成,。在FPGA內(nèi)編寫專用通信硬件接口,硬件實現(xiàn)轉發(fā),、接收,、本地數(shù)據(jù)發(fā)送。其內(nèi)部的可拓展RDT(Reliable Data Transmission)模塊根據(jù)幀類型及地址進行自動ACK確認,、本地發(fā)送與轉發(fā)仲裁,、超時等待及重發(fā)等,通過拓展RDT模塊增加發(fā)送緩存區(qū)數(shù)目可以有效地增加信道的利用率,。FPGA使用Xilinx TriMode Ethernet Logic Core[6]通過RGMII接口與以太網(wǎng)芯片進行數(shù)據(jù)交換,,通過以太網(wǎng)物理層與其他數(shù)據(jù)節(jié)點及主機進行數(shù)據(jù)交換。測試100 m CAT6類網(wǎng)線傳輸正確,。

 ?。?)百兆以太網(wǎng)硬件接口部分主要由Xilinx Spartan 6 FPGA和TI TLK100百兆以太芯片組成。在FPGA內(nèi)由硬件實現(xiàn)接收,、自動ACK生成和發(fā)送,。其內(nèi)部可拓展RDT模塊自動完成ACK確認、發(fā)送仲裁,、超時等待及重發(fā),。測試200 m CAT6類網(wǎng)線傳輸正確,。

  3.2 可靠數(shù)據(jù)傳輸及可控數(shù)據(jù)管理協(xié)議的實現(xiàn)

  為保證數(shù)據(jù)在對稱的信道之間進行可靠、可控的交換,,結合硬件平臺和可靠數(shù)據(jù)傳輸協(xié)議,,實現(xiàn)數(shù)據(jù)交換節(jié)點的設計,設計要點如下,。

 ?。?)ACK回應及超時重發(fā)

  發(fā)送方發(fā)出數(shù)據(jù)幀后等待ACK回應,收到正確的ACK回應后表明本次發(fā)送正確完成,,進行下一幀的發(fā)送,;若超時后未收到ACK回應或回應錯誤則進行重發(fā)并在重發(fā)幀內(nèi)重發(fā)次數(shù)位段進行加一(區(qū)別重發(fā)次數(shù)不同的幀),進入下一次的等待回應過程,。

  對于ACK回應在鏈路發(fā)生偶然性誤碼的情況下,,通過重發(fā)可以排除可恢復性錯誤,發(fā)生不可恢復故障時向高層應用報告錯誤,,由上層應用判斷并進行動態(tài)路由,,尋找其他可靠的數(shù)據(jù)鏈路完成發(fā)送或是進入低功耗待機模式以節(jié)約能源。ACK機制同時可以實現(xiàn)流量控制,,可根據(jù)需要停止ACK回應終止本地接收,,或有計劃地控制ACK幀的回應頻度對鏈路數(shù)據(jù)率進行調節(jié),以保證數(shù)據(jù)傳輸?shù)目煽匦?,借此排除整個數(shù)據(jù)傳輸中數(shù)據(jù)率的隨機性,,通過ACK回應保證數(shù)據(jù)均勻。

003.jpg

  ACK等待和重發(fā)由硬件接口內(nèi)部的RDT模塊實現(xiàn),,在實現(xiàn)協(xié)議的同時減輕了CPU的運算壓力,。如圖3所示,本地數(shù)據(jù)先由RDT模塊緩存,,多發(fā)送緩存可提高信道的利用率,,根據(jù)幀信息確定是否需要重發(fā),發(fā)送完成后等待ACK,,若收到回應則進行下一次發(fā)送,,否則重發(fā)(重發(fā)次數(shù)+1),若重發(fā)次數(shù)達到上限(本文設定為4),,則認為本次發(fā)送失敗,,通知上層應用,以硬件實現(xiàn)的方式使得低CPU主頻,、高數(shù)據(jù)率的實現(xiàn)成為可能。

 ?。?)轉發(fā)優(yōu)先及本地緩存

004.jpg

  節(jié)點間級聯(lián)的拓撲結構如圖4所示,,需要將下游節(jié)點的數(shù)據(jù)向主機轉發(fā)及轉發(fā)主機向下游發(fā)送的命令,,同時需要進行本地的接收和發(fā)送。轉發(fā)優(yōu)先和本地緩存可以保證整個鏈路的通暢和鏈路數(shù)據(jù)可靠不丟,。

 ?、俎D發(fā)優(yōu)先:在千兆鏈路通信建立伊始通過上層應用判斷鏈接方向確定上行(靠近主機)與下行(連接其他數(shù)據(jù)交換節(jié)點),在通信過程中當節(jié)點收到來自上游的命令時判斷是否為本地命令,,若為本地命令則通過硬件通道傳至本地處理單元進行命令解析和處理,,若非本地命令則向下游轉發(fā);收到下游發(fā)來的數(shù)據(jù)幀時則向上游主機轉發(fā),。當節(jié)點收到轉發(fā)數(shù)據(jù)或命令,,即轉發(fā)緩存非空時,無論本地發(fā)送緩存內(nèi)是否有數(shù)據(jù)或命令需要發(fā)送,,優(yōu)先轉發(fā),,待鏈路空閑時進行本地發(fā)送。在數(shù)據(jù)傳輸過程中千兆鏈路數(shù)據(jù)率高,,多級節(jié)點級聯(lián)對于實時性要求高,,緩存壓力大,優(yōu)先轉發(fā)可以避免本地轉發(fā)緩存的壓力,。

 ?、诒镜鼐彺妫涸谇д祖溌愤M行數(shù)據(jù)傳輸過程中,數(shù)據(jù)交換節(jié)點必須同時接收下級采集節(jié)點接收的數(shù)據(jù)進行統(tǒng)計,、匯總及相應的處理后存入本地緩存,,當千兆以太網(wǎng)空閑時將本地數(shù)據(jù)通過千兆以太網(wǎng)發(fā)送到數(shù)據(jù)中心。本地數(shù)據(jù)和來自其他節(jié)點的數(shù)據(jù)共享千兆以太網(wǎng)鏈路,,如果整個系統(tǒng)的平均數(shù)據(jù)率高于千兆鏈路的最大數(shù)據(jù)率則數(shù)據(jù)可靠性一定無法滿足,,需要對系統(tǒng)數(shù)據(jù)節(jié)點及鏈路進行重新設計。在系統(tǒng)設計正確恰當?shù)臈l件下,,整體數(shù)據(jù)率低于(或等于)千兆的最大數(shù)據(jù)率,,通過本地緩存的機制可以保證在轉發(fā)的同時各節(jié)點的本地數(shù)據(jù)可靠有序地發(fā)送。根據(jù)數(shù)據(jù)量及分布可以推算出合理的緩存大小,,保證本地接收數(shù)據(jù)不丟在轉發(fā)空閑時而發(fā)送至主機,。

  其硬件實現(xiàn)如圖3所示,本地發(fā)送數(shù)據(jù)緩存在RDT模塊內(nèi)經(jīng)過ACK確認及重發(fā)處理后與轉發(fā)數(shù)據(jù)或ACK一起送至發(fā)送仲裁模塊,,通過硬件接口進行判斷并依照轉發(fā)優(yōu)先進行數(shù)據(jù)傳輸,。

  (3)命令,、回應,、確認機制

  為保證命令執(zhí)行的正確性,TCP/IP協(xié)議內(nèi)的三次握手用于建立鏈接及四次握手關閉連接,。對于數(shù)據(jù)采集系統(tǒng),,命令隨機性高,、命令短暫(64 B)及間隔不可控,采用類似RUDP協(xié)議[7]將判斷鏈路可靠性和命令執(zhí)行(信息傳達)過程合二為一,,保證命令執(zhí)行可靠,,同時相比TCP基于鏈接的機制,效率和功耗方面更適合數(shù)據(jù)采集系統(tǒng),。具體過程如圖5所示,。

005.jpg

  ①命令發(fā)起方發(fā)送一個含有信息的命令至接收方,,等待對方響應,,若對方無響應則進行固定次數(shù)重發(fā),判斷發(fā)生故障后通知上層應用進行處理,;

 ?、诮邮辗竭M行響應,通過命令回應幀回傳信息,,上級無響應則進行固定次數(shù)重發(fā),,判斷發(fā)生故障后撤銷本次命令,通知上層應用進行處理,,并等待下次命令,;

  ③上級收到命令回應表示命令執(zhí)行過程完成,,命令成功,;若未收到對應的命令回應表明命令失敗,撤銷命令,。

  回應確認機制排除了鏈路誤碼的影響,,同時排除了命令一方出現(xiàn)錯誤后命令繼續(xù)執(zhí)行,發(fā)生不可逆錯誤的可能,。相比軟件實現(xiàn)的RUDP機制,,在相同功耗及CPU主頻下,基于硬件的重發(fā),、ACK發(fā)送及確認實現(xiàn),,具有更高的命令執(zhí)行效率。

4 測試結果

  4.1 數(shù)據(jù)率測試

007.jpg

  利用多發(fā)送緩存的硬件模擬數(shù)據(jù)源發(fā)送數(shù)據(jù)幀到數(shù)據(jù)交換節(jié)點,,由節(jié)點進行數(shù)據(jù)交換后發(fā)送至主機,,在保證數(shù)據(jù)正確可靠的前提下得到測試數(shù)據(jù)(表2)。根據(jù)幀協(xié)議及以太網(wǎng)幀傳輸協(xié)議,,在數(shù)據(jù)傳輸過程中存在前導((7+1)B),、CRC(4 B)、幀間隔(12 B)共24 B無效數(shù)據(jù),即:

  ][IY`M)5P8)~7@FQBEX(3%X.jpg

  可得,,在有效長度(Payload Size)為500 B和1 000 B時信道的可知理論有效帶寬及測試得到實際帶寬利用率如表2所示,。在幀長度較小情況下,,通過168 MHz MCU進行數(shù)據(jù)交換,,由于CPU運算能力造成瓶頸限制,無法達到更高的帶寬利用率,。

  4.2 命令響應測試

  節(jié)點與下級站體以最小幀長度64 B反復進行10 000次命令,、回應、確認的命令響應過程,,未發(fā)生錯誤,。對比數(shù)據(jù)利用PC基于RUDP進行模擬站體間短暫(最小幀長)頻繁(類似多個下級站分別進行)的命令交換過程,結果見表3,。

008.jpg

  CPS(CMD Per Second)/MHz為單位主頻下的每秒執(zhí)行命令響應數(shù),,每條命令響應過程由命令、回應,、確認三部分組成,。由表3可見,對于下行通道在較低的CPU主頻下,,本節(jié)點依然保持較高的命令執(zhí)行效率,。在實際系統(tǒng)中可以滿足對下級站體進行分布式管理的需求。

  現(xiàn)有節(jié)點在保證千兆鏈路和百兆鏈路通信及站體命令響應下正常工作功耗約3.5 W,,其中千兆以太網(wǎng)PHY(兩個)功耗約1.6 W,,百兆以太網(wǎng)PHY(兩個)功耗300 mW,MCU功耗約300 mW,,F(xiàn)PGA(兩個)功耗約300 mW,,電源效率損失約700 mW,控制層功耗約占總功耗的10%,,物理層占85%,。

5 結束語

  基于可靠數(shù)據(jù)傳輸協(xié)議實現(xiàn)的可靠數(shù)據(jù)傳輸,通過協(xié)議的硬件實現(xiàn)在較低的CPU主頻及功耗下保證鏈路的高利用率,。通過本地緩存和轉發(fā)機制保證了不同鏈路的數(shù)據(jù)交換,。結合MCU實現(xiàn)軟件對系統(tǒng)進行控制和管理。在原型機平臺上實現(xiàn)兩個百兆以太網(wǎng)和兩個千兆以太網(wǎng)接口,,實現(xiàn)百兆鏈路96%,、千兆鏈路98%以上的鏈路利用率,對至少200道(每道數(shù)據(jù)率400 Kb/s左右)數(shù)據(jù)采集節(jié)點進行管理和采集數(shù)據(jù)傳輸,。作為普遍的協(xié)議及信道交換實現(xiàn)方法,,可以做到與底層鏈路的速度和數(shù)目無關,具有普遍的適用性。

參考文獻

  [1] 王兵,,武杰,,孔陽,等.數(shù)字傳感網(wǎng)絡的高速數(shù)據(jù)傳輸協(xié)議設計[J].儀器儀表學報,,2010,,31(7):1644-1649.

  [2] 張文沛,彭先蓉,,徐勇.基于SOPC的千兆以太網(wǎng)數(shù)據(jù)傳輸設計[J].儀器儀表用戶,,2010,17(3):66-68.

  [3] GIBBS D. Measuring treck TCP/IP performance using the XPS locallink TEMAC in an embedded processor system [EB/OL].(2008-10-09)[2014-08-20]. http://china.xilinx.com/support/documentation/application_notes/xapp1043.pdf.

  [4] 陳輝,,陳虎,,奚建清.嵌入式系統(tǒng)TCP/IP協(xié)議性能測試與分析[J].計算機工程,2007,,33(21):99-101.

  [5] 劉列峰.一種可擴展的大規(guī)模地球物理勘探數(shù)據(jù)采集系統(tǒng)研究[D].合肥:中國科學技術大學,,2014.

  [6] Xilinx. LogiCORE IP Tri-Mode Ethernet MAC v4.5 User Guide[Z]. 2011.

  [7] 王繼剛,顧國昌,,徐立峰,,等.可靠UDP數(shù)據(jù)傳輸協(xié)議的研究與設計[J].計算機工程與應用,2006,,42(15):113-116.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載。