<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種嵌入式IPv4/IPv6雙協(xié)議棧的實(shí)現(xiàn)

          一種嵌入式IPv4/IPv6雙協(xié)議棧的實(shí)現(xiàn)

          作者: 時(shí)間:2012-04-13 來源:網(wǎng)絡(luò) 收藏

          1引言

          本文引用地址:http://www.ex-cimer.com/article/171628.htm

          隨著系統(tǒng)與網(wǎng)絡(luò)的日益結(jié)合,在系統(tǒng)中引入TCP/IP棧,以支持設(shè)備接入網(wǎng)絡(luò),成為嵌入式領(lǐng)域重要的研究方向。并且隨著 Internet技術(shù)的迅猛發(fā)展和規(guī)模的不斷擴(kuò)大,現(xiàn)行的InternetIPv4在地址空間、端到端的IP連接、服務(wù)質(zhì)量和網(wǎng)絡(luò)安全等方面暴露出了不足,極大地限制了IP網(wǎng)絡(luò)的進(jìn)一步發(fā)展。而IPv6所提供的巨大地址空間和網(wǎng)絡(luò)安全等因素已經(jīng)使其成為下一代因特網(wǎng)IP,為了能夠支持IPv6的應(yīng)用,并且考慮到從IPv4到IPv6仍然需要一個(gè)過渡期,本文了一種基于實(shí)時(shí)操作系統(tǒng)的雙協(xié)議棧結(jié)構(gòu)。

          2協(xié)議棧的設(shè)計(jì)要點(diǎn)

          2.1平臺(tái)無關(guān)性

          本文所設(shè)計(jì)的TCP/IP雙協(xié)議棧,要求不能局限于特定的硬件環(huán)境和軟件系統(tǒng)。因此,本協(xié)議棧的采用將所有的TCP/IP協(xié)議都駐留在一個(gè)進(jìn)程當(dāng)中,協(xié)議棧模塊與操作系統(tǒng)內(nèi)核分開。通過定義一個(gè)操作系統(tǒng)模擬層平臺(tái)無關(guān)性。操作系統(tǒng)模擬層屏蔽硬件上的差異和獲取操作系統(tǒng)提供統(tǒng)一的接口,如時(shí)鐘、過程同步以及信息傳遞機(jī)制等。對(duì)于特定的嵌入式操作系統(tǒng),直接對(duì)操作系統(tǒng)模擬層相應(yīng)部分進(jìn)行修改,以符合具體的要求。操作系統(tǒng)模擬層主要包括下面兩個(gè)部分:

          ⑴與處理器和編譯器有關(guān)

          對(duì)不同微處理器的BYTE_ORDER存儲(chǔ)系統(tǒng)定義;對(duì)不同編譯器的數(shù)據(jù)類型長(zhǎng)度的定義;與CPU或編譯器相關(guān)的內(nèi)容的定義。

          ⑵與操作系統(tǒng)相關(guān)

          協(xié)議棧進(jìn)程與應(yīng)用程序進(jìn)程之間的同步與通訊,需要對(duì)信號(hào)量sys_sem_t、消息隊(duì)列sys_mbox_t和時(shí)鐘函數(shù)進(jìn)行定義和操作。

          2.2協(xié)議棧的裁減

          標(biāo)準(zhǔn)的TCP/IP協(xié)議棧功能復(fù)雜,代碼量大,且需大量的存儲(chǔ)器資源。為了滿足嵌入式應(yīng)用,必須對(duì)RFC定義的協(xié)議棧進(jìn)行裁減[1]。本協(xié)議棧的實(shí)現(xiàn)作了如下裁減:

          ⑴IP模塊:不支持?jǐn)?shù)據(jù)分片,不支持?jǐn)?shù)據(jù)包轉(zhuǎn)發(fā),不支持IPv6移動(dòng)功能,不支持部分IPv6的擴(kuò)展報(bào)頭。

          ⑵ICMPv6模塊:支持信息報(bào)文中的請(qǐng)求和應(yīng)答報(bào)文,支持錯(cuò)誤報(bào)文中的目的不可達(dá)和超時(shí)報(bào)文。

          ⑶鄰居發(fā)現(xiàn)模塊:支持地址解析、重復(fù)性探測(cè),省略了路由功能。

          ⑷TCP模塊:支持多個(gè)連接,簡(jiǎn)化滑動(dòng)窗口,實(shí)現(xiàn)快速重傳、慢啟動(dòng)與擁塞避免算法的TCP可靠性機(jī)制;約減掉半關(guān)閉,緊急指針,大部分TCP選項(xiàng)等。

          協(xié)議棧的層次結(jié)構(gòu)如圖1所示。采用獨(dú)立于網(wǎng)絡(luò)層的方式,IPv4協(xié)議和IPv6協(xié)議分開實(shí)現(xiàn),條理清楚,易于裁減,同時(shí)不會(huì)增加太多代碼空間。

          上層應(yīng)用(HTTP)
          TCP
          ICMPv4ICMPv6
          ARPIPv4IPv6

          網(wǎng)絡(luò)驅(qū)動(dòng)

          53.jpg

          3協(xié)議棧的實(shí)現(xiàn)

          3.1內(nèi)存管理

          內(nèi)存管理主要是針對(duì)協(xié)議棧內(nèi)部緩沖區(qū)的管理。為了勝任任意大小報(bào)文的處理,并且能夠達(dá)到比較高的處理效率,在這里定義了兩種緩沖區(qū)實(shí)現(xiàn)機(jī)制:固定長(zhǎng)度緩沖區(qū)(pbuf_pool)和變長(zhǎng)度緩沖區(qū)(pbuf_ram)。pbuf_pool主要適合于網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng),存放從網(wǎng)卡接收的數(shù)據(jù)。 pbuf_ram根據(jù)數(shù)據(jù)的大小動(dòng)態(tài)的分配緩沖區(qū),如協(xié)議的報(bào)頭空間。

          在這里對(duì)存儲(chǔ)空間的申請(qǐng)做了一定改進(jìn)。由于發(fā)送數(shù)據(jù)時(shí)很難確定各層協(xié)議頭部需要多大的內(nèi)存空間,特別是IPv6報(bào)文可以包含若干個(gè)擴(kuò)展頭,所以只申請(qǐng)基本頭部的內(nèi)存空間,在使用中動(dòng)態(tài)調(diào)整的可能性就會(huì)很大,使得系統(tǒng)的效率降低。在這里提出了一種優(yōu)化方法,根據(jù)局部性原理,通常情況下一個(gè)連接在局部時(shí)間范圍內(nèi)需要網(wǎng)絡(luò)層提供相同功能的概率非常大,所以在該連接的TCP_PCB控制塊中增加一個(gè)變量num,用于記錄上次通信時(shí)IPv6協(xié)議頭所使用的字節(jié)數(shù),并且此變量可以被網(wǎng)絡(luò)層的函數(shù)進(jìn)行修改。當(dāng)傳輸層下次申請(qǐng)pbuf時(shí),就參考這個(gè)值。如果所需的存儲(chǔ)空間比此值大,就需重新申請(qǐng)能滿足要求的存儲(chǔ)空間,同時(shí)修改num的值,并作為下一次申請(qǐng)的參考。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          tcp/ip相關(guān)文章:tcp/ip是什么



          上一頁(yè) 1 2 3 4 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();