這 30 天不是設備設定教學,我想弄清楚的是另一個問題:低延遲網路的設備調整完、驗收過、上線了,然後呢?能保證它下週還是一樣快嗎?如果真的慢了,我沒把握自己說得出慢了多少。
進公司大概半年,有天隔壁桌問我一句:「網路是不是有問題?」我登進交換器掃 counter,CRC、discard 都是零,ping 也通,就回他跟平常一樣看起來很正常。
他走了我才想到,我根本不知道正常是多少。手上那些數字只能告訴我東西沒壞,沒辦法告訴我它有多快。他要是再追問一句「跟上週比呢」,我拿不出任何數字。
網路工程師很習慣用 ping 和 iperf3 判斷網路有沒有通以及速度快不快,一般環境這兩個工具夠用。但 ping 量的是來回時間,用的還是軟體時戳,誤差本身就比你想量的東西大。拿它去判斷一台 cut-through 交換器有沒有變慢,大概等於拿捲尺量頭髮直徑。
所以這 30 天從最底層開始,先把量測做對,再談調校跟維運。
用一張有硬體時戳的 FPGA 網卡,把交換器的兩個 port 接到同一張卡的兩個 port 上:
┌─────────────────┐
│ Arista 7150 │
│ Et1 Et2 │
└───┬─────────┬───┘
│ │
線1 線2
│ │
┌───┴─────────┴───┐
│ port0 port1 │
│ ExaNIC X25 │
│ (同一顆時鐘) │
└─────────────────┘
同一張卡共用同一顆時鐘,兩端時戳可以直接相減,不會有跨設備 clock offset 的問題。單向延遲量得出來,靠的就是這件事。
但這樣量到的數字裡還包含網卡自己的收發路徑跟線材。所以要先做一次校正:把 port0 跟 port1 直接對接,量出儀器本身的延遲,之後每次都扣掉。線材要用同型號的,這樣才知道它每公尺吃掉多少時間。光纖大概一公尺 5ns,那個數字後面要扣掉。
這 30 天所有調校都跟這個基準比,基準錯了後面全錯。
| 階段 | 天數 | 要弄的事 |
|---|---|---|
| 把量測做對 | Day 2-8 | ping 為什麼不能用、硬體時戳、線速擷取,量出 port-to-port 延遲,包成可重跑的巡檢腳本 |
| 講原理 | Day 9-14 | 延遲的四塊、多播、cut-through 對 store-and-forward、封包從線上到應用程式的七關 |
| 上設備和主機 | Day 15-26 | 計數器判讀、LANZ 抓 microburst、告警門檻怎麼推、ethtool 調校、IRQ 綁核、CPU 隔離對抖動的影響 |
| 收尾 | Day 27-30 | 調校怎麼驗證(看 p99 不看平均)、巡檢自動化、防火牆 offload 的代價 |
驗收當天量到的數字很漂亮,三個月後有人說「最近好像有點卡」,你要拿什麼跟當初比?那個數字是誰量的、怎麼量的、還能不能重現?重現不出來就等於不存在。
所以每篇最後都有一段「這件事在維運上要幹嘛」:數字要變成哪個監控項、門檻怎麼設、改完設定怎麼證明沒弄壞東西。
明天先從 ping 開始,看看它到底差多少。