iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
IT Operation

低延遲網路的維運工程:從 HFT 現場長出來的 30 天系列 第 15 篇

Day 15:轉發模式切換的代價實測

  • 分享至 

  • xImage
  •  

Day 11 我有對這台 Arista 7150 立過一個預測:轉發模式切成 store-and-forward,64 到 1518 bytes 的延遲要多爬約 1163 ns,兩種模式的斜率差 0.8 ns/byte。今天換模式量,結算這兩個數字。

模式切換的生效方式:不需要 reload

先確認這台有哪些選項:

https://ithelp.ithome.com.tw/upload/images/20260922/20184063Pwb7AaGpZx.png

只有兩個轉發模式。Day 11 提過的 fragment-free 與 adaptive,這台沒有。

切成 store-and-forward,立刻量 1518 bytes:

轉發模式 中位數
cut-through 428.0 ns
store-and-forward 1548.0 ns

(428 ns 是還沒扣網卡跟線材的原始值,跟 Day 6 量到的是同一個數字。)

https://ithelp.ithome.com.tw/upload/images/20260922/20184063aynoPztOKk.png
https://ithelp.ithome.com.tw/upload/images/20260922/201840637qEQpQTm1U.png

兩種模式的九點掃描結果

Day 7 那六個長度,加上後來補的 160、192、224 bytes。環境除了轉發模式,其他都跟之前一樣。

https://ithelp.ithome.com.tw/upload/images/20260922/20184063DYAXDePrxg.png

cut-through 那一欄從頭到尾都是 428.0 ns,store-and-forward 隨封包變長往上爬。

160、192、224 bytes 這三列的直連欄沒有另外量,是套用 Day 5 量過的那條平線(64 到 1518 bytes 全是 60.0 ns)。cut-through 與 store-and-forward 兩欄都是實際量到的。

Day 11 預測值與實測值的結算

爬升 斜率
預測 約 1163 ns 0.8 ns/byte
實測 1120 ns 0.7887 ns/byte(六點最小平方)

爬升差 43 ns,3.7%,Day 11 的預測大致成立。少掉的那 43 ns 跟下一節的轉折點有關。

轉折點的位置:落在 160 與 192 bytes 之間

那個 1163 ns 是純算的,1454 bytes * 0.8 ns/byte,算的時候假設整條線從 64 bytes 就開始爬。實際量到的不是這樣。

九點掃描那張圖最反直覺的是前三列。64、128、160 bytes 三個長度,兩種模式量到的值一樣。要到 192 bytes 才分得出來,而且一分出來就是 56 ns。

我原本以為轉折會是平滑的。用 256 bytes 以上四個點擬了一條直線,推算 160、192、224 bytes 的差值(store-and-forward 減 cut-through)會是 22、48、74 ns,然後補量這三點:

frame(bytes) 預測差值(ns) 實測差值(ns) 相鄰斜率(ns/byte)
160 22 0 0.000
192 48 56 1.750
224 74 64 0.250
256 — 84 0.625

https://ithelp.ithome.com.tw/upload/images/20260922/20184063bO9QKgE8ol.png

160 bytes 那點預測 22 ns,實測 0 ns,式子當場作廢。

所以現在只寫得出三句,而且三句都是直接讀資料:

  1. 160 bytes 以下(64/128/160),兩種轉發模式量到的值相同。
  2. 192 bytes 以上分得出來,轉折點落在 160 與 192 之間,範圍 32 bytes。
  3. 256 bytes 以上是乾淨的線性區。

160 到 256 bytes 這一段的相鄰斜率是 0.000、1.750、0.250、0.625 ns/byte,不是平滑過渡。 所以下面報斜率的時候,取樣範圍要一起報,不能把這一段跟線性區混在一起算。

報斜率要連取樣範圍一起報

同一組資料,換幾個點來擬就是不同的斜率:

取樣範圍 斜率
六點(64~1518) 0.7887 ns/byte
九點(含 160/192/224) 0.7989 ns/byte
線性區四點(256 以上) 0.8069 ns/byte

差別是加入幾個還沒開始爬的點。要跟理論的 0.8 比,就用線性區的 0.8069,兩者幾乎一樣。只寫「斜率 0.79」不講是哪幾個點,下一個人重跑就對不起來。

Day 7 判別法的適用範圍限制

Day 7 給過一個可以每天跑的判別法:量 64 與 1518 bytes 兩個點,相減超過 100 ns 就是被切成 store-and-forward。今天有了對照組,可以說它到底有多安全:

1518 bytes - 64 bytes
cut-through 0 ns
store-and-forward 1120 ns
門檻 100 ns

100 ns 這個門檻離兩邊都非常遠,幾乎不會判錯。

但 64 跟 1518 bytes 這兩個端點不能換。今天量到 160 bytes 以下兩種模式一樣,所以有人為了省時間把掃描改成 64 跟 128 bytes,這個判別法會失效且不報錯,每天照常回報「一切正常」。要量就量到 1518 bytes。

還有兩件要寫進變更流程:

https://ithelp.ithome.com.tw/upload/images/20260928/20184063NsiMkUABAU.png

第一,切回去之後要重量一次確認。我切回 default switch forwarding-mode 之後重量 1518 bytes,中位數回到 428.0 ns,才算數。show running-config 說它回去了,那只是意圖。

第二,這個旋鈕不用 reload。它可以在營運時間被改掉,而且不會留下任何重啟痕跡。變更紀錄之外唯一抓得到它的,就是那兩個點的量測。

明天回到交換器本身,看它有哪幾個計數器值得盯。


上一篇
Day 14:前八天量的東西,只有一個是網路
下一篇
Day 16:交換器計數器的判讀順序與實測驗證
系列文
低延遲網路的維運工程:從 HFT 現場長出來的 30 天 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言