姚 炯 ([email protected]), 網絡工程師, 杭州師范大學理學院
本文介紹了 Linux 軟路由的工作原理,並使用普通 PC 計算機作為硬件設備,在實際網絡環境中測試和討論了 Linux 軟路由的性能。實驗證明,在百兆以太網絡環境中, Linux 軟路由的數據報轉發速度取決於網絡卡的實際速度,並隨著軟路由系統的應用層服務的增加而降低。該結果為 Linux 軟路由的應用和普及提供依據。
0、引言
隨著開源軟件的發展,越來越多的人開始了解、使用和研究 Linux。目前 Linux 環境下的軟路由設計和應用案例已有很多;但是對於實際網絡環境中 Linux 軟路由的負載性能一直缺乏相關的實測和討論。本文從 Linux 軟路由的框架和實驗兩部分進行討論,並給出結論。
1、Netfilter 框架
Netfilter 框架上是整個 Linux 軟路由運作的體系,是 Linux2.4 內核處理數據報的流水操作系統。它能夠運做在 IPv4、IPv6 及 Decnet 等網絡棧中。Netfilter 框架的概念的提出及主要實現者是 Rusty Russell。
Netfilter 框架如圖所示:
Figure xxx. Requires a heading
(1)Netfilter 為每種網絡協議定義一套鉤子函數,其中為 IPv4 定義了以下5個鉤子函數:
[1]NF_IP_PRE_ROUTING.
[2]NF_IP_LOCAL_IN
[3]NF_IP_FORWARD
[4]NF_IP_POST_ROUTING
[5]NF_IP_LOCAL_OUT
(2)這些鉤子函數在 Linux 內核的模塊中注冊,並與之掛接。當數據報流入框架的網絡層時,內核模塊在框架的鉤子函數處[1]接收數據報,並對它進行檢查、轉發、丟棄或指示 Netfilter 將該數據報通過[2]傳入用戶空間隊列。
(3)如果該數據報被傳遞給用戶空間,將在應用層被異步處理。該層的用戶進程(Local Process)在對數據報進行更加精細的檢查,修改和裝配之後,通過鉤子函數[4]把它重新遞交給網絡層。
Netfilter 框架的數據報分流結構使它極大地降低了數據報轉發的延遲,提高了數據報控制的精度;在節省系統開銷,提高數據報的處理效率上超越了工作在 Windows 平台的路由軟件。