L10 封裝開銷與路由
本實驗使用的程式:models.py。文中指令以課程根目錄為工作目錄;建議下載教材套件,解壓後在 computer-networking 目錄執行。
目的、環境與預測
對應單元:19、21、22。Python 3.10 以上,標準函式庫;在課程根目錄執行。資料性質:離線模型或人工資料分析。
假設 outer MTU 1500,列出 outer IP、UDP、WG 資料標頭與 tag。
執行與紀錄
python3 labs/models.py L10
Windows 可用 py -3 替換 python3。將輸出儲存,記錄日期、Python 版本、參數與預測。
| 條件 | 執行前預測 | 實際輸出 | 差異與解釋 |
|---|---|---|---|
| 原始設定 | 自行填寫 | 貼關鍵欄位 | 寫出依據 |
| 修改設定 | 自行填寫 | 貼關鍵欄位 | 一次改一個變因 |
完成預測與紀錄後,再到解答冊的「預期輸出」核對。
變更與判讀
以 python3 labs/models.py L10 --path-mtu 1492 重算,再考慮實際 padding 和 inner IP/TCP;在紀錄中寫出端點免入隧道的路由例外。
為何不能把 1420 當成所有 VPN 的固定最佳 MTU?若 VPN 端點本身被匯入該 VPN 會發生什麼?
驗證範圍與提交
輸出是明示假設下的模型或人工資料;不能當成真實封包擷取、OS 核心狀態或 Internet 量測。
提交預測、原始/修改輸出、兩個判讀答案與模型限制。評分:預測 20%、紀錄 30%、推理 35%、限制 15%。標準推理見解答冊;輸出中的埠與真實計時可以變動。
B:普通 TLS/TCP 代理的多層預算
人工假設:outer IPv4 MTU 1500,IPv4 header 20、TCP header 20、TLS 1.3 header 5、內部 content type 1、AEAD tag 16;不計 TCP options 及 TLS padding。一份外層 TLS record 的明文包含 20 bytes 代理控制資料,以及一份 1000 bytes 的內層 TLS record(已含其 header 與 tag)。假設整份外層 record 放進一個 TCP 段,求 IP 封包大小與剩餘預算。
再問:若內層分成兩份 record,應如何重算?為何 TLS record 不能普遍當成一個 TCP 段?這是普通雙層模型,不適用 Vision 切換後的 direct-copy 階段。現實的分段、聚合、padding 及 offload 需要實作與擷取證據,不只相加定值。