news 2026/8/22 2:51:55

47、Linux内核路由表与缓存的实现及管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
47、Linux内核路由表与缓存的实现及管理

Linux内核路由表与缓存的实现及管理

1. 路由查找与源IP选择

当路由查找没有返回结果时,会在第1180行直接调用inet_select_addr()函数,以找到具有通用范围的源IP(同时也会使用该路由的网关信息)。这是因为出于管理原因,接口可能配置了不同的源IP。最后在第1182行,将识别出的源地址复制并返回给调用者。

2. Linux内核路由表与缓存的维护流程

我们先来了解内核是如何维护路由表和路由缓存的。下面会绘制一个图,展示路由表如何更新、如何访问,以及Linux内核中的不同路径,同时也会解释路由表和路由缓存之间的关系。

3. 路由缓存实现概述

路由缓存是查找路由最快的缓存方法。虽然FIB(转发信息库)也提供了查找路由的方法,但查找时间较长,并且对每个单独的数据包运行FIB查询会影响性能,而路由缓存则减少了查找路由信息的时间。

当为策略路由配置多个路由表时,会共享一个路由缓存。路由缓存将正在使用或最近使用过的每个路由保存在一个哈希表中,同时还维护定时器和计数器,以移除不再使用的路由。

路由缓存是一个包含缓存条目的单一哈希表。路由缓存哈希表是一个rt_hash_bucket结构的数组。每个rt_hash_bucket结构包含链元素和读写自旋锁。链元素包含表示缓存条目的rtable结构列表。

当IP层想要查找路由时,会根据哈希值找到合适的hash_bucket,并搜索缓存路由链以查找匹配项。如果未找到匹配项,则访问

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 7:41:52

63、网络连接队列与路由过滤配置详解

网络连接队列与路由过滤配置详解 1. 连接队列分析 在网络连接过程中,SYN 队列和接受队列起着关键作用。当 SYN 队列中有连接请求时,定时器会周期性过期。一旦队列中的条目过期,就会将其从 SYN 队列中移除。 syn_table 是 open_request 的实际 SYN 队列,我们可以看到 …

作者头像 李华
网站建设 2026/8/21 7:40:41

LC.297 | 二叉树的序列化与反序列化 | 树 | 定长编码传递信息

输入: 二叉树的根节点 root。 要求: 设计一个算法,将二叉树序列化为一个字符串,并且可以将该字符串反序列化为原始的树结构。不限制具体的序列化逻辑(如前序、层序等),只要保证“编码 -> 解码…

作者头像 李华
网站建设 2026/8/21 13:43:41

毕设项目 yolo葡萄采摘护理定位辅助系统(源码+论文)

文章目录0 前言1 项目运行效果2 课题背景2.1. 葡萄种植产业现状2.2. 农业智能化转型需求2.3. 计算机视觉技术优势2.3.1 技术层面2.3.2 应用层面2.4. 项目创新价值2.5. 技术发展趋势3 设计框架3.1. 系统概述3.2. 技术架构3.2.1 整体架构3.2.2 核心技术栈3.3. 系统模块详解3.3.1 …

作者头像 李华
网站建设 2026/8/21 19:55:58

UE5 材质-38-节点:

(161) (162) (163) 谢谢

作者头像 李华