第 8卷 第 23期 2008年 12月 科 学 技 术 与 工 程 V01.8 No.23 Dec.2008
1671—1819(2008)23—6389—03 ScienceTechnologyandEngineering ⑥ 2008 Sci.Tech.Engng.
基于 Linux的家庭网关优化
张郭军 赵 薇
(渭南师范学院计算机科学系,渭南714000)
摘 要 4基于Linux的家庭网关中转发报文流程执行最为频繁,因而对系统的效率影响最大。通过对报文转发流程工作机
制 的分析 ,提 出了一种改善家庭 网关性能的思路 。
关键词 网关 Linux 轮询 中断
中图法分类号 TP393.02; 文献标志码 A
随着社会信息化和家庭网络化的飞速发展,越 程序方法负责请求套接字缓冲区并把接收到的包
来越多的家庭建立了家庭 网络。家庭 网关是整个 填充到包数据空间中。随后 ,netif_rx()可 以将套接
家庭网络的核心,它主要实现 Intemet接人 、远程控 字缓冲区放入输入队列中,最后网络设备的统计信
制以及连接家庭 内部异构子 网的功能。家庭 网关 息被更新,并且中断处理程序可 以继续处理下一个
类似于服务器的功能,集中控制家庭网络 中的家电 收到的包也可以终止中断处理[。
设备,如信息家电、安防系统、报警系统等。在基于
Linux网络中,通过 Linux驱动程序的形式连接各个
模块和操作系统 ,完成整个软件的构架 ,CPU总控
模块负责初始化和协调各个模块的操作,是整个系
统的大脑,事务控制模块支持并发控制,主要保证
传递过程中的可靠性和高效性。
1 数据报文处理过程及其缺陷
当网络适配器正确接收到一个数据包时,会触
发一个中断,其驱动程序 中的中断服务程序将调用
确定的接收函数来处理,将收到的网络包放到网络
接收队列上,并设置相应状态寄存器 ,系统会在中 图1 网络适配器中断处理数据包
断处理返回时,处理发生的软中断,如图1所示。根
当网络适配器驱动程序执行到netif__rx()时,将
据状态寄存器就会判断是否接收到 了新包 、是否完
收到的网络包放到网络接收对列上 ,同时设置相应
成了传输或是否发生了错误。如果接收到了包,就
中断标志,系统在 中断处理返 回时,根据标志位信
会调用 net—rx()中断处理 函数,处理接收包 的驱动
息处理发生 的中断,调用对应注册过的net—rx—ac—
tion()函数取下网络包,进一步调用对应的处理函
2O08年9月l8日收到 渭南怖范学院重点科研计划项 目(07YKZ1368)
数 ip—rcv(),对网络包进行路由并转发,最后由dev—
资助
第一作者简介 :张郭军 (1965一),男,硕士,教授 ,研究方 向:计算机 queue—xmit()负责将包从对应的出口设备上发送出
网格、计算机软件与理论 、 去,或者在队列忙时将包放人设备发送 队列并设置
6390 科 学 技 术 与 工 程 8卷
相应网络发送中断,等待中断处理机制推迟发送 网
络包 。
基于Linux网关 中转发报文流程执行 比较频
繁,对系统的效率影响最大。工作在 中断模式下的
网络适配器,在网络负载 比较大的情况下,网络部
分的接 口会频繁地中