DeltaOS 3.0 -简介(4)

嵌入式系统 时间:2007-03-01来源:科银京成

DeltaOS的TCP/IP网络协议栈(以下简称网络协议栈)符合TCP/IP协议工业标准,支持多任务应用开发模型,利用DeltaOS的TCP/IP网络协议栈,开发人员可以为一个嵌入式设备增加和配置网络功能。

DeltaOS的网络协议栈是一套完整的嵌入式TCP/IP协议栈,在应用上,网络协议栈提供:

应用程序与操作系统以及网络协议栈的关系如下图:

图:网络协议栈体系结构

新版本的网络协议栈包括如下特点:

特性

应用特点

编程接口标准化

网络协议栈提供的网络编程接口(套接字)与Windows Socket版本1.1基本一致

可移植性 

配置灵活

网络协议栈提供系统配置表,用户既可以配置自己所需要的网络组件(如DNS、DHCP等)或硬件支持(如多网卡),也可以根据具体的需要配置一些相关的网络参数(如IP地址、网关、拨号串等)。既提供静态配置的方式,也提供部分调用接口,实现了参数的动态配置。

对多任务的支持

网络协议栈中使用信号量机制,实现任务间及任务与中断处理程序之间资源的互斥与共享,从而实现了对多任务环境的支持。

可扩充性

网络协议栈使用模块化设计模式,根据实际需要,可方便地添加新的协议模块到网络协议栈的TCP/IP协议栈软件包中,实现对新的网络协议的支持。

支持组播功能

基于网络协议栈开发的应用程序通过调用setsockopt函数设置组播选项,能够实现组播发送和接收。

性能特点

网络协议栈在实现上采取了一些措施以提高其性能,如下:

采用零拷贝技术(Zero Copy

用户数据在通过TCP/IP协议从本地主机传输到远地主机的过程中,需要不断地拆包和打包。如果在拆包和打包时,各协议层之间均采用数据拷贝进行数据传递,则将大大增加系统开销,从而降低系统性能。网络协议栈采用零拷贝技术以解决该问题。

所谓“零拷贝”技术,是指TCP/IP协议栈没有用于各层间数据传递的缓冲区,协议栈各层间传递的都是数据指针,只有当数据最终要被驱动程序发送出去或是被用户应用程序取走时,才进行真正的数据搬移。

采用静态分配技术

如果在网络发送或接收的过程中,某一次传送的数据超过了在一个物理网络上能够传输的最大数据量(MTU),则该数据处理任务往往会阻塞等待,直到上层重新调整需要处理的数据量的大小,才会继续执行下去。{{分页}}

网络协议栈采用静态分配技术,在网络初始化时就静态分配通信缓冲区,设置了专门的发送和接收缓冲(一般是小于或等于物理网络上的MTU值),从而确保了每次发送或接收时处理的数据不会超过MTU值,也就避免了数据处理任务的阻塞等待。

通信采用非暂停方式

通信采用非暂停方式是指通信双方中的接收方在等待接收的过程中,创建一个接收任务,该任务首先发出一个接收信号,然后进入休眠状态,当有新的报文到达时才被唤醒,并对接收到的新的报文进行处理;暂停方式则是指接收方在新的报文到来之前一直等待,直到有报文到达后进行相应的处理。

网络协议栈中的通信采用非暂停方式。与暂停方式比较,非暂停方式既可以提高计算机和网络通信的并行性,又能保证接收时响应的及时性。

协议特点

网络协议栈遵从TCP/IP的四层协议体系结构,如下图所示:

图:网络协议栈协议的体系结构

在不同的层次上,网络协议栈在支持协议上有如下特点:

链路层

网络协议栈支持以太网链路层和RS232串口链路层(PPP)。
数据链路层的实现主要表现为网络驱动程序。网络协议栈提供网络驱动程序模板,用户可根据模板编写自己的驱动程序。

网络层

  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(文件传输客户端)等。

基本规格

标准

网络协议栈提供的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]

资源占用情况

以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进行内存配置时,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

 

关键词: 嵌入式操作系统 嵌专题delta

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版