在Debian 7的老机子上开着正版锐速（免费20M），所以不想换内核了，用UML开BBR。这回换个花样，不用Tap设备，用SLiRP联通网络。不过，这样的效率不如利用Tap。对于那些不支持TUN/TAP设备的OpenVZ，也可以用这个方法来体验下BBR。在编译vmlinux时候，选“Universal TUN/TAP device driver support”，在UML中就有TUN/TAP设备可用了。已经在前篇中制作好了镜像和vmlinux，这里不再重复制作，直接使用。先安装SLiRP，然后下载制作好的东西apt-get install slirp mkdir slirp-alpine cd slirp-alpine wget https://github.com/fanyueciyuan/eazy-for-ss/raw/master/openvz-bbr/vmlinux_4.10.1.gz wget https://github.com/fanyueciyuan/eazy-for-ss/raw/master/openvz-bbr/alpine_bbr_ss_swap.img.gz gzip -d * mv vmlinux_4.10.1 vmlinux chmod +x vmlinux在UML中，向SLiRP传入参数，需要写入~/.slirprc，这样才能开启转发redir 9998 9998 redir 9999 9999 #redir 内部端口 外部端口只转发几个需要的端口。换句话说，ss开在哪个端口就转发哪个端口。这里不需要设置iptables。Debian 7下，开启UML时候，可能有个错误Checking that ptrace can change system call numbers...OK Checking syscall emulation patch for ptrace...OK Checking advanced syscall emulation patch for ptrace...OK Checking for tmpfs mount on /dev/shm...OK Checking PROT_EXEC mmap in /dev/shm/...failed: Operation not permitted /dev/shm/ must be not mounted noexec /dev/shm/ is tmpfs and is mounted noexec谷歌一下，说是挂载权限问题，修改下母机，即Debian7的/etc/fstab文件，额外加一行shm /dev/shm tmpfs nodev,nosuid 0 0重启下就行了。主机上用的是zsh，这个和nohup命令有些不协调，在bash下开命令bash nohup ./vmlinux ubda=alpine_bbr_ss_swap.img rw eth0=slirp,,/usr/bin/slirp-fullbolt mem=64m & exit通过screen命令进入虚拟机，修改下/etc/network/interfacesauto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.2.15 netmask 255.255.255.255 gateway 10.0.2.15接着重启一下网络，Ping自己的主机IP，看看联通与否。在这个模式下，ICMP有bug，只能Ping自己主机。