CANopen网关配置软件的设计
摘 要: 介绍了实现专用无线网与局域网之间的IP级互连原理和关键技术,并讨论了此项技术的应用前景。
关键词: CANopen网关 串口通信
1前言
在实际网络中,许多不在同一地点的局域网之间需要交互信息。为实现专用无线网与局域网之间的互连,研制具备下述功能的网关。首先,实现IP级互连,即某一局域网的IP数据报经过网关的转换后可以通过无线网传到另一网关,再经转换后,IP数据报可到达另一局域网的相应的主机上,;其次,实现连接认证。当网关启动时,与另一网关进行连接认证,当认证通过时,才建立IP连接。
实验采用自主开发的软件,工作在Windows 9x操作系统下,在局域网中获得所有的IP数据报,通过判断、修改Ethernet头信息,将IP数据报送至串口,通过连接在串口的无线设备发送出去。目的网络的网关串口上连接的无线设备接收到后,通过网关转发到目的计算机。从功能上说,网关计算机实现的是路由器的功能。
2路由器功能
路由器的功能主要有以下五个方面:
(1)网络间截获发送到远地网段的报文,起转发的作用;
(2)选择最合理的路由,引导通信;
(3)路由器在转发报文的过程中,为了便于在网络间传送报文,按照预定的规则把大的数据包分解成适当大小的数据包,到达目的地后再把分解的数据包包装成原有形式;
(4)多协议的路由器可以连接使用不同通信协议的网络段,作为不同通信协议网络段通信连接的平台;
(5)路由器的主要任务是把通信引导到目的地网络,然后到达特定的节点站地址。后一个功能是通过网络地址分解完成的。
根据本项目的具体要求,所设计的无线网关实现了路由器的一部分功能,但并不是一个完整意义上的路由器。
3 网关软件设计现状
3.1 系统结构
对LAN而言,无线数据链是隐含在网关内的协议实体,它对LAN1和LAN2都是透明的。对外部而言,半网关1和半网关2构成一个整体网关,它完成与IP有关的信息处理,路由选择和LAN内部物理寻址。两个LAN间的IP数据报传输处理过程。这里网关主要解决转发决策、时延处理、地址转换等。
3.2 半网关的体系结构
其中:
VxD:从本地LAN接收和向本地LAN发送MAC帧(VxD是Windows 95/98下虚拟设备驱动程序);
LAN接收:去掉VxD传递的数据中的MAC帧控制信息,并根据目的IP地址决定是否将其转给IP处理模块;
LAN发送:根据IP模块转来的目的IP地址,查找对应的MAC地址,进而组成完整的MAC帧交由VxD发送到本地LAN;
IP处理模块:负责路由选择和其他IP层处理,并将LAN接收模块交来的IP数据报处理后交给Line发送模块,将Line接收模块交来的IP数据报交给本地LAN发送模块;
Line接收模块:把从数据链路接收的完整IP数据报交给IP处理模块;
Line发送模块:把从IP处理模块接收的IP数据报发送到数据链路上。
由上述功能可以看出,若把网关看作是一个双向系统,那么入口端负责IP数据报的过滤,出口端负责IP数据报的转发。连接认证模块负责在建立IP连接前两个半网关的认证。
管理模块:负责半网关的进程调度,并提供地址库的修改接口。
对网卡的操作通过调用VxD软件实现。
此外,半网关中附有一个地址库,存储本地LAN的IP地址和对应的MAC地址的信息,供LAN发送和接收模块查询或调用。
4网关软件发展趋势
4.1 软件结构
软件开发平台为Windows 95/98,开发软件为Microsoft Visual C++ 6.0。
Windows 95支持多线程运行,一个软件可以创建多个线程同时执行不同的功能。进程间的运行是互相独立的,有各自的堆栈。网关功能模块和串口通信模块是同时运行的。需要设计成两个单独的线程。考虑到串口通信模块中数据的收发也是同时进行的,因此将串口通信模块设计成收发两个进程。
4.2 模块设计
4.2.1 认证模块设计
开机后首先进行连接认证。在实施认证时,网关软件以client和server的方式运行,每个半网关均工作于Client/Server 模式,即都包含client和server实体,任何一方都可以请求建立连接。当请求超时,请求方将退出请求等待状态,待对方请求时再建立通信连接。在认证通过前不启动软件的网关功能,认证通过后开放网关功能。
软件提供加密函数的接口,对本地输入的用户名和口令加密后传送。接收端提供认证函数的接口,返回认证结果。
4.2.2 数据帧的监听和发送
网关软件运行后,用户通过菜单命令启动网络监听线程。网络监听线程负责接收和发送数据报。网络监听线程首先从外部读入初始化信息,包括本机IP地址、NDIS序号、网络ARP表、路由表。然后装载VxD程序,并进行初始化,完成监听的准备工作。
接下来线程开始循环访问网络接收缓冲区和串口缓冲区,对其中的IP数据报进行分析、转发。
对于从网络接收缓冲区得到的数据报,网络监听线程首先对其目的IP地址进行分析,判断该数据分组是否需要转发。对于需要转发的,网关计算机给它加上相应的数据链路的头信息,并进行码字透明处理后存入串口发送缓冲区;对于不需要转发的数据报不予处理。这样的处理主要是为局域网中可能存在多个网关而设计的。
对于从串口接收缓冲区得到的数据报,网络监听线程首先提取该数据报的目的IP地址,通过该IP地址查询ARP表得到目的主机的MAC地址。线程在该数据报前加上MAC帧头,通过调用VxD接口函数发送该数据报。
4.2.3 串口通信模块设计
串口通信部分为上层网关功能模块提供透明传输。实验规定的串口通信速率很低(4800bps),当局域网的数据流量增大时,将成为整个通信的瓶颈。因此,对这部分软件的主要要求是在保证通信误码率低的基础上达到高效。
串口通信包括发送和接收两部分,以全双工的方式工作。这样可以保证串口的工作效率。采用线程的工作方式也便于和整个软件其他模块的协调运行(如与上层网关功能模块之间)。
(1)数据发送模块
IP数据报的发送通过一个独立的线程来进行。由于串口通过无线链路连接,采用短波通信,误码率较高,因此要求一定的传输协议来保证数据的可靠传输。实际实施时,采用奇校验和停止等待协议来保证串口数据的可靠传输。每一个字节的传输都采用奇校验方式。在发送一个IP数据包采用停止等待协议。每次发送数据时,先查询是否有确认或出错帧要发送,如果有,则发送确认或出错帧。如果没有,则查询数据缓冲区是否有IP包要发送。如果有,则从数据缓冲区中取出一个包,附上帧头和数据起始标志进行发送。发送完数据后,等待对方返回确认。如果对方在规定时间内没有返回确认则重新发送刚才的数据。在等待期间不发送新的数据,但是如果本地接收数据后需要发送确认消息给对方,则尽快发送。
在本软件中,两个半网关用于连接两个局域网。对串口通信的要求是双向高速。两个半网关可能同时有大量数据要传送。当使用停止等待协议时,停止等待协议的等待时间应为对方发送最大一个数据包所需要的时间。根据实验得知,在以太网上,最大数据包长度为1500字节,因此,等待时间应为:1500×2×8/4800=5s。
这个时间是最大等待时间。在实验中,得到平均等待时间为853ms。因此,在软件中设置等待时间为1s。
(2)数据接收模块
接收模块由消息响应函数完成。先搜索报文头,对报文头进行处理。再判断接收帧的类型,作出相应处理。接收完后,查询数据接收错误标志,如果有错误发生,则丢弃该数据包;反之,将该数据包存入缓冲区。
5 系统测试与应用前景
WWW是目前Internet网上的主要服务,它是基于TCP/IP的典型应用。以这项服务对所开发的网关软件进行了测试。实验表明,网关软件原理正确。
由于采用了串口通信技术,该成果可经简单改装,用在基于modem的网络互连等多方面,如在监控系统的各级之间、公司总部与分公司、办事处之间实现廉价的LAN互联。