0 引言
随着通信技术、网络技术的迅速发展,大量网络设备接入网络,互联网用户数量正以几何级数增长。研究表明,ipv4 地址空间将在2011 年前耗尽,因此ipv4 地址资源非常紧缺。soho 路由器利用私有网络ip 地址有效地缓解目前 ip 地址短缺的危机,为公司、家庭等小型局域网提供高效、廉价的共享上网方案。当前soho 路由器设计,采用
arm7tdmi+μclinux 设计架构,arm7 内核微处理器工作频率为50m 左右,而以太网控制芯片工作频率一般为100m,处理器速度难以满足高速接入网用户要求;μclinux 操作系统,不具有内存保护机制,任何程序都有可能导致内核崩溃,系统稳定性较差。本文采用arm920t 内核微处理器,工作频率200m,足以满足高速接入网用户要求,它具有先进的mmu 体系结构,支持wince、epoc32、linux 操作系统。linux 操作系统,具有内存保护机制和强大的网络控制功能,能防止恶意程序对系统的破坏并实现*滤防火墙,有效地提高了系统的稳定性和安全性。
1 soho 路由器原理
路由器有位于网络中心的核心路由器、连接企业级网络的企业路由器以及把家庭或小单位用户接入网络的 soho 路由器。soho 路由器能够实现自动配置和基本数据包路由、过滤功能。从严格意义上来讲,soho 路由器并不能完全称之为路由器,它只实现部分传统路由器的功能。soho 路由器采用nat(network address translation)转换技术,把局域网内部私用有ip 地址转换成一个合法的公网ip 地址,使私有网络中多台主机共享一个合法的 ip 地址访问因特网。
本文利用 linux 内核支持ip masquerade(ip 伪装)技术实现nat 转换,实现多台主机共享访问因特网。ip masquerade 工作原理:客户机将实现ip masquerade 的linux 机器设置为缺省网关,当ip masquerade 的linux 机器收到客户机的数据包时,对其进行改写,将源地址替换为自己的ip 地址,将源端口号换成一个新的端口号,并且对该过程进行记录;当接收到响应数据包时,如果其端口号正是先前所指定的端口号则再对该数据包进行改写,将其目的ip 地址及目的端口号替换为原来记录的客户机ip 地址和端口号,然后再发送给客户机。
2 系统硬件设计
系统以 s3c2410x 微处理器为核心,外扩存储器、以太网控制器、交换控制器、配以必要的调试接口、电源电路和时钟发生电路构成,硬件结构框图如图1 所示。
(1) 微处理器与存储系统
s3c2410x 是samsung 公司开发的一款低价、低功耗、高性能应用于pda、internet设备的微处理器,工作频率200m,能满足高速处理要求。系统扩展了1 片64mb nandf1ash 芯片和2片sdram 芯片,nand f1ash 芯片中存储bootloader 引导程序和linux 内核,系统上电复位后从中执行初始化代码。
(2) 以太网控制芯片
dm9000 是一款高性价比以太网控制芯片,具有通用处理接口以太网mac 控制器,能与10base-t 的utp3/4/5 和100base-t 的utp5 接口连接,满足高速接入网要求,也支持通过mii 接口与其它mii 接口的收发器互联。
(3) 交换控制芯片
rtl8305s 是***瑞昱公司最新设计的5 端口10/100mbps 高速以太网络交换控制芯片,五个端口分成三个组(x 组,y 组,第五端口),可通过相关引脚灵活配置;集成了5个mac(媒体存取控制器)、5 个实体层收发器、1m sram 和1k mac 地址记忆区,有效地减少查表时间和转储时间,适用于高速局域网交换器;每一个端口均可支持100mbps的100base-tx 高速以太网传输或10mbps 的10base-t 的以太网传输。
(4) 系统实现
s3c2410x 微处理器通过系统总线连接flash和sdram构成存储系统,系统上电后,微处理器从flash 中读取初始化程序,sdram 为程序运行和数据处理和转发提供临时存储空间。以太网控制芯片dm9000,经单端口隔离变压器和rj45 接口与互联网相连。dm9000 通过mii(独立媒体接口)与交换控制芯片rtl8305sc 的port4 口相连,rtl8305sc 经过4 端口隔离变压器和四个rj-45 接口连接局域网集线器,交换机或电脑,进行数据交换或通过微处理器控制与广域网连接。
dm9000 与s3c2410x、rj45 接口电路如图2 所示,dm9000e 芯片的引脚int 与s3c2410x 芯片的外部中断信号eint14 相连,s3c2410x 片选信号ngcs4 和地址线ma2分别连接dm9000的aen 引脚和cmd 引脚。sa6 到sa0 对应地址总线,而sa9 与sa8引脚设置为高电平,sa7 引脚设置为低电平,用来片选dm9000;3c2410x 的noe 引脚连接dm9000 的读引脚ior#,nwe 引脚连接dm9000 的写引脚iow#,并将s3c2410x 数据线md[0..15]与dm9000 的数据线sd[0..15]连接,实现数据传输。将 rtl8305s 第5 端口设定为一个mii 接口与以太网控制芯片dm9000r mii接口相连,rtl8305s 与四端口隔离变压器和rj45 接口与图2 类似。
3 系统软件构建
软件构建主要包括 linux 操作系统移植和nat 技术实现。
3.1 linux 操作系统移植
(1) bootloader 移植
bootloader 是与系统硬件高度相关的初始化代码,担负着初始化硬件和引导操作系统的双重责任。本文使用在嵌入式系统开发中应用最广的引导代码u—boot。移植具体步骤:1 针对目标平台对各配置文件做相应的修改。2 建立相应地配置文件。3 修改u—boot的makefile 文件,在其中加入对目标系统的编译支持,并运行以下命令$make clean、$makesmdk2410-config、$make all 生成目标文件。最后通过jtag 接口将u-boot.bin 文件烧写到flash 的零地址,复位后就可以引导系统。
(2) linux 内核构建、移植与根文件系统实现
1 修改makefile 文件。2 使用make manuconfig 命令来配置内核。3 使用make dep、makezimage 命令对内核进行编译,得到内核压缩镜像文件zimage 件。4 bootloader 引导程序通过以太网接口把linux 内核移到目标系统的flash 上。5 构建根文件系统。
3.2 netfilter 框架分析与nat 技术实现
netfilter 是linux2.4 内核实现数据*滤、数据包处理和nat 功能的框架。它为每种网络协议(ipv4, ipv6 等)定义一套钩子函数(ipv4 有5 个钩子函数),内核中任何模块可以对协议中的钩子函数进行注册与挂接,这些钩子函数在数据包流经协议栈时被调用,注册后的模块可以检查、修改、丢弃数据包及指示netfilter 将数据包传入用户空间队列,进行异步处理。一个数据包按图3 所示的过程通过netfilter 系统。
数据包从左边进入系统,进行ip 校验后,数据包经过第一个钩子函数nf_ip_pre_routing[1]进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发给本机的,则该数据经过钩子函数nf_ip_local_in处理后传递给上层协议;若该数据包应该被转发则它被nf_ip_forward[3]处理;经过发的数据包经过最后一个钩子函数nf_ip_post_routing[4]处理后,再传输到网络上。
本地产生的数据经过钩子函数nf_ip_local_out[5]处理后,进行路由选择处理,然后经过nf_ip_post_routing[4] 处理以后发送到网络上。netfilter 框架支持多种nat,nat 一般可分为源nat 与目的nat。源nat 在数据包经过nf_ip_post_routing 时修改数据包的源地址,伪装是一个特殊的snat,目的nat在数据包经过f_ip_local_out 或nf_ip_pre—routing 时修改数据包目的地址。
本文利用 iptables 实现ip 伪装、port forward 端口转发、alg。iptables 是一个在linux2.4内核中基于netfilter 框架的数据包选择系统。地址转换会导致许多对nat 敏感的应用协议无法正常工作,而地址转换应用网关(nat alg, application level gateway),对载荷中的ip地址和端口号进行替换,从而实现对该协议的透明中继。iptables 要求数据包流经指定的规则表,其中设定的规则用于实现数据*滤,网络地址转换及数据包处理,从而实现多台主机共享一个合法的ip 地址访问因特网,并实现*滤防火墙。
4 结束语
本文作者创新点:提出了一种基于嵌入式 linux 操作系统的soho 路由器设计方案。与现有设计方案相比,本文采用atm9tdmi+linux 构架设计soho 路由器,能满足高速接入网用户需求,具有更高地系统稳定性和用户安全性。
Flash存储器Am29F040结构分析
栅极驱动器是什么?罗姆有哪些产品
关于人脸识别技术保障人脸信息安全的建议
申通回应用户信息泄露事件:已组织小组调查
故障电弧断路器的工作方式和工作原理的介绍
基于ARM920T和Linux的SOHO路由器设计
硅单向开关(SUS)的特点及检测
Mentor Graphics Veloce功耗分析入选 EDN“2015 年百款热销产品”
消息称Nokia6.3或于2020年底前上市
群创关闭上海和南京模组厂并转战印度,面临大裁员压力
DIY奇才造巨型电容锂聚合物电池动力机器人
组建电波暗室应考虑哪些因素
基于STM32F207介绍4种不同方式实现的延时函数
Phorism with 12V
国芯思辰|灵敏度高达200mV/A的中科阿尔法电流传感器AH911应用于卷帘电机控制系统
“第三代半导体与微显示”2020第一届国星之光论坛举行
人工智能在机器学习应用代码示例解析
探讨分析当前网络安全行业的问题,展望未来网络安全行业的发展趋势
Keep联合创始人彭唯:Keep刷新用户运动体验
功率电感和磁环电感相比究竟谁更好