新聞中心

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

        DeltaOS 3.0 -簡介(4)

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

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

        DeltaOS的網絡協議棧是一套完整的嵌入式TCP/IP協議棧,在應用上,網絡協議棧提供:

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

        應用程序與操作系統以及網絡協議棧的關系如下圖:

        圖:網絡協議棧體系結構

        新版本的網絡協議棧包括如下特點:

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

        特性

        應用特點

        編程接口標準化

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

        可移植性 

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

        配置靈活

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

        對多任務的支持

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

        可擴充性

        網絡協議棧使用模塊化設計模式,根據實際需要,可方便地添加新的協議模塊到網絡協議棧的TCP/IP協議棧軟件包中,實現對新的網絡協議的支持。

        支持組播功能

        基于網絡協議棧開發的應用程序通過調用setsockopt函數設置組播選項,能夠實現組播發送和接收。

        性能特點

        網絡協議棧在實現上采取了一些措施以提高其性能,如下:

        采用零拷貝技術(Zero Copy

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

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

        采用靜態分配技術

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

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

        通信采用非暫停方式

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

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

        協議特點

        網絡協議棧遵從TCP/IP的四層協議體系結構,如下圖所示:

        圖:網絡協議棧協議的體系結構

        在不同的層次上,網絡協議棧在支持協議上有如下特點:

        鏈路層

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

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

        網絡層

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

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

        傳輸層

        網絡協議棧傳輸層提供兩種協議——UDP和TCP。

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

        應用層

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

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

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

        基本規格

        標準

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

        支持的應用協議如下:

        • 網絡應用層

        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]

        • 網絡傳輸層
          UDP[RFC 768]、TCP[RFC 793]
        • 網絡層
          IP[RFC 791]、ICMP[RFC 792]
        • 數據鏈路層
          PPP[RFC 1661]、ARP[RFC 826]、RARP[RFC 903]

        資源占用情況

        以DeltaCORE為例來介紹網絡協議棧所占用的操作系統內核資源。

        任務數

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

        信號量數

        >=14

        中斷棧空間

        >=10K

        任務額外堆棧空間

        >=30K

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

        靜態內存空間

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

        網絡協議棧的靜態內存需求(單位:字節)

         

        arm7-4510B

        x86

        CODE

        0x33b9b

        0x24cb4

        BSS

        0x2968c

        0x29694

        DATA

        0x6c7

        0x717

        注意:

        • 網絡協議棧在編譯時未使用“優化”選項;
        • 以上數據表示均采用十六進制方式。

        動態內存空間

        網絡協議棧在初始化時需要CRTL動態分配的空間為110776字節。這部分空間是為接收和發送緩沖、還有控制結構預留的,不會釋放。

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

        網絡協議棧的動態內存需求(單位:字節)

        DEMO

        PingHost

        TcpClnt

        TcpServ

        UdpClnt

        UdpServ

        FtpIoAPI

        TelServer

        動態分配空間

        384

        1968

        3888

        1752

        1752

        4136

        14496(含任務堆棧空間)

        注意:

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

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

        典型性能指標

        測試環境:

        CPU:Pentium 628MHZ CPU

        內存:128M

        測試內容

        測試結果(ms)

        TCP連接數據吞吐量(發送,32字節)

        0.026

        TCP連接數據吞吐量(接收,32字節)

        0.031

        TCP連接數據吞吐量(發送,1430字節)

        0.061

        TCP連接數據吞吐量(接收,1430字節)

        0.080

        UDP連接數據吞吐量(發送,32字節)

        0.018

        UDP連接數據吞吐量(接收,32字節)

        0.032

        UDP連接數據吞吐量(發送,1430字節)

        0.023

        UDP連接數據吞吐量(接收,1430字節)

        0.080

         

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




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临海市| 祁连县| 西和县| 高雄市| 监利县| 浮梁县| 清涧县| 南京市| 涪陵区| 社会| 寿光市| 西吉县| 永胜县| 拉萨市| 铜川市| 开江县| 五指山市| 博白县| 红安县| 余江县| 永新县| 宁晋县| 西宁市| 望谟县| 汕尾市| 西丰县| 西和县| 安乡县| 滦平县| 博罗县| 大同县| 内丘县| 鄂州市| 城步| 北宁市| 广水市| 陕西省| 峡江县| 武冈市| 甘洛县| 崇左市|