zoukankan      html  css  js  c++  java
  • 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,研究下输出吧。今天实在太困了。先休息下。



  • 相关阅读:
    【AtCoder】AtCoder Grand Contest 014 解题报告
    【CF603E】Pastoral Oddities(CDQ分治)
    【洛谷4654】[CEOI2017] Mousetrap(DP+二分)
    【洛谷4800】[CEOI2015 Day2] 核能国度(差分细节题)
    【CF626G】Raffles(贪心)
    【CF578E】Walking!(贪心)
    【AtCoder】AtCoder Grand Contest 015 解题报告
    【CF582E】Boolean Function(动态规划+FWT)
    【CF576E】Painting Edges(线段树分治+并查集)
    【CF576D】Flights for Regular Customers(矩乘套路题)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3217883.html
Copyright © 2011-2022 走看看