日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux用户态协议栈好处,关于用户态协议栈的思考

發(fā)布時間:2025/4/16 linux 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux用户态协议栈好处,关于用户态协议栈的思考 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一直以來我一直以為操作系統(tǒng)內(nèi)核是高大上的東西,但是實際上用戶態(tài)的應用才是!

上周的一次技術交流中,一家網(wǎng)絡加速卡廠商聲稱他們的協(xié)議棧是用戶態(tài)的協(xié)議棧,用來提高性能,我對其產(chǎn)品直接就泄了氣,然而會后,我查閱了相關的資料,找到一篇文章《 千萬并發(fā)的秘密-內(nèi)核是問題的根本》http://www.oschina.net/translate/the-secret-to-10-million-concurrent-connections-the-kernel,寫出了我的心聲,原來我一直都是這么認為的,只是一直都不敢承認罷了,為何不敢承認,那是因為我酷愛內(nèi)核。我對那家廠商泄氣表達了我深深的虛偽,內(nèi)在的分裂!

文中說”我們學的是Unix而不是網(wǎng)絡編程“,對《Unix網(wǎng)絡編程》一書給出了正確的評價,告訴我們,我們被平臺牽累了,我們一直在面對的都是操作系統(tǒng)的接口如何使用的技術,而不是真正的編程,真正的天馬行空般超乎想象的編程。一個又一個的應用編程框架或者中間件在提出的時候,說的是”如何能讓我們不必關注實現(xiàn)細節(jié)而精心處理我們自己的業(yè)務邏輯“,這篇文章能讓人理解這句話的好意。

歷史地看網(wǎng)絡編程,是先有了UNIX,再有了TCP/IP和BSD socket,當然要把網(wǎng)絡編程往UNIX里面硬塞,曾幾何時,一直到現(xiàn)在,做網(wǎng)絡編程的不懂UNIX會被人恥笑,當然,Linux某種意義上已經(jīng)代替了UNIX。UNIX的哲學包括機制和策略分離這一真理,它在映射成這個信條之前是數(shù)據(jù)和控制的分離這個箴言,這個箴言如今已經(jīng)淹沒在網(wǎng)絡設備中,比如路由器,其數(shù)據(jù)面和控制面是合在一起的,當該箴言再次喚醒其信徒的時候,SDN就出現(xiàn)了。是對UNIX理念的誤解,導致了網(wǎng)絡設備將控制面和數(shù)據(jù)面合在在一起而并非利益使然,這種誤解甚至影響了UNIX本身。要知道UNIX理念影響了幾乎所有的操作系統(tǒng)以及網(wǎng)絡設備的設計,其中包括Mirosoft Windows以及Cisco的IOS。我之所以說是一種誤解而并非背叛,是因為UNIX的理念可能從來就沒有被真正理解過。也許,這是對宏內(nèi)核的誤解導致的對UNIX的誤解。

UNIX的宏內(nèi)核思想影響面甚大,然而它的本意并非將所有的操作都塞進內(nèi)核,而是僅僅將機要操作塞進內(nèi)核,保持內(nèi)核的緊湊性與高效性,因為模塊之間的交流是需要成本的,宏內(nèi)核思想不講解耦合(但在實現(xiàn)機制上,還是模塊化的)。可是如何定義什么是機要操作,考慮以下的服務:

制定一套合理的經(jīng)濟政策;

制定一套合理的稅收計劃;

生產(chǎn)棉布;

制作一件面料考究的羊毛西服;

提供價值¥160的發(fā)型;

...

請問哪些是機要操作?對于普通民眾而言,比如我,根本就沒有西服,頭發(fā)一年理一次,但是對于貴族而言,除了最后一條,其它的可能都是機要操作...很難定義機要操作,所以這種定義法很容易將所有的東西都塞進UNIX。《UNIX網(wǎng)絡編程》講述的是,你僅需要寫一個很小的輕量級的服務器就可以讓UNIX做一切繁復的工作。一件頗具說服力的事可以幫助《千萬并發(fā)的秘密-內(nèi)核是問題的根本》的作者表達一下深深的惡意,那就是Linux曾經(jīng)在內(nèi)核中實現(xiàn)了一個WEB服務器,多么巨大的一個玩笑,或者說是對宏內(nèi)核多么巨大的一個諷刺...我們要記住的是,UNIX并沒有讓后來者把所有的東西塞進內(nèi)核,只是說,內(nèi)核要保留控制權。

我們不妨換一個思路,回到UNIX最初的思路,從控制權角度來看,哪些是屬于控制面的,也許你能說出一大堆,進程調(diào)度,資源管理,文件系統(tǒng)...網(wǎng)絡協(xié)議棧。不過,好像我們所有人一直以來都把網(wǎng)絡視為例外,網(wǎng)絡IO即不是塊設備IO也不是字符設備IO,按照UNIX一切皆文件的觀念,我們沒法給網(wǎng)絡一個合理的位置。socket接口的是一個完整的協(xié)議棧,而不是什么設備,我們不得不面對網(wǎng)絡參數(shù)的調(diào)整,為此我們加了多少次班,這正是網(wǎng)絡IO和其它設備IO相比所處的尷尬位置。

直接和網(wǎng)卡接口是不是更自由些,從此我們擺脫了協(xié)議棧的束縛,然而我們必須自己實現(xiàn)協(xié)議棧,前些日子我就想過這些,主要是為了解決手機上面操作網(wǎng)絡無權限的問題,我當時想得是一個關于自由的問題而不是性能問題,而《秘密》一文說的正是性能問題,回顧那個廠商的介紹,他們的產(chǎn)品在用戶態(tài)進行數(shù)據(jù)包的協(xié)議棧處理,最大限度的使用了網(wǎng)絡協(xié)處理器等硬件加速功能,讓人感嘆,請問,使用操作系統(tǒng)內(nèi)核的協(xié)議棧,如何把處理轉(zhuǎn)到協(xié)處理器上?!回答使用Netfilter已經(jīng)過時了!我一直都想玩玩用Netfilter將處理轉(zhuǎn)到一塊卡上,但是我發(fā)現(xiàn)我過時了,如今的回答是,直接把內(nèi)核協(xié)議棧旁路掉!如今,真的有這樣的技術,其中之一叫做PF_RING,實際上就是一個抓包機制,將數(shù)據(jù)包直接從鏈路層獲取,然后你想怎么處理就怎么處理,剛剛試了一下,挺好用,和uIP結合,簡直太猛了。當然,我可沒有千萬級并發(fā)的測試環(huán)境,我說的猛僅僅是它竟然真的可以工作!

說說性能問題。性能和內(nèi)核無關,你不要指望從32位的Linux 2.6.8換到64位的Linux 2.6.32內(nèi)核在性能上會有一個突破,也不要指望拼出Linux和Windows內(nèi)核對性能提升效果的優(yōu)劣,關鍵還是在于應用程序!WHY?因為性能是一個高端私人定***務,內(nèi)核這種基礎設施是不負責這種高定服務的。想出高性能,實際上一種藝術行為,涉及到方方面面的微調(diào),絕對是高端大氣上檔次的行為,你指望內(nèi)核能幫你做到這些嗎?在微內(nèi)核的世界,這是可能的,但是千萬別把你的偏好轉(zhuǎn)向微內(nèi)核,干嘛非要內(nèi)核搞定一切呢?干嘛不自己搞定啊!就算自己搞不定,把思想或者想法放出去,總會有人搞定的啊!不管是宏內(nèi)核還是微內(nèi)核,都不宜把高定的東西往里面塞,否則,對于宏內(nèi)核而言,它就變成了屎殼郎滾的球,對于微內(nèi)核而言,它就變成了蜘蛛織的網(wǎng)...

總結

以上是生活随笔為你收集整理的Linux用户态协议栈好处,关于用户态协议栈的思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。