傳統 Traceroute 的三大先天不足
- 封包爆炸:每躍點需 2 個封包 (探測 + ICMP TTL Exceeded),n 躍點需 2n 個封包,耗時長、負載高。
- 路徑變動盲區:連續發送的探測封包可能走不同路徑,結果拼湊出的路徑可能從未真實存在。
- 單向視角:僅能追蹤「去程」,回程路徑 (往往非對稱) 完全不可見。
提議方案:IP Traceroute Option + ICMP Traceroute Message
核心創新:在單一探測封包中攜帶「路徑記錄器」,沿途路由器直接回報,n+1 個封包完成雙向路徑記錄。
IP Traceroute Option 格式 (Type 82 = Copy=0, Class=2, Number=18)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F=0| Class=2 | Number=18 | ID Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outbound Hop Count (OHC) | Return Hop Count (RHC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- ID Number:發送端自訂,用於匹配回應訊息 (非 IP ID)。
- Originator IP:強制指定來源 IP,支援 Source Route 選項場景。
- OHC:去程已經過路由器數 (發送端置 0)。
- RHC:回程已經過路由器數 (去程置 0xFFFF 區分方向)。
ICMP Traceroute Message (Type 30)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=30 | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID Number | OHC | RHC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Output Link Speed (bytes/sec) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Output Link MTU (bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Code:0=轉發成功,1=無下一跳丟棄。
- Output Link Speed/MTU:關鍵創新 —— 直接回報出介面頻寬與 MTU,無需額外探測即可發現瓶頸鏈路與 MTU 黑洞。
- 無 IP Traceroute Option (避免迴圈)。
- TOS/Precedence/TTL 繼承自觸發封包。
協議狀態機
發送端 (Originator)
- 構造探測封包 (ICMP Echo Request 或任意載荷) + IP Traceroute Option (OHC=0, RHC=0xFFFF)。
- 發送 → 收集 ICMP Type 30 回應 → 依 OHC/RHC 重建去程/回程路徑。
- 檢測遺漏:OHC 不連續 → 該躍點未回應 (被過濾/丟包)。
目的主機
- 收到帶 Option 封包 → 若需回應 (如 Echo Reply) → 保留原 Option,填入 ID、OHC、Originator IP,RHC=0 → 發送回程封包。
- 不增加 OHC、不產生 ICMP Traceroute 訊息。
中繼路由器
- 轉發帶 Option 封包時 → 產生 ICMP Type 30 給 Originator IP。
- 若 RHC=0xFFFF (去程) → OHC+1;否則 (回程) → RHC+1。
- 回報介面 Speed/MTU (未知填 0)。
- 轉發行為 完全不受 Option 影響 (路徑不變)。
優勢總結
| 維度 |
傳統 Traceroute |
IP Option Traceroute |
| 封包數 (n 躍點) | 2n | n+1 |
| 路徑一致性 | 弱 (連續探測可能走不同路) | 強 (單一封包端到端) |
| 回程路徑 | 不可見 | 原生支援 (目的主機保留 Option 回應) |
| 鏈路屬性 | 無 | 原生回報 Speed/MTU |
| 部署門檻 | 零 (所有路由器支援 TTL Expired) | 需路由器軟體更新支援新 Option/ICMP |
| 相容性 | 完美 | 不支援節點視為無選項正常轉發 (需防火牆放行 Option) |
現實部署障礙與現狀
- 需所有路徑上路由器支援 → 公網部署極難 (異構廠牌、舊韌體、安全策略封鎖 IP Option)。
- 防火牆常丟棄帶 IP Option 封包 (RFC 1812 建議) 或封鎖 ICMP Type 30。
- IETF 草案 (draft-ietf-ipngwg-traceroute-00) 止步於 1990 年代,未成標準。
- 現代替代方案:
— Paris Traceroute:控制流標識 (Flow Label/TCP/UDP 埠) 固定路徑,解決負載平衡路徑抖動。
— Dublin Traceroute:NAT 感知、多路徑枚舉。
— Tracebox:探測中間盒 (Middlebox) 行為。
— Intel iTrace / In-band Telemetry (INT):可編程資料平面直接內嵌遙測資訊。
教學與研究價值
雖未大規模部署,但該草案展示了「在封包中攜帶狀態、路由器就地處理、目的端回傳」的設計模式,深度影響後續:
- IPv6 Hop-by-Hop Options / Destination Options
- In-situ OAM (IOAM, RFC 9197)
- Alternate Marking (RFC 8321)
- 可編程資料平面 (P4/INT) 遙測架構
研讀此草案,能深刻理解主動測量協議設計的核心權衡:部署成本 vs 資訊豐富度 vs 干擾最小化,是網路測量演進史的關鍵一環。