如何在 CentOS 上安装 dummynet
Dummynet 是一种开源网络仿真工具,允许模拟物理链路的各种网络属性,例如带宽容量、数据包丢失、延迟和队列长度。 Dummynet 可用于在模拟网络环境中测试实验网络协议。
虽然 dummynet 最初是为 FreeBSD 平台开发的,但后来作为外部内核模块移植到 Linux 系统。在本指南中,我将描述如何在 CentOS 上编译和安装 dummynet 内核模块。此设置已在 CentOS 6.2 上进行测试。
首先,安装构建 dummynet 内核模块所需的所有先决条件。
$ sudo yum -y groupinstall "Development Tools"
下一步是在 CentOS 上安装匹配的内核源。您需要使用匹配的内核源代码才能在内核中加载 dummynet。 CentOS 6.2 具有以下内核。
$ sudo uname -r
2.6.32-220.17.1.el6.x86_64
安装匹配的内核源,并准备针对内核源构建虚拟网络。
$ mkdir -p /tmp/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo "%_topdir /tmp/rpmbuild" > ~/.rpmmacros
$ wget http://vault.centos.org/6.2/os/Source/SPackages/kernel-2.6.32-220.el6.src.rpm
$ rpm -i kernel-2.6.32-220.el6.src.rpm 2>&1 | grep -v mockb
$ sudo tar xvfvj /tmp/rpmbuild/SOURCES/linux-2.6.32-220.el6.tar.bz2 -C /usr/src/kernels/
$ cd /usr/src/kernels/2.6.32-220.17.1.el6.x86_64
$ sudo make oldconfig
$ sudo make prepare
$ sudo make scripts
下载最新的 dummynet 源代码,并针对匹配的内核源代码进行编译。
$ wget http://info.iet.unipi.it/~marta/dummynet/ipfw3-20120119.tar.gz
$ tar xvjvz ipfw3-20120119.tar.gz
$ cd ipfw3-20120119
$ make KERNELPATH=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64
如果构建成功,您将在 ipfw3-20120119/dummynet2
目录中创建名为 ipfw_mod.ko
的虚拟网络内核模块。尝试加载模块。
$ sudo insmod ipfw_mod.ko
如果成功,最后继续安装 dummynet 模块。或者,您可以使其在启动时自动加载,如下所示。
$ sudo cp ipfw_mod.ko /lib/modules/2.6.32-220.el6.x86_64/kernel/net/netfilter
$ sudo depmod
$ sudo sh -c 'echo modprobe ipfw_mod >> /etc/rc.modules'
$ sudo chmod +x /etc/rc.modules