• Linux内核网络协议栈优化总纲


    本文原创为freas_1990  转载请标明出处:http://blog.csdn.net/freas_1990/article/details/9474121


    Jack:淫龙,Linux内核协议栈如何优化?

    我:你所说的协议栈优化是指什么?

    Jack:就是我希望我的server程序和server程序所在的Linux服务器网络处理能力达到最优化。

    我:想要达到你的目标,你需要做到两点:

    1、Linux操作系统的网络接口层收发数据包必须要高效,接收到之后,缓冲机制需要控制好。

    2、tcp或同层次的协议参数调整好。

    Jack:什么是网络接口层?

    我:就是通常所说的数据链路层,这两个概念通常可以互换。

    Jack:也就是说,对于我的目标而言,只要把L2、L4层协议熟悉好就好了。

    我:仅仅熟悉协议是不够的,及时你把RFC读烂了,没有读过源代码也很难理解其中的实现精妙处。RFC更接近于科学,而内核实现是编码。这两者差距是非常大的。

    Jack:为什么你只关注L2、L4层协议?

    我:对于你想解决的问题,L2、L4层协议才能对你有帮助。

    1、L1里的规程不是一个程序猿应该关心的事情。

    2、L3里的规程主要是解决“路由”,“组网”的问题。如果你不是科学家或者网管或者防火墙编写者,也可以不用深究。很显然,上面三类人和你都没关系。

    Jack:那么为什么L2、L4协议对server性能优化直接影响呢?

    我:真正有直接影响的是L4协议,在Linux内核里对应的是socket机制。

    Jack:就是socket编程里的API吗?

    我:你所看见的socket编程只是冰山一角。在Linux内核里有sock和socket两个结构体共同实现RFC里设计的TCP协议所有socket里的函数参数,实际上是对这两个结构体所构成的对象、链表、队列进行操作。所以,如果你只是熟悉socket的API而不深入学习其实现,只能知其然不知其所以然。别人说什么,你就跟着说什么,全无见识。

    Jack:那L2层的协议为什么对linux内核协议栈优化有影响呢?

    我:你在linux下执行ethtool -S eth0,研究下输出吧。今天实在太困了。先休息下。



  • 相关阅读:
    移动端rem.js及移动端的一些属性和事件
    win10下nodejs的安装及配置
    $.ajax()在IE9下的兼容性问题
    H5 video自定义视频控件
    js表格排序
    [转]jQuery不同版本区别
    移动端H5多终端适配解决方案
    一个目录结构
    Linux学习
    Python3基础笔记---线程与进程
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3217883.html
Copyright © 2020-2023  润新知