关于用户态协议栈的思考
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?因为性能是一个高端私人定***务,内核这种基础设施是不负责这种高定服务的。想出高性能,实际上一种艺术行为,涉及到方方面面的微调,绝对是高端大气上档次的行为,你指望内核能帮你做到这些吗?在微内核的世界,这是可能的,但是千万别把你的偏好转向微内核,干嘛非要内核搞定一切呢?干嘛不自己搞定啊!就算自己搞不定,把思想或者想法放出去,总会有人搞定的啊!不管是宏内核还是微内核,都不宜把高定的东西往里面塞,否则,对于宏内核而言,它就变成了屎壳郎滚的球,对于微内核而言,它就变成了蜘蛛织的网...

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...