萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux系統硬件路由的轉發原理

Linux系統硬件路由的轉發原理

  在Linux系統中路由轉發指的是信號從一個站點轉向另一個站點的一種協議,因為有些信號轉發,有些信號不轉發,才構成了紛繁復雜的網絡世界。本文就來介紹一下Linux系統硬件路由的轉發原理。

  硬件轉發原理圖:

Linux系統硬件路由的轉發原理

  請注意,沒有任何優化,你可以試著用一些小技巧將其進一步的優化,也可以直接用標准的TCAM來映射它。此圖裡,我詳細展示了“最長前綴”邏輯是怎麼做的,而在TCAM路由轉發表的實例中,往往被畫成了黑盒子,叫做“優先級邏輯控制器”,不過,這個邏輯電路比較簡單,相信大家稍微思考都可以自己設計出來的。

  其實,在上圖中,有一個容器叫做“反掩碼”,將這個反掩碼逐位地安排在譯碼器後面的位線比較鍵旁邊,這就是一個標准的TCAM做法了。

  關於內容尋址和地址尋址

  我們都知道cache比較貴所以不能太大,而內容就可以做很大,因為它比較便宜。

  但是能否從技術層面解釋一下呢?其實,貴與便宜的差異就是技術原因造成的,我們先看一下內存的存儲陣列的電路:

Linux系統硬件路由的轉發原理

  這是個非常典型的矩陣,也很簡單。但是對於CAM電路,就不是這麼簡單了,下圖所示:

Linux系統硬件路由的轉發原理

  對於TCAM,需要加一個care邏輯,就更加復雜了,不光是電路復雜了,功耗也增加了,要知道,在CAM/TCAM匹配的過程中,電路的所有部分都是同時工作的。

  關於硬件HASH

  很多人都說CPU cache裡面有一個硬件HASH,比如取地址的第n到m位,事實上就是一個移位,取模操作!這在程序員看來只能呵呵了,程序員們知道的最簡單的HASH算法都比這個復雜。其實硬件工程師對程序員的呵呵是不屑一顧的,因為他們的關注點是如何使得電路同時工作時功耗最低,電路規模更小。CAM/TCAM都用了硬件HASH,很簡單的硬件HASH,然而電路是可以同時工作的。這可是軟件hash的大難題,軟件hash旨在使得hash分布更加均勻,平均性能更好。這樣沖突鏈表長度的平均方差最小。軟件hash旨在解決沖突,而硬件HASH不需要這麼做,因為在軟件看來必須串行遍歷沖突鏈表的時候,硬件卻是可以同時進行的。

  順序執行的CPU

  計算機被設計之初,就是一個順序執行的模型,指令是一條接一條執行的。這是因為它是完全模擬真實世界中人的行為的。這就意味著所有的跑在計算機上的算法步驟都是要時間流逝中串行實施的,一個好的算法旨在讓時間花費最短。然而硬件電路的設計並不遵循真實世界的人做事的樣子,起碼說不是太像。一個人不可能同時做很多事,硬件電路的執行流程更像是洪水泛濫的過程,由於勢能,洪水同時往(注意,同時!)所有它可以去的地方沖去,瞬時就吞噬了一切。

  以上就是Linux系統硬件路由的轉發原理了,當然路由轉發只是Linux網絡環節中的一部分,當然也是最不可替代的部分。

copyright © 萬盛學電腦網 all rights reserved