先來理解阻抗匹配,但我不按傳統方式解釋,因為傳統方案你要先理解如何定義阻抗,然后再學習什么是輸入阻抗和輸出阻抗,最后再看如何讓它們匹配,而讓它們匹配的目標僅僅是信號不反射,以最大能效被負載接收。
既然這樣,何不直接從信號反射以及如何讓它不反射入手。
于是我換一種方式解釋阻抗匹配。
假設一個非常良好的電路,它可以最佳(最逼近理想狀態,極端接近無損)的方式傳輸脈沖信號:
現在拿掉 10 歐負載換成 100 歐負載,它對電壓推動的電流阻礙顯然更大(樸素的阻抗),會造成電容充電超過 5 V,接下來信號通過這段電路后,額外的 (m - 5)V 會觸發電容往回放電,而額外放點產生額外信號:
反射的本質在于處處存在的電容(電路里的電容以及分布電容),因此我省略了處處存在的電感(電路里的電感以及分布電感)。解法也很直接,在前面串聯一個 90 歐電阻,或者在后面并聯一個滿足 1/x + 1/100 = 1/10 的電阻即可。
現在再來深入理解一下背后的成因就簡單了。電容有什么特殊的?
信號可看做變化的電壓,變化的電壓可對電容充電,而電容異步放電則產生新的變化的電壓,和信號疊加就污染了信號。變化導致的新變化被釋放與原變化疊加,而電容恰好可存儲電荷產生變化的電壓。解決方案就是讓負載把變化的電壓全部吸收而不被異步保存在電容里。
當電阻變化時必須小心翼翼處理電容和電阻的關系。處理好關系的電路就是阻抗匹配電路,意思是發出的信號恰好是負載完全吸收的,沒有反射,否則就要白白消耗掉能量,這部分能量恰好來自信號反射,反射的能量永遠只有負效應。這是一個自然律,屬于守恒律的一種體現,不可違背。
直流阻抗匹配可稱做電阻匹配,即兩個電阻相等時,功率最高。雖然無法從變化的電壓理解直接阻抗,但在微觀層面,兩個電阻不相等時,考慮分布電容和分布電感自感,它依然是電容充放電導致的信號反射導致。
有趣且稍微諷刺的是,在宏觀的網絡傳輸領域,對于廣域網,專家們采用了直流電阻匹配模型,卻完全沒有注意它的微觀結構,而對于 DCN,專家們采用了交流信號模型卻忽略 “阻抗匹配”。
在廣域網,buffer 被單獨考慮,就像一個直流回路的固定的電阻,雅各布森管道中,bdp = buffer,但實際上,它的作用應該是交流回路的電容,這個認知顛倒,是網絡擁塞和丟包重傳等復雜問題的根源。
一個大 buffer 后一個小 bw 端口,就像一個大電容后并聯一個小電阻,電容非常容易被過度充電后 “放電反射噪聲”,而人們對其視而不見的原因僅僅是因為數據包不會向前反射。
由于大電容放電受到到達信號和負載吸收的共同影響,放電時刻不確定,和 buffer 清空時刻不確定一樣,而 sender 重傳取決于 rtt,而 rtt 部分取決于 buffer,重傳流量確實是 buffer 的反射,而重傳流量與原始流量疊加在一起,對 buffer 進行無差別影響 “充放電”,形成一個閉環回路。而整個回路的傳輸能效取決于阻抗是否匹配,顯然按照上面的論述,廣域網的阻抗是不匹配的,因此傳輸效能很低。
遺憾的是,人們一開始就沒有向著阻抗匹配的方向(delay-based cc 有這個意思)去優化而選擇了 aimd,而 aimd 準確說并不是做擁塞控制的。
變化的變化產生新的變化疊加到原始變化,這是非常復雜的阻抗匹配問題,在 DCN,人們竟然敢以為 PFC 是方案而不是問題本身。簡單講,PFC 就是個故意的反射實例,任何數據只有被 receiver 接收后才算數,否則被阻滯在網絡中并不比丟掉它好,這兩種情況對于 receiver 而言都是沒收到。
人們一直試圖端到端區分擁塞丟包和隨機丟包或者試圖找一種算法直接檢測擁塞,如果擁塞,就意味著存在某種失配,調整 cwnd/pacing 是唯一應對。檢測到擁塞,就調整 “阻抗”,這是一種很自然的方式,減少電容電荷,避免反射。
此前我提到過,端到端由于信息精度存在上限,無法區分丟包類型,更別提擁塞檢測,但隨后我也提過,轉發節點的信息非常精確,它可通過 ECN 間接告訴 sender,然而還有更有效的方法,直接調整 buffer 或帶寬,連帶著調整 wred,這就是阻抗匹配的思路,要么sender 串個電阻,要么 receiver 并個電阻。
統計復用網絡上的阻抗匹配本身只有統計意義,要拿 buffer 統計期望說話,任何瞬時度量對整體結果都無效,這是與電路的阻抗匹配完全不同的地方。但與此相關,這就是我一直質疑 bbr 的點,bbr 的推薦參數配置到底有多大的普遍性呢,它試圖以單流精確度量網絡的方法論是不是也是錯誤的呢?
最后看一個與電路類似的系統,人體循環系統,全靠時鐘滴答驅動,精確阻抗匹配。
從心臟泵出的血具有波動性,即心跳和脈搏,依靠這種波動動力將血液推到全身。進化幾乎完全避免了血液反射造成的能量損耗,方案很簡單,主干和分支截面積收斂比等于 1。隨著血管分支越來越多,血管越來越細,而越細的血管阻力越大,血流越慢,這正好可以讓血細胞安排各類氧氣,二氧化碳,營養物質在如此低速下上下車:
網絡收斂比為 1,完全避免了擁塞(血栓容錯的彈性不考慮),值得注意的是,循環系統不以拓撲顯示差異,而以血管形態(長度和密度)顯示差異,比如不同器官的血管形態也不同,但無論如何,干線和分支的收斂比都是 1,最終某處分得的血量就是 C * l1/L1 * l2/L2 …
可見,三種形態的網絡,電路,互聯網/DCN,循環系統展示三種特別之處,但無論如何阻抗匹配的含義是一致的:減少流量的變化引起新的變化與原始流量疊加,這情況的后果就是能耗被白白浪費掉。
浙江溫州皮鞋濕,下雨進水不會胖。