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/

相关推荐
酉鬼女又兒13 小时前
Linux快速入门指南:常用快捷键➕命令行高效操作
linux·运维·服务器
林shir13 小时前
3-19-项目部署(Linux)
linux·运维·服务器
顶点多余13 小时前
Linux第一个系统程序-进度条
linux·运维·服务器
x-cmd13 小时前
[x-cmd] Wine 11.0 史诗级发布:Linux 运行 Windows 应用和游戏进入“完全体”时代
linux·windows·游戏
来鸟 鸣间13 小时前
linux下ffmpeg源码编译
linux·运维·ffmpeg
拾光Ծ14 小时前
【Linux】文件系统核心(二):深入 Ext2 底层:Block Group 结构 + inode 索引,轻松锁定文件的增删改查
linux·软硬链接·inode·ext2文件系统·block group·文件系统原理·linux面试
楼田莉子14 小时前
Linux学习:进程信号
linux·运维·服务器·c++·学习
KeeBoom14 小时前
嵌入式 Linux 应用开发完全手册——阅读笔记14
linux·笔记
进击切图仔14 小时前
新装 Ubuntu 20.04.6 中安装 ssh.server 功能
linux·ubuntu·ssh
松涛和鸣14 小时前
69、Linux字符设备驱动实战
linux·服务器·网络·arm开发·数据库·驱动开发