小談ip over pci 開發
康華 :主要從事 linux 作業系統核心、虛擬機器、linux 技術標準、計算機安全、軟體測試等領域的研究與開發工作,曾就職 mii-hp
軟體實驗室 、瞬聯軟體
公司/motorola,現就職於lenovo研究院 。其所合寫的linux專欄見
。 如果需要可以聯絡通過 [email protected] (msn)聯絡我.
先來說說什麼是ip over pci吧。 事情的經過是這樣的——我們的通訊系統架構是由乙個組插在同乙個compactpci匯流排上的板卡組成,它們之間可以通過讀寫pci空間,進行資料交換(compactpci是pci協議的一種擴充套件,從軟體角度講兩者對開發者沒什麼區別,呵呵) 。
由於我們多數板子的flash儲存空間有限,難以存放較為完整的檔案系統。所以只想在乙個配置有較大flash的板子上安裝linux系統所需的檔案系統,而讓其它板子通過nfs方式使用大板上的檔案系統。這樣做很大程度的節約了各各個 小板的儲存空間,可也帶來了乙個新問題:nfs需要tcp/ip協議棧支援,需要每個板子都有ip位址。
虛擬網絡卡的介面要求很簡單,只要能夠把協議棧送下來的ip包寫到cpci(compact pci)位址空間,即從虛擬網絡卡傳送出去了;同時也能將其它虛擬網絡卡傳送到cpci位址空間的ip包讀出來,並送到上層協議棧上。
虛擬網絡卡
compactpci
虛擬網絡卡
虛擬網絡卡
虛擬網絡卡
nfs
nfs
nfs
nfs架構圖虛擬網絡卡的實現我參照lld中的例子,相信你也能夠很快實現。至於從cpci空間讀寫資料的實現是體系結構相關的,也沒什麼難的,不費筆墨了。這裡我所以介紹ip over pci是希望能拋磚引玉,供大家開闊思路,你不妨想想,over serial等等實現方法。
呵呵,下面給出我做的乙個demo 程式
ip over fifo (注:該程式執行於2.4.18核心,本**的其它程式也都開發於2.4.18核心,不過移植到2.6核心也不是難事)。
ip over fifo不用解釋,也可知道就是用fifo命名管道來模擬以太網路,我之所以採用fifo也是為了方便大家在單機上實驗,純用軟體模擬――虛擬的網絡卡,虛擬的線
這個程式有兩個一樣的子檔案組成 ,它們各被編譯成乙個虛擬網絡卡模組sn0 和 sn1(我們程式由ldd的snull程式演化而來,其中命名等都保持不變),你只需要分別載入,便可擁有兩個虛擬網絡卡(ifconfig –a可看到它倆,當然你也可以配置它們的ip位址,方法和操作真網絡卡無異)。 nfs也就可以執行在其上了。
程式的主幹採用了ldd中snull例項的實現,其中不同的地方有三個需要注意:第一點是虛擬網絡卡無法觸發中斷,因此ip包的接收(從fifo中讀取ip包)是採用了乙個核心執行緒做輪訓讀取資料報;第二點是我們利用了兩個fifo管道檔案(mkfifo或mknod命令可生成管道檔案)模擬雙向傳輸的網線。每個管道兩頭都有不同的虛擬網絡卡讀寫,只是兩個管道讀寫方相反;第三點是我們需要在核心中讀寫檔案,由於有空間保護問題(有乙個斷言會判斷系統呼叫的引數位址空間是否在使用者空間),因此從核心讀寫時需要改變空間檢測的範圍,具體做法是呼叫前後加上如下語句:
fs = ;
set_fs (get_ds());
系統呼叫,如sys_open()
set_fs(fs);
補記:
例項**執行步驟 1
執行 make ,
編譯完成會生成兩個vnetdrv1.o
和vnetdrv2.o
兩個虛擬網絡卡模組。 2
在當前目錄下執行 mkfifo fifonet1;mkfifo fifonet2
生成兩個用於模擬雙向網線的命名管道檔案。 3
執行insmod vnetdrv1.o ; insmod vnetdrv2.o
,註冊模組到核心,
此刻系統中新增了sn0
和sn1
兩個虛擬網絡卡。 4
執行 ifconfig sn0 192.168.0.1
和ifconfig sn1 192.168.1.2
,配置網絡卡
到兩個網段。
5 執行ping -c 2 192.168.0.2 資料將從在兩個虛擬網絡卡間傳送。
業務系統的開發經驗小談
業務從何而生?乙個具體的場景下遇到了問題不知道怎麼解決或解決的辦法很原始很笨拙,由此而產生了需求 在具體場景下需要解決某個問題,或者以更優的方式來解決。解決後,實現某事的效率大幅提公升,進而促進整體的效益。對業務有整體而深入的理解,才能設計出更好的系統架構來容納業務的有效處理和擴充套件。業務抽象 業...
小談《金鎖記》
2005 1 18 金鎖記 是張愛玲1943年的作品。同年間的其他作品包括 傾城之戀 第一爐香 第二爐香 茉莉香片 等。張愛玲本人比較喜歡 傾城之戀 而許多讀者,包括 我在內比較傾向於中篇 金鎖記 張愛玲的大部分作品,讀者讀下來的感覺是蒼涼 凝重。我讀 金鎖記 這篇,更感受到 了命運的無奈。篇中幾位...
談專案開發
前段時間一直忙自考,著急趕專案進度,現在終於有時間回顧這段時間的學習,突然發現自己已有半個月沒有沉澱。今天早上醒來,靈感如泉水般湧出,擋都擋不住,所以早上一到機房,便迫不及待的想大家分享靈感,希望大家能耐心聽我講解。這次談的話題是專案開發中需要注意的問題,比如前段時間的專案開發 一面是客戶不斷的催,...