[#隨緣家書📖]中美貿易戰爆發不久,就牽涉到實質上的高科技問題,而被冠以「科技冷戰」之名。不少人認為科技問題源於經濟問題,例如美方對中興、華為等公司的禁令,但事實上,中國在互聯網領域也希望「大有為」,有關的建設,已鋪陳了很多年。香港因為歷史上的特殊角色,一直較少面對審查,對香港人來說,互聯網代表開放...
[#隨緣家書📖]中美貿易戰爆發不久,就牽涉到實質上的高科技問題,而被冠以「科技冷戰」之名。不少人認為科技問題源於經濟問題,例如美方對中興、華為等公司的禁令,但事實上,中國在互聯網領域也希望「大有為」,有關的建設,已鋪陳了很多年。香港因為歷史上的特殊角色,一直較少面對審查,對香港人來說,互聯網代表開放、全球化和無國界。但中國官方多年來奉行「有中國特色」的網絡觀,在數字時代全面來臨之前,就建立了「防火長城」,到近年再將這套治理總結為「網絡主權論」。中國的互聯網治理,無疑與一般理解「網絡就是公海」的理念相違背。美國對中國的中國科技制裁力度之大,似乎也指向中國獨特的互聯網體制。
互聯網從美國開始興起,「西力東漸」以來,前蘇聯和中國面對科技的態度,卻同中有異。前蘇聯相對更響應互聯網風潮,有很多進口的接通外部的互聯網硬件,雙方的網絡交互融合的程度,要比中國更高。雖然俄羅斯也有自己版本的社交網絡,如「參考」Facebook的Vkontakte (VK,後來董事會被俄方收購),俄國媒體監管機構和法院亦曾下令Telegram(也就是在香港這波反逃犯條例運動大放異彩的平台)交出加密金鑰,但俄國網民也依然依賴外國社交傳媒,在網上高調批評普京的言論,隨處可見,成了俄羅斯證明「民主暢順」的重要憑藉。因為這類歷史原因,俄國政府沒有「網絡長城」,政權對網絡的干預和審查,在國際上也被認為「不及中國高效率」。中國官方對網絡的看法,一開始則極為謹慎,在互聯網波及中國之初,只建立了極少網絡端口接通外國,而互聯網技術在中國,幾乎是與防火長城一同成長。對於現在這一代的內地年輕人來說,防火長城以及政府的訊息干預,已是日常生活一部份。
上述差異的成因之一,在於中國沒有經過前蘇聯崩潰後轉型的混亂,網絡恰好遇上經濟崛起,自主程度更高,通過國企和國家資本的擴張,「防火長城」是一個涉及官、民、公私營企業,有不同持份者共同營運的系統。技術上,「防火長城」是一套冰冷的程式,也涉及大量人力參與,不斷更新審查技術和標準。中國更成功複製了西方各種互聯網服務,例如微信、QQ、新浪微博、淘寶等,它們彼此連結,成為了一套內聯網,而且不需要經過「本地化」服務。這些網絡服務,一開始自然是「參考」西方的同類服務,但建立之後,在龐大的國家資本加持下,繼續擴張改進,發展得比「本尊」更龐大。這些內地網絡巨頭,往往發展成全包式服務,基本上可以解決衣食住行的一切需求。例如QQ是一個社交媒體,又是運行嚴肅遊戲大作的平台;後來各種社交媒體又整合了電子錢包,率先促進了一個大範圍的、中國本土的「無現金化」現象。
這些企業或多或少都與政府有各種關係,因此在訊息爆炸的年代,中國那道「長城」也在同步爆炸成長──至少,比起俄羅斯更「高效」。對中國網民而言,除非有特別資訊好奇,否則只需要待在這政商合一的「內聯網」,就可以解決需求,「互聯網無法與外國互聯」,對好些人來說都不是問題。可以說,中國一向是走「網絡自主」、「主權化網絡」的路線,近年在政策文件和口號出現的「網絡主權」,似乎只是「總結經驗」的結果,而不是先有了口號,再落實到現實。這一套理論,放在香港人身上,肯定完全不可能接受。
對內,中國官方近年開始整合網絡管理權力,創設新部門。例如「中共中央網絡安全和信息化領導小組」、「中央網絡安全和信息化領導小組辦公室」、「中國國家互聯網信息辦公室」等中央級部門;解放軍也有「戰略支援部隊」。對外,一帶一路」之中也有「中國—東盟信息港」和「數字絲綢之路」的倡議;自國家主席習近平上台之後,「世界互聯網大會」就開始每年舉行。通過這些平台和活動,中國在國際上逐漸成為「網絡非完全開放陣營」的支持者,甚至宣導者,即是「國家有權介入網絡」這個主張,也逐漸影響中俄以外的國家,例如東南亞、中亞諸國。發展下去,究竟這些國家會否自己組成一個巨大「區域內聯網」,不再需要與西方互聯,亦未可知。
相較下,俄羅斯由於受歷史因素影響,在軟硬件上較與西方接軌,亦沒有建立自己的網絡服務內聯網,但不代表不擔心「網絡安全」。俄羅斯今年正採取有別於中國的另一種方式,去鞏固自己的「網絡主權」,具體來說就是建立自己的「網域名稱系統」(DNS),來取代全球網民普遍採用的DNS系統。DNS上網時的作用,就是一個中介和翻譯員,我們鍵入的網站網址,會通過DNS轉換成電腦懂得理解的IP,IP也會被轉換成人類熟悉的英文網址。通過從頭建立的自家DNS,俄方也是希望將網絡活動局限於俄國境內,不只是連接方式,而且連資料也儲存於俄羅斯國土,受俄國法律約制。通過這個實驗之前,俄羅斯自然通過了一連串法律,令外國互聯網公司在俄羅斯做生意,要將資料儲放在俄國。這似乎與蘋果公司因為法律原因,而將中國icloud用戶的資料存放在貴州伺服器一樣。
俄羅斯與中國一樣,與美國相比,在網絡發展中屬於後進,憂慮特別多,但自身的互聯網又難以劈掉重練,於是就發展出顛覆西方網絡的技藝,這也許能解釋為何俄方發展出非常專業的假新聞產業鏈。本欄亦曾評論過俄羅斯旁邊的芬蘭如何感到大受威脅。近年在國際上引起極大憂慮的俄製假新聞,即主要在西方主導的社交媒體上流行。目標除了影響他國輿論和政治,「目標群眾」也包括使用西方社交媒體的俄羅斯本國公民。
#Russia #HK #dns #internet #infowar
dns伺服器可能 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
本篇文章是個經驗談,作者想要聊聊是如何將一個 4vCPU 的VM給調整到可以達到每秒處理 1.2M(120萬)個 JSON Reuqest,本篇文章非常的長,所以會分多天來介紹。
整篇文章探討的是各種 turning 的步驟,來聊聊如何從最初每秒 224k(22萬四千) 給調整到每秒 1.2M 的處理能力。
整個過程分成九大步驟,後面同時標示每個過程後的每秒請求能力
1. Application Optimizations (347k)
2. Speculative Execution Migtigations (446k)
3. Syscall Auditing/Blocking (495k)
4. Disabling iptables/netfilter (603k)
5. Perfect Locality (834k)
6. Interrypt Optimizations (1.06M)
7. The Case of the Nosy Neighbor (1.12M)
8. The Battle Against the Spin Lock (1.15M)
9. This Gost to Twelv (1.20M)
作者強調,上述的過程不一定適合你的應用程式,但是透過這些步驟能夠讓你更佳瞭解應用程式的運作行為,同時也有機會發現一些潛在的瓶頸問題。
環境介紹
1. 團隊使用 Techempower 來進行 JSON Serialization 的測試
2. 使用 libreactor(event-driven框架) 來搭建一個簡單的 API Server
3. HTTP 的解析使用 picohttpparser,同時使用 libclo 來處理 JSON 的編碼
4. 硬體環境
- Server: 4 vCPU, c5n.xlarge AWS VM
- Client: 16 vCPU, c5n.4xlarge AWS VM (clinet太弱會變成瓶頸)
- Network: Server/Client 屬於同一個可用區域(AZ)
5. 軟體環境
- 作業系統: Amazon Linux2 (Kernel 4.14)
- Server: 使用 libreactor (使用不同版本,分別是 Round18 以及 Round20)
- Client: 修改 wrk 這個知名的工具並重新命名為 twrk,詳細差異自己看文章內部,主要都跟顯示有關
6. 實驗方式
- 每個測試跑三次,取中間值
- 256 連線,16 threads,同時每個 thread 都會 pin 到一個固定的 CPU
- 每個實驗都有兩秒的暖機時間來建立連線
Ground Zero
第一個要探討的就是什麼最佳化都還沒有使用前,到底當前應用程式可能的瓶頸在哪裏
首先團隊將該應用程式與其他常見的應用程式或是開發框架比較,譬如 Netty, Nginx, Actix, aspcore 等, libreactor 的效能不錯,有中上水準。
接者作者使用火焰圖(Flame Graphs)來 Profile 該伺服器,作者很好心地將文章中所有的火焰圖都調整了一下,讓所有的 user-space 相關的 function call 都轉成藍色,而剩下跟 kernel 相關都維持紅色。
1. 大部分的時間都在 Kernel 處理
2. 主要是花費在收封包與送封包
3. 應用程式本身主要是分兩大部分,解析 HTTP 的封包以及處理請求與回應。
從上述兩點來看,作者認為目前的應用程式寫得算不錯,因為瓶頸很明顯是卡在 Kernel 端
接下來就正式進入到各種 Turning 的章節探討
Application Optimizations
長話短說:
- 作者基於 libreactor Round18 的框架進行修改,並且所有的修改都已經被合併到 Round20 的版本中,而這些修改主要是實作方面的強化以及整個框架的最佳化。
1. 作者首先透過 htop 觀察運行過程,發現 Server 只有使用 2vCPU 而已(系統有 4vCPU),因此這是作者進行的第一個修改,讓 Server 使用了 4vCPU,這個簡單調整就讓效能提升 25%
註: 作者特別強調,不要覺得從 2vCPU 變成 4vCPU 效能就可以變成兩倍,主要是1) 沒有使用的 vCPU 還有很多其他的工作要處理,因此不是完全都送給你應用程式處理。2)基於 hypter-thread vCPU 的架構,環境只有兩個真正的 CPU 而是透過邏輯的方式產生四個抽象的 CPU,所以全用一定會變快,但是基於很多資源還是要競爭與共用,數字不是單純翻倍
2. 作者自己的應用程式本身使用 gcc 建置時有使用 "-o3" 的方式來最佳化處理,然而框架本身卻沒有使用 "-o3" 的方式來弄,因此作者也針對這個部分來處理,讓建制框架時能夠使用 -o3
3. 從實作方面來看,作者觀察到 libreactor 1.0 版本使用的是 read/write 這兩個常見的方式來處理封包的送收,作者將其修改成 recv/send 整個效能就提升了將近 10%。
註: write(針對 FD,更全面廣泛的用法) 與 send(針對 Socket,更針對的用法) 使用上差異不大,但是 write 於底層 Kernel 最終還是會呼叫到 send 來處理,所以基本上可以理解就是在沒有特別參數需求時,可以直接跳過幾個 kernel function 來達到加速的效果。
write kernel 內的走向: sys_write -> vfs_write -> __vfs_write -> sock_write_iter -> sock_sendmsg
send kernel 內的走向: sendto -> sock_sendmsg
4. 作者觀察到火焰圖中有一些 pthread 相關的資料,進而發現 libreactor 會創造一個 thread pool 來處理非同步的 DNS 名稱解析問題。對於一個 HTTP Client 來說,如果今天要發送請求到多個不同的 domain,而每個 domain 都會需要進行一個 blocking 的解析過程,透過這種方式可以減少 DNS 解析造成的 blocking 問題。然而對於 HTTP Server 來說,這個使用情境帶來的效益似乎就稍微低了些,畢竟 Server 只有 Bind Socket 之前可能會需要去解析一次 DNS 而已。
大部分的情境下, thread pool 都是應用程式初期會去創造而接者就不太會管她,但是對於錙銖必較的效能除錯人來說,任何能夠調整的部分都可能是個值得探討的地方。
作者透過修改 Server 端(準確來說是 libreactor 框架內的程式碼)關於 Thread Pool 的一些用法,成長的讓整個效能提升了 2~3%
結論來說,透過上述四個概念來提升的程式碼效能。
1. vCPU 盡量使用: 25%-27%
2. 使用 gcc -O3 來建置框架的程式碼: 5%-10%
3. 使用 march=native 等參數來建置最後的 server 應用程式: 5%-10%
4. 使用 send/recv 而非 write/read: 5%-10%
5. 修改 pthread 的用法: 2%-3%
註: 作者強調每個最佳化的結果並非是單純累積的概念,反而還會有互補的效果。
可能前述的操作實際上也會讓後續的操作達到更好的效果,
譬如如果先跑 vCPU 的調整,效能大概提升 25%,但是如果先執行別的最佳化過程,最後再來調整 vCPU,就可以達到 40% 的效果,主要是 CPU 可以共有效率的去執行程式。
最後,這個部分讓整個處理封包能力從 224k 提升了 55% 到 347k (req/s)。
從火焰圖來看,整個 user-space 的範圍縮小許多,同時 send/recv 的處理也有使得整體的高度下降一點點(大概四格..)
為了避免文章過長,本篇文章就探討第一個最佳化的過程,剩下的就敬請期待後續!
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
dns伺服器可能 在 網路資訊雜誌 Facebook 的最讚貼文
安全研究人員發現影響4個TCP/IP軟體堆疊的9項漏洞,可能波及一億台消費或企業產品。
可能的攻擊手法是攻擊者利用連網裝置對伺服器發送DNS呼叫以開採漏洞、外洩敏感資訊,甚至用它作為墊腳石來破壞重要設備。
dns伺服器可能 在 iThome Facebook 的最佳解答
本周重點新聞彙整
⭐ Clubhouse用戶資料可能落入中國監控網路
⭐ 臺灣資通電軍拿下全球網路競賽冠軍
⭐ 假冒銀行釣魚簡訊詐騙大舉來襲
⭐ 改善Chromium無效流量讓全球DNS查詢量降4成
⭐ Jupyter可以直接存取各種關連式資料庫了
⭐ LibreOffice要企業用戶別再用社群版以維護專案永續
⭐ 釋出半年後的Windows 10 2004終於全面部署
https://www.ithome.com.tw/news/142821