24.03.2015 Views

Unix Toolbox - 中文版 - LinuxTone.Org

Unix Toolbox - 中文版 - LinuxTone.Org

Unix Toolbox - 中文版 - LinuxTone.Org

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

其 他 非 标 准 但 好 用 的 工 具 有 hping (www.hping.org), 她 是 一 个 IP 分 组 组 装 / 分 析 器 , 和 fping<br />

(fping.sourceforge.net)。fping 可 以 在 一 个 循 环 队 列 (round-robin fashion) 中 扫 描 多 种 主 机 。<br />

4.12 流 量 控 制 (QoS)<br />

— 网 络 —<br />

流 量 控 制 管 理 着 一 个 网 络 的 队 列 、 流 量 监 控 、 调 度 以 及 其 他 流 量 设 置 (traffic<br />

例 使 用 Linux 和 FreeBSD 的 能 力 来 更 好 的 利 用 带 宽 。<br />

parameters)。 以 下 简 单 实 用 的 示<br />

上 传 限 制<br />

DSL 或 有 线 调 制 解 调 器 有 一 个 很 长 的 列 队 来 提 高 上 传 吞 吐 量 (upload throughput)。 然 而 用 一 个 快 速 的 设 备 ( 如 以<br />

太 网 ) 填 充 这 个 列 队 将 大 大 减 少 交 互 性 。 这 就 是 限 制 设 备 上 传 速 度 有 用 的 原 因 , 以 匹 配 调 制 解 调 器 的 实 际 能 力 ,<br />

这 可 以 有 效 提 高 交 互 性 。 设 置 大 约 为 modem 最 大 速 度 的 90%。<br />

Linux<br />

给 512K 上 传 速 度 的 modem。<br />

# tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540<br />

# tc -s qdisc ls dev eth0 # 状 态<br />

# tc qdisc del dev eth0 root # 删 除 队 列<br />

# tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540<br />

FreeBSD<br />

FreeBSD 使 用 dummynet 来 控 制 带 宽 , 其 配 置 工 具 为 ipfw。Pipe 用 来 设 置 限 制 带 宽 的 单 位 [K|M]{ 比 特 / 秒 | 字 节<br />

/ 秒 },0 意 味 着 没 有 限 制 。 使 用 同 样 的 pipe 数 字 可 重 新 配 置 它 。 举 个 例 子 , 限 制 上 传 带 宽 为 500K。<br />

# kldload dummynet # 如 有 必 要 加 载 这 个 模 块<br />

# ipfw pipe 1 config bw 500Kbit/s # 创 建 一 个 带 宽 限 制 的 pipe<br />

# ipfw add pipe 1 ip from me to any # 转 移 所 有 上 传 进 入 这 个 pipe<br />

服 务 质 量 (Quality of service)<br />

Linux<br />

使 用 tc 的 优 先 级 队 列 来 优 化 VoIP。 在 voip-info.org 或 www.howtoforge.com 上 可 以 看 到 完 整 的 例 子 。 假 设<br />

VoIP 使 用 UDP 端 口 10000:11024 并 且 使 用 eth0 设 备 ( 也 可 为 ppp0 或 so)。 下 列 命 令 定 义 了 三 个 队 列 , 并 且<br />

用 QoS 0x1e( 设 置 所 有 位 ) 强 制 VOIP 流 量 到 队 列 1。 默 认 流 量 流 入 队 列 3,Qos Minimize-Delay 流 入 队 列<br />

2。<br />

# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0<br />

# tc qdisc add dev eth0 parent 1:1 handle 10: sfq<br />

# tc qdisc add dev eth0 parent 1:2 handle 20: sfq<br />

# tc qdisc add dev eth0 parent 1:3 handle 30: sfq<br />

# tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \<br />

match ip dport 10000 0x3C00 flowid 1:1 # 使 用 服 务 端 端 口 范 围<br />

match ip dst 123.23.0.1 flowid 1:1<br />

# 或 / 和 使 用 服 务 器 IP<br />

状 态 和 移 除 :<br />

# tc -s qdisc ls dev eth0 # queue status<br />

# tc qdisc del dev eth0 root # delete all QoS<br />

计 算 端 口 范 围 和 掩 码 (mask)<br />

用 你 所 计 算 的 端 口 掩 码 来 定 义 tc 过 滤 器 的 端 口 范 围 。 查 询 2^N 端 口 范 围 结 尾 , 推 断 范 围 并 转 换 成 十 六 进 制 。<br />

这 就 是 你 的 掩 码 (mask)。 例 如 10000 -> 11024, 它 的 范 围 是 1024。<br />

# 2^13 (8192) < 10000 < 2^14 (16384) # 结 尾 是 2^14 = 16384<br />

# echo "obase=16;(2^14)-1024" | bc # 掩 码 是 0x3C00<br />

FreeBSD<br />

假 设 最 大 连 接 带 宽 为 500Kbit/s, 我 们 使 用 优 先 级 100:10:1 定 义 3 个 队 列 给 VoIP:ssh: 剩 余 所 有 。<br />

# ipfw pipe 1 config bw 500Kbit/s<br />

# ipfw queue 1 config pipe 1 weight 100<br />

20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!