FIB表与快速转发表工作原理

news2024/11/19 8:21:28

     在一张路由表中,当存在多个路由项可同时匹配目的IP地址时,路由查找进程会选择掩码最长的路由项用于转发,即最长匹配原则。因为掩码越长,所处的网段范围就越小,网段的范围越小,就越能快速的定位到PC机的具体位置,从而加快转发效率。

例子1:在运行了RIP 的MSR 路由器上看到如下路由信息:

<MSR>display ip routing-table 6.6.6.6

Routing Table: Public

Summary Count: 2

Destination/Mask Proto Pre Cost  NextHop  Interface

6.6.6.0/24       RIP   100   1  100.1.1.1  GE0/0

6.0.0.0/8       Static 60    0  100.1.1.1  GE0/0

此时路由器收到一个目的地址为6.6.6.6 的数据包,那么  A 

A. 该数据包将优先匹配路由表中的RIP 路由,因为其掩码最长

B. 该数据包将优先匹配路由表中RIP 路由,因为其优先级高

C. 该数据包将优先匹配路由表中的静态路由,因为其花费Cost 小

D. 该数据包将优先匹配路由表中的静态路由,因为其掩码最短

     尽管如此,路由表中路由项数量越多,所需查找及匹配的次数就越多,其转发效率就会降低。为了实现控制平面与转发平面完全分离,就需要系统构建一张专注于数据报文转发的表,即FIB表。全称为Forwarding Information Base,称为转发表。

     FIB表的生成有2种方式,一种是源于路由表项,另外一种是通过ARP解析获得。

     第一种方式,当开始计算路由信息的时候,因为在一个网络拓扑结构中,可能会运行多个路由协议,而不同路由协议所计算出的路径可能会不同。当出现这种情况时,路由器会选择较高路由优先级的路由协议所发现的路由作为最优路由,即比较路由的优先级将其选出,再置为Active(活跃)状态;而其他路由作为备份路由,置为Inactive(非活跃)状态。系统会再把Active状态的路由表项导入至FIB表中,作为系统转发的依据。

     第二种方式,通过ARP解析,得到MAC地址与IP地址的映射关系,再得到本地网段内的主机路由信息,最后添加至FIB表中。

     在FIB表生成过程中,需要注意的一点是,FIB表与路由表是同步更新的。系统的控制平面会发现新的路由信息,根据路由信息更新到自己的路由表中,生成新的Active状态的路由表项,再更新至FIB表。路由表属于控制平面,FIB表属于转发平面,这样便做到了控制平面与转发平面的分离。如果原路由表中处于Active状态的路由表项失效,系统也会删除相关FIB表项。

     由于FIB表全是处于Active状态的路由,所以FIB表项的数量远远小于路由表项。基于这种特性,在设计的时候,系统可以将FIB表项加载到硬件中,从而加快数据转发速度。例如,在某些高端交换机启动后,FIB表被系统加载到接口业务板的硬件中,数据报文再通过硬件转发,不需要再通过CPU转发,可以大大降低转发时延。

     通过输入"display fib"命令,即可查看到相关FIB表项。

     Flag字段的含义:

U

可用路由

G

网关路由

H

主机路由

B

黑洞路由

 D

动态路由

S

静态路由

R

迭代路由

F

快速重路由

    

     路由器常规转发报文的流程:路由器接收到一个报文后,将它从接口存储器拷贝至CPU中,CPU会根据报文的目的地址寻找FIB表中与之匹配的转发项,最终确定一条最佳的路径。与此同时,再将报文按照数据链路层上使用的协议进行封装,最后,封装后的链路层帧通过DMA(Direct Memory Access,直接内存访问)拷贝至输出队列中进行报文转发。这一个过程经过了2次系统总线,每一个报文都要重复这个过程。

     衡量路由器性能因素之一是报文的转发效率,报文的转发效率越高,性能就越强。所以需要再用到快速转发表来进行转发,快速转发表采用高速缓存来处理报文,使用基于数据流的技术来处理。

     什么是基于数据流,数据流是指在计算机系统中,数据在各个组件(如程序、模块、子系统等)之间传输和处理的过程。在数据流中,数据经过一系列处理后,输出到下一个组件或者最终输出到终端用户。例如,访问HTTP服务的一次操作。

     在计算机网络中,一般用一个5元组来描述一个数据流,源IP地址、源端口号、目的IP地址、目的端口号、协议号。当一个数据流的第一个报文通过查找FIB表转发后,在高速缓存中生成相应的转发信息,该数据流后续报文的转发就可以通过直接查找高速缓存来实现。

     例如,当一个主机需要访问服务器时,主机发出的第一个报文到达路由器的接口后,路由器会查找快速转发表实现快速转发。但由于这个报文是第一个报文,快速转发表中并没有这条数据流的转发信息高速缓存,所以系统无法进行快速转发。便会退而求其次,将报文移交至普通的FIB表,由CPU负责在FIB表中查找相关转发项,然后进行封装,再从接口转发出去。与此同时,系统记录报文中的5元组信息,再高速缓存中会生成相应的快速转发信息。

     系统会根据5元组信息生成相应的快速转发信息缓存的同时也会记录转发时的封装信息及接口信息。在当后续报文来到后,系统会查看报文中的5元组,如果命中了快速转发缓存,则会根据缓存中的封装信息直接进行二层数据帧的封装。然后在中断中直接送到出接口发送,这样,就不需要上报CPU进行查表操作,也不需要内存访问操作,更不用占用系统总线资源。

     快速转发技术就在很大程度上缩减了IP报文的排队流程,也减少了报文的转发时间。

【本文章技术支持:武汉科云信息技术有限公司】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1252544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.Linux系统及常用命令

目录 一、Linux文件系统和目录 1.1 Linux文件系统 1.2Linux主要目录 二、Linux远程连接 2.1前置条件 2.2 具体远程操作 三、Linux的常用命令 3.1 Linux命令的格式 3.2 Linux命令的帮助信息查看 3.3 Linux文件操作常用命令 命令中快捷键 以管理员权限执行命令 3.3.1…

[网鼎杯 2020 青龙组]singal

一道VM题目 可以看到长度是15 跟踪调用read函数的函数 分析一下switch中每个指令的含义、 在scanf下面打断点 在关键跳转处下断点 打开Ponce插件 GitHub - illera88/Ponce: IDA 2016 plugin contest winner! Symbolic Execution just one-click away! 然后开始动调 输入15个…

【C4D如何将多个选集设置为一个选集】

操作 首先&#xff0c;单击一个选集&#xff0c;将选集中的面高亮显示 接着&#xff0c;按着shift&#xff0c;点击另一个选集&#xff0c;点击右侧命令栏中的选择&#xff0c;即可多选另外的面选集&#xff0c;更多的面选集是同样的操作&#xff0c;按着SHIFT选择新的选集即…

计算机中由于找不到vcruntime140.dll无法继续执行代码无法打开软件怎么解决分享

关于如何解决vcruntime140.dll无法继续执行代码的6个教程。在这个科技日新月异的时代&#xff0c;电脑已经是我们日常和工作中必不可少的电子产品&#xff0c;然后我们在使用过程中经常会遇到不一样的问题&#xff0c;比如vcruntime140.dll文件丢失&#xff0c;那么vcruntime14…

【 拓扑排序】

文章目录 拓扑排序AOV-网拓扑排序的方法拓扑排序的一个重要应用&#xff1a;拓扑排序的算法 拓扑排序 AOV-网 无环的有向图称作有向无环图。 这种用顶点表示活动&#xff0c;用弧表示活动间的优先关系的有向图称为以顶点为活动的网&#xff08;Activity On Vertex Network&am…

电脑技巧:U盘运用小技巧,提升U盘运用寿命

目录 1、注意清洁&#xff0c;防止污染 2、别随意插拔 3、文件多时分段写入 4、U盘传输数据中切记拔掉U盘 5、建议不要长期将U盘插在电脑上 6、杜绝别频繁将U盘格式化 7、U盘中毒怎么办 U盘是大家日常办公经常用得到的便携式文件储存工具&#xff0c;因为其小巧便携、方…

基于vue+element-plus+echarts编写动态绘图页面

我们都知道网页的echarts可以画图&#xff0c;但是很多情况下都需要编码实现绘图逻辑&#xff0c;如果有一个前端页面可以让我输入数据然后动态生成图表的话那么该多好&#xff0c;其实这个需求不难实现&#xff0c;先看效果。 整体页面分为左右两个部分&#xff0c;其中左边的…

76. 最小覆盖子串 (滑动窗口)

Problem: 76. 最小覆盖子串 文章目录 思路相似滑动窗口题目 :Code 题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我…

【尚跑】2023宝鸡马拉松安全完赛,顺利PB达成

1、赛事背景 千年宝地&#xff0c;一马当先&#xff01;10月15日7时30分&#xff0c;吉利银河2023宝鸡马拉松在宝鸡市行政中心广场鸣枪开跑。 不可忽视的是&#xff0c;这次赛事的卓越之处不仅在于规模和参与人数&#xff0c;还在于其精心的策划和细致入微的组织。为了确保每位…

P13 C++ 类 | 结构体内部的静态static

目录 01 前言 02 类内部创建静态变量的例子 03 在类的内部创建静态变量的作用 04 最后的话 01 前言 本期我们讨论 static 在一个类或一个结构体中的具体情况。 在几乎所有面向对象的语言中&#xff0c;静态在一个类中意味着特定的东西。这意味着在类的所有实例中&#xff…

管理类联考——写作——考点+记忆篇——论证有效性分析——记忆

文章目录 论证有效性分析得分要点、寻找漏洞方法论证有效性分析五大逻辑漏洞类型论证有效性分析的具体写法论证有效性分析十大解题思路&#xff08;上&#xff09;方法一&#xff1a;理想法方法二&#xff1a;极端法方法三&#xff1a;其他因素法方法四&#xff1a;可行性法 论…

Vue打包错误UnhandledPromiseRejectionWarning: CssSyntaxError

错误详情如下&#xff1a; building for production...Error processing file: static/css/app.3d5caae7aaba719754d7d5c30b864551.css (node:33011) UnhandledPromiseRejectionWarning: CssSyntaxError: /Users/yt/Documents/BM/sims-plus/sims-website/static/css/app.3d5caa…

无人机电力巡检系统运行流程全解读

随着电力行业体系不断完善&#xff0c;保障电网运营的安全成为至关重要的任务。传统的人工巡检方式在面对电力设备广泛分布和复杂工况时显得效率低下&#xff0c;为了解决这一难题&#xff0c;无人机电力巡检系统应运而生&#xff0c;以智能化的运行流程&#xff0c;为电网安全…

超级应用平台的诞生

摘要&#xff1a;本文介绍了明道云的发展计划和商业模式。明道云将退出直营市场&#xff0c;专注于合作伙伴业务&#xff0c;提供更全面的支持&#xff0c;共同推动数字化能力的发展&#xff0c;实现业绩和终端客户收入的增长。文章强调了明道云与合作伙伴的紧密关系&#xff0…

文件批量改名方法:文件自动批量重命名,提升文件管理效率

在日常工作中随着工作时间的推移&#xff0c;在文件数量日益增长的情况下&#xff0c;会在电脑中积累大量的文件。如果文件名混乱无序&#xff0c;查找和识别重要文件将变得非常困难。这不仅会浪费大量的时间和精力&#xff0c;还可能导致重要文件的丢失或混乱。文件批量改名可…

已解决:Could not find a package configuration file provided by “gazebo_plugins“

问题出现在我使用catkin_make的时候 CMake Error at /home/hiuching-g/catkin_ws/devel/share/catkin/cmake/catkinConfig.cmake:83 (find_package):Could not find a package configuration file provided by "gazebo_plugins"with any of the following names:gaz…

大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异

最近有客户在使用 Elasticsearch 搜索服务时发现集群有掉节点&#xff0c;并且有 master 收集节点信息超时的日志&#xff0c;节点的负载也很高&#xff0c;不只是 data 节点&#xff0c;master 和协调节点的 cpu 使用率都很高&#xff0c;看现象集群似乎遇到了性能瓶颈。 查看…

重生之我是一名程序员 41 ——字符串函数(2)

哈喽啊大家晚上好&#xff01;今天呢我们延续昨天的内容&#xff0c;给大家带来第二个字符串函数——strcat函数。 首先呢&#xff0c;还是先带大家认识一下它。strcat函数是C语言中用于将两个字符串连接起来的函数&#xff0c;其函数原型为&#xff1a; char *strcat(char *…

JS事件代理(事件委托)

JS事件代理&#xff08;事件委托&#xff09; 前言什么是事件代理事件代理的优点 事件代理实例代码实例&#xff1a; 总结 前言 本文详细讲解JavaScript中关于事件代理技术相关的内容以及源码实例的讲解。那么好&#xff0c;本文正式开始 什么是事件代理 事件代理作为JavaSc…

C# 使用NPOI操作Excel的工具类

写在前面 NPOI是POI项目的.NET迁移版本。POI是一个开源的Java 读写 Excel、Word 等微软Ole2组件文档的项目&#xff1b;使用NPOI可以在没有安装Office或者相应环境的机器上对Word或Excel文档进行读写操作。 NPOI类库中操作EXCEL有两个模块分别是&#xff1a; 1️.HSSF模块&a…