2018.12 研究与设计
基于嵌入式 Linux 的路由器产品开发
南京中兴新软件有限责任公司,江苏南京 211500
刘昆昆
摘要:路由器作为连接各种网络或网段的重要组成设备,工作在 TCP/IP 四层模型的网络互联层,主要工作过程是解析网口数据包中
的目的 IP 地址,根据存储的路由规则决定下一跳节点,从而实现数据转发。
关键词:路由器;嵌入式系统;linux;路由表
0 引言
伴随网络规模的扩大和技术的进步,嵌入式系统已然成为当今
的应用热点。借助低能耗、高可用性、多生态以及移植方便等大多
数优点,嵌入式已逐渐扮演工业生产以及人们生活中的重要角色,
大多数通信产品都属于嵌入式系统的范畴。ASIC 处理器(专有芯
片)通常完成路由器中的包转发以及查表,路由计算以及路由分发
则由 CPU 完成,这样的架构提高了路由器的效率。一般地,路由
器的开发都是以 32 位处理器为平台,其系统组成也越来越多,通
常,常规的中低端路由器的开发配置有 ARM11 核心芯片以及 Linux
操作系统、DSP 芯片以及 Vxworks 操作系统等不同的组合。
1 总体设计
本文计划设计出一种无线路由器产品,其硬件构成如下:使用
JZ2400 作为基础硬件, JZ2400 内核常规工作频段较高,控制器芯
片的正常频率通常较低,wifi 芯片使用了 realtek8188EU 无线网卡驱
动,该设备兼容 IEEE802.11n,运用了正交频分技术,实验上能达
到 600Mbps 的传输速率,而且能够接入 USB3.0 接口,因此可认为
能保证大量数据传送。无线路由器软件模块使用 Linux 作为嵌入式
系统,依靠植入无线网卡驱动,应用 hostapd 承载无线接入点功能,
hostapd 能够对无线接入过程进行加密。综合来看,其可作为 Linux
操作系统上无线接入点的构造程序。最后依靠配置 linux 内核命令
iptables 来承载 NAT 机制,从而保证了数据转发和地址转换[1]。
2 Linux 移植及编译
Linux 进程由用户态以及内核态构成,用户态一般被系统使用
者所接触,当需要访问内核态时,需要使用用户态和内核空间的转
换接口。根据开源协议,用户态里含有开源的 GNU 库 GNUCLibrary,
该动态库不仅包含了操作系统的系统调用接口,还抛出了用户态与
内核态相互切换的能力。因为内核态和用户态上面的应用程序占用
的地址空间不同,所以进入内核的入口只能依靠系统调用。Linux
系统为各个用户进程都分配了对应的虚拟地址空间,而内核却使用
了独立的地址空间。
(1)Bootloader 移植
Bootloader 是与系统硬件初始化密切关联的程序,肩负着硬件
启动以及引导操作系统的两大任务[2]。本系统采用的 Bootloader 是
嵌入式系统开发中应用最广的引导代码 UBOOT。它的移植概括如
下:首先根据宿主平台对各配置文件做对应的调整,然后构建相匹
配的配置文件,最后修改它的 makefile 文件,在其中加入对目标系
统的编译支持模块,并依次运行以下编译命令来生成目标文件,最
后通过 JTAG 调试接口将 u-boot.bin 文件录入到存储起始地址,复
位后就能够引导系统。
(2)Linux kernel 构建与移植
a. 更改 makefile 文件。
b. 运行 make manuconfig 命令来配置内核。
c. 运行 make dep、make zImage 命令来编译内核,获得内核压
缩镜像文件。
d. Bootloader 引导程序通过以太网接口把 Linux 内核录入到目
标系统的存储模块上。
e. 构造 rootfs。
3 系统软件构建
系统软件构建主要有两大模块,分别是 DHCP 和 NAT 模块。
3.1 dhcpd 产生和配置
电子乐园
DHCP 是路由器的核心组成部分,运行在 TCP/IP 网络协议之
上,以 UDP 作为传输层协议,它的最核心功能是:在内网中自动
分发 ip 地址,使网络大环境中的机器能够动态的拿到 IP 地址、网
关 ip、DNS 服务器地址等内容,而且可以加快地址的应用率。DHCP
协议采用 C/S 模型,主机地址的动态分配计划由网络主机驱使。当
DHCP Server 接收到来自网络主机申请地址的请求时,才会向网络
主机发送相关的地址配置等信息,以完成网络主机地址信息的动态
配置。Dhcpd 是在 Linux 操作系统上实现 DHCP 功能的一个开源架
构,该程序的好处是不耗资源,稳定性好,性能强,因此特别适合
嵌入式设备[3]。本文通过更改 Makefile 以及添加交叉编译工具链,
然后执行 make,把生成的 dhcpd 文件下载到板子上,再执行 cp 命
令,将 dhcpd 程序对应的配置文件复制到系统根文件目录当中,然
后根据需求修改该文件,就可以在 linux 系统启动后,运行 dhcpd 服
务打开 DHCP 功能,本系统使用单元测试可以让上位机获取一个内
网的 ip 地址。
3.2 NAT 技术实现
将网络中的路由设备按功能分类可划分为核心路由器、汇聚路
由器以及接入路由器,本文主要阐述接入路由器。其主要作用是提
供 网 络 信 息 包 的 路 由 与 过 滤 服 务 。 这 些 功 能 的 实 现 依 赖 于
NAT(NetworkAddressTranslation)变换技术,把一个局域网内部私有
IP 地址映射为一个合法的公网 IP 地址,主机设备将 NAT 主机设置
为默认网关,当 NAT 主机收到主机的网络请求包时,更改源地址
为自身地址,将源端口映射为一个新的端口,并且存储该对应规则;
当接收到响应数据包时,通过回溯以上规则,再次修改网络数据包,
将其目的 IP 地址及端口号更改为原有规则中的客户主机 IP 地址和
端口号,然后将请求发送给内部网络的客户机。从而确保私有网络
中多台主机可以同时使用一个合法的 IP 地址来访问 Internet,这一
功能有效地缓解了 Ipv4 地址不足的难点。接着本系统使用 IPtables
实现 IP 伪装、端口转发与地址转换应用。IPtables 是 Linux 内核中
基于 Netfilter 组件的数据包选择程序。地址转换会引发很多对 NAT
敏感的应用无法正常工作,而地址转换应用网关(NAT ALG,
Application Level Gateway),对负载中的 IP 地址和端口号进行替换,
从而保证了应用无感知。IPtables 要求数据包流经指定的规则表,
其中设定的规则用于实现数据过滤,网络地址转换及数据包处理,
从而建立数据过滤防火墙。
4 小结
本文设计并实现了一种基于嵌入式 linux 的无线路由器系统。
本文配置了 dhcpd 进程模块承担了 dhcp 功能,最后选择 linux 内核
的 iptables 承担了数据转发和地址转换功能。实践表明,该无线路
由器能够在具备无线路由器的基本功能上实现安全访问,具有较好
的稳定性和安全性。
参考文献
[1]刘玉兰,孙毅,赵祖光,等.基于 Linux 的软件版路由器设计与实
现[J].电脑编程技巧与维护,2017(14):28-29.
[2] 陈 强 . 嵌 入 式 家 用 路 由 器 的 设 计 与 实 现 [J]. 中 国 新 通
信,2017,19(10).
[3]黄小敏,余翔,宋瑶.嵌入式 Linux 系统的 3G/4G 路由器设计[J].
单片机与嵌入式系统应用, 2014(4).
作者简介:刘昆昆,1989.07,男,汉,本科,助理工程师,
目前从事路由器嵌入式软件开发。
231