浅谈嵌入式网络终端报文收发机制的研究
扫描二维码
随时随地手机看文章
1、 引言
21世纪已进入计算机网络时代。计算机网络极大普及,计算机应用已进入更高层次,计算机网络成了计算机行业的一部分。新一代的计算机已将网络接口集成到主板上,网络功能已嵌入到操作系统之中,智能大楼的兴建已经和计算机网络布线同时、同地、同方案施工。随着通信和计算机技术紧密结合和同步发展,我国计算机网络技术飞跃发展 .尤其在嵌入式网络终端系统中,网络报文的收发依靠协议栈完成,其功能集中在传输层、网络层和链路层。通常的报文接收机制是在链路层以上建立接收任务,通过查询物理层的通信状态或者由物理层中断触发,来接收网络数据。这两种方式都有一定的缺陷。查询方式,就是接收任务按照某种规则检查底层是否收到新数据,简单可靠,但由于网络通信是一种随机的离散事件,查询方式可能对处理器资源造成严重浪费,加大通信延时。本文提出一种中断与查询结合使用的方法,通过实践,表明这套收发机制具有高效、稳定、可靠的优点。
2、 收发机制
本文的目标是充分利用嵌入式系统的处理器和存储器资源,保证网络终端报文收发的实时性和吞吐量。本系统按图1的基本架构实现网络通信,由三层功能模块和两级缓存构成一条接收通道和一条发送通道。上层是系统应用程序。底层负责物理链路上的数据收发。中层由协议栈和网络接口适配器驱动负责上层和底层的数据交互。有两级缓存,上层与中层之间的二级缓存用于网络报文的封装和解析;中层与底层之间的一级缓存分为接收缓存和发送缓存,采用环行结构,作用是解决终端与网络之间异步问题。接收过程分为三个阶段,主要工作在RX2阶段;发送过程分为两个阶段,上层和中层属于同一阶段(TX2)。原因是发送过程是主动过程,由高层发起并控制低层完成,而接收过程中低层先得到数据,但只能等待而不能控制高层的响应。通常物理层、媒体访问控制(MAC)和一级缓存可以使用网络接口控制器 (Network Interface Controller: NIC) 实现,NIC能独立完成物理链路上的报文收发。
网络适配器又称网卡或NIC(网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第2层。它使得用户可以透过电缆或无线相互连接。 每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,它被写在卡上的一块ROM中。在网络上的每一个计算机都必须拥有一个独一无二的MAC地址。没有任何两块被生产出来的网卡拥有同样的地址。这是因为电气电子工程师协会(IEEE)负责为网络接口控制器销售商分配唯一的MAC地址。
2、1接收流程
本系统中,网络报文接收过程RX2阶段如图2.初始状态下,打开接收中断A和一级缓冲溢出中断B.若物理层收到一帧或多帧数据,就存入一级接收缓存,并向处理器发出中断请求。中断请求即"紧急事件"须向处理器提出申请(发一个电脉冲信号),要求"中断",即要求处理器先停下"自己手头的工作"先去处理"我的急件",这一"申请"过程。系统将会执行相应中断程序,检查一级接收缓存是否溢出。如果溢出,就对其复位,并回到初始状态。否则,关闭中断A、B,向协议栈的接收任务发出一次接收通知。接收任务每次收到该通知,就从一级缓存取出一帧数据,保存到二级缓存,并按照网络协议进行处理后转交上层,之后,检查一级缓存内是否仍有新数据。如果没有,就清除中断A的有效状态,然后重新打开中断A、B.如果有,就直接进入下轮接收过程。网络协议是用来描述进程之间信息交换数据时的规则术语。在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作和达到同步,而信息的交换必须按照预先共同约定好的过程进行。
2、2发送流程
本系统报文发送过程TX2阶段如图3,实现方式与接收不同,无专门任务负责发送功能,而是由协议栈提供一套统一接口,上层应用程序借此发送数据。首先在二级缓存中形成网络报文,然后检查一级缓存中发送缓存,待其可用,将数据从二级缓存复制到一级缓存,启动发送。之后,NIC通常能够自动完成余下的物理层发送工作。此刻,系统主动查询接收通道的工作状态。如果发生中断A或B,就触发软中断。于是,构成一种多点随机查询机制。NIC指网络适配器",英文全称为"Network Interface Card",简称"NIC",网卡是局域网中最基本的部件之一,它是连接计算机与网络的硬件设备。无论是双绞线连接、同轴电缆连接还是光纤连接,都必须借助于网卡才能实现数据的通信。它的主要技术参数为带宽、总线方式、电气接口方式等。
本系统中,报文接收流程本是一种被动方式,相对查询方式,软硬件设计复杂度高,实用中很可能由于软硬件缺陷导致可靠性问题。采用这种中断结合多点随机查询的办法,既克服了周期性查询的效率低、实时性差的缺点,又消除了完全被动接收的不可靠性。
3实现
根据上文提出的收发机制,建立一个实验终端系统,检查实际性能。
3、1系统硬件平台
LSI403LP是DSP芯片。它可提供4路Rj11接口供传统电话机接入,1路RJ-45接口连接internet,还有一个RS-232接口供系统程序维护与升级。使用这种VOIP网关后,可使小型企业或家庭用户方便快捷地接入internet直接进行语音通信,不但便捷而且经济。给出了硬件和软件的结构设计。
本系统核心采用LSI403LP定点数字信号处理器,时钟频率150MHz,最高速率600MIPS.具有外部指令和数据存储器接口,类存储器外设接口,三种接口共享地址、数据总线和读写等控制信号,但具有各自的片选信号,而且可以单独配置,兼容不同访问时序。
本系统的NIC选用RTL8019AS[4].该NIC支持ISA总线,可直接按存储器方式访问,支持10BASE-T,有16KBytes片内SRAM,可作为一级缓存,其中14KB作为接收缓存,2KB作为发送缓存。ISA总线: (Industry Standard Architecture:工业标准体系结构)是IBM公司为PC/AT电脑而制定的总线标准,为16位体系结构,只能支持16位的I/O设备,数据传输率大约是16MB/S.也称为AT标准。开始时PC机面向个人及办公室,定义了8位的ISA总线结构,对外公开,成为标准(ISO ISA标准)。
本系统的以太网接口模块电路如图4.8019的JP引脚接高电平,将8019设置在jumper工作模式。此模式下,8019的部分功能由跳线开关来设定,软件控制使用NE2000寄存器组。LSI403LP对8019的一个访问周期即PCS0N的一个有效周期,可通过403的寄存器设置为403时钟周期的整数倍。以太网(Ethernet)指的是由Xerox公司创建并由Xerox,Intel和DEC公司联合开发的基带局域网规范。是当今现有局域网采用的最通用的通信协议标准。 以太网络使用CSMA/CD(载波监听多路访问及冲突检测技术)技术,并以10M/S的速率运行在多种类型的电缆上。以太网与IEEE802·3系列标准相类似。
3、2系统软件设计
本系统软件架构如图5,网络通信流程按照上文描述设计。本系统基于单DSP,采用uC/OS-II 嵌入式实时操作系统。uC/OS-II采用基于优先级的抢占式多任务内核,最高优先级任务一旦就绪就必须抢占处理器,任务级响应时间可预知,对实时通信应用非常重要。
本系统中存在一个网络接收任务和多个网络发送任务,NIC作为它们的共享资源,利用一个信号量来进行资源分配,以确保这几个任务不会同时访问NIC,导致NIC故障。
4实验结果
将一台PC作为主机与一台实验终端通过10Base-T以太网直接连通,不通过任何中间节点,进行以下测试,考察本系统以太网接口的性能。
4、1中断频率
主机向实验终端发送100字节的ICMP回传请求报文,发送10万次,发送速率约8330次/秒,占用带宽约7.0Mbps.实验终端收到ICMP报文并且解析正确则是一次成功接收,但并不响应。LSI403与8019采用不同通信带宽,实验结果如表1.
表1说明,在终端内部,随着上层与一级缓存通信速率的降低,接收中断次数大大减少,报文丢失数有一定增加,但收到的报文数远高于中断次数。说明本系统的接收机制,能够有效减少中断和任务切换对处理器资源的消耗,弥补上层与一级缓存通信速率的不足。表1中第6种配置下,有大量数据包丢失,原因是403外部总线通信速率略高,数据传输出错。
总线通信速率低,与处理器速度慢或者协议栈效率低对网络报文接收性能的影响是一致的,因此,这些都能够采用本系统的接收机制来获得较大的改善。
4、2带宽
带宽(band width)又叫频宽,是指在固定的的时间可传输的资料数量,亦即在传输管道中可以传递数据的能力。在数字设备中,频宽通常以bps表示,即每秒可传输之位数。在模拟设备中,频宽通常以每秒传送周期或赫兹 (Hz)来表示。
采用表1中第5种配置,测试环境与中断频率测试相同,ICMP回传请求报文长度分别为60和1514字节。主机配置是2.4GHz奔4处理器,256MDDR内存,RTL8139快速网卡,按0ms间隔(即最高速度)发送数据。测试结果如表2.本系统两种情况下的吞吐量分别可以达到5.77Mbps和9.55Mbps,说明本系统对网络带宽具有很高的使用效率。
4、3冲击测试
计算机网络中,各个节点都可能遭到大量数据冲击,导致发生故障,甚至无法自动恢复。为检测本系统抗冲击能力,主机向实验终端连续地发送长度74字节的ICMP回送请求报文。相同带宽下,数据包长度越小,收发频率越高,通信节点负担也就越大。测试过程中,实验终端只运行uC/OS-II操作系统和协议栈相关任务,以及一个用户任务。主机发送报文频率约每毫秒10次,占用带宽约786KBytes/s.经过3000万次冲击,终端仍在按1秒间隔发送报文,并且主机仍能收到终端的ICMP回送。测试结果表明,本系统能够为实际应用提供很好的稳定性保障。
ICMP回送请求报文的方法,用于网络设备,其特征在于,包括:步骤一,接收ICMP回送请求报文,并对所述ICMP回送请求报文进行分片分类;步骤二,根据不同的分片类型对所述ICMP回送请求报文进行分别处理,以获得相应的出接口信息和封装信息;及步骤三,根据所述出接口信息和所述封装信息封装ICMP回送应答报文并发送。采用本发明方法对不需分片的ICMP回送请求报文可以直接应答,对每个分片直接处理并封装发送,从而达到节约CPU资源,快速响应的目的,本发明方法还可以在网络设备的线卡上对ICMP回送请求报文直接进行分布式响应,快速处理本线卡收到的ICMP回送请求报文。
5、结束语
本文针对嵌入式网络终端,提出了一种中断结合多点随机查询的网络报文收发机制并进行实践。通过这种机制既获得了很高的报文接收速率,同时大大降低了系统的中断切换、查询、任务切换等负担,而且具有很好的稳定性和可靠性。本文的成果已经在一种基于LSI403LP的单DSP网络电话终端方案中运用,在通信速度、丢报率、稳定性各方面收到令人满意的效果。在中国嵌入式系统领域,比较认同的嵌入式系统概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。