基于ARM920T+Linux架构的SOHO路由器设计
实现数据传输。将 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 路由器,能满足高速接入网用户需求,具有更高地系统稳定性和用户安全性。
路由器 设计 SOHO 架构 ARM920T Linux 基于 相关文章:
- 嵌入式Linux的SOHO路由器电路设计(11-18)
- 基于网络处理器的可编程路由器技术研究(06-05)
- 水晶头为什么放不进去路由器接口中?(12-13)
- 教你玩转无线路由器USB接口(12-12)
- 基于WiFi的可实时视频同传的探测小车(10-15)
- 一种基于嵌入式Linux系统的的无线路由器设计方案(09-02)