Iptables下的流控(ToS)

网络中的数据传输,路径可选范围很广。有些路径可靠性高(丢包少),有些路径对数据包的改动很大,还有些路径只纯做数据转发。不同路径的延迟、宽带波动同样千差万别。因此,IETF 就规则了服务类型(Type Of Service),以些来让网络设备为标记的数据做路由时来区分对待。

背景

当然,我们设置的 TOS 可能会被网络提供商忽略或重置,但至少在我们局域网内,路由器/交换机(支持QoS) 会为不同的数据提供不同的转发优先级。

TOS 值

十六进制 十进制 名称
0x10 16 Minimize-Delay
0x08 8 Maximize-Throughput
0x04 4 Maximize-Reliability
0x02 2 Minimize-Cost
0x00 0 Normal-Service

OS bit manipulation

The classes of network service available are:

minimum delay

当数据需要使用最快的路径进行传输时使用此服务,如电话、ssh会话、telnet会话、在线视频等等。

maximum throughput

数据传输不关心延迟但关心网络路径的吞吐量时使用此服务,如web服务、ftp传输等等。

maximum reliability

当数据传输需要最大的可靠性时(减少数据重复传输)使用此选项,如简单网络管理协议,DNS等等。

minimum cost

当数据对延迟、宽带关心而关心“Money”时,使用此选项,以便网络中的路由器进行路径选择时使用花销最小的路径。

TOS 服务建议列表

TOS ANDmask XORmask Suggested Use
Minimum Delay 0x01 0x10 ftp, telnet, ssh
Maximum Throughput 0x01 0x08 ftp-data, www
Maximum Reliability 0x01 0x04 snmp, dns
Minimum Cost 0x01 0x02 nntp, smtp

使用例子

  • The general syntax used to match TOS bits looks like:
    1
    iptables -m tos --tos mnemonic [other-args] -j target
  • The general syntax used to set TOS bits looks like:
    1
    iptables [other-args] -j TOS --set mnemonic

Reference:

  • tos bit manipulation
  • RFC1349