Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux TC 流量控制實戰:HTB 分層隊列與 iptables 標記實現精準頻寬管理

編輯:系統常見問題解答

企業網路常面臨頻寬濫用或關鍵業務搶佔資源的問題。Linux 核心內建的 TC (Traffic Control) 提供強大的流量整形能力。本文系統介紹 TC 核心概念(qdisc、class、filter)、HTB 階層式令牌桶原理,並示範結合 iptables 標記實現針對特定 IP 的差異化頻寬控制。

核心組件

  • qdisc (Queueing Discipline):隊列規則,控制封包發送速率。常見:pfifo (FIFO)、HTB (Hierarchical Token Bucket)、SFQ、RED。Linux 僅能良好控制發送隊列(控發不控收)。
  • class:定義流量控制策略(如保證頻寬 rate、上限 ceil、優先級 prio)。不同 IP 可對應不同 class。
  • filter:將封包分類到對應 class。常用 fwmark (iptables 標記) 或 u32 (封包頭匹配)。

封包處理流程

封包 → iptables (打標記 mark) → TC class → TC queue → 網卡驅動

實戰範例:eth0 外網介面限速

# 1. 根 qdisc (HTB),handle 1:,預設 class 1
tc qdisc add dev eth0 root handle 1: htb default 1

# 2. 建立 class:保證 2Mbps,上限 4Mbps,優先級 2
tc class add dev eth0 parent 1: classid 1:30 htb rate 2mbit ceil 4mbit prio 2

# 3. iptables 標記特定 IP 流量
iptables -t mangle -A POSTROUTING -s 192.168.1.100 -j MARK --set-mark 30

# 4. filter 將 mark 30 導入 class 1:30
tc filter add dev eth0 parent 1: protocol ip prio 1 handle 30 fw flowid 1:30

關鍵參數:rate 保證頻寬(所有子類總和 ≤ 父類),ceil 借用上限,prio 數值越小優先級越高。

Copyright © Windows教程網 All Rights Reserved