[點晴永久免費OA]說說過量 tcp pure ack 的利弊
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
tcp 的 ack 實在太多了,如果互聯網上 80% 報文是 tcp,那么其中 1/3 的報文都是 ack,此前寫過幾篇短文,比如 丟棄一些 pure ack 和 注入或利用 pure ack。 簡單說,tcp 依靠 ack 提供 self-clock,發送 data 越多,ack 越多,如果 ack 與 data 不同步,將出現各種問題,詳見 rfc2525-Stretch ACK violation。 正如哥斯拉將會壓垮自身一樣,tcp 的 pure ack 也會隨著帶寬進一步提高對系統帶來越來越大的重負。pure ack 是小包,與 data 數量線性同步的 pure ack 對系統帶來不對稱的壓力,系統最怕高頻小包。 典型的三種場景不得不防,pure ack 在 sender/receiver 端與 data 競爭 cpu,pure ack 在 wifi 等 csma 網絡與同流 data 競爭信道,pure ack 在交換節點與 data 競爭 buffer 和帶寬。無論哪一種問題,都因摩爾定律落后于帶寬發展而日趨嚴重。 在端側,pure ack 的每次處理需要一次 cpu 中斷,而定期輪詢將損害 delivery rate 計算并降低靈敏度;在 wifi,每個反向 pure ack 都要和正向 data 競爭時隙,以 2:1 為例將侵占系統 1/3 的帶寬資源;在交換節點,大量資源用于管理大量 pure ack,對 data 照顧不周將加劇擁塞,特別在丟包和恢復階段,tcp 的 data/ack 將達到 1:1,對交換機資源占用更高,越丟包越容易更丟包。 固定資源的系統,tcp 最終吞吐將被自身 ack 限制在固定比例,ack 損耗隨處理器和帶寬的不對稱發展趨向增加。 lro,wifi frame-aggregation 等治標不治本的技術來掩蓋問題也不知是福是禍,很少有人能認識上述三個場景的問題,甚至很少有人意識到它們存在。 tcp 在 100Gbps+ 的理論吞吐有一半,另一半資源用來處理 pure ack 了,允許 tso/lro/ack-aggregation/big-tcp 再擠出些帶寬,勉強到 70% 甚至 90%,但擠牙膏皮顯然毫無意義,就看 1.6Tbps 網絡中 tcp 如何應對。問題在 tcp self-clock 對 ack 太過依賴。 問題的意義在于新協議而不是如何改進 tcp。你會將 tcp 某特征抄進新協議嗎?教科書里教的都是這特征解決了什么問題,而只字不提它是哪些問題的所在。因此我們看到一個又一個的 yet another tcp。 同樣基于 tcp ack 太多的問題,果真百害無一利嗎? tcp ack 實在太多,但并非沒用,正如 self-clock 顧名思義,流量由 ack 觸發。在如 clos/spine-leaf 這種規整且局域對稱的拓撲下,路徑也對稱,交換機可分析 ack 提前預期大流量,對反向的 ack 整形即可對未來流量整形,從而提前避免擁塞。這比等大流量真正到了再反壓或者丟包要好太多。 對于 tcp 長連接,上述方法可以捕捉源自同一 receiver 但目標卻是不同 sender 的大量 pure ack 從而預期一次潛在的 incast,對這些扇出的 pure ack 進行 pacing 整形,就可消除未來的扇入 incast,是不是很有趣。 這思路適用于一切規則拓撲下的傳輸協議用來消除 incast,規則拓撲下,交換機可分析途徑的 request 而提前預知 response 流量特征,在獲知將來潛在擁塞后,交換機可對這些 request 整形,間接控制 response 流量。 看起來像是在利用 pure ack,實際是在利用規則拓撲,規則拓撲中,交換機比端對流量具有更全局且精確的預期,得益于交換機知道流量源自哪里去往哪里。在同一尺度的網絡中,規則相通,問題也相通。在廣域網中,分布式特征更傾向于端到端控制,因為傳播時延太大,拓撲不對稱,交換機它算不準。 周末的文章 incast,擁塞控制,內存墻的秘密 我的一個回復 “數據中心服務器扇出每個 request 都攜帶唯一的 expired id,這個id 在請求端生成,每個 id 均唯一,該 id 表示一個時間戳,指示在發送 response 前等待多久…”,expired id 只為放大波動,每臺服務器都受負載隨機波動而波動,將這個波動放大到交換機帶寬的粒度,incast 隨之消失。這事實在廣域網能得到印證,廣域網沒有 incast,原因就是多級鏈路,長距離放大了波動,從而消除了全局同步。隨機修剪光纖長度就是想在數據中心人為放大隨機波動。 回到 pure ack 過多問題,如果數據中心可利用 pure ack 度量或預測潛在流量特征是因為網絡足夠規則,那么在廣域網,1:2 的 data/ack 比例則沒必要,廣域網波動性被放大而損害的預測精度損失不會隨樣本增加而緩解,按照大數定律,樣本增加只能更精確測量波動本身,而波動是滯后的,擁塞控制要做的是在更粗粒度感知波動而不是精確測量波動。 以我的從業經驗,細粒度度量和粗粒度度量相比,對于預測未來鏈路畫像,并不能更精確。用歷史預測未來更多的是經驗走勢,而它本就是粗粒度的。 足球場的面積,腿腳的靈活性決定了球門的大小,同時也約束了上場人數,因為人數不能改變每一個次射門的進球概率,人數過少或過多都將降低觀賞性。這是尺度決定的,相反,將桌球打進直徑 10cm 的洞卻是每一個桌球玩家的基本要求。 tcp 說舊不舊,quic 幾乎就是 yet another tcp,但 tcp 確實很舊,當我們要優化 tcp 或迭代一個新協議時,不能被表面現象牽著鼻子走,一定要回到 1970 年代彼時彼刻的現實,你會發現 tcp 幾乎一切的設計都出自四個字,簡單能用。所以也就沒有那么多為什么和好不好了。tcp 后來的問題并不影響它的可用性,可如今人們幾乎把高性能 tcp 玩成了煙花特效,但當人們真去設計一個試圖取代 tcp 的新協議時,卻把那些導致低性能的特性也一并抄了去,結果新協議也只是可用,并不簡單,在它針對的范圍外也不高效。 浙江溫州皮鞋濕,下雨進水不會胖。 ———————————————— 版權聲明:本文為CSDN博主「dog250」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/dog250/article/details/134649784 該文章在 2023/12/26 10:03:01 編輯過 |
關鍵字查詢
相關文章
正在查詢... |