日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]1引言隨著嵌入式系統(tǒng)與網(wǎng)絡(luò)的日益結(jié)合,在嵌入式系統(tǒng)中引入TCP/IP協(xié)議棧,以支持嵌入式設(shè)備接入網(wǎng)絡(luò),成為嵌入式領(lǐng)域重要的研究方向。并且隨著 Internet技術(shù)的迅猛發(fā)展和規(guī)模的不斷擴(kuò)大,現(xiàn)行的Internet協(xié)議IPv4在地

1引言

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

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

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

本文所設(shè)計(jì)的TCP/IP雙協(xié)議棧,要求不能局限于特定的硬件環(huán)境和軟件系統(tǒng)。因此,本協(xié)議棧的實(shí)現(xiàn)采用將所有的TCP/IP協(xié)議都駐留在一個(gè)進(jìn)程當(dāng)中,協(xié)議棧模塊與操作系統(tǒng)內(nèi)核分開(kāi)。通過(guò)定義一個(gè)操作系統(tǒng)模擬層實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。操作系統(tǒng)模擬層屏蔽硬件上的差異和獲取操作系統(tǒng)提供統(tǒng)一的接口,如時(shí)鐘、過(guò)程同步以及信息傳遞機(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é)議分開(kāi)實(shí)現(xiàn),條理清楚,易于裁減,同時(shí)不會(huì)增加太多代碼空間。

上層應(yīng)用(HTTP)

TCP

ICMPv4ICMPv6

ARPIPv4IPv6

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

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)的參考。

3.2網(wǎng)絡(luò)接口的實(shí)現(xiàn)

網(wǎng)絡(luò)接口層在設(shè)計(jì)上主要考慮下面幾個(gè)目標(biāo):⑴向協(xié)議層提供一個(gè)統(tǒng)一的網(wǎng)絡(luò)通信接口,能夠?qū)⑸蠈訁f(xié)議模塊與具體的網(wǎng)絡(luò)接口硬件隔離開(kāi)來(lái),以利于向不同操作系統(tǒng)的移植;⑵支持一個(gè)網(wǎng)絡(luò)接口配置多個(gè)IP地址的功能,因?yàn)镮Pv6一個(gè)接口的IP地址包括本地鏈路、本地站點(diǎn)和全局三類地址;⑶支持多播報(bào)文的收發(fā),提供動(dòng)態(tài)的多播IP與多播MAC地址的映射服務(wù);⑷提供較好的通信性能等。

針對(duì)上述目標(biāo),設(shè)計(jì)了如下的網(wǎng)絡(luò)接口控制結(jié)構(gòu):

struct netif {

struct netif *next; /*指向下一個(gè)netif結(jié)構(gòu)的指針*/

netif_ipaddr *iplist; /*指向接口的ip地址鏈的首指針*/

char name[2]; /*接口名稱*/

err_t (* input)(struct pbuf *p, struct netif *); /*接口輸入函數(shù)指針*/

err_t (* output)(struct netif *, struct pbuf *p,netif_addr *); /*接口輸出函數(shù)指針*/

err_t (* linkoutput)(struct netif *, struct pbuf *p); /*鏈路層輸出函數(shù)指針*/

void *state; /*指向接口的狀態(tài)信息*/

mac_addr netifmacaddr; /*接口的MAC地址*/

netif_multi *multilist; /*本接口的MAC多播地址鏈?zhǔn)字羔?/

┊ /*省略了部分信息 */

};

網(wǎng)絡(luò)接口層是協(xié)議棧與下層網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序之間的接口,同時(shí)支持IPv4報(bào)文和IPv6報(bào)文,通過(guò)判斷幀的類型字段,把接收到的不同類型的報(bào)文交給不同的協(xié)議模塊進(jìn)行處理。


3.3 IPv6模塊

IPv6[2]模塊主要包括兩部分的功能,一是負(fù)責(zé)從網(wǎng)絡(luò)接口層接收IPv6數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行一定的處理后發(fā)送給上層處理模塊(TCP或ICMPv6)。二是從上層接收數(shù)據(jù),進(jìn)行報(bào)文的選路,封裝IPv6報(bào)頭后將數(shù)據(jù)報(bào)發(fā)送給網(wǎng)絡(luò)接口層。

3.3.1 ICMPv6[3]的簡(jiǎn)化分析

⑴ICMPv6信息報(bào)文

嵌入式設(shè)備只需作為Ping的接收端,所以不需要發(fā)送回顯請(qǐng)求報(bào)文和處理回顯應(yīng)答報(bào)文。為了讓客戶端可以測(cè)試網(wǎng)絡(luò)狀態(tài)以及測(cè)試使用,必須支持接收請(qǐng)求報(bào)文和發(fā)送相應(yīng)的應(yīng)答報(bào)文。

⑵ICMPv6錯(cuò)誤報(bào)文

由于嵌入式設(shè)備不會(huì)作為路由轉(zhuǎn)發(fā)設(shè)備,所以需要實(shí)現(xiàn)發(fā)送端口不可達(dá)報(bào)文,同時(shí)要支持超時(shí)報(bào)文通告對(duì)端超時(shí)錯(cuò)誤。在BSD中,IP層沒(méi)有發(fā)送參數(shù)問(wèn)題報(bào)文, ICMPv6無(wú)需支持處理參數(shù)問(wèn)題報(bào)文。

3.3.2鄰居發(fā)現(xiàn)協(xié)議(NDP)的簡(jiǎn)化分析

NDP[4]是IPv6協(xié)議的一個(gè)基本組成部分,它用于地址解析、鄰居發(fā)現(xiàn)以及路由器及網(wǎng)絡(luò)參數(shù)發(fā)現(xiàn)。本協(xié)議棧不支持路由功能,所以無(wú)需實(shí)現(xiàn)發(fā)送路由器通告報(bào)文,但必須接受路由器通告報(bào)文,以完成路由發(fā)現(xiàn)功能。同時(shí)支持鄰居通告和鄰居請(qǐng)求報(bào)文的接收和發(fā)送,以實(shí)現(xiàn)地址解析和重復(fù)探測(cè)。

3.4 TCP模塊

在TCP之上實(shí)現(xiàn)有限的WEB服務(wù),可以對(duì)該協(xié)議的實(shí)現(xiàn)機(jī)制作相應(yīng)的簡(jiǎn)化及優(yōu)化。

3.4.1 TCP模塊的擴(kuò)展

TCP對(duì)IPv4和IPv6報(bào)文的處理過(guò)程沒(méi)有任何的不同,但是由于IPv4和IPv6地址結(jié)構(gòu)不同,需要對(duì)使用IP地址的部分進(jìn)行擴(kuò)展。

⑴數(shù)據(jù)結(jié)構(gòu)擴(kuò)展

PCB是用來(lái)記錄每個(gè)TCP連接狀態(tài)的,包括本地IP地址和遠(yuǎn)程IP地址,擴(kuò)展時(shí)使用union結(jié)構(gòu)添加IPv6地址,同時(shí)添加標(biāo)識(shí)位區(qū)別連接。

⑵操作擴(kuò)展

在TCP處理過(guò)程中包括輸入時(shí)對(duì)IP地址和端口號(hào)的匹配,輸出時(shí)校驗(yàn)和的計(jì)算和路由的查找。由于對(duì)IPv4和IPv6報(bào)文調(diào)用相同的處理函數(shù),需要在實(shí)現(xiàn)時(shí)在這幾個(gè)函數(shù)的處理過(guò)程中加入對(duì)相應(yīng)PCB中標(biāo)識(shí)位的判斷。

3.4.2 簡(jiǎn)化TCP狀態(tài)機(jī)

TCP的面向連接和可靠性傳輸?shù)忍匦詻Q定了每一個(gè)標(biāo)準(zhǔn)的TCP狀態(tài)機(jī)龐大而且復(fù)雜,對(duì)于嵌入式應(yīng)用,可以根據(jù)需要進(jìn)行簡(jiǎn)化。

建立連接分為主動(dòng)打開(kāi)和被動(dòng)打開(kāi),本協(xié)議棧設(shè)計(jì)作為監(jiān)聽(tīng)狀態(tài)的服務(wù)器端,僅實(shí)現(xiàn)被動(dòng)打開(kāi)。在設(shè)計(jì)中去掉了CLOSED狀態(tài),讓它一開(kāi)始就處于LISTEN狀態(tài),等待對(duì)方發(fā)起連接。

斷開(kāi)連接分為主動(dòng)斷開(kāi)和被動(dòng)斷開(kāi),從安全性的角度考慮,本設(shè)計(jì)僅實(shí)現(xiàn)主動(dòng)斷開(kāi)連接。當(dāng)服務(wù)器發(fā)送完數(shù)據(jù)時(shí),向客戶機(jī)發(fā)送關(guān)閉連接請(qǐng)求。

通過(guò)以上分析,根據(jù)特定的應(yīng)用不失一般性的裁減掉復(fù)雜和冗余的機(jī)制,除去標(biāo)準(zhǔn)狀態(tài)機(jī)中的客戶端部分,簡(jiǎn)化連接的建立和關(guān)閉過(guò)程,就得到如圖2所示的簡(jiǎn)化的TCP狀態(tài)機(jī)模型。


圖2 簡(jiǎn)化TCP有限狀態(tài)機(jī)


圖3 滑動(dòng)窗口示意圖

3.4.3 簡(jiǎn)化的窗口機(jī)制

標(biāo)準(zhǔn)的TCP協(xié)議使用慢啟動(dòng)的滑動(dòng)窗口機(jī)制[5],它允許發(fā)送方在等待一個(gè)確認(rèn)之前發(fā)送多個(gè)窗口。其確認(rèn)是一種批量的確認(rèn),處理器要對(duì)多個(gè)數(shù)據(jù)報(bào)連續(xù)傳輸進(jìn)行維護(hù)和處理,困難較大。

而滑動(dòng)窗口的一個(gè)極限情況,是只使用單個(gè)窗口,這就變成了一種簡(jiǎn)單確認(rèn)的處理方法。只是對(duì)于單個(gè)數(shù)據(jù)報(bào)的發(fā)送和確認(rèn),雖然節(jié)約了系統(tǒng)的資源,也使維護(hù)更加方便,但是卻降低了效率。

系統(tǒng)采用了一個(gè)折中的辦法,適當(dāng)調(diào)整窗口的大小,限制連續(xù)發(fā)送報(bào)文段的個(gè)數(shù)來(lái)實(shí)現(xiàn)了一個(gè)簡(jiǎn)化的窗口機(jī)制,如圖3所示。在這里,設(shè)置窗口大小(snd_wnd)為4個(gè)最大報(bào)文段長(zhǎng)度(MSS),可以適當(dāng)提高數(shù)據(jù)傳輸效率。

4 協(xié)議棧的移植和測(cè)試

在完成雙協(xié)議棧的設(shè)計(jì)調(diào)試后,將此協(xié)議棧移植到基于ARM7TDMI核的AT91M40800開(kāi)發(fā)板上,使用其中內(nèi)嵌的10Mbps以太網(wǎng)控制器 RTL8019AS作為網(wǎng)絡(luò)接口。在該平臺(tái)上實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的Web Server。通過(guò)構(gòu)建提供IPv4地址和IPv6地址訪問(wèn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行測(cè)試,該雙協(xié)議棧運(yùn)行穩(wěn)定、正常。

同時(shí),在相同環(huán)境下將此協(xié)議棧與開(kāi)源的協(xié)議棧LwIP作了吞吐率性能方面的比較,如圖4所示??芍?,本協(xié)議棧有較好的吞吐率,在連接數(shù)達(dá)到3條以后,平均吞吐率達(dá)到了460kB/s。


圖4 協(xié)議棧吞吐率比較

5 結(jié)語(yǔ)

本文主要介紹了一種嵌入式雙協(xié)議棧的實(shí)現(xiàn),實(shí)踐證明它是一個(gè)符合TCP/IP協(xié)議規(guī)范的,高性能,低開(kāi)銷,可移植的IPv4/IPv6雙協(xié)議棧。本協(xié)議棧僅實(shí)現(xiàn)了基本的IPv4和IPv6通信功能,還有需多需要改進(jìn)和增強(qiáng)的地方,擴(kuò)展IPv6的移動(dòng)功能是此協(xié)議棧下一步的研究重點(diǎn)。

本文作者創(chuàng)新點(diǎn):嵌入式雙協(xié)議棧的實(shí)現(xiàn)獨(dú)立于操作系統(tǒng)內(nèi)核和硬件平臺(tái)。設(shè)計(jì)了具有較高處理效率的緩沖區(qū)管理機(jī)制,對(duì)IPv6功能模塊進(jìn)行了裁減,對(duì)TCP模塊中的運(yùn)行狀態(tài)機(jī)和滑動(dòng)窗口機(jī)制進(jìn)行了簡(jiǎn)化。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

電力線通信(Power Line Communication,英文簡(jiǎn)稱PLC)技術(shù)是指利用電力線傳輸數(shù)據(jù)和媒體信號(hào)的一種通信方式 [1] 。該技術(shù)是把載有信息的高頻加載于電流然后用電線傳輸接收信息的適配器再把高頻從電流中...

關(guān)鍵字: 電力線通信 網(wǎng)絡(luò)接口

業(yè)內(nèi)消息,近日廣州電信宣布自 10 月 1 日起不再為新裝普通寬帶用戶及存量私網(wǎng)雙棧用戶提供直接轉(zhuǎn)動(dòng)態(tài)公網(wǎng) IPv4 地址服務(wù)。

關(guān)鍵字: IPv4 IPv6

據(jù)業(yè)內(nèi)消息,由國(guó)家電網(wǎng)智能電網(wǎng)研究院有限公司(國(guó)網(wǎng)智研院)牽頭提交的標(biāo)準(zhǔn)提案 “基于 IPv6 轉(zhuǎn)發(fā)平面的分段路由(SRv6)網(wǎng)絡(luò)性能監(jiān)測(cè)方法”已正式獲得瑞士日內(nèi)瓦國(guó)際電信聯(lián)盟批準(zhǔn)立項(xiàng)。

關(guān)鍵字: 國(guó)家電網(wǎng) 智研院 IPv6 分段路由

據(jù) 21ic 業(yè)內(nèi)獲悉,近日八部門(mén)(工信部、網(wǎng)信辦、發(fā)改委、教育部、交運(yùn)部、中國(guó)人民銀行、國(guó)資委、國(guó)家能源局)聯(lián)合發(fā)布《關(guān)于推進(jìn) IPv6 技術(shù)演進(jìn)和應(yīng)用創(chuàng)新發(fā)展的實(shí)施意見(jiàn)》,文件表示要推進(jìn) IPv6 技術(shù)演進(jìn)和應(yīng)用創(chuàng)新...

關(guān)鍵字: 工信部 網(wǎng)信辦 IPv6

根據(jù)國(guó)家 IPv6 發(fā)展監(jiān)測(cè)平臺(tái)的公開(kāi)統(tǒng)計(jì)數(shù)據(jù)顯示,上個(gè)月國(guó)內(nèi)移動(dòng)網(wǎng)絡(luò) IPv6 占比首次突破 50%,IPv6 流量首次超越 IPv4,說(shuō)明國(guó)內(nèi)移動(dòng)網(wǎng)絡(luò) IPv6 的發(fā)展規(guī)模達(dá)到了一個(gè)標(biāo)志性的階段。

關(guān)鍵字: IPv6 IPv4

未來(lái)網(wǎng)絡(luò)技術(shù)是各行業(yè)數(shù)字化轉(zhuǎn)型的重要驅(qū)動(dòng)力量,隨著5G、物聯(lián)網(wǎng)、AI等技術(shù)的應(yīng)用走入深水區(qū),業(yè)務(wù)對(duì)網(wǎng)絡(luò)的質(zhì)量成本、響應(yīng)速度、運(yùn)維管理提出了更嚴(yán)苛的要求。IP和光技術(shù)的不斷發(fā)展,使得IPv6技術(shù)的拓展性和適應(yīng)性與光技術(shù)的底...

關(guān)鍵字: 新華三 IPv6 網(wǎng)絡(luò)

中東迪拜2022年10月13日 /美通社/ -- 在華為全聯(lián)接大會(huì)2022迪拜站“深耕油氣數(shù)字化,助推多場(chǎng)景智慧化進(jìn)程”主題論壇上,華為企業(yè)BG油氣系統(tǒng)部首席代表李陽(yáng)明提出,數(shù)字技術(shù)是實(shí)現(xiàn)“向數(shù)據(jù)要石油、向智能要發(fā)展”的...

關(guān)鍵字: 華為 數(shù)字化 網(wǎng)絡(luò)架構(gòu) IPv6
關(guān)閉