当前位置: 首页 > news >正文

linux 下一跳缓存,early demux(‌早期解复用)‌介绍

3.6版本以后的下一跳缓存

  • 3.6版本移除了FIB查找前的路由缓存。这意味着每一个接收发送的skb现在都必须要进行FIB查找了。这样的好处是现在查找路由的代价变得稳定(consistent)了。
  • 3.6版本实际上是将FIB查找缓存到了下一跳(fib_nh)结构上,也就是下一跳缓存
  • 下一跳缓存的作用就是尽量减少最初和最后的申请释放dst_entry,它将dst_entry缓存在下一跳结构(fib_nh)上。这和之前的路由缓存有什么区别吗? 很大的区别!之前的路由缓存是以源IP和目的IP为KEY,有千万种可能性,而现在是和下一跳绑定在一起,一台设备没有那么多下一跳的可能。这就是下一跳缓存的意义
  • 下一跳缓存并没有减少路由查找的开销,而是减少了内存分配/释放的开销。这是因为一个数据包在发送过程中,必须在路由查找结束后绑定一个下一跳结构体,然后绑定一个邻居,路由表只是一个静态表,数据通道没有权限修改它,它只是用来查找,协议栈必须用查找到的路由项信息来构造一个下一跳结构体,这个时候就体现了缓存下一跳的重要性,因为它减少了构造的开销。

early demux

early demux是在skb接收方向的加速方案。linux kernel 3.6之后版本在取消了FIB查询前的路由缓存后,每个skb应该都需要查询FIB。而early demux是基于一种思想:如果一个skb是本机某个应用程序的套接字需要的,那么我们可以将路由的结果缓存在内核套接字结构上,这样下次同样的报文(四元组)到达后,我们可以在FIB查询前就将报文提交给上层,也就是提前分流(early demux)。
在这里插入图片描述

参考

https://segmentfault.com/a/1190000020183650
https://www.acwing.com/blog/content/23014/
https://abcdxyzk.github.io/blog/2018/07/09/kernel-ip_early_demux/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索PDF的奥秘:pdfrw库的神奇之旅
  • 32 配置多路由的静态路由
  • https和harbor仓库跟k8s
  • VsCode + Go + macOS 小白 demo运行
  • 浏览器自动化测试的利器:Cypress
  • AI大模型实战:pytorch安装
  • glsl着色器学习(七)
  • 从源码角度分析 Kotlin by lazy 的实现
  • accelerate一些类和函数说明二
  • 集合及映射
  • linux批量解压tar.gz文件
  • 动态规划-最大子数组和
  • STM32的CRC校验(基于HAL库)
  • c++面向对象程序设计中的二义性及解决办法--郭妍论文
  • Electron 项目实战 03: 实现一个截图功能
  • Android 控件背景颜色处理
  • C++入门教程(10):for 语句
  • KMP算法及优化
  • ReactNative开发常用的三方模块
  • React组件设计模式(一)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TypeScript迭代器
  • vue总结
  • webpack入门学习手记(二)
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 三栏布局总结
  • 写代码的正确姿势
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ######## golang各章节终篇索引 ########
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (11)MSP430F5529 定时器B
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (算法)N皇后问题
  • (一)appium-desktop定位元素原理
  • (正则)提取页面里的img标签
  • (转)【Hibernate总结系列】使用举例
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)fock函数详解
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .NET 4.0中的泛型协变和反变
  • .NET 8.0 发布到 IIS
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET开发人员必知的八个网站
  • .NET下ASPX编程的几个小问题
  • @KafkaListener注解详解(一)| 常用参数详解
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [AIGC] SpringBoot的自动配置解析
  • [C#] 我的log4net使用手册
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败