FIB表與快速轉發表工作原理

???? 在一張路由表中,當存在多個路由項可同時匹配目的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.pswp.cn/news/165142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【分布式】小白看Ring算法 - 03

相關系列 【分布式】NCCL部署與測試 - 01 【分布式】入門級NCCL多機并行實踐 - 02 【分布式】小白看Ring算法 - 03 【分布式】大模型分布式訓練入門與實踐 - 04 概述 NCCL&#xff08;NVIDIA Collective Communications Library&#xff09;是由NVIDIA開發的一種用于多GPU間…

通過 python 腳本遷移 Redis 數據

背景 需求&#xff1a;需要將的 Redis 數據遷移由云廠商 A 遷移至云廠商 B問題&#xff1a;云版本的 Redis 版本不支持 SYNC、MIGRATE、BGSAVE 等命令&#xff0c;使得許多工具用不了&#xff08;如 redis-port&#xff09; 思路 &#xff08;1&#xff09;從 Redis A 獲取所…

GoLand 2023.2.5(GO語言集成開發工具環境)

GoLand是一款專門為Go語言開發者打造的集成開發環境&#xff08;IDE&#xff09;。它能夠提供一系列功能&#xff0c;如代碼自動完成、語法高亮、代碼格式化、代碼重構、代碼調試等等&#xff0c;使編寫代碼更加高效和舒適。 GoLand的特點包括&#xff1a; 1. 智能代碼補全&a…

json 去除特殊字符換行等符號

由于字符串中有出現了 換行符&#xff0c;導致轉json失敗&#xff0c;報錯&#xff1a;json parse error。 一般來講&#xff0c;直接用string的replace方法就可以了 String str "{\"adrdet\":\"阿歌嘎\n嘎、\",\"date\":\"2023/06/…

Ubuntu安裝CUDA驅動

Ubuntu安裝CUDA驅動 前言官網安裝確認安裝版本安裝CUDA Toolkit 前言 CUDA驅動一般指CUDA Toolkit&#xff0c;可通過Nvidia官網下載安裝。本文介紹安裝方法。 官網 CUDA Toolkit 最新版&#xff1a;CUDA Toolkit Downloads | NVIDIA Developer CUDA Toolkit 最新版文檔&…

NX二次開發UF_CAM_update_list_object_customization 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_update_list_object_customization Defined in: uf_cam.h int UF_CAM_update_list_object_customization(tag_t * object_tags ) overview 概述 This function provids the…

UDP客戶端使用connect與UDP服務器使用send函數和recv函數收發數據

服務器代碼編譯運行 服務器udpconnectToServer.c的代碼如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h> #include<errno.h> #inclu…

Okhttp 淺析

安全的連接 OkHttpClient: OkHttpClient: 1.線程調度 2.連接池,有則復用,沒有就創建 3.interceptor 4.interceptor 5.監聽工廠 6.是否失敗重試 7.自動修正訪問,如果沒有權限或認證 8是否重定向 followRedirects 9.協議切換時候是否繼續重定向 10.Cookie jar 容器 默認…

Python 的 socket 模塊套接字編程(簡單入門級別)

Python 的 socket 模塊提供了對套接字編程的支持&#xff0c;允許你在網絡上進行數據傳輸。套接字是一個抽象的概念&#xff0c;它允許程序在網絡中的不同節點之間進行通信。 下面是 socket 模塊中一些常用的函數和類&#xff1a; 1. 創建套接字&#xff1a; socket.socket(…

pycharm 創建的django目錄和命令行創建的django再使用pycharm打開的目錄對比截圖 及相關

pytcharm創建django的項目 命令行創建的django 命令行創建項目時 不帶路徑時 (.venv) D:\gbCode>django-admin startproject gbCode 命令行創建項目時 帶路徑時 -- 所以如果有目錄就指定路徑好 (.venv) D:\gbCode>django-admin startproject gbCode d:\gbCode\

洛谷P1219 [USACO1.5] 八皇后【n皇后問題】【深搜+回溯 經典題】【附O(1)方法】

P1219 [USACO1.5] 八皇后 Checker Challenge 前言題目題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 提示題目分析注意事項 代碼深搜回溯打表 后話額外測試用例樣例輸入 #2樣例輸出 #2 王婆賣瓜 題目來源 前言 也是說到做到&#xff0c;來做搜索的題&#xff08;雖…

微機原理_2

一、單項選擇題(本大題共15小題,每小題3分,共45分。在每小題給出的四個備選項中,選出一個正確的答案&#xff0c;請將選定的答案填涂在答題紙的相應位置上。&#xff09; 下列數中最大的數為&#xff08;&#xff09; A. 10010101B B. (126)8 C. 96H D. 100 CPU 執行 OUT 60H,…

Android 9.0 隱藏設置顯示中自動調節亮度

Android 9.0 隱藏設置顯示中自動調節亮度 最近收到郵件需求提到想要隱藏設置顯示中的自動調節亮度&#xff0c;具體修改參照如下&#xff1a; /vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/display_settings.xml - <Preference<!--Preferencea…

西門子(Siemens)仿真PLC啟動報錯處理

目錄 一、背景&#xff1a; 二、卸載軟件 三、安裝軟件 三、啟動軟件 四、下載PORTAL項目 五、測試 一、背景&#xff1a; 在啟動S7-PLCSIM Advanced V3.0仿真PLC時報錯&#xff0c;報錯信息為&#xff1a;>>Siemens PLCSIM Virtual Switch<<is misconfigu…

Ubuntu 23.10 服務器版本 ifconfig 查不到網卡 ip(已解決)

文章目錄 1、問題描述2、 解決方案 1、問題描述 服務器&#xff1a;ubuntu 23.10 經常會遇到虛擬機添加僅主機網卡后&#xff0c;通過 ifconfig 無法獲取其網卡 ip 2、 解決方案 修改網卡配置文件&#xff1a; # 進入網卡配置文件目錄 cd /etc/netplan # 備份原始文件 cp …

ArgoWorkflow教程(一)---DevOps 另一選擇?云原生 CICD: ArgoWorkflow 初體驗

來自&#xff1a;探索云原生 https://www.lixueduan.com 原文&#xff1a;https://www.lixueduan.com/posts/devops/argo-workflow/01-deploy-argo-workflows/ 本文主要記錄了如何在 k8s 上快速部署云原生的工作流引擎 ArgoWorkflow。 ArgoWorkflow 是什么 Argo Workflows 是…

網絡安全如何自學?

1.網絡安全是什么 網絡安全可以基于攻擊和防御視角來分類&#xff0c;我們經常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術&#xff0c;而“藍隊”、“安全運營”、“安全運維”則研究防御技術。 2.網絡安全市場 一、是市場需求量高&#xff1b; 二、則是發展相對成熟…

使用 Vue3 + Pinia + Ant Design Vue3 搭建后臺管理系統

Vue3 & Ant Design Vue3基礎 nodejs版本要求&#xff1a;node-v18.16.0-x64 nodejs基礎配置 npm -v node -vnpm config set prefix "D:\software\nodejs\node_global" npm config set cache "D:\software\nodejs\node_cache"npm config get registry …

2023亞太賽數學建模A題:采果機器人的圖像識別技術思路模型代碼

亞太A題&#xff1a;采果機器人的圖像識別技術 A題完整思路獲取 &#xff1a;獲取見文末名片&#xff0c;第一時間更新 中國是世界上最大的蘋果生產國&#xff0c;年產量約為3500萬噸。與此同時&#xff0c;中國也是世 界上最大的蘋果出口國&#xff0c;全球每兩個蘋果中就有…

Android設計模式--裝飾模式

千淘萬漉雖辛苦&#xff0c;吹盡黃沙始到金 一&#xff0c;定義 動態地給一個對象添加一些額外的職責。就增加功能來說&#xff0c;裝飾模式相比生成子類更為靈活。 裝飾模式也叫包裝模式&#xff0c;結構型設計模式之一&#xff0c;其使用一種對客戶端透明的方式來動態地擴展…