关于用户态协议栈的思考
admin
2023-02-04 01:20:05
0

一直以来我一直以为操作系统内核是高大上的东西,但是实际上用户态的应用才是!
上周的一次技术交流中,一家网络加速卡厂商声称他们的协议栈是用户态的协议栈,用来提高性能,我对其产品直接就泄了气,然而会后,我查阅了相关的资料,找到一篇文章《 千万并发的秘密-内核是问题的根本》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?因为性能是一个高端私人定***务,内核这种基础设施是不负责这种高定服务的。想出高性能,实际上一种艺术行为,涉及到方方面面的微调,绝对是高端大气上档次的行为,你指望内核能帮你做到这些吗?在微内核的世界,这是可能的,但是千万别把你的偏好转向微内核,干嘛非要内核搞定一切呢?干嘛不自己搞定啊!就算自己搞不定,把思想或者想法放出去,总会有人搞定的啊!不管是宏内核还是微内核,都不宜把高定的东西往里面塞,否则,对于宏内核而言,它就变成了屎壳郎滚的球,对于微内核而言,它就变成了蜘蛛织的网...

相关内容

热门资讯

网民虚构自己钓鱼时发现尸体,被... 2026年6月22日,平舆县东皇街道居民凡某某为博取流量、吸引网友关注,拼凑多张图片剪辑制作短视频,...
“他们承受的痛苦还不够”,特朗... 据美国“阿克西奥斯新闻网(Axios)今天(7月23日)报道,美国总统特朗普在接受采访时透露,他正“...
急派超百名军医,美国准备地面战... 在加大空袭力度的同时,美军持续向中东增派战机、特种作战力量和后勤保障人员。与此同时,美军高层承认,单...
唐驳虎丨王虹、邓煜同获菲尔兹奖... 作者丨唐驳虎核心提要1. 本届国际数学家大会上,北大数院2007级校友王虹、邓煜同获菲尔兹奖,成为首...
菲尔兹奖获得者邓煜:爬山时破解... 作者:周盛楠 王僖妍·邓煜。(受访者供图)2026年7月23日,注定是改写中国数学历史的一天。邓煜、...
中国籍数学家王虹获菲尔兹奖 当地时间7月23日上午,2026年国际数学家大会在美国费城开幕,现场揭晓2026年菲尔兹奖得主。中国...
首次突破 屡创新高!一组数字解... 2026年上半年我国GDP同比增长4.7%经济韧性持续彰显在已经出炉的经济数据中更值得关注的还有“含...
男主播卖惨,66岁患癌老太花光... 今年3月,沈阳66岁的张阿姨在家养病期间刷视频时,被一名IP属地为湖北的男主播吸引。该主播主打演唱经...
松下智能马桶盖不喷水怎么回事 松下智能马桶盖不喷水怎么回事1、有时候新买的马桶在安装的时候工人有时候会不会告诉你需要开进水阀的,智...
松下智能马桶盖不喷水 1、有时候新买的马桶在安装的时候工人有时候会不会告诉你需要开进水阀的,智能马桶都是带有进水阀的,如果...