http://tech.fuwuqi.com.cn/networkci/routswitch/2009-08-18/5057244114034.shtml

来源:维库 作者:佚名 发布时间:2009-08-18 13:14:01 发表评论

摘要:针对目前SOHO路由器设计方案难以满足高速接入网用户要求和存在系统稳定性方面的不足,以嵌入式Linux操作系统为基础,提出一种新的 SOHO路由器设计方案。

关键词:SOHO路由器Linux

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 类似。

图2 DM9000 接口电路图

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 系统。

图 3 Netfilter IP 层Hook 点位置

数 据 包 从 左 边 进 入 系 统 , 进 行 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 路由器,能满足高速接入网用户需求,具有更高地系统稳定性和用户安全性。

转载于:https://my.oschina.net/chulia/blog/1499

基于嵌入式Linux的SOHO路由器设计相关推荐

  1. 嵌入式linux图片浏览器,基于嵌入式Linux图片浏览器的设计与实现.doc

    基于嵌入式Linux图片浏览器的设计与实现 PAGE PAGE II 本科学生毕业论文(设计) 题目(中 文): 基于嵌入式Linux图片浏览器的设计与实现 (英 文): The design and ...

  2. iptv linux 安卓 盒子,基于嵌入式Linux的IPTV机顶盒设计

    摘要: 随着人们生活水平的提高和Internet技术的发展,IPTV开始走进人们的生活,IPTV是一种集网络.多媒体.通讯等多种技术于一体,向用户提供包括数字电视在内的多种交互式服务的崭新技术.作为I ...

  3. linux zigbee开发板,基于嵌入式Linux的ZigBee网关设计与实现

    摘要: 从ZigBee联盟诞生以来,随着ZigBee协议的相关标准不断完善,协议栈持续改进等因素,基于 ZigBee无线传感网络的开发与应用也越来越多.由于其低功耗,低成本,低延时,安全可靠以及自组网 ...

  4. 基于嵌入式linux的数码相框的设计,基于Linux NFS的Web数码相框设计

    O 引言 随着数码相机和互联网的普及,越来越多的家庭拥有自己的媒体库.媒体库中既包含有自己拍摄的影像文件,也有从网络上下载的影像资料.然而展示影像资料的手段单一,主要通过PC来实现.因此未来构建以媒体 ...

  5. linux图片浏览器设计目的,基于嵌入式Linu图片浏览器的设计与实现.doc

    基于嵌入式Linu图片浏览器的设计与实现 本科学生毕业论文(设计) 题目(中 文):基于嵌入式Linux图片浏览器的设计与实现(英 文):The design and implementation o ...

  6. 基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

    现在嵌入式设备联网,主要有两种模式:以太网RJ-45 接口直接插网线上网:3G/4G 模块拨号上网.随着无线终端设备的不断普及,手机平板等无线设备对网络的需求也日益增加.本篇文章主要介绍基于嵌入式Li ...

  7. 嵌入式linux应用程序升级,基于嵌入式Linux平台的应用升级机制的研究与设计

    摘要: 随着科技的发展与新技术的推出,嵌入式在生活中被广泛应用,嵌入式产品在日常生活中扮演了重要的角色.嵌入式Linux操作系统已经普遍应用到医疗电子,信息家电,远程通信,机顶盒等多个领域,嵌入式Li ...

  8. 基于嵌入式Linux的MP3播放器的设计与实现

    摘要:本文详细介绍了嵌入式系统的特点以及嵌入式系统开发的流程,分析基于嵌入式Linux的MP3播放器的关键技术,设计和实现了一种基于嵌入式系统的 MP3 播放器.该播放器利用 QT 技术和开源的音频解 ...

  9. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx

    基于嵌入式Linux下Madplay音频播放器设计论文 滁州职业技术学院计算机应用技术专业毕业论文PAGE I 滁州职业技术学院信息工程系--2015届计算机应用专业毕业论文 姓 名: 周杰 班 级: ...

最新文章

  1. 物联网电子标签助力无人便利店
  2. Java Collections.sort方法对list集合排序
  3. 解决Cygwin编译cocos2dx 遇到的 error: 'UINT64_C' was not declared in this scope 问题
  4. python中prettytable模块_Python库: PrettyTable 模块
  5. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
  6. 《高性能网站构建实战》 目录--转
  7. 《分布式操作系统》知识点(29~34)五
  8. Linux内核源代码分析——fork()原理多进程网络模型
  9. 7 项目人力资源管理
  10. 更换桌面壁纸的小工具。
  11. mysql数据漂移_第28问:SIP 漂移时,会影响正在使用的数据库连接么?
  12. jquery新版本旧版本之间的坑
  13. 跟我学习Storm_Storm基本架构
  14. 做三维模型_【三维量房+装配式装修】如何玩转装修个性化设计
  15. 如何实现一个文件系统
  16. 软件测试场景 例子,软件测试基础(六)用例设计方法之场景法
  17. 浏览器连不上 Flink WebUI 8081 端口
  18. 银行等额本息还款算法
  19. IT人员升职必会的软技能
  20. Android UI 切图命名规范、标注规范及单位描述

热门文章

  1. 仙人掌最短路--bzoj2125
  2. mysql里hdr是什么的缩写_MySQL事务之-2
  3. 允许进行商标买卖与交易
  4. 在ABAQUS中开发材料模型(UMAT)的通用框架:基于Fortran的大变形本构行为的3D实现方法
  5. java----图书管理系统 (用户和管理员)
  6. 教你5分钟做成一个ASP论坛
  7. Rust应用调用C语言动态库
  8. ear的英语怎么念_ear怎么读
  9. java将excel文件下载到本地
  10. 程序员如何快速实现财富自由?