Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理是什么
Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理是什么
Linux系統(tǒng)的硬件路由是如何轉(zhuǎn)發(fā)的呢?許多小伙伴興許還不太清楚,下面是學習啦小編為大家介紹Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理,歡迎大家閱讀。
Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理
硬件轉(zhuǎn)發(fā)原理圖:
請注意,沒有任何優(yōu)化,你可以試著用一些小技巧將其進一步的優(yōu)化,也可以直接用標準的TCAM來映射它。此圖里,我詳細展示了“最長前綴”邏輯是怎么做的,而在TCAM路由轉(zhuǎn)發(fā)表的實例中,往往被畫成了黑盒子,叫做“優(yōu)先級邏輯控制器”,不過,這個邏輯電路比較簡單,相信大家稍微思考都可以自己設計出來的。
其實,在上圖中,有一個容器叫做“反掩碼”,將這個反掩碼逐位地安排在譯碼器后面的位線比較鍵旁邊,這就是一個標準的TCAM做法了。
關于內(nèi)容尋址和地址尋址
我們都知道cache比較貴所以不能太大,而內(nèi)容就可以做很大,因為它比較便宜。
但是能否從技術層面解釋一下呢?其實,貴與便宜的差異就是技術原因造成的,我們先看一下內(nèi)存的存儲陣列的電路:
這是個非常典型的矩陣,也很簡單。但是對于CAM電路,就不是這么簡單了,下圖所示:
對于TCAM,需要加一個care邏輯,就更加復雜了,不光是電路復雜了,功耗也增加了,要知道,在CAM/TCAM匹配的過程中,電路的所有部分都是同時工作的。
關于硬件HASH
很多人都說CPU cache里面有一個硬件HASH,比如取地址的第n到m位,事實上就是一個移位,取模操作!這在程序員看來只能呵呵了,程序員們知道的最簡單的HASH算法都比這個復雜。其實硬件工程師對程序員的呵呵是不屑一顧的,因為他們的關注點是如何使得電路同時工作時功耗最低,電路規(guī)模更小。CAM/TCAM都用了硬件HASH,很簡單的硬件HASH,然而電路是可以同時工作的。這可是軟件hash的大難題,軟件hash旨在使得hash分布更加均勻,平均性能更好。這樣沖突鏈表長度的平均方差最小。軟件hash旨在解決沖突,而硬件HASH不需要這么做,因為在軟件看來必須串行遍歷沖突鏈表的時候,硬件卻是可以同時進行的。
順序執(zhí)行的CPU
計算機被設計之初,就是一個順序執(zhí)行的模型,指令是一條接一條執(zhí)行的。這是因為它是完全模擬真實世界中人的行為的。這就意味著所有的跑在計算機上的算法步驟都是要時間流逝中串行實施的,一個好的算法旨在讓時間花費最短。然而硬件電路的設計并不遵循真實世界的人做事的樣子,起碼說不是太像。一個人不可能同時做很多事,硬件電路的執(zhí)行流程更像是洪水泛濫的過程,由于勢能,洪水同時往(注意,同時!)所有它可以去的地方?jīng)_去,瞬時就吞噬了一切。
以上就是Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理了,當然路由轉(zhuǎn)發(fā)只是Linux網(wǎng)絡環(huán)節(jié)中的一部分,當然也是最不可替代的部分。
Linux系統(tǒng)硬件路由的轉(zhuǎn)發(fā)原理是什么相關文章: