Jump to...
redirecting...

Log for Ubuntu 台灣社群

eBPF 漏洞:使用 XDP 處理外向流量 (★ 121 分)

XDP (eXpress Data Path) 是 Linux 中性能最頂尖的封包處理框架,但原生僅支援進站(ingress)流量。Loophole Labs 發現,只要把外向(egress)封包透過虛擬乙太網路介面(veth)對接,讓它們從對端的 RX 隊列進入,就可被視為進站流量並觸發 XDP 程式。這種做法無需修改核心,能直接在現有 Docker 或 Kubernetes 容器中運作,效能較現行方案提高約 10 倍。

在大規模即時遷移容器或虛擬機(VM)時,每個工作負載的所有封包都必須攔截、修改、封裝、加密並轉發到新目標,且不能讓應用程式察覺。要達成上百 Gbps 的跨雲遷移吞吐,線速(line-rate)封包處理是唯一解。傳統作法是使用 eBPF(extended Berkeley Packet Filter)的 Traffic Control(TC)機制來處理外站封包,但 TC 程式運行時要等核心走過路由、防火牆、連線追蹤等多道程序,並且要為每個封包配置 socket buffer(struct sk_buff),效能通常僅能達到約 20 Gbps,遠低於線速需求。

核心判斷進/出站的關鍵在於 RX 隊列:實體網路卡把 DMA(Direct Memory Access)寫入的封包放到驅動分配的 RX 環形緩衝區,接著觸發中斷、複製到驅動的 RX 隊列,這正是 XDP 程式運行的時機。veth 介面對中一端的 TX 隊列傳送封包時,其實是把記憶體指標直接移到另一端的 RX 隊列,讓外站封包「看起來」像是進站。只要在 veth 接口掛載 XDP 程式,並用 XDP_REDIRECT 把封包導回實體介面的 TX 隊列,就能在零拷貝(zero-copy)的前提下以最快速度處理和轉送封包。

採用此技術後,要自行在 XDP 程式中完成校驗和(checksum)和 ARP(Address Resolution Protocol)解析。由於 XDP 不提供 TC 那樣的內建校驗和輔助函式,需要用增量算法逐步更新 TCP 或 IP 校驗和;而 ARP 資料則存放在 eBPF map 中,程式呼叫查表後 memcpy 目的 MAC 到封包標頭。雖然需額外實作這些機制,但也因為跳過核心完整網路棧,整體 CPU 周期消耗大幅降低。

在相同的容器預設網路名稱空間與 veth 架構下,Loophole Labs 使用 iperf3 在兩台 200 Gbps EC2 實例之間測試。iptables 路由的吞吐約 15–20 Gbps,TC 外站程式也僅能維持 ~21 Gbps;Generic XDP 驅動表現反而不及 TC,因其並非在 RX 隊列運行;而 Native XDP 驅動(Linux 4.19+)則實測達到約 194 Gbps,達到線速 12 倍 iptables、9 倍 TC、且誤差更小。這項發現可立即在任何使用 veth 配置的容器環境啟用,無需更換調度器或基礎設施,Loophole Labs 正籌備推出 Docker 網路外掛,未來也可能演進為 Kubernetes CNI 插件。

在 Hacker News 討論中,不少工程師指出這項「漏洞」其實是 veth 設計就已支援 XDP 的特性,早在 2022 年就有人使用類似方法處理 TAP 介面流量,但本帖將之推向生產環境並結合動態校驗和、ARP 管理、以及高效 XDP_REDIRECT,獲得實際量產級效能。有回應提到 DPDK(Data Plane Development Kit)雖能取得極致效能,卻需耗費大量核心輪詢、專用庫與進階設定,不如 XDP 在核心即插即用且與現有 Linux 網路棧整合無縫。整體而言,社群認為這個方案在平衡簡易部署與高效能間具有高度吸引力,尤其適合網路密集型的容器與 VM 遷移場景。

👥 49 則討論、評論 💬
https://news.ycombinator.com/item?id=45812756
掛 VPN 就都順了
Mozilla 長期支援的日本在地社群因 AI 翻譯爭議宣布關閉 (★ 117 分)

日本 Mozilla 支援網站 (SUMO) 的日語在地化社群宣布關閉,結束長達二十年的志工翻譯與支援工作。該社群領導人 marsf 表示,Mozilla 在未經同意的情況下,於 10 月 22 日將機器翻譯機制「SumoBot」直接套用到日語知識庫 (Knowledge Base) 文章上,導致超過 300 篇文章被自動翻譯覆蓋,破壞既有的人工翻譯成果。marsf 強調,SumoBot 的行為未遵守日語翻譯準則,忽視在地化細節,也沒有任何溝通或審核程序,還設有 72 小時自動批准制度,使志工無法繼續培育新參與者。他批評這種處理是「公然違反 Mozilla 使命的毀滅性行為」,並宣布退出所有 SUMO 翻譯工作,同時要求禁止使用他的翻譯成果作為 AI 或機器翻譯訓練資料。

在論壇留言中,其他語言社群的在地化負責人也表達了共鳴。義大利語版負責人指出,他們的版本雖維持原有審稿準則,但自動化同樣導致新志工無法學習,因為 SumoBot 會在文章更新後立刻「搶先翻譯」,讓人只能做校對工作,削弱了志工的參與感和貢獻意願。他強調每個語言社群應有自主選擇是否導入機器翻譯的權利,而不該被統一強推。

在 Hacker News 的討論中,許多留言對 Mozilla 的處置方式提出批評。有人指出,官方回覆中的「很遺憾你們有這樣的感受」語氣顯得官僚且缺乏誠意,若真是操作錯誤,應該立即回滾變更並檢討流程,而非邀請受害方「開通話進一步討論」。部分留言認為這反映出組織忽視文化溝通方式,尤其日本社群重視的「根回し (nemawashi)」協商文化,在決策前應先釋出信息以求共識,而非突襲式啟動自動化工具。

也有網友從更廣的文化層面檢討 AI 與大型語言模型 (LLM, Large Language Model) 翻譯的副作用。他們指出現代機器翻譯雖接近母語水準,卻抹平了各地語言的文化差異,使人閱讀時產生「語氣怪異」或不合語境的疏離感。這種文化同質化的現象讓地方語言社群失去原本的特色與歸屬感。其他人則指出,Mozilla 的行動破壞了志工社群的信任與自治,讓原本投入熱情維護本地化內容的志願者感到無用武之地,是典型的自上而下推動自動化導致社群瓦解的例子。

整體來看,此事件不僅是一次技術管理失誤,更凸顯自由軟體與志工社群之間的理念落差。AI 翻譯雖能提升效率,卻若失去人味與尊重在地文化,就可能在「最佳化」的名義下摧毀長年累積的志工心血與社群信任。

👥 30 則討論、評論 💬
https://news.ycombinator.com/item?id=45830770
這很Mozilla
嫌自己不夠討人厭的公司💩
如何將 Emacs 深度整合到我的日常運算環境 (★ 63 分)

Emacs 已經成為作者日常運算環境的核心,透過在 Hyprland(基於 Wayland 的視窗管理員)下執行,他將幾乎所有操作都導入 Emacs,只要不需要處理大量影音,都盡量在編輯器裡完成,達到「腦中即緩衝區」的流暢感。為了實現這種深度整合,他撰寫了一個以 Go 語言開發的 Emacs 啟動程式,可從系統任意位置呼叫 Emacs 指令,取代原本在 bash 以 sleep 等待的笨重做法,據說提升了十倍效率。主要透過自訂快捷鍵快速啟動 Emacs、開啟內建 vterm、Universal Launcher(類似 wofi/rofi)來整合密碼管理、SSH、書籤、表情符號和 TODO,並結合 org‐roam 做知識網絡管理。

在不「全盤採用」EXWM(Emacs X Window Manager)的前提下,作者認為 Emacs 單線程若出現問題便可能當機,且當前 Linux 生態在 Wayland 的發展趨勢下,僅依賴 X11 的 EXWM 似乎未必長遠。於是他嘗試在 Wayland 環境中複製 EXWM 的功能,雖然無法全部重現,但能在一定程度上保有與 Emacs 協調的鍵位和視窗操控,並保留未來以 Emacs 做為完整視窗管理員的可能性。

在 Hacker News 討論中,不少開發者以工匠或廚師維護工具、備齊工具的比喻來認同作者的想法,強調當工具「不拖後腿」時,創造力和生產力才得以釋放。Emacs 統一介面和指令對習慣鍵盤操作的資深使用者來說,能大幅減少在多種 GUI 之間切換的摩擦,不過對不擅長自訂設定的新手或只想「開箱即用」的使用者而言,卻也可能因學習曲線陡峭而望之卻步。

關於效能,有人指出最新 Emacs 版本透過原生編譯(native compilation)和 so‐long 套件,對超長行或巨量文字檔的處理已有顯著最佳化,基本操作如搜尋、捲動和語法標示都已相當流暢。EXWM 在 Wayland 下的單線程限制對他們而言影響不大,多半在執行瀏覽器或 PDF 時另起獨立 session,以維持穩定與效能。

社群也推薦 Mickey Petersen 的《Mastering Emacs》、Emacs Rocks 等新手資源,建議先以原生安裝熟悉核心概念,再依需求新增外掛。部分人甚至呼籲不應重複發明編輯器功能,而由 AI 自動生成最理想的整合式編輯環境,藉此結束多年來的「Editor War」。

👥 53 則討論、評論 💬
https://news.ycombinator.com/item?id=45832341
畢竟是Emacs🤔