嵌入式网关设备的设计与实现

时间:2007-04-17

上世纪90年代以来,基于微处理器的测控技术发展十分迅速,特别是Internet的发展,使得嵌入式设备产生连接Internet的需求。要让微处理器接入Internet,成为Internet上的一个独立结点,必须给它分配一个的地址。而在过去的几十年里,有浩如烟海的微处理器用于各种各样的场合,如智能仪器、工业自动控制、家庭自动化等,要想给这些微处理器都分配一个地址是办不到的。这是因为Internet协议的现在版本为IPv4,该版本采用32位地址方案,每个地址包含网络号和主机号。理论上有超过40亿个地址,但由于分级地址管理和早期地址分配的不科学,浪费了上千万的地址,使IP地址的分配已经面临沉重压力。而现今IT已进入后PC时代,各种嵌入式网络应用成爆炸式发展,现有IP地址方案根本无法满足需求。因此解决嵌入式设备上网的地址分配问题,已成为影响到嵌入式设备发展的重要因素。

本文应用NAT技术开发嵌人式设备解决了Internet地址耗尽问题。NAT技术初由国际互联网标准组织IETF(InternetEngineeringTaskForce,即Internet工程任务组)于1994年公布,并于1996年成立NAT工作小组进行专门的研究。NAT技术很好地解决了嵌人式Internet应用中IPv4地址空间的耗尽问题,NAT的后继版本在解决协议的转换、升级、外网对内网节点的访问等诸多问题都有很多应用,因此应用NAT技术可以在很大程度上促进嵌入式Internet设备的应用。

NAT实际上是一种IP欺骗技术,就是在专用网络和公共网络之间进行地址的转换,从而实现内网到外网或者外网到内网的访问。NAT有三种类型:静态NAT(static NAT)、NAT池(pooledNAT)和端口NAT(NPAT)。其中静态NAT的实现比较简单,内部网络的每个虚拟地址都有外部真实地址与之相对应,NAT只要将对应的内外网地址进行一对一的转换即可。静态NAT不能解决IP地址的耗尽问题。NAT池是一种动态NAT,它先定义一系列真实IP,NAT将来自内部网络的虚拟IP映射成地址池中外网的合法IP地址。动态NAT的实现相对静态复杂一些,当有内网节点需要访问外网时,NAT在地址池中选择一个空闲的外网IP进行转换,其实现也是一对一的转换,当池中所有地址都被使用时,NAT会拒绝新的NAT请求直到有节点放弃NAT转换。在嵌入式设备连接网络需要大量IP地址的情况下,上述两种NAT技术都不能很好的解决地址的耗尽问题,而端口NAT技术彻底解决了地址的短缺问题。

在Internet上用(源地址:源端口号、目的地址:目的端口号)来标识一个会话,端口NAT正是将网络层端口参与到地址转换,其实现方法是将多个内部虚拟网地址及其网络层端口映射到一个外部真实IP地址的不同端口上。NAT可以实现由内网主动访问外网,但是在嵌入式测控系统中,访问通常由外网主动发起,NAT实现反方向地址转换。

下面以图示说明端口NAT的工作过程。如所示的网络拓扑结构为一个应用端口NAT的基本网络。内网段(192.168.0.0)为虚拟网,其上可以连接多个嵌入式网络化仪器,设有A设备其地址为192.68.0.125,在90端口提供web服务;外网段(202.119.101.192)为真实网,设有一台PC其地址为202.119.101.16,NAT设备的对外接口地址为202.119.101.22,其对内接口地址为192.168.0.1。外网节点访问内网节点的过程如下:

(1) PC上应用程序生成一个数据报,并通过网络发送给NAT网关。设其源地址、源端口号、目的地址、目的端口号分别为202.119.101.16:2200和202.119.101.22:90。

(2) NAT网关接受该数据报后,检查端口地址映射表,发现202.119.101.22:90映射为内部网络节点192.168.0.125:90,NAT网关将数据报的地址和端口号转换成内部虚拟网相应地址和端口号,并在转换关系缓冲区中记录下转换关系,以便反向数据的转换,转换后的数据报地址和端口号为192.168.0.1:2345和192.168.0.125:90,NAT将转换后的数据报通过虚拟网发送给内部节点。

(3) 内网节点收到数据报后提交给上层协议处理,上层协议处理后产生回应数据报,其地址和端口号为192.168.0.125:90、192.168.0.1:2345,内网节点将回应数据报发送给NAT网关。

(4) NAT网关接收到该回应数据报后,根据数据报的地址和端口号在缓冲区中查找对应转换关系,实现与第二步相反的转换,修改后的数据报地址和端口号为202.119.101.22:90、202.119.101.16:2200,NAT再将修改后的IP数据报发同给外网节点。

至此,基于端口NAT的地址转换过程结束,实现了外网节点对内网节点的访问。外网节点只与网关设备通信,并不知道内部网络的存在,内部网络也只与网关通信,并不知道外网的存在。 系统硬件设计

NAT网关设备可以有小型机或PC充当,由于PC资源丰富,有完备的操作系统和大量应用软件,其实现相对容易,但价格较高,需专门维护。当测量数据不多时,可采用微处理器开发专用NAT网关设备。本文用微处理器开发了网关设备,其硬件系统框图如所示。

微处理器采用Cygnal公司的混合信号级芯片C8051F020。该微处理器采用Cygnal公司的CIP-51微控制器内核,与MCS-51指令完全兼容。一条Mcs-51指令一般需要12或24个系统时钟周期,而CIP-51的大多指令只需要1或2个系统时钟周期。C8051F020提供丰富地接口,如IIC、SPI、串口等;64kB片内非易失性Flash程序存储器,允许用户现场更新8051固件。另外其片内JTAG调试电路允许对终应用系统进行非侵入式(即不占用片内资源)在系统调试。具体应用请参考C8051F020用户手册。

网络控制器采用RELTEK公司的RTL8019AS,程序通过寄存器对其进行初始化后,芯片能够完成曼切斯特编码的检测、以太网数据帧的接收和发送、MAC地址匹配、CRC校验等。芯片内嵌16kSRAM,用作数据接收和发送缓冲区,降低对微处理器的速度要求,支持全双工通信,数据接收和发送同时达到10MBPS的速率。RTL8019AS允许工作在8位或16位系统中,在电路设计时,由于CPU的数据总线宽度为8位,因此我们将RTL8019AS的IOCS16B引脚通过下拉电阻接地,设置其为8位模式。两片网络控制器分别用于连接Internet和内部虚拟网络。

该网关设备程序存储器全部采用芯片内部Flash存储器,不再另外扩展。芯片内部已经有4k字节XRAM,另外系统用IS62LV1024扩展了128k字节SRAM,数据存储器采用片内XRAM和片外XRAM统一编址。即有效地址低于4k字节将访问片内XRAM,有效地址高于4k字节将访问片外XRAM。

另外通过IIC接口扩展了一片AT24C02专门用于存储网关设备的IP地址、子网掩码、相连的网关地址以及端口NAT地址映射表。

由于8位处理器系统的资源有限,不可能在其上运行操作系统,因此整个系统的软件都必须自行设计。其中包括主程序设计、网络控制器驱动、TCP/IP协议族实现等。限于篇幅,本文只讨论NAT协议的实现。网关设备用于在内外网之间通过虚拟地址和NAT端口的对应关系实现IP数据报的转发,因此NAT网关不需要实现所有协议层次,例如TCP协议和HTTP协议。其软件系统层次如所示。


端口NAT协议的软件实现涉及到两个数据结构,将其定义在头文件net.h中。

∥定义NAT网关外网真实地址和端口与内网虚拟地址和端口的映射关系

typedef struct

NAT协议的实现包括三个函数:init_nat()、age_nat_cache()、nat_resolve()。

init_nat():从24C02存储器中读出的地址和端口值初始化映射表,并将转换关系表清空。程序如下:

age_nat_cache():该函数每60秒自动调用,将NAT转换关系表中每条记录的定时器值减1,若某条记录定时器减到0,表示该记录已经太长时间没有使用,将其从表中删除。程序如下:
nat_resolve():该函数根据映射关系表port_ip和转换关系表nat_cache在内外网之间进行数据报转发。函数首先区分接收的IP包承载的是TCP数据还是UDP数据,转发LDP数据与转发TCP数据只在计算校验和时稍有差别,故下而仅以流程图说明TCP数据转发的过程。流程图如所示。

程序首先检查TCP校验和是否计算真确,如果不正确就直接出错退出,然后判断数据是来自外网还是内网。对于来自外网的数据,检查其目的地址和目的端口号是否在port_ip映射关系表中有定义,如果有定义表示有一个内部节点在相应的端口提供服务。这时再检查该数据报是否是此次会话的个数据报,如果是就要在转换关系表中添加相应的转换关系,以便相反方向的数据报的NAT转换。对于来自内网的数据,只检查在nat_cache转换关系表中是否存在转换关系,如果存在就转换地址并发送数据包,如果不存在,直接出错退出,即该程序不允许访问由内网发起。

在测试时,我们用多嵌入式测控设备连成专用测控网络,将其架设在实验室内(在教育网内),并通过嵌入式网关连接Internet,让通过ADSL连接电信网络的远程客户机访问专用网内部节点,成功地实现远程测控。该网关设备稳定可靠,价格低廉,可用于无人值守的小型测控系统。


  
上一篇:SVPWM技术在电动游览车中的应用
下一篇:基于AD9951的通用信号源设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料