中文名稱 | Linux安全網 | 外文名稱 | Linux security online |
---|---|---|---|
服????務 | 漏洞和解決方案 | 核????心 | Linux安全為核心 |
格式:pdf
大?。?span id="v5jhgs0" class="single-tag-height">86KB
頁數: 4頁
評分: 4.8
基于 Linux 的 VPN 安全網關的研究 王艷濤 劉建輝 曹 輝 (遼寧工程技術大學 阜新 123000 ) 摘 要 由于 Inter net的不安全性 , 許多團體和組織為了在這個全球性的 開放網絡上 進行安全的 內部通信 , 開發(fā) 并采用 了虛擬 專用網絡技術。首先介紹了 VPN 的概念以及 IPSEC體系結構及實現方法 ,全面分析 和比較了目前的 V PN 技術 ,同時研究 了通用安全網關的實施架構和功能 ,本著高效 、安全的原則提出了一個基 于 L inux 的 V PN 安全 網關的解決 方案 ,具體實施 借鑒了雙宿主防火墻的架構 ,在 IPSEC模塊的基礎上添加了 防火墻模塊和網絡地址轉換模塊 ,最后在基于 Linux 定制的操 作系統(tǒng)上進行整合。 關鍵詞 : 網絡安全協(xié)議 網關 防火墻 網絡地址翻譯 中圖分類號 : T P393. 04 Research of VPN S
格式:pdf
大小:86KB
頁數: 2頁
評分: 4.5
在所有網絡安全通信機制中,防火墻技術及入侵檢測技術占據著十分重要的地位。本文將防火墻和入侵檢測兩項技術相結合,以Linux服務器為基礎進行了安全網閘的設計,在網絡服務使用過程中實現了安全保護及入侵檢測等目的。
linux調度器(BFS )是一款專門為 Linux 桌面環(huán)境所設計的內核調度器,它基于 Staircase Deadline和 EEVDF 算法,支持 Linux 2.6.31之后的內核。它提供了前所未有的流暢桌面性能,不僅得到了用戶的認可,也為一些商業(yè)系統(tǒng)所采用。
Linux 調度器對比
BFS vs CFS,設計上的不同 白天 Con Kolivas 在醫(yī)院里當麻醉師,為人們解除痛苦,業(yè)余的時候借 Linux 解除自己的痛苦。額,Kolivas 學習 Linux 并不是為了解決痛苦,我臆測而已。但據 Kolivas 自述,他接觸 Linux 內核時連 C 語言也沒有學習過。。。這個事實證明,語言只是一項工具,對問題本質的深入理解才是寫程序的關鍵??赡苓€有執(zhí)著,CFS 和 RSDL 之爭導致 Kolivas 離開 Linux 社區(qū),此去經年,當 Kolivas 再次開始看內核代碼的時候,他立即發(fā)現 CFS 存在以下幾個設計上的問題:
CFS 的目標是支持從桌面到高端服務器的所有應用場景,這種大而全的設計思路導致其必須做一些實現上的折中,此外,那些只有在高端機器中才需要的特性將引入不必要的復雜代碼。
其次,為了維護多 CPU 上的公平性,CFS 采用了負載平衡機制,Kolivas 認為,這些復雜代碼抵消了 per cpu queue 曾帶來的好處。
最后,主流內核的 CFS 還是對睡眠進程存在一些偏好,這意味著"不公平"。
在現實中,調度算法類似一個處境尷尬的主婦,滿足孩子對晚餐的要求便有可能傷害到老人的食欲。Linux 內核一直試圖做出一道讓全家老少都喜歡的菜,在這方面,CFS 已經做的很好。但一道能被所有人接受的菜,或許就意味著稍許平淡。而 BFS 只打算滿足一種口味,以便將這種口味發(fā)展到極限。
根據 Linux Magazine的說法,Con Kolivas是看到了下面這則來自 xkcd 的漫畫而開始思考 BFS 的。
事情源于一些 Linux 用戶,他們發(fā)現 Linux 雖然號稱能夠充分發(fā)揮 4096 顆 CPU 系統(tǒng)的計算能力,但在普通的 laptop 上卻無法流暢地播放 Youtube 視頻。
這讓人們開始思考,對于 Desktop 環(huán)境來講,CFS 哪些復雜的特性究竟是否還有意義?人們是否有必要在自己的個人電腦中使用一個支持 4096 個 CPU 的調度器?
BFS 正是對這種質疑的自然反應。它不打算支持 4096 個 CPU 的龐然大物,BFS 的目標是普通人使用的桌面電腦。此外,BFS 還刪除了那些只有在服務器上才需要的特性。比如,BFS 拋棄了 CFS 的組調度特性,類似 CGROUP 這樣的特性對于普通的桌面用戶是多余的技術。
這很容易理解:在只有一個 CPU 的系統(tǒng)中,誰還會設計多個 CGroup,哪里還能用到 NUMA domain等概念呢?
此外 BFS 使用單一的 run queue,不再需要復雜的負載均衡機制。由于不再有 CGROUP 概念,也不再需要 Group 間的負載均衡。
這些簡單的裁剪使得 BFS 的代碼極大地簡化,簡化的代碼意味著執(zhí)行一次調度所需要的指令數減少了,相應的 footprint 自然也減少了。
當然簡化代碼只是一個顯而易見的方面,更重要的是,這種理念的不同會對最終的調度器實現產生更加深遠的影響,這實在是難以盡述。
多隊列 vs 單一隊列
?在 Linux 內核進入 2.6 時,調度器采用 per cpu run queue 從而克服了單一 run queue 的局限。在多 CPU 系統(tǒng)中,單一 run queue 意味著 run queue 成為了系統(tǒng)的瓶頸,因為在同一時刻,一個 CPU 訪問 run queue 時,其他的 CPU 即使空閑也必須等待。當使用 per CPU 的 run queue 之后,每個 CPU 不必再使用大鎖,從而能夠并行地處理調度。
但很多事情都不像第一眼看上去那樣簡單。
Kolivas 發(fā)現,采用 per cpu run queue 所帶來的好處會被追求公平性的 load balance 代碼所抵消。在目前的 CFS 調度器中,每顆 CPU 只維護本地 run queue 中所有進程的公平性,為了實現跨 CPU 的調度公平性,CFS 必須定時進行 load balance,將一些進程從繁忙的 CPU 的 run queue 中移到其他空閑的 run queue 中。
這個 load balance 的過程需要獲得其他 run queue 的鎖,這種操作降低了多運行隊列帶來的并行性。
并且在復雜情況下,這種因 load balance 而引入的 footprint 將非??捎^。
當然,load balance 引入的加鎖操作依然比全局鎖的代價要低,這種代價差異隨著 CPU 個數的增加而更加顯著。但請您注意,BFS 并不打算為那些擁有 1024 個 CPU 的系統(tǒng)工作,假若系統(tǒng)中的 CPU 個數有限時,多 run queue 的優(yōu)勢便不明顯了。
而 BFS 采用單一隊列之后,每一個需要調度的新進程都可以在全局范圍內查找最合適的 CPU,而無需 CFS 那樣等待 load balance 代碼來決定,這減少了多 CPU 之間裁決的延遲,最終的結果是更小的調度延遲。
向前看還是向后看?
多年來 Kolivas 一直關注著 Linux 在 desktop 上的表現。對于 desktop 的用戶,最注重的不是系統(tǒng)的吞吐量,而是交互性程序的流暢體驗。從 SD 開始,Kolivas 就告訴內核黑客們,完全公平能夠從根本上保證交互性。他始終堅持一個基本觀點:調度器應該 forward look only。決不要去考慮一個進程的過去。
CFS 卻偏偏要考慮進程的過去。2.6.23 的時候,CFS 記錄并使用 sleep time。之后不久,在 2.6.24 發(fā)布的時候,CFS 合并了"Real Fair Scheduler",刪除了 sleep time。因此在 2.6.24 之后的內核中,CFS 終于也不再考慮進程過去的睡眠時間。
但 CFS 還是保留了 sleeper fairness 的思想,當進程 wakeup 的時候,在 place_entity() 函數中,CFS 將對 sleeper 進行獎勵,以便其能盡快得到 CPU。這個策略是非常微妙的,我們在 2.1 節(jié)中詳細介紹了 sleeper fairness 的演進過程。假如您花些時間回頭再看看,就會發(fā)現 sleeper fairness 曾造成怎樣嚴重的延遲問題。雖然 Ingo 自稱 Gentle fairness 解決了延遲問題,但從代碼上看,Gentle Fairness 只是對 sleeper 的獎勵減半而已。因此我們可以說,CFS 依然對 Sleeper 進程進行獎勵,這代表著一種偏好,一種"不公平"。而這,正是 BFS 所反對的。
BFS 中,當一個進程 wakeup 時,調度器將根據進程的 deadline 來進行選擇(關于 deadline 本文將在第 4 章中詳細描述),其結果是,更早睡眠的進程能更快地得到調度;CFS 的 sleeper fairness 則意味著要根據 wakeup 的時間來選擇下一個被調度的進程,更早 wakeup 的進程會更快得到調度。
這種不同究竟會對桌面應用造成何種影響尚沒有理論依據可以參考。但我個人認為,BFS 的策略更加合理。
您現在可能已經讀得有些煩躁了 ( 這些英文加中文的說些啥啊 ),所以我還是盡快介紹一下 BFS 的實現細節(jié)吧。然后或許您會理解我,有些詞還是不翻譯更好。
Kiwi Linux是面向i386架構的一份修改過的Ubuntu自啟動運行光盤,它包含羅馬尼亞語和匈牙利語的本地化,多媒體編碼解碼器,對加密DVD的支持, 面向Firefox的Flash及Java插件,用于訪問本地互聯網服務(Clicknet和RDS)的PPPoE圖形用戶界面,以及對NTFS分區(qū)的寫 支持。