中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于用戶態協議棧的思考

發布時間:2020-08-03 20:04:09 來源:網絡 閱讀:3575 作者:dog250 欄目:系統運維

一直以來我一直以為操作系統內核是高大上的東西,但是實際上用戶態的應用才是!
上周的一次技術交流中,一家網絡加速卡廠商聲稱他們的協議棧是用戶態的協議棧,用來提高性能,我對其產品直接就泄了氣,然而會后,我查閱了相關的資料,找到一篇文章《 千萬并發的秘密-內核是問題的根本》http://www.oschina.net/translate/the-secret-to-10-million-concurrent-connections-the-kernel,寫出了我的心聲,原來我一直都是這么認為的,只是一直都不敢承認罷了,為何不敢承認,那是因為我酷愛內核。我對那家廠商泄氣表達了我深深的虛偽,內在的分裂!
      文中說”我們學的是Unix而不是網絡編程“,對《Unix網絡編程》一書給出了正確的評價,告訴我們,我們被平臺牽累了,我們一直在面對的都是操作系統的接口如何使用的技術,而不是真正的編程,真正的天馬行空般超乎想象的編程。一個又一個的應用編程框架或者中間件在提出的時候,說的是”如何能讓我們不必關注實現細節而精心處理我們自己的業務邏輯“,這篇文章能讓人理解這句話的好意。
      歷史地看網絡編程,是先有了UNIX,再有了TCP/IP和BSD socket,當然要把網絡編程往UNIX里面硬塞,曾幾何時,一直到現在,做網絡編程的不懂UNIX會被人恥笑,當然,Linux某種意義上已經代替了UNIX。UNIX的哲學包括機制和策略分離這一真理,它在映射成這個信條之前是數據和控制的分離這個箴言,這個箴言如今已經淹沒在網絡設備中,比如路由器,其數據面和控制面是合在一起的,當該箴言再次喚醒其信徒的時候,SDN就出現了。是對UNIX理念的誤解,導致了網絡設備將控制面和數據面合在在一起而并非利益使然,這種誤解甚至影響了UNIX本身。要知道UNIX理念影響了幾乎所有的操作系統以及網絡設備的設計,其中包括Mirosoft Windows以及Cisco的IOS。我之所以說是一種誤解而并非背叛,是因為UNIX的理念可能從來就沒有被真正理解過。也許,這是對宏內核的誤解導致的對UNIX的誤解。
      UNIX的宏內核思想影響面甚大,然而它的本意并非將所有的操作都塞進內核,而是僅僅將機要操作塞進內核,保持內核的緊湊性與高效性,因為模塊之間的交流是需要成本的,宏內核思想不講解耦合(但在實現機制上,還是模塊化的)。可是如何定義什么是機要操作,考慮以下的服務:
制定一套合理的經濟政策;
制定一套合理的稅收計劃;
生產棉布;
制作一件面料考究的羊毛西服;
提供價值¥160的發型;
...
請問哪些是機要操作?對于普通民眾而言,比如我,根本就沒有西服,頭發一年理一次,但是對于貴族而言,除了最后一條,其它的可能都是機要操作...很難定義機要操作,所以這種定義法很容易將所有的東西都塞進UNIX。《UNIX網絡編程》講述的是,你僅需要寫一個很小的輕量級的服務器就可以讓UNIX做一切繁復的工作。一件頗具說服力的事可以幫助《千萬并發的秘密-內核是問題的根本》的作者表達一下深深的惡意,那就是Linux曾經在內核中實現了一個WEB服務器,多么巨大的一個玩笑,或者說是對宏內核多么巨大的一個諷刺...我們要記住的是,UNIX并沒有讓后來者把所有的東西塞進內核,只是說,內核要保留控制權。
      我們不妨換一個思路,回到UNIX最初的思路,從控制權角度來看,哪些是屬于控制面的,也許你能說出一大堆,進程調度,資源管理,文件系統...網絡協議棧。不過,好像我們所有人一直以來都把網絡視為例外,網絡IO即不是塊設備IO也不是字符設備IO,按照UNIX一切皆文件的觀念,我們沒法給網絡一個合理的位置。socket接口的是一個完整的協議棧,而不是什么設備,我們不得不面對網絡參數的調整,為此我們加了多少次班,這正是網絡IO和其它設備IO相比所處的尷尬位置。
      直接和網卡接口是不是更自由些,從此我們擺脫了協議棧的束縛,然而我們必須自己實現協議棧,前些日子我就想過這些,主要是為了解決手機上面操作網絡無權限的問題,我當時想得是一個關于自由的問題而不是性能問題,而《秘密》一文說的正是性能問題,回顧那個廠商的介紹,他們的產品在用戶態進行數據包的協議棧處理,最大限度的使用了網絡協處理器等硬件加速功能,讓人感嘆,請問,使用操作系統內核的協議棧,如何把處理轉到協處理器上?!回答使用Netfilter已經過時了!我一直都想玩玩用Netfilter將處理轉到一塊卡上,但是我發現我過時了,如今的回答是,直接把內核協議棧旁路掉!如今,真的有這樣的技術,其中之一叫做PF_RING,實際上就是一個抓包機制,將數據包直接從鏈路層獲取,然后你想怎么處理就怎么處理,剛剛試了一下,挺好用,和uIP結合,簡直太猛了。當然,我可沒有千萬級并發的測試環境,我說的猛僅僅是它竟然真的可以工作!
      說說性能問題。性能和內核無關,你不要指望從32位的Linux 2.6.8換到64位的Linux 2.6.32內核在性能上會有一個突破,也不要指望拼出Linux和Windows內核對性能提升效果的優劣,關鍵還是在于應用程序!WHY?因為性能是一個高端私人定***務,內核這種基礎設施是不負責這種高定服務的。想出高性能,實際上一種藝術行為,涉及到方方面面的微調,絕對是高端大氣上檔次的行為,你指望內核能幫你做到這些嗎?在微內核的世界,這是可能的,但是千萬別把你的偏好轉向微內核,干嘛非要內核搞定一切呢?干嘛不自己搞定啊!就算自己搞不定,把思想或者想法放出去,總會有人搞定的啊!不管是宏內核還是微內核,都不宜把高定的東西往里面塞,否則,對于宏內核而言,它就變成了屎殼郎滾的球,對于微內核而言,它就變成了蜘蛛織的網...

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵义县| 布尔津县| 湘阴县| 莫力| 江油市| 冷水江市| 荔浦县| 吉安市| 鄂尔多斯市| 蒲江县| 福安市| 东乌| 乐安县| 广河县| 庆云县| 娱乐| 嘉定区| 永胜县| 台湾省| 长春市| 衡山县| 南郑县| 景东| 石林| 洛浦县| 乌鲁木齐县| 澄迈县| 正蓝旗| 禄劝| 乡城县| 郴州市| 淳安县| 松阳县| 吐鲁番市| 琼海市| 苏州市| 汉中市| 望江县| 四川省| 石柱| 翼城县|