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

news/2024/9/17 1:35:42/ 标签: 缓存, linux, redis

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/


http://www.ppmy.cn/news/1522230.html

相关文章

Flink SQL 中常见的数据类型

Flink SQL 中常见的数据类型 目标 通过了解Flink SQL 中常见的数据类型,掌握正确编写Flink SQL 语句背景 Apache Flink 支持多种数据类型,这些数据类型被用于 Flink SQL 表达式、Table API 以及 DataStream API 中。以下是 Flink SQL 中常见的数据类型: 基本数据类型 Boo…

初识Linux · 进度条

目录 前言: 1 缓冲区和回车换行 2 进度条 前言: 我们目前学习了些许知识,已经足够支持我们写一个非常非常小的项目了,即进度条,相信大家都有过下载游戏,等待游戏更新完成的时候,那么此时就有…

数据结构---单向链表

单向链表 //链表的创建 Link_t *create_link() {Link_t *plink malloc(sizeof(Link_t));if(NULL plink){perror("fail plink");return NULL;}plink->phead NULL;plink->clen 0;return plink; } //头插 int push_link_head(Link_t *plink, DataType data…

一台Linux服务器最多可以支撑多少个TCP连接

一台Linux服务器最多可以支撑多少个TCP连接? 1.端口号资源 在确定最大连接数之前,先来看看系统如何标识一个TCP连接。系统用一个4四元组来唯一标识一个TCP连接【源IP、源端口、目标IP、目标端口】 以Nginx为例,端口是固定使用80&#xff0…

pytorch torch.norm函数介绍

torch.norm 函数用于计算张量的范数(norm),可以理解为张量的“长度”或“大小”。根据范数的不同类型,它可以衡量不同的张量性质。该函数可以计算 向量 和 矩阵 的多种范数,如 L1范数、L2范数、无穷范数 等。 1. 函数签名 torch.norm(input, p=fro, dim=None, keepdim=F…

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1.…

电脑点击关机之后,又自动重启开机了。根本就关不了?

前言 有个小姐姐说,她家的电脑好生奇怪:点击【关机】按钮之后,电脑提示【正在关机】,过了几秒,电脑又自动开机了…… 好家伙!也就是说关机和重启根本就没区别,电脑完全无法断电。 最后忍无可…

sqlite3的db.interrupt方法深入解析

在Node.js环境中,sqlite3库是一个广受欢迎的轻量级数据库库,它为开发者提供了一个简洁的API来与SQLite数据库进行交互。在处理长时间运行或复杂的数据库查询时,有时可能需要中断这些查询。sqlite3库提供了db.interrupt方法来实现这一功能。本…

主板选购2

现在市场上的主板种类繁多,功能各不相同,质量参差不齐。价格也不尽相同。所以选购主板时应该注意以下几点: 明确使用意图 根据自身需求针对性的选择主板。对于专业性很强的用户,整个电脑的配置就需要很高,CPU的规格也…

多线程篇(阻塞队列- BlockingQueue)(持续更新迭代)

目录 一、了解什么是阻塞队列之前,需要先知道队列 1. Queue(接口) 二、阻塞队列 1. 前言 2. 什么是阻塞队列 3. Java里面常见的阻塞队列 三、BlockingQueue(接口) 1. 前言 2. 简介 3. 特性 3.1. 队列类型 …

Springboot集成WebSocket客户端,发送消息并监测心跳

jar包&#xff08;主要jar包&#xff09; <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.7</version></dependency>服务类 import cn.hutool.json.JSONUtil; impor…

智慧公厕技术应用、系统架构、应用功能有哪些?@卓振思众

智慧公厕的标准涵盖了多个方面&#xff0c;包括技术应用、系统架构、应用功能以及环保节能等。以下是【卓振思众】整理的一些标准要点&#xff1a; 技术应用‌物联网技术‌&#xff1a;通过无线传感器、监控设备等实时采集公厕内部环境数据。‌大数据与云计算‌&#xff1a;对数…

css实现卡片右上角的状态

1、成品展示 2、html部分 <div class"itemBox"><div class"status">{{ statusList[item.status] }}</div> </div> 3、css部分 .itemBox {position: relative;overflow: hidden; } .status {height: 25px;line-height: 25px;bac…

Python游戏编程:用Python打造经典贪吃蛇小游戏

贪吃蛇作为一款极其经典且广受欢迎的小游戏&#xff0c;是早期 Windows 电脑和功能手机&#xff08;特别是诺基亚手机&#xff09;流行度极高的小游戏&#xff0c;是当时功能手机时代最具代表性的游戏之一。 贪吃蛇游戏分析 控制蛇的移动&#xff1a;通过上下左右键&#xf…

目标检测-YOLOv5

YOLOv5介绍 YOLOv5 是 YOLO 系列的第五个版本&#xff0c;由 Ultralytics 团队发布。虽然 YOLOv5 并非 Joseph Redmon 原团队发布&#xff0c;但它在 YOLOv4 的基础上进行了重要的优化和改进&#xff0c;成为了深度学习目标检测领域中的热门模型之一。YOLOv5 的优势不仅体现在…

TLC SSD强行关闭SLC缓存会怎样?

如今的SSD不管是TLC闪存还是QLC闪存&#xff0c;都有SLC模拟缓存技术&#xff0c;在缓存内读写可以获得极高的速度。 但你有没有想过&#xff0c;如果把这个功能关闭&#xff0c;会有什么变化&#xff1f; TechPowerUp SSD数据库维护者、资深内容编辑Gabriel Ferraz就做了一次试…

Go语言基础语法 20240904更新

代码开源地址 https://github.com/zhangdapeng520/zdpgo_basic 快速入门 示例代码&#xff1a; package mainimport "fmt"func main() {fmt.Println("Hello World") }第一行代码 package 用来声明包名。main包时整个程序的入口包&#xff0c;在一个Go语…

基于微信小程序在线订餐系统

微信小程序在线订餐系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序在线订餐系统的开发全过程。通过分析微信小程序在线订餐系统管理的不足&#xff0c;创建了一个计算机管理微信小程序在线订…

大话C++:第6篇 命名空间namespace作用域

1 命名空间概述 在一个大型的软件项目中&#xff0c;可能会有许多不同的代码文件&#xff0c;这些文件可能由不同的开发者编写&#xff0c;或者来自不同的库和模块。如果这些代码文件中存在同名的变量、函数、类或其他标识符&#xff0c;那么在编译或运行时就可能发生命名冲突…

javascript中数组遍历的所有方法

作为后端程序员平常js用得少&#xff0c;但是数组遍历又是常用功能&#xff0c;遍历方法又有很多。在此记录一下&#xff0c;所有用得上的数组遍历方法。 1.for循环 最基本的数组遍历 特点: 通常配合数组的 .length 属性使用。索引从0开始&#xff0c;需要注意边界问题。 …