news 2026/8/24 1:11:59

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/24 14:42:02

62、lkcd与TCP/IP栈调试全解析

lkcd与TCP/IP栈调试全解析 1. lkcd源与补丁 lkcd源可从sourceforge.net获取。kerntypes是内核数据结构的数据库,在构建lkcd时生成。它和系统映射文件作为lcrash的参数。以下是启动lcrash程序的命令: - 在内核崩溃转储上启动: lcrash kerntypes core - file system.map在…

作者头像 李华
网站建设 2026/8/24 0:44:00

64、Linux TCP/IP 网络技术解析

Linux TCP/IP 网络技术解析 1. Netlink 数据结构 Netlink 数据结构在 Linux 内核网络通信中扮演着重要角色,主要包含 nl_table 和 rtnetlink_link 两部分。 - nl_table : - 是一个指向 sock 结构的指针数组。数组的每个元素代表一个 Netlink 协议族,例如 NETLIN…

作者头像 李华
网站建设 2026/8/24 0:44:03

数组矩阵理论基础

文章目录普通数组理论基础1. 数组的基本概念1.1 基本术语1.2 数组的特点2. 数组的基本操作2.1 数组的遍历2.2 数组的修改3. 前缀和(Prefix Sum)3.1 前缀和的基本概念3.2 前缀和的构造3.3 区间和查询4. 矩阵(二维数组)操作4.1 矩阵…

作者头像 李华
网站建设 2026/8/24 4:42:53

拒稿率低 + 见刊快!计算机国际会议 / 期刊合集

《计算机与自主智能研究进展》是一本开放获取,同行评审,以计算机与自主智能的发展为背景的信息科技类期刊。本刊注重计算机与自主智能系统研究的基础理论和方法,主要刊登自主智能应用于各种系统的研究文章、国内外计算机科学与自主智能技术的…

作者头像 李华
网站建设 2026/8/24 6:41:02

好写作AI:别让你的论文逻辑再“左右横跳”了!

面对一篇由AI生成的、论点四处“闪现”、上下文关系比网红情侣还脆弱的文章,你是否也感到CPU都快烧了?逻辑连贯性,这个长期困扰AI写作的“阿喀琉斯之踵”,如今有了新的解法。 深夜,研究生小陈看着屏幕上一段AI生成的技…

作者头像 李华