原文地址:http://hi.baidu.com/jonathan2004/blog/item/7893eeed35c28626adafd578.htmlhtml
Linux 的 XFRM框架多簡單阿。6年前整理過,到如今還記得基本原理,說明xfrm設計的是多麼簡單明瞭。
不過網上都是基於代碼的分析,不多有從總體框架上來描述,你們都被code淹沒了。安全
0 前言
Linux引入XFRM是在不打亂原有的網絡協議結構和HOOK點安全架構設計前提下,成功引入了一種基於策略的高擴展性的網絡安全架構。網絡
有人會說在HOOK點也能實現IPSEC的問題,爲什麼還要XFRM?!!好問題,可是不是一兩句話能把你說明白,只有去設計一安全網絡系統才能深深體會到好處。這裏就不過多描述。架構
1 靜態框架框架
1.1 組建構成學習
XFRM 框架數據接收協議(如AH/ESP,與TCP/UDP並列屬於4層網絡協議)加密
XFRM 框架數據發送協議(至關於虛擬網卡驅動)架構設計
XFRM 框架策略引擎(與策略路有整合再一塊兒)設計
1.2 結構圖code
此圖還真很差畫,簡單描述一下就OK。有問題本身去解決把。
/* ------------------------------------------------------------------------ */
XFRM 框架策略引擎 TCP/UDP/XFRM
OUT點 IN點
forward點
(XFRM 框架策略引擎)
POST點 PRE點
XFRM 框架數據發送協議 其它網卡驅動
/* ------------------------------------------------------------------------ */
2 動態流程
2.1 發送數據
skb_buff XFRM 框架策略引擎命中策略(skb_buff明文) -> XFRM 框架數據發送協議處理->再次回到OUT點處理(skb_buff已經加密)->其它網卡驅動發送出去
2.2 接收數據
skb_buff PRE點(skb_buff加密)->路由查詢 是本地數據 -> XFRM四層協議處理 ->再次回到PRE點處理(skb_buff已經解密)->根據路由轉發/本地接收
2.3 轉發數據
在forward點策略查詢,而後根據是否命中策略,決點在POST點後是否加密仍是直接發送出去。
3 總結
XFRM具備極大的擴展性,我如今的產品就是在此基礎上實現了網絡安全管理。學習架構,學習思想,永無止境。
能夠此XFRM基礎上設計添加新的架構,就看你的思惟是否開闊;
能夠把XFRM體現的思想應用到其餘方面,就看你的思惟是否靈活;
學習不是最終目的,創造纔是追求的。不是爲了學習而學習,是爲了創造而學習。