《深入理解Linux網路技術內幕》閱讀筆記 --- 路由

來源:互聯網
上載者:User

標籤:lin   動態路由   引用   存在   路由   產生   nod   相同   資訊   

一、Linux核心中路由相關的主要資料結構

  1. struct fib_result:對路由表尋找後返回該結構,它的內容並不是簡單的包含下一跳資訊,而且包含其他特性,例如策略路由所需的更多參數。
  2. struct fib_rule:表示由策略路由在路由流量時選擇路由表的規則
  3. struct fib_node:一條路由表項。例如,該資料結構用於儲存由route add或ip route add命令添加一條路由時產生的資訊。
  4. struct fn_zone:一個zone表示子網路遮罩長度相同的一組路由
  5. struct fib_table:表示一張路由表
  6. struct fib_info:不同路由表項之間可以共用一些參數,這些參數被儲存在fib_info資料結構中,當一個新的路由表項所用的參數與一個已經存在的路由表項所用的參數匹配時,則重複使用已經存在的fib_info結構。一個引用技術用於跟蹤該結構重複使用的次數
  7. struct fib_alias:達到相同網路的路由,因為其他一些參數而不同,例如TOS,不同的路由是通過fib_alias執行個體來區分的
  8. struct fib_nh:表示下一跳
  9. struct fn_hash:該結構包含指向33個fn_zone鏈表頭的指標,以及一個鏈表。這個鏈表將活動的zone(active zone,即那些至少有一個元素的zone)連結在一起,鏈表中的元素按照子網路遮罩長度的降序排列
  10. struct fn_zone_list:非空的fn_zone bucket被連結在一起,該鏈表的頭儲存在fn_zone_list中
  11. struct fib_info_hash:所有fib_info結構被插入到這個hash表中,用fib_find_info函數來尋找該表
  12. struct fib_info_laddrhash:只有在路由表項有一個首選源地址時,才將fib_info結構插入到這個表中。這個hash表主要是為了方便地刪除由於刪除了本地配置IP地址而影響的路由

每個單獨的子網對應一個fib_node執行個體,用變數fn_key識別,它的值就表示該子網。例如,對於子網10.1.1.0/24,fn_key為10.1.1。目的子網相同的不同路由(即fn_key相同)共用同一個fib_node。每條路由有自己的fib_alias結構。每個fib_alias執行個體都與一個fib_info結構相關聯,該結構儲存著真實路由資訊(即如何到達目的地)。

 

二、路由表初始化

  1. 在系統啟動時總是建立下面兩個路由表,它們與核心配置選項無關:
    1. ip_fib_local_table:核心將本地地址的路由放在該表中,包括到相關的子網網路地址以及子網廣播位址的路由。使用者不能直接配置該路由表。
    2. ip_fib_main_table:所有其他的路由表項(包括使用者配置的靜態路由,路由協議產生的動態路由)都放在該表內。

 

《深入理解Linux網路技術內幕》閱讀筆記 --- 路由

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.