新聞中心

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

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

作者: 時間:2012-04-13 來源:網絡 收藏

1引言

本文引用地址:http://butianyuan.cn/article/171628.htm

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

2協(xié)議棧的設計要點

2.1平臺無關性

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

⑴與處理器和編譯器有關

對不同微處理器的BYTE_ORDER存儲系統(tǒng)定義;對不同編譯器的數(shù)據(jù)類型長度的定義;與CPU或編譯器相關的內容的定義。

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

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

2.2協(xié)議棧的裁減

標準的TCP/IP協(xié)議棧功能復雜,代碼量大,且需大量的存儲器資源。為了滿足嵌入式應用,必須對RFC定義的協(xié)議棧進行裁減[1]。本協(xié)議棧的實現(xiàn)作了如下裁減:

⑴IP模塊:不支持數(shù)據(jù)分片,不支持數(shù)據(jù)包轉發(fā),不支持IPv6移動功能,不支持部分IPv6的擴展報頭。

⑵ICMPv6模塊:支持信息報文中的請求和應答報文,支持錯誤報文中的目的不可達和超時報文。

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

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

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

上層應用(HTTP)
TCP
ICMPv4ICMPv6
ARPIPv4IPv6

網絡驅動

53.jpg

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

3.1內存管理

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

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

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

tcp/ip相關文章:tcp/ip是什么



上一頁 1 2 3 4 下一頁

評論


相關推薦

技術專區(qū)

關閉