在家用 Linux 路由器上面应用 QoS
家里有两台台式机,我一台,爹妈挖地雷一台。我有一台 Apple PowerBook G4,主要通过 Wi-Fi 接入家庭网络。路由器是用一台旧机器自己做的,上面运行 Debian GNU/Linux ,顺便提供提供 DNS、DHCP、NTP、SSH、TOR 服务。一条 2M 的 ADSL 链路提供 7 x 24 的 Internet 接入服务。
2M ADSL 链路所提供的带宽
- 下行 2Mbps = 250KB/s = 244.141KiB/s
- 上行 640Kbps = 80KB/s = 78.125KiB/s
设定 QoS
我通常长时间的运行骡子,有时运行 SSH 会话。骡子会消耗大量的带宽,导致网络拥塞。后果是网络传输时延增加,SSH 会话的迟滞很严重,网上冲浪也要花更多时间等待。通过给不同的网络流量限定带宽和设定优先级,可以有效的改善这些。
胡乱设定的规则
- 第一优先级
这是需要最小时延的应用
- ICMP 报文
- SSH 会话
- 带有 SYN 标记的 TCP 报文
- DNS 查询
- 第二优先级
这主要是网上冲浪所产生的流量
- HTTP 和 HTTPS 会话
- FTP 的控制连接
- 第三优先级
- 路由器本身产生的流量
- 第四优先级
这是剩下的通过路由器转发,传输大量数据的应用。即时通讯软件所产生的流量也在这里。
- FTP 的数据连接
- 所有通过路由器转发的 UDP 流量
- 第五优先级
这是需要最少花费的应用,主要是 Email 产生的流量- SMTP
- POP3
- IMAP
- 第六优先级
这包括所有剩下的流量。骡子和 BT 产生的流量都会在这里。
应用 QoS 后获得的好处
- 可以不用针对骡子特别限速,骡子可以充分利用剩下的带宽,最大化吞吐量。
- SSH 会话的迟滞显著减少了。
- 即便网络很繁忙,网上冲浪还是很顺畅。
参考资料
- Linux Advanced Routing & Traffic Control
http://lartc.org/ - Linux QoS in a Small Network
http://www.sigsegv.cx/qos.html - HOWTO Packet Shaping
http://gentoo-wiki.com/HOWTO_Packet_Shaping - man iptables
- man tc
0 TrackBacks
Listed below are links to blogs that reference this entry: 在家用 Linux 路由器上面应用 QoS.
TrackBack URL for this entry: http://www.mamiyami.com/mt/mt-tb.cgi/35

呵呵,可以贴出来具体的脚本么?
完整的 iptables 脚本大概有一千行。下面是精简过的,跟 QoS 相关的部分。还是很长。
http://www.mamiyami.com/neo-diary/2007/10/26/firewall-qos.sh