摘 要: 在以太網(wǎng)物理層的基礎(chǔ)上,,設(shè)計了一種利用專用硬件接口結(jié)合低功耗MCU實現(xiàn)可靠數(shù)據(jù)傳輸協(xié)議,,可在不同物理鏈路之間進行可靠、可控,、高速數(shù)據(jù)交換的數(shù)據(jù)節(jié)點,。與傳統(tǒng)TCP的實現(xiàn)機制不同,傳輸協(xié)議由專用硬件接口實現(xiàn),,與一般的純軟件實現(xiàn)可靠數(shù)據(jù)傳輸方案相比,,在CPU主頻和功耗相當(dāng)?shù)那闆r下該設(shè)計具有更高的數(shù)據(jù)率,本節(jié)點同時具備對采集系統(tǒng)進行分布式管理的能力,。經(jīng)測試,,本節(jié)點可以達到97%以上信道利用率,具有數(shù)據(jù)傳輸可靠,、功耗低等優(yōu)點,。
關(guān)鍵詞: 以太網(wǎng);FPGA,;高速可靠數(shù)據(jù)傳輸,;低功耗
0 引言
在一些工業(yè)應(yīng)用領(lǐng)域,如大規(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)方法為在底層傳輸介質(zhì)基礎(chǔ)上依靠復(fù)雜的CPU運算來保證數(shù)據(jù)的可靠性,,在不同的CPU主頻下TCP性能測試如表1所示。
可見傳統(tǒng)的TCP實現(xiàn)方案對CPU主頻依賴性強,,隨之帶來的高功耗無法滿足系統(tǒng)低功耗的設(shè)計要求,。本文在可靠數(shù)據(jù)傳輸協(xié)議基礎(chǔ)上,設(shè)計了一種高速數(shù)據(jù)交換節(jié)點,,在100 Mb/s和1 000 Mb/s信道之間進行數(shù)據(jù)交換和管理,,在更低CPU主頻(168 MHz)情況下具有信道利用率高(百兆97%以上,千兆98%以上),、可靠,、可控、低功耗等特點,。
1 節(jié)點所處網(wǎng)絡(luò)的拓撲結(jié)構(gòu)
在大規(guī)模數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)采集節(jié)點數(shù)量大,、分布范圍廣,在有線數(shù)字傳感網(wǎng)絡(luò)中將采集節(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ā)送,此方向為命令通道(下行通道),。其拓撲結(jié)構(gòu)如圖1所示,。
2 可靠數(shù)據(jù)傳輸協(xié)議
傳統(tǒng)的通信協(xié)議(TCP/IP)需要復(fù)雜的路由協(xié)議,高層協(xié)議還需要大量的應(yīng)用服務(wù),,對于嵌入式系統(tǒng)來說過于復(fù)雜,,且對CPU運算能力有較高要求。在相對較低的主頻及功耗條件下無法滿足高速,、可靠數(shù)據(jù)傳輸?shù)囊蟆?/p>
可靠數(shù)據(jù)傳輸協(xié)議在傳統(tǒng)通信協(xié)議的基礎(chǔ)上進行精心裁剪,,對于一些工業(yè)領(lǐng)域應(yīng)用系統(tǒng),如大規(guī)模地震數(shù)據(jù)采集系統(tǒng),,本協(xié)議針對性強,、結(jié)構(gòu)簡單、適應(yīng)底層硬件,。上層軟件根據(jù)系統(tǒng)需要設(shè)計,,減少不必要的開銷以適合高效率數(shù)據(jù)封裝,滿足高速,、可控,、可靠的數(shù)據(jù)傳輸需求[1]。
可靠數(shù)據(jù)傳輸協(xié)議包括:ACK回應(yīng)與超時重發(fā)機制,;轉(zhuǎn)發(fā)優(yōu)先及本地緩存機制,;命令、回應(yīng),、確認機制等,。相比傳統(tǒng)的通信協(xié)議更適應(yīng)數(shù)據(jù)采集系統(tǒng),效率更高,。
3 數(shù)據(jù)交換節(jié)點設(shè)計與實現(xiàn)
本數(shù)據(jù)交換節(jié)點利用FPGA邏輯實現(xiàn)專用硬件接口,,實現(xiàn)硬件ACK響應(yīng)和判斷、硬件重發(fā),、硬件轉(zhuǎn)發(fā)和硬件發(fā)送仲裁等功能,,并利用低功耗MCU進行命令響應(yīng)和數(shù)據(jù)處理?;诳煽繑?shù)據(jù)傳輸協(xié)議在百兆以太網(wǎng)鏈路和千兆以太網(wǎng)鏈路之間進行數(shù)據(jù)交換和命令響應(yīng),。
3.1 硬件平臺及節(jié)點結(jié)構(gòu)
節(jié)點結(jié)構(gòu)如圖2所示,主要由三部分組成:
?。?)低功耗MCU,,主要用于命令響應(yīng)和數(shù)據(jù)處理。硬件接口將數(shù)據(jù)及命令通過MII高速數(shù)據(jù)接口及低速命令接口將信息傳送至中央處理單元,,經(jīng)過處理的數(shù)據(jù),、需要向上級返回的命令響應(yīng)及向下級分發(fā)的命令通過對應(yīng)的接口發(fā)送至硬件接口進行數(shù)據(jù)傳輸。作為原型機硬件,,MCU采用ST公司STM32F407,,其基于CortexTM-M4架構(gòu),主頻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)轉(zhuǎn)發(fā),、接收,、本地數(shù)據(jù)發(fā)送。其內(nèi)部的可拓展RDT(Reliable Data Transmission)模塊根據(jù)幀類型及地址進行自動ACK確認,、本地發(fā)送與轉(zhuǎn)發(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ù)在對稱的信道之間進行可靠、可控的交換,,結(jié)合硬件平臺和可靠數(shù)據(jù)傳輸協(xié)議,,實現(xiàn)數(shù)據(jù)交換節(jié)點的設(shè)計,設(shè)計要點如下,。
?。?)ACK回應(yīng)及超時重發(fā)
發(fā)送方發(fā)出數(shù)據(jù)幀后等待ACK回應(yīng),收到正確的ACK回應(yīng)后表明本次發(fā)送正確完成,,進行下一幀的發(fā)送,;若超時后未收到ACK回應(yīng)或回應(yīng)錯誤則進行重發(fā)并在重發(fā)幀內(nèi)重發(fā)次數(shù)位段進行加一(區(qū)別重發(fā)次數(shù)不同的幀),進入下一次的等待回應(yīng)過程,。
對于ACK回應(yīng)在鏈路發(fā)生偶然性誤碼的情況下,,通過重發(fā)可以排除可恢復(fù)性錯誤,發(fā)生不可恢復(fù)故障時向高層應(yīng)用報告錯誤,,由上層應(yīng)用判斷并進行動態(tài)路由,,尋找其他可靠的數(shù)據(jù)鏈路完成發(fā)送或是進入低功耗待機模式以節(jié)約能源。ACK機制同時可以實現(xiàn)流量控制,,可根據(jù)需要停止ACK回應(yīng)終止本地接收,,或有計劃地控制ACK幀的回應(yīng)頻度對鏈路數(shù)據(jù)率進行調(diào)節(jié),以保證數(shù)據(jù)傳輸?shù)目煽匦?,借此排除整個數(shù)據(jù)傳輸中數(shù)據(jù)率的隨機性,,通過ACK回應(yīng)保證數(shù)據(jù)均勻。
ACK等待和重發(fā)由硬件接口內(nèi)部的RDT模塊實現(xiàn),,在實現(xiàn)協(xié)議的同時減輕了CPU的運算壓力,。如圖3所示,本地數(shù)據(jù)先由RDT模塊緩存,,多發(fā)送緩存可提高信道的利用率,,根據(jù)幀信息確定是否需要重發(fā),,發(fā)送完成后等待ACK,若收到回應(yīng)則進行下一次發(fā)送,,否則重發(fā)(重發(fā)次數(shù)+1),,若重發(fā)次數(shù)達到上限(本文設(shè)定為4),則認為本次發(fā)送失敗,,通知上層應(yīng)用,以硬件實現(xiàn)的方式使得低CPU主頻,、高數(shù)據(jù)率的實現(xiàn)成為可能,。
(2)轉(zhuǎn)發(fā)優(yōu)先及本地緩存
節(jié)點間級聯(lián)的拓撲結(jié)構(gòu)如圖4所示,,需要將下游節(jié)點的數(shù)據(jù)向主機轉(zhuǎn)發(fā)及轉(zhuǎn)發(fā)主機向下游發(fā)送的命令,,同時需要進行本地的接收和發(fā)送。轉(zhuǎn)發(fā)優(yōu)先和本地緩存可以保證整個鏈路的通暢和鏈路數(shù)據(jù)可靠不丟,。
?、俎D(zhuǎn)發(fā)優(yōu)先:在千兆鏈路通信建立伊始通過上層應(yīng)用判斷鏈接方向確定上行(靠近主機)與下行(連接其他數(shù)據(jù)交換節(jié)點),在通信過程中當(dāng)節(jié)點收到來自上游的命令時判斷是否為本地命令,,若為本地命令則通過硬件通道傳至本地處理單元進行命令解析和處理,,若非本地命令則向下游轉(zhuǎn)發(fā);收到下游發(fā)來的數(shù)據(jù)幀時則向上游主機轉(zhuǎn)發(fā),。當(dāng)節(jié)點收到轉(zhuǎn)發(fā)數(shù)據(jù)或命令,,即轉(zhuǎn)發(fā)緩存非空時,無論本地發(fā)送緩存內(nèi)是否有數(shù)據(jù)或命令需要發(fā)送,,優(yōu)先轉(zhuǎn)發(fā),,待鏈路空閑時進行本地發(fā)送。在數(shù)據(jù)傳輸過程中千兆鏈路數(shù)據(jù)率高,,多級節(jié)點級聯(lián)對于實時性要求高,,緩存壓力大,優(yōu)先轉(zhuǎn)發(fā)可以避免本地轉(zhuǎn)發(fā)緩存的壓力,。
?、诒镜鼐彺妫涸谇д祖溌愤M行數(shù)據(jù)傳輸過程中,數(shù)據(jù)交換節(jié)點必須同時接收下級采集節(jié)點接收的數(shù)據(jù)進行統(tǒng)計,、匯總及相應(yīng)的處理后存入本地緩存,,當(dā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é)點及鏈路進行重新設(shè)計。在系統(tǒng)設(shè)計正確恰當(dāng)?shù)臈l件下,,整體數(shù)據(jù)率低于(或等于)千兆的最大數(shù)據(jù)率,,通過本地緩存的機制可以保證在轉(zhuǎn)發(fā)的同時各節(jié)點的本地數(shù)據(jù)可靠有序地發(fā)送,。根據(jù)數(shù)據(jù)量及分布可以推算出合理的緩存大小,保證本地接收數(shù)據(jù)不丟在轉(zhuǎn)發(fā)空閑時而發(fā)送至主機,。
其硬件實現(xiàn)如圖3所示,,本地發(fā)送數(shù)據(jù)緩存在RDT模塊內(nèi)經(jīng)過ACK確認及重發(fā)處理后與轉(zhuǎn)發(fā)數(shù)據(jù)或ACK一起送至發(fā)送仲裁模塊,通過硬件接口進行判斷并依照轉(zhuǎn)發(fā)優(yōu)先進行數(shù)據(jù)傳輸,。
?。?)命令、回應(yīng),、確認機制
為保證命令執(zhí)行的正確性,,TCP/IP協(xié)議內(nèi)的三次握手用于建立鏈接及四次握手關(guān)閉連接。對于數(shù)據(jù)采集系統(tǒng),,命令隨機性高,、命令短暫(64 B)及間隔不可控,采用類似RUDP協(xié)議[7]將判斷鏈路可靠性和命令執(zhí)行(信息傳達)過程合二為一,,保證命令執(zhí)行可靠,,同時相比TCP基于鏈接的機制,效率和功耗方面更適合數(shù)據(jù)采集系統(tǒng),。具體過程如圖5所示,。
①命令發(fā)起方發(fā)送一個含有信息的命令至接收方,,等待對方響應(yīng),,若對方無響應(yīng)則進行固定次數(shù)重發(fā),判斷發(fā)生故障后通知上層應(yīng)用進行處理,;
?、诮邮辗竭M行響應(yīng),通過命令回應(yīng)幀回傳信息,,上級無響應(yīng)則進行固定次數(shù)重發(fā),,判斷發(fā)生故障后撤銷本次命令,通知上層應(yīng)用進行處理,,并等待下次命令,;
③上級收到命令回應(yīng)表示命令執(zhí)行過程完成,,命令成功,;若未收到對應(yīng)的命令回應(yīng)表明命令失敗,撤銷命令,。
回應(yīng)確認機制排除了鏈路誤碼的影響,,同時排除了命令一方出現(xiàn)錯誤后命令繼續(xù)執(zhí)行,發(fā)生不可逆錯誤的可能。相比軟件實現(xiàn)的RUDP機制,,在相同功耗及CPU主頻下,,基于硬件的重發(fā)、ACK發(fā)送及確認實現(xiàn),,具有更高的命令執(zhí)行效率,。
4 測試結(jié)果
4.1 數(shù)據(jù)率測試
利用多發(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ù)傳輸過程中存在前導(dǎo)((7+1)B),、CRC(4 B),、幀間隔(12 B)共24 B無效數(shù)據(jù),即:
可得,,在有效長度(Payload Size)為500 B和1 000 B時信道的可知理論有效帶寬及測試得到實際帶寬利用率如表2所示。在幀長度較小情況下,,通過168 MHz MCU進行數(shù)據(jù)交換,,由于CPU運算能力造成瓶頸限制,無法達到更高的帶寬利用率,。
4.2 命令響應(yīng)測試
節(jié)點與下級站體以最小幀長度64 B反復(fù)進行10 000次命令,、回應(yīng)、確認的命令響應(yīng)過程,,未發(fā)生錯誤,。對比數(shù)據(jù)利用PC基于RUDP進行模擬站體間短暫(最小幀長)頻繁(類似多個下級站分別進行)的命令交換過程,結(jié)果見表3,。
CPS(CMD Per Second)/MHz為單位主頻下的每秒執(zhí)行命令響應(yīng)數(shù),,每條命令響應(yīng)過程由命令、回應(yīng),、確認三部分組成,。由表3可見,對于下行通道在較低的CPU主頻下,,本節(jié)點依然保持較高的命令執(zhí)行效率,。在實際系統(tǒng)中可以滿足對下級站體進行分布式管理的需求。
現(xiàn)有節(jié)點在保證千兆鏈路和百兆鏈路通信及站體命令響應(yīng)下正常工作功耗約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 結(jié)束語
基于可靠數(shù)據(jù)傳輸協(xié)議實現(xiàn)的可靠數(shù)據(jù)傳輸,,通過協(xié)議的硬件實現(xiàn)在較低的CPU主頻及功耗下保證鏈路的高利用率。通過本地緩存和轉(zhuǎn)發(fā)機制保證了不同鏈路的數(shù)據(jù)交換,。結(jié)合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ù)目無關(guān),,具有普遍的適用性。
參考文獻
[1] 王兵,,武杰,,孔陽,等.?dāng)?shù)字傳感網(wǎng)絡(luò)的高速數(shù)據(jù)傳輸協(xié)議設(shè)計[J].儀器儀表學(xué)報,,2010,,31(7):1644-1649.
[2] 張文沛,彭先蓉,,徐勇.基于SOPC的千兆以太網(wǎng)數(shù)據(jù)傳輸設(shè)計[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].合肥:中國科學(xué)技術(shù)大學(xué),,2014.
[6] Xilinx. LogiCORE IP Tri-Mode Ethernet MAC v4.5 User Guide[Z]. 2011.
[7] 王繼剛,顧國昌,,徐立峰,,等.可靠UDP數(shù)據(jù)傳輸協(xié)議的研究與設(shè)計[J].計算機工程與應(yīng)用,2006,,42(15):113-116.