- 相關推薦
TCP/IP協(xié)議棧在嵌入式異構網絡互聯(lián)中的應用
摘要:隨著測控技術與網絡技術日益緊密的結合,測控系統(tǒng)接入互聯(lián)網已經成為大勢所趨。本文闡述在一種異構網絡互聯(lián)——CAN總線與以太網互聯(lián)系統(tǒng)設計方案中嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn)。從而實現(xiàn)了將基于TCP/IP協(xié)議的計算機網絡設備與基于CAN總線協(xié)議的底層現(xiàn)場網絡連通。關鍵詞:TCP/IP協(xié)議棧 CAN總線 以太網 互聯(lián)網 異構結構
引言
Internet現(xiàn)已成為社會重要的信息流通渠道。如果嵌入式系統(tǒng)能夠連接到Internet上面,則可以方便、低廉地將信息傳送到幾乎世界上的任何一個地方。可以預言,嵌入式設備與Internet的結合代表著嵌入式系統(tǒng)和網絡技術的真正未來。隨著IPv6的應用,設備都可能獲得一個全球唯一的IP地址,通過IP地址和互聯(lián)網相連成為一個網絡設備。但是傳統(tǒng)的TCP/IP協(xié)議在實現(xiàn)實時性方面做得不夠好,它把大量的精力花在保證數(shù)據傳送的可靠性以及數(shù)據流量的控制上。而在實時性要求比較高的嵌入式領域中,傳統(tǒng)的TCP/IP不能滿足其實時要求。另外,傳統(tǒng)TCP/IP的實現(xiàn)過于復雜,需占用大量系統(tǒng)資源,而嵌入式應用的系統(tǒng)資源往往都很有限。因此,需要把傳統(tǒng)TCP/IP在不違背協(xié)議標準的前提下加以改進實現(xiàn),使其實現(xiàn)性得到提高,占用的存儲空間盡可能少,以滿足嵌入式應用的要求。
在大型企業(yè)自動化系統(tǒng)中,上層企業(yè)管理層和生產監(jiān)控層一般采用的都是以太網和PC機,而在下層車間現(xiàn)場都是采用現(xiàn)場總線和單片機測控設備。上下兩層的溝通,通常采用工業(yè)控制機加以太網卡,再加上PC機插槽上的接口卡和并行打印口EPP接口卡來實現(xiàn)。這種連接方式成本高,開發(fā)周期長。針對這些情況,本文提出了一種單獨的嵌入式CAN-以太網網關互連系統(tǒng)的設計方案,成功地實現(xiàn)以太網和現(xiàn)有的CAN總線網的直接數(shù)據傳輸。
(范文先生網www.shangujixie.com收集整理)
1 異構網絡互聯(lián)系統(tǒng)結構設計
CAN總線是一個設備互連總線型控制網絡。在CAN總線上可以掛接多達110個設備節(jié)點,各設備間可以自主相互通信,實現(xiàn)復雜網絡控制系統(tǒng)。但設備信息層無法直接到達信息管理層,要想設備信息進入信息管理層就要通過一種數(shù)據網關。
這里設計了一個SX52網關,用于CAN總線與以太網的互連。圖1所示的系統(tǒng)總體結構分為三部分:現(xiàn)場測控網絡(CAN網絡)、嵌入式透明SX52網關和以太網信息管理終端(如監(jiān)控平臺和網絡數(shù)據庫等)。以太網信息管理終端與CAN總線上的CAN節(jié)點通過Ethernet、SX52網關、CAN總線相互通信,其中SX52網關起核心異構網絡的互連作用。
協(xié)議轉換是異構網絡互連的技術關鍵和難點。協(xié)議轉換一般遙相呼應采用分層轉換的方法,自低向上逐層進行。目前互連大都是在網絡層或網絡層展開的,因而必須對互連層以下各層協(xié)議逐層向上轉換。這種轉換方法的依據是協(xié)議分層的基本原理,即低層支持高層,高層調用低層,低層斷開連接后,高層連接也隨之斷開,但高層斷開連接卻不會影響低層。從網絡的分層結構上來看我們設計的互連系統(tǒng)具有如圖2所示的分層結構。以太網上運行TCP/IP協(xié)議,它具有應用層、傳輸層、網絡層以太網數(shù)據鏈路層和物理層;CAN總線具有應用層、數(shù)據鏈路層和物理層,其中應用層由用戶自己定義,數(shù)據鏈路層和物理層由CAN協(xié)議所定義;SX52數(shù)據網關具有物理層、數(shù)據鏈路層和應用層,其應用層也就是Ethernet與CAN的信息數(shù)據交換層,SX52微控制器在此層相互解釋并轉發(fā)這兩種不同協(xié)議的數(shù)據。
在本設計中,SX52網關被設計成了一個透明數(shù)據網關。也就是在以太網應用層構建和解析完整的CAN協(xié)議數(shù)據包。CAN協(xié)議數(shù)據包作為TCP/IP網絡的應用層的數(shù)據進行傳輸。對通信數(shù)據的具體實際意義不做任何解釋。
透明式網關由通信處理器、CAN總線控制器和以太網控制器三個部分組成。其中SX52單片機為核心處理器,實現(xiàn)CAN控制網絡與以太網之間的協(xié)議轉換。以太網信息管理 層的控制指令發(fā)送到嵌入式透明SX52網關,經過它將TCP/IP協(xié)議包數(shù)據轉換為CAN協(xié)議形式發(fā)送至CAN控制網絡中的指定設備節(jié)點,完成信息管理層對現(xiàn)場設備層的控制。同樣地,當CAN網絡上的設備數(shù)據(如定時采樣數(shù)據或報警信息)要傳輸?shù)叫畔⒐芾韺訒r,可將數(shù)據發(fā)送到嵌入式透明SX52網關,再通過網關協(xié)議轉換程序將CAN協(xié)議數(shù)據封裝成TCP/IP協(xié)議的以太網數(shù)據幀發(fā)送至以太網上的監(jiān)控計算機。
2 SX52中TCP/IP協(xié)議棧的設計
按照層次結構思想,對計算機網絡模塊化的研究結果是,形成了一組從上到下單向依賴關系的協(xié)議棧(protocol stack),也叫協(xié)議族。在標準的TCP/IP協(xié)議族中有很多協(xié)議。這里SX52中TCP/IP協(xié)議棧層次結構如圖3所示。
2.1 SX52 ARP協(xié)議的設計與實現(xiàn)
地址解析協(xié)議ARP(Address Resolution Protocol)可以實現(xiàn)邏輯地址到物理地址的動態(tài)映射。它提供了一種使以太網絡節(jié)點可以傳輸一個IP數(shù)據包到目的地址的映射機制。
在SX52中,ARP協(xié)議是通過一個“IP地址對應以太網地址”的單登記實現(xiàn)的。當遠程主機需要知道它的物理地址時,遠程主機會向它發(fā)送ARP請求。這時它就會響應這個遠程主機的請求,告訴對方自己的物理地址。當然,當應用層需要傳輸IP數(shù)據包時
,SX52 ARP協(xié)議也可以請求遠程目的物理地址。
要傳輸?shù)腎nternet數(shù)據包在以太網控制器的發(fā)送緩沖區(qū)中被構建,它使用最近接收到的數(shù)據包的目的以太網地址作為發(fā)送數(shù)據包的目的地址。當然,這可能不是正確的以太網地址,因此,在實際發(fā)送數(shù)據包之前,ARP協(xié)議將檢查發(fā)送數(shù)據包中的IP地址是否存在于ARP核中。如果發(fā)送數(shù)據中包中的IP地址在這個核中,在以太網發(fā)送緩沖區(qū)中的數(shù)據包將使用ARP核中的以太網地址更新;如果不在,ARP協(xié)議將發(fā)送一個ARP請求包,然后等待一個應答。一旦這個ARP應答接收到,這個ARP核將使用剛接收到的目標以太網地址更新,接著,等待發(fā)送的數(shù)據包也將使用這個以太網地址更新,然后被發(fā)送出去。如果發(fā)送的ARP請求包沒有應答,導致ARP定時器超時,這時等待發(fā)送的數(shù)據包將被廢棄,正常的協(xié)議棧繼續(xù)運行。使用的變量有:ARP核中的IP地址{hostlIP3,hostlIP2,hostlIP1,host1IP0};ARP核中的以太網物理地址{host1Eth0,host1Eth1,host1Eth2,host1Eth3,host1Eth4,host1Eth5};ARP協(xié)議的定時器{arpTimerMSB,arpTimerLSB}等。使用涉及的函數(shù)有:ARPInit(),ARPCheckCache(),ARPSendResponse(),ARPUpdateEthAddr(),ARPCheckIfIs(),ARPCompare4(),ARPSendStPacket(),ARPSendCommon(),ARPSendRequest()。
2.2 SX52 IP協(xié)議的設計與實現(xiàn)
IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據都以IP數(shù)據報格式傳輸。IP提供不可靠、無連接的數(shù)據報傳送服務。本設計中的IP協(xié)議是針對特殊的應用環(huán)境下的合理簡化。CAN總線的控制網絡是一種短幀(每個數(shù)據幀為8字節(jié))的實時網絡,所以,IP數(shù)據包無須分片(MF=DF=0),同時,設置IP為服務類型為一般類型,其頭長為20字節(jié),壽命TTL設置為64。使用的變量有:目的IP地址{remoteIP3,remoteIP2,remoteIP1,remoteIP0};源IP地址{myIP3,myIP2,myIP1,myIP0};IP校驗和{ipCheckSumMSB,ipCheckSumLSB};IP數(shù)據包長度{ipLengthMSB,}ipLengthLSB};上層使用的協(xié)議ipProtocol,IP標識{ipIdentMSB,ipIdentLSB}。使用涉及的函數(shù)有:TCPIPInit(),CheckIPDatagram(),CheckIPDestAddr(),IPStartPktOut()等。
2.3 SX52 ICMP協(xié)議的設計與實現(xiàn)
為了讓互聯(lián)網中的路由器報告或提供有關意外情況的信息,在TCP/IP協(xié)議系列中加入了一個專門用于發(fā)送差錯報文的協(xié)議——互聯(lián)網控制報文協(xié)議ICMP(Internet Control Message Protocol)。ICMP是IP的一部分在每個IP實現(xiàn)中都必須用到它。像其它所有的通信業(yè)務一樣,ICMP報文是放在一個IP數(shù)據報的數(shù)據部分中傳送的。ICMP報文的最終目的不是應用程序或目的機器上的用戶,而是該機上處理它的Internet協(xié)議軟件模塊。也就是說:Internet控制報文協(xié)議允許路由器向其它路由器或主機發(fā)送差錯或控制報文;ICMP在兩臺主機的Internet協(xié)議軟件之間提供通信。
每個ICMP報文都以相同的3個字節(jié)開始:1個8位整數(shù)的報文類型(TYPE)字段用來識別報文,1個8位代碼(CODE)字段提供有關報文類型的進一步信息,1個16位校驗和字段。此外,ICMP報文還總是包括產生問題的數(shù)據報首部及其開頭的64位數(shù)據。
ICMP使用IP來傳送每一個差錯報文。當路由器有一個ICMP報文要傳遞時,它會創(chuàng)建一個IP數(shù)據報并將ICMP報文封裝其中,也就是說,ICMP報文被置于IP數(shù)據報的數(shù)據區(qū)中,然后這一數(shù)據報像通常一樣被轉發(fā)。即整個數(shù)據報被封裝進幀中進行傳遞。
每一個ICMP報文的產生總是對應于一個數(shù)據報。路由器將一個ICMP報文將回給產生數(shù)據報的主機。在這里,只實現(xiàn)了ICMP的回應請求/應答服務,主要用于PING程序測試通信鏈路的暢通性,即只處理接收的報文類型為0x08的ICMP幀,發(fā)送的ICMP報文類型為0x00。它沒有自己專有的變量,涉及的函數(shù)也只有ICMPGenCheckSum()和ICMPProcPktIn()。
2.4 SX52 UDP協(xié)議的設計與實現(xiàn)
UDP是一個簡單的面向數(shù)據報的運輸層協(xié)議:進程的每個輸出操作都正好產生一個UDP數(shù)據報,并組裝成一份待發(fā)送的IP數(shù)據報。UDP不提供可靠性,它把應用程序傳給IP層的數(shù)據發(fā)送出去,但是并不保證它們能到達目的地。由于缺乏可靠性,我們似乎覺得要避免使用UDP,而使用一種可靠的協(xié)議,如TCP。但分析發(fā)現(xiàn),UDP在我們的互連設計中有很多的優(yōu)點:其一,UDP協(xié)議傳輸效率高,無須TCP通信前的連接開銷;第二,UDP協(xié)議簡單,無須復雜的狀態(tài)機傳輸機制,可以很好地避免SX52網關死機復位后由于狀態(tài)不一致而無法正常通信,且上層協(xié)議又很難發(fā)現(xiàn)的危險。因此,可以使用UDP來實現(xiàn)通信(避免TCP連接的開銷),而讓許多需要的特征(如動態(tài)超和重傳、擁塞避免、查錯等)放置在應用層設計和實現(xiàn)。使用的變量有:
UDP接收數(shù)據報的源端口{udpRxSrcPortMSB,udpRxSrcPortLSB};
UDP接收數(shù)據報的目的端口{udpRxDestPortMSB,udpRxDestPor
tLSB};
UDP接收數(shù)據報的長度{udpRxDataLenMSB,udpRxDataLenLSB};
UDP發(fā)送數(shù)據報的源端口{udpTxSrcPortMSB,udpTxSrcPortLSB};
UDP發(fā)送數(shù)據報的目的端口{udpTxDestPortMSB,udpTxDestPortLSB};
UDP發(fā)送數(shù)據報的長度{udpTxDataLenMSB,udpTxDataLenLSB}。
設計的相關函數(shù)有:UDPAppInit(),DPGenCheckSum(),UDPStartPktOut(),UDPProcPktIn(),UDPEndPktOut(),UDPAppProcPktIn(),UDPAppProcPktOut()等。
2.5 SX52 TCP協(xié)議的設計與實現(xiàn)
傳輸控制協(xié)議TCP(Transmission Control Protocol)是傳輸層的重要協(xié)議。它提供一個完全可靠的(沒有數(shù)據重復或丟失)、面向連接的、全雙工的流傳輸服務。本設計中,對復雜的TCP協(xié)議做了合理的簡化:①因為CAN網絡傳輸速度較快,數(shù)據量小且10Mbps的以太網傳輸一般不會發(fā)生阻塞,以太網上的主機也會有足夠的能力及時處理通信數(shù)據,所以可以固定超時與重傳的時間為5s。②RTL8019AS上有兩個1500字節(jié)的接收緩沖區(qū),且CAN網絡為控制網,信息量小,所以可以固定接收窗口為1400字節(jié)。③因為我們采用一般的TCP服務就可以滿足應用,所以可以忽略緊急指針和選項及填充字段的值。通過上述三點簡化,實際上大大簡化了TCP協(xié)議的實現(xiàn)。因為TCP的超時與重傳時間的確定和窗口大小的控制有著較復雜的算法和實現(xiàn)機制。
它的實現(xiàn)變量有:tcpState,{tcpTmpSeq4,tcpTmpSeq3,tcpTmpSeq2,tcpTmpSeq1},{tcpTmpAck4,tcpTmpAck3,tcpTmpAck2,tcpTmpAck1},{tcpUnAckMSB,tcpUnAckLSB},tcpRxFlags,{tcpCheckSumMSB,tcpCheckSumLSB},{tcpLengthMSB,tcpLengthLSB},{tcpTmpMSB,TcpTmpLSB},{tcbLocalPortMSB,tcbLocalPortLSB},{tcbRemotePortMSB,tcbRemotePortLSB},{tcbSndUna4,tcbSndUna3,tcbSndUna2,tcbSndUnal},{tcbRcvNxt4,tcbRcvNxt3,tcbRcvNxt2,tcbRcvNxt1},tcbOffset,tcbFlags,{tcbSendWinMSB,tcbSendWinLSB},{tcpTimerMSB,tcpTimerLSB}等。
相關函數(shù)有:TCPIPInit(),TCPRxHeader(),TCPProcPktIn(),TCPTransmit(),TCPReTransmit(),TCPAppPassiveOpen(),TCPAppActiveOpen(),CPAppClose(),TCPAddRcvNxt(),TCPIncRcvNxt(),TCPIncSndUna(),TCPCopySeqToNxt(),TCPAckUpdate(),TCPUpdateSeq(),TCPChkSeq(),TCPRestorePrev(),TCPCmpNxtSeq(),TCPSendEmptyPkt(),TCPSendReset(),TCPSendSyn(),TCPSendISN(),TCPSendSynAck()TCPSendAck(),TCPSendFin(),TCPCheckSuminit(),CPCheckSumAcc(),TCPCheckSumAddHdr(),CPTxByte(),TCPStartPktOut(),TCPAppInit(),TCPAppTxBytes(),TCPAppTxData(),TCPAppTxDone(),TCPAppRxBytes(),TCPAppRxData(),等。
2.6 TCP和IP傳輸層協(xié)議的選擇
把TCP/IP協(xié)議應用到控制網絡中如何選擇傳輸層協(xié)議類型很關鍵。如果要與現(xiàn)有的應用程序通信,必須使用與其相同的協(xié)議類型。在實際應用時,從可靠性來說,TCP提供了可靠的數(shù)據連接,UDP和直接訪問IP的一些協(xié)議是不可靠的,數(shù)據報可能會丟失、損壞或重復;從性能上講,UDP的性能最快,可靠性、流量控制重組包和連接維護等附加開銷降低了TCP的性能。對于速度比較慢的系統(tǒng)來說,如溫度、濕度傳感器,選擇TCP或UDP都無所謂,對于不太重要的傳感器選用UDP就可以了;對于可靠性要求較高的傳感器,應該選用TCP協(xié)議;對于實時性要求高的網絡設備,如網絡會議系統(tǒng)、IP音響、實時播放的電視等設備,數(shù)據傳輸率較高,應該選用UDP協(xié)議;有些有嚴格要求的同步系統(tǒng)應采用UDP;數(shù)據監(jiān)控系統(tǒng)傳輸?shù)目煽啃砸筝^高,應采用TCP;Web和Email也應采用了TCP。總之,要根據實際情況來確定選用何種協(xié)議。
結語
針對本嵌入式異構網絡互連方案,對TCP/IP協(xié)議棧簡化設計為SX52型CAN總線與以太網互連方案,達到了測控通信系統(tǒng)高實時性、可靠性和嵌入式設計的要求。該互連方案很好地保證及管理監(jiān)控層和生產測控層之間的連接,方便了上下層信息交換,能滿足工廠、變電站等工業(yè)場合的應用要求。
【TCP/IP協(xié)議棧在嵌入式異構網絡互聯(lián)中的應用】相關文章:
在TMS320VC5402上實現(xiàn)的嵌入式TCP/IP協(xié)議棧08-06
TCP/IP在網絡中的高效配置08-06
嵌入式TCP/IP協(xié)議單片機技術在網絡通信中的應用08-06
嵌入式 TCP/IP 協(xié)議單片機技術在網絡通信中的應用08-06
基于ARM的嵌入式TCP/IP協(xié)議的實現(xiàn)08-06
基于精簡TCP/IP協(xié)議棧的信息家電網絡服務器08-06
Linux對TCP/IP的支持淺析08-06
H.248/Megaco協(xié)議在全IP網絡中的應用08-06
嵌入式網絡設備的MAC及IP地址設置08-06