2010 03 28 Fib表和路由快取表

2022-08-31 06:30:15 字數 1147 閱讀 6578

在fib中儲存的是路由規則,在系統中一般先查詢路由快取,如果查到,則直接抽出,如果不能查到,則根據fib中的規則換算出來,並且加到路由快取裡面去。

在系統中一般有兩張表,local_table和main_table,都是fib_table{}結構的。fib_table{}結構裡面定了以一堆用於操作的函式指標,而且定義了乙個指向乙個fib hash表,實現hash表的結構是fn_hash{}結構。fn_hash{}結構中有33個fn_zone{}結構型別的指標,分別表示33種不同的子網掩碼。

fn_zone{}是通過鍊錶連線起來的,所以fn_zone{}裡面有乙個連線到下乙個fn_zone{}的指標,另外乙個重要的指標是指向fib_node{}型別的hash鍊錶,fn_nent記錄fz_hash鍊錶中fib_node{}結構的節點的數目。fn_order記錄的是在該fn_zone在fn_hash{}結構的hash表中的位置,而對於fz_mask,通過inet_make_mask()初始化,其值等於子網掩碼的對應值。

fib_node{}是fn_zone{}中的hash表的元素,fn_info是指向fib_info{}結構的指標,fn_key_t是通過目標位址和fz_mask做&操作之後的資料,所以說是子網位址。對於fib表的操作主要有查詢,新增,刪除三種操作。

連線的時候是從fib_table{}到fn_hash{},到fn_zone{}再到fib_node{}。

route結構裡面儲存的是路由的快取。route{}裡面有乙個union,儲存的是乙個rt_next指標或者是乙個dst_entry{}結構。rt_dst和rt_src中存放的是目的或者源的ip位址或者是網路位址。

rt_hash_bucket{}管理系統中所以得rtable{}結構表,系統中關鍵的乙個外部變數rt_hash_table就是rt_hash_bucket{}型別的。通過chain指向rtable{}型別鍊錶的第乙個節點。

dst_entry{}是路由對應的網路介面的指標,用於輸入輸出。neighbour{}指標型別的變數neighbour。兩個函式指標input和output分別對應著ip層的輸入和輸出函式,一般說來,output指標對應著向下一層傳送資料的函式dev_queue_xmit(),input函式指標對應著向上一層傳送資料的函式,如tcp_recv()。dst_ops{}內存放著這個路由位址族協議以及一些相關的函式,在include/net/dst.h中定義。

MAC位址表 ARP快取 FIB路由表

說到mac位址表,就不得不說一下交換機的工作原理了,因為交換機是根據mac位址表 資料幀的。在交換機中有一張記錄著區域網主機mac位址與交換機介面的對應關係的表,交換機就是根據這張表負責將資料幀傳輸到指定的主機上的。交換機的工作原理 交換機在接收到資料幀以後,首先 會記錄資料幀中的源mac位址和對應...

RIB表和FIB表 ARP表和FDB表

1.rib與fib的區別 rib 路由表 fib 資訊表 fib表更多是出現在需要快速 的路由器上,這種路由器上的路由表條目通常都達成千上萬條,如果按照傳統的檢索路由表進行 的方式,其 效率很低,fib表作為路由表的一種精簡形式出現,通常只記錄常用的表項。當需要選路時,先檢索fib表,如果找不到再檢...

linux核心 路由fib表之輸出查詢

2.2.3.2 輸出路由查詢 ip route output key 功能 呼叫ip route output flow ip route output flow 功能 1 路由發包查詢 2 ipsec處理流程 int ip route output flow struct net net,stru...