新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > DeltaOS 3.0 -簡介(4)

DeltaOS 3.0 -簡介(4)

——
作者: 時間:2007-03-01 來源:科銀京成 收藏

DeltaOS的TCP/IP網(wǎng)絡協(xié)議棧(以下簡稱網(wǎng)絡協(xié)議棧)符合TCP/IP協(xié)議工業(yè)標準,支持多任務應用開發(fā)模型,利用DeltaOS的TCP/IP網(wǎng)絡協(xié)議棧,開發(fā)人員可以為一個嵌入式設備增加和配置網(wǎng)絡功能。

DeltaOS的網(wǎng)絡協(xié)議棧是一套完整的嵌入式TCP/IP協(xié)議棧,在應用上,網(wǎng)絡協(xié)議棧提供:

  • 網(wǎng)絡應用編程界面(套接字,socket):網(wǎng)絡的應用程序不是直接與TCP/IP核心、而是與網(wǎng)絡應用編程界面(套接字)打交道,編程界面構成了核心協(xié)議的用戶視圖。網(wǎng)絡協(xié)議棧支持流套接字(SOCK_STREAM)和數(shù)據(jù)報套接字(SOCK_DGRAM)。
  • 對網(wǎng)絡參數(shù)進行設置的接口:網(wǎng)絡參數(shù)指IP地址、掩碼、網(wǎng)關地址、PPP撥號參數(shù)等,網(wǎng)絡協(xié)議棧提供對這些網(wǎng)絡基本參數(shù)進行讀取/設置的接口,應用程序中根據(jù)用戶需求直接調用,使應用網(wǎng)絡協(xié)議棧的終端或網(wǎng)絡設備能夠動態(tài)修改這些參數(shù)。
  • 擴展的應用功能:網(wǎng)絡協(xié)議棧提供簡單的ping功能調用接口,應用程序可利用該接口實現(xiàn)檢測鏈路通斷的功能。

應用程序與操作系統(tǒng)以及網(wǎng)絡協(xié)議棧的關系如下圖:

圖:網(wǎng)絡協(xié)議棧體系結構

新版本的網(wǎng)絡協(xié)議棧包括如下特點:

  • 以太網(wǎng)和撥號網(wǎng)絡可同時使用;
  • 基于DLL/HAL技術的多網(wǎng)絡適配設備支持;
  • 支持大數(shù)據(jù)量的穩(wěn)定通信;
  • 提供穩(wěn)定、高效的多連接處理。

特性

應用特點

編程接口標準化

網(wǎng)絡協(xié)議棧提供的網(wǎng)絡編程接口(套接字)與Windows Socket版本1.1基本一致

可移植性 

  • 除網(wǎng)絡設備驅動程序可能需要使用匯編語言外,其它代碼全部使用ANSI C編寫,具有良好的可移植性;
  • 網(wǎng)絡協(xié)議棧雖然是DeltaOS的網(wǎng)絡組件,但它與操作系統(tǒng)內核之間的接口僅為少量的系統(tǒng)調用,如任務管理、信號量管理、定時器管理、中斷管理和內存管理,因此很容易移植到其它的系統(tǒng)平臺上,比如:網(wǎng)絡協(xié)議棧成功支持了RTXC和ITRON等操作系統(tǒng)。

配置靈活

網(wǎng)絡協(xié)議棧提供系統(tǒng)配置表,用戶既可以配置自己所需要的網(wǎng)絡組件(如DNS、DHCP等)或硬件支持(如多網(wǎng)卡),也可以根據(jù)具體的需要配置一些相關的網(wǎng)絡參數(shù)(如IP地址、網(wǎng)關、撥號串等)。既提供靜態(tài)配置的方式,也提供部分調用接口,實現(xiàn)了參數(shù)的動態(tài)配置。

對多任務的支持

網(wǎng)絡協(xié)議棧中使用信號量機制,實現(xiàn)任務間及任務與中斷處理程序之間資源的互斥與共享,從而實現(xiàn)了對多任務環(huán)境的支持。

可擴充性

網(wǎng)絡協(xié)議棧使用模塊化設計模式,根據(jù)實際需要,可方便地添加新的協(xié)議模塊到網(wǎng)絡協(xié)議棧的TCP/IP協(xié)議棧軟件包中,實現(xiàn)對新的網(wǎng)絡協(xié)議的支持。

支持組播功能

基于網(wǎng)絡協(xié)議棧開發(fā)的應用程序通過調用setsockopt函數(shù)設置組播選項,能夠實現(xiàn)組播發(fā)送和接收。

性能特點

網(wǎng)絡協(xié)議棧在實現(xiàn)上采取了一些措施以提高其性能,如下:

采用零拷貝技術(Zero Copy

用戶數(shù)據(jù)在通過TCP/IP協(xié)議從本地主機傳輸?shù)竭h地主機的過程中,需要不斷地拆包和打包。如果在拆包和打包時,各協(xié)議層之間均采用數(shù)據(jù)拷貝進行數(shù)據(jù)傳遞,則將大大增加系統(tǒng)開銷,從而降低系統(tǒng)性能。網(wǎng)絡協(xié)議棧采用零拷貝技術以解決該問題。

所謂“零拷貝”技術,是指TCP/IP協(xié)議棧沒有用于各層間數(shù)據(jù)傳遞的緩沖區(qū),協(xié)議棧各層間傳遞的都是數(shù)據(jù)指針,只有當數(shù)據(jù)最終要被驅動程序發(fā)送出去或是被用戶應用程序取走時,才進行真正的數(shù)據(jù)搬移。

采用靜態(tài)分配技術

如果在網(wǎng)絡發(fā)送或接收的過程中,某一次傳送的數(shù)據(jù)超過了在一個物理網(wǎng)絡上能夠傳輸?shù)淖畲髷?shù)據(jù)量(MTU),則該數(shù)據(jù)處理任務往往會阻塞等待,直到上層重新調整需要處理的數(shù)據(jù)量的大小,才會繼續(xù)執(zhí)行下去。{{分頁}}

網(wǎng)絡協(xié)議棧采用靜態(tài)分配技術,在網(wǎng)絡初始化時就靜態(tài)分配通信緩沖區(qū),設置了專門的發(fā)送和接收緩沖(一般是小于或等于物理網(wǎng)絡上的MTU值),從而確保了每次發(fā)送或接收時處理的數(shù)據(jù)不會超過MTU值,也就避免了數(shù)據(jù)處理任務的阻塞等待。

通信采用非暫停方式

通信采用非暫停方式是指通信雙方中的接收方在等待接收的過程中,創(chuàng)建一個接收任務,該任務首先發(fā)出一個接收信號,然后進入休眠狀態(tài),當有新的報文到達時才被喚醒,并對接收到的新的報文進行處理;暫停方式則是指接收方在新的報文到來之前一直等待,直到有報文到達后進行相應的處理。

網(wǎng)絡協(xié)議棧中的通信采用非暫停方式。與暫停方式比較,非暫停方式既可以提高計算機和網(wǎng)絡通信的并行性,又能保證接收時響應的及時性。

協(xié)議特點

網(wǎng)絡協(xié)議棧遵從TCP/IP的四層協(xié)議體系結構,如下圖所示:

圖:網(wǎng)絡協(xié)議棧協(xié)議的體系結構

在不同的層次上,網(wǎng)絡協(xié)議棧在支持協(xié)議上有如下特點:

鏈路層

網(wǎng)絡協(xié)議棧支持以太網(wǎng)鏈路層和RS232串口鏈路層(PPP)。
數(shù)據(jù)鏈路層的實現(xiàn)主要表現(xiàn)為網(wǎng)絡驅動程序。網(wǎng)絡協(xié)議棧提供網(wǎng)絡驅動程序模板,用戶可根據(jù)模板編寫自己的驅動程序。

  • 以太網(wǎng)
    網(wǎng)絡協(xié)議棧支持以太網(wǎng)傳輸,并且有以下特點:
    1. 支持10M/100M以太口、ISA/PCI接口;
    2. 提供多種以太網(wǎng)驅動供用戶選擇,也提供以太網(wǎng)驅動的模板,允許用戶添加自己的驅動;
    3. 支持多網(wǎng)卡。
  • PPP
    網(wǎng)絡協(xié)議棧支持完整的PPP協(xié)議(包括LCP、IPCP、PAP和CHAP),既可以應用到傳統(tǒng)的有線撥號網(wǎng)絡、也可以應用到通過GPRS/CDMA無線上網(wǎng)的終端設備上,對物理鏈路的適應性強。

網(wǎng)絡層

  1. ARP/RARP
    ARP是幾乎每種TCP/IP實現(xiàn)中的基本協(xié)議,但它通常在應用程序或系統(tǒng)管理員并未意識到的情況下完成工作。ARP緩沖是其操作的基礎,網(wǎng)絡協(xié)議棧將緩沖中每個表目綁定一定時器,用于管理過時的表目。

    許多無盤系統(tǒng)用RARP在啟動時獲得其IP地址。RARP數(shù)據(jù)包格式與ARP幾乎相同。RARP請求是廣播的,標識發(fā)送者的硬件地址,要求別人回答發(fā)送者的IP地址;其應答通常是單目的。
  2. IP
    IP協(xié)議是網(wǎng)絡協(xié)議棧網(wǎng)絡層的主要組成部分,其主要功能包括:
    1. 提供一種無連接的、不可靠的、盡最大努力進行數(shù)據(jù)報傳遞的服務。
    2. 提供簡單的IP數(shù)據(jù)報的選路。IP選路基于IP選路表,該表存儲有關可能的目的網(wǎng)點及怎樣到達目的網(wǎng)點的信息,主機或路由器軟件需要傳送數(shù)據(jù)報時,它就查詢選路表來決定把數(shù)據(jù)報發(fā)往何處。網(wǎng)絡協(xié)議棧中的IP選路表為增加RIP及OSPF等動態(tài)路由協(xié)議提供了接口,進一步體現(xiàn)了網(wǎng)絡協(xié)議棧的可擴充性。
    3. 實現(xiàn)IP數(shù)據(jù)報的分片、重組
  3. ICMP
    網(wǎng)絡協(xié)議棧的ICMP協(xié)議實現(xiàn)了所有標準ICMP協(xié)議的功能,包括差錯報告和控制。其中最常用的是ICMP回送請求和應答功能,并在此基礎上提供ping的簡單應用接口供應用程序調用,用于檢查鏈路的通斷。

傳輸層

網(wǎng)絡協(xié)議棧傳輸層提供兩種協(xié)議——UDP和TCP。

  1. UDP
    網(wǎng)絡協(xié)議棧支持組播功能。組播(multicast)是一到多或者多到多的多方通信形式,遠程會議、交互式仿真、分布式內容系統(tǒng)、多方游戲等應用都對組播業(yè)務(multicast service)提出了需求。由于TCP是有連接的,決定了TCP之上的應用程序不能夠實現(xiàn)組播?;赨DP的應用程序能夠通過組播發(fā)送和接收大大提高網(wǎng)絡性能,合理利用網(wǎng)絡帶寬。
  2. TCP
    網(wǎng)絡協(xié)議棧提供面向流的傳輸協(xié)議—TCP協(xié)議,它提供可靠的傳輸服務以確保數(shù)據(jù)無差錯、無亂碼的到達。為了這個目的,TCP協(xié)議軟件要進行協(xié)商,讓接收方回送確認信息及讓發(fā)送方重發(fā)丟失的分組。

應用層

網(wǎng)絡協(xié)議棧為應用層的開發(fā)提供了一套Socket編程接口,用戶可以基于這套Socket編程接口來完成適合自己的網(wǎng)絡應用。{{分頁}}

網(wǎng)絡協(xié)議棧也實現(xiàn)了應用層上一些常見的標準協(xié)議,如Telnet Client(遠程登錄客戶端)、FTP Client(文件傳輸客戶端)等。

  • DNS
    網(wǎng)絡協(xié)議棧提供對DNS Client的支持,上層應用通過域名請求TCP打開一個連接或使用UDP發(fā)送一個數(shù)據(jù)報之前,必須調用網(wǎng)絡協(xié)議棧提供的系統(tǒng)調用將一個主機名轉換為一個IP地址。
  • DHCP
    網(wǎng)絡協(xié)議棧協(xié)議棧支持DHCP Client,基于網(wǎng)絡協(xié)議棧的應用程序能夠調用相關接口發(fā)送DHCP請求,動態(tài)獲得IP地址。
  • TELNET
    網(wǎng)絡協(xié)議棧支持TELNET Server功能,允許任何Telnet客戶終端通過TELNET命令進行遠程登錄,并提供菜單方式的界面,實現(xiàn)遠程配置和管理。
  • FTP
  • 網(wǎng)絡協(xié)議棧支持FTP Client功能,具有以下特點:
  • 支持FTP通用命令;
  • 提供獨有的FTP IO操作,用戶無需過多了解FTP協(xié)議就可完成遠程文件操作;
  • 無需文件系統(tǒng)支持,體積較小。
  • HTTP
    HTTP Server功能是網(wǎng)絡協(xié)議棧的可選組件,又名DeltaHTTPD。詳細說明請參見《DeltaHTTPD技術白皮書》。

基本規(guī)格

標準

網(wǎng)絡協(xié)議棧提供的Socket調用與Windows Socket 1.1調用基本一致。網(wǎng)絡協(xié)議棧支持標準TCP/IP模型中的多種協(xié)議,主要包括(每個協(xié)議對應的RFC編號,只是該協(xié)議早期版本的編號):

支持的應用協(xié)議如下:

  • 網(wǎng)絡應用層

DHCP Client[RFC 1541]、[RFC 2131]、[RFC 3396]
DNS Client[RFC 1035]
TELNET Server[RFC 854]
FTP Client[RFC 765]
HTTP[RFC 2068]、[RFC 2616]

  • 網(wǎng)絡傳輸層
    UDP[RFC 768]、TCP[RFC 793]
  • 網(wǎng)絡層
    IP[RFC 791]、ICMP[RFC 792]
  • 數(shù)據(jù)鏈路層
    PPP[RFC 1661]、ARP[RFC 826]、RARP[RFC 903]

資源占用情況

以DeltaCORE為例來介紹網(wǎng)絡協(xié)議棧所占用的操作系統(tǒng)內核資源。

任務數(shù)

>=4 (如果啟動Telnet Server功能則要求>=9)

信號量數(shù)

>=14

中斷棧空間

>=10K

任務額外堆??臻g

>=30K

網(wǎng)絡協(xié)議棧占用內存情況(注:不包括以選件方式提供的應用層協(xié)議)

靜態(tài)內存空間

下表列出了網(wǎng)絡協(xié)議棧在ARM7-4510B、x86平臺上運行Pinghost演示程序時,網(wǎng)絡協(xié)議棧占用內存資源的實際情況:

網(wǎng)絡協(xié)議棧的靜態(tài)內存需求(單位:字節(jié))

 

arm7-4510B

x86

CODE

0x33b9b

0x24cb4

BSS

0x2968c

0x29694

DATA

0x6c7

0x717

注意:

  • 網(wǎng)絡協(xié)議棧在編譯時未使用“優(yōu)化”選項;
  • 以上數(shù)據(jù)表示均采用十六進制方式。

動態(tài)內存空間

網(wǎng)絡協(xié)議棧在初始化時需要CRTL動態(tài)分配的空間為110776字節(jié)。這部分空間是為接收和發(fā)送緩沖、還有控制結構預留的,不會釋放。

網(wǎng)絡協(xié)議棧的七個DEMO在運行過程中也需要動態(tài)分配一部分空間,但是這部分空間在程序運行過程中會釋放掉的,不會產(chǎn)生內存泄漏等情況。各個DEMO需要分配的空間如下表所示:

網(wǎng)絡協(xié)議棧的動態(tài)內存需求(單位:字節(jié))

DEMO

PingHost

TcpClnt

TcpServ

UdpClnt

UdpServ

FtpIoAPI

TelServer

動態(tài)分配空間

384

1968

3888

1752

1752

4136

14496(含任務堆??臻g)

注意:

  • 創(chuàng)建demo任務時會分配一些空間,刪除此任務后,分配的空間將會被釋放。
  • PingHost、TcpClnt、TcpServ、UdpClnt、UdpServ、FtpIoAPI任務創(chuàng)建需要分配11056字節(jié)空間。另外,TelServer在初始化時為任務的創(chuàng)建分配了11056字節(jié)空間。

在為每個DEMO進行內存配置時,CRTL堆的大小不能小于網(wǎng)絡協(xié)議棧初始化及DEMO任務創(chuàng)建、DEMO運行過程中動態(tài)分配的內存之和。

典型性能指標

測試環(huán)境:

CPU:Pentium 628MHZ CPU

內存:128M

測試內容

測試結果(ms)

TCP連接數(shù)據(jù)吞吐量(發(fā)送,32字節(jié))

0.026

TCP連接數(shù)據(jù)吞吐量(接收,32字節(jié))

0.031

TCP連接數(shù)據(jù)吞吐量(發(fā)送,1430字節(jié))

0.061

TCP連接數(shù)據(jù)吞吐量(接收,1430字節(jié))

0.080

UDP連接數(shù)據(jù)吞吐量(發(fā)送,32字節(jié))

0.018

UDP連接數(shù)據(jù)吞吐量(接收,32字節(jié))

0.032

UDP連接數(shù)據(jù)吞吐量(發(fā)送,1430字節(jié))

0.023

UDP連接數(shù)據(jù)吞吐量(接收,1430字節(jié))

0.080

 

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




評論


相關推薦

技術專區(qū)

關閉