Linux 软路由性能测试及分析[图文]

姚 炯 (yaojiongcn@yahoo.com.cn), 网络工程师, 杭州师范大学理学院

本文介绍了 Linux 软路由的工作原理,并使用普通 PC 计算机作为硬件设备,在实际网络环境中测试和讨论了 Linux 软路由的性能。实验证明,在百兆以太网络环境中, Linux 软路由的数据报转发速度取决于网络卡的实际速度,并随着软路由系统的应用层服务的增加而降低。该结果为 Linux 软路由的应用和普及提供依据。

0、引言

随着开源软件的发展,越来越多的人开始了解、使用和研究 Linux。目前 Linux 环境下的软路由设计和应用案例已有很多;但是对于实际网络环境中 Linux 软路由的负载性能一直缺乏相关的实测和讨论。本文从 Linux 软路由的框架和实验两部分进行讨论,并给出结论。

1、Netfilter 框架

Netfilter 框架上是整个 Linux 软路由运作的体系,是 Linux2.4 内核处理数据报的流水操作系统。它能够运做在 IPv4、IPv6 及 Decnet 等网络栈中。Netfilter 框架的概念的提出及主要实现者是 Rusty Russell。

Netfilter 框架如图所示:

Linux 软路由性能测试及分析[图文]

Figure xxx. Requires a heading

(1)Netfilter 为每种网络协议定义一套钩子函数,其中为 IPv4 定义了以下5个钩子函数:

[1]NF_IP_PRE_ROUTING.

[2]NF_IP_LOCAL_IN

[3]NF_IP_FORWARD

[4]NF_IP_POST_ROUTING

[5]NF_IP_LOCAL_OUT

(2)这些钩子函数在 Linux 内核的模块中注册,并与之挂接。当数据报流入框架的网络层时,内核模块在框架的钩子函数处[1]接收数据报,并对它进行检查、转发、丢弃或指示 Netfilter 将该数据报通过[2]传入用户空间队列。

(3)如果该数据报被传递给用户空间,将在应用层被异步处理。该层的用户进程(Local Process)在对数据报进行更加精细的检查,修改和装配之后,通过钩子函数[4]把它重新递交给网络层。

Netfilter 框架的数据报分流结构使它极大地降低了数据报转发的延迟,提高了数据报控制的精度;在节省系统开销,提高数据报的处理效率上超越了工作在 Windows 平台的路由软件。