tap的介紹就不說了,請自行參考上面的引用
先說一下應用環境:
採用tilera的平台(一種眾核平台,),三張網絡卡,兩個10g的xgbe網絡卡,用來進行資料的傳送和接受;乙個1g的普通網絡卡,用來做管理介面.
10g的xgbe工作在tilera的特定sdk下,其中的資料報不經過核心協議棧,直接交付給使用者。這樣的好處是資料處理效率很高(普通的linux協議棧中需要兩次記憶體的拷貝,效率低),但是也因此帶來了一些問題,有些包需要交給標準的協議棧 ,比如ospf報文,zebra工作在使用者態,需要從標準的協議棧內獲取網路資料報,而xgbe是不會直接把資料交付給標準協議棧的。
tap虛擬網絡卡是linux標準的虛擬網路裝置,在tilera平台上其程式設計也是一樣的。
擁有這樣的虛擬網絡卡後可以利用其通用linux協議棧的特性,並可以將資料報交付應用層的socket程式處理。ospfd程式就可以利用tap程序收到ospf報文,並發布預設路由出去。
上圖是tap網絡卡的收發包流程圖
左側紅色箭頭標示的為從協議棧經tap網絡卡發包標示,對從tap讀進來的包進行一下netio封裝,然後經過xbge傳送出去
右側綠色箭頭標示的為資料報經tap網絡卡收至協議棧的流程,呼叫netio(tilera 特定的網路程式設計api)從xgbe中收到傳送給tap的報後,經過包處理程序將資料報交付給tap程序,其實就是將收到的包寫進tap網絡卡中,這樣使用者程序就可以再核心協議棧中接受到通過xgbe傳送來的包。
windows下安裝django的一種方法
django版本是1.3.1,壓縮包。1.首先將django 1.31壓縮包解壓,使其與python2.7在同一根目錄下 2.之後進入cmd,通過命令python setup.py install進行安裝。python2.7和django 1.3.1都是存放在本地的c盤 安裝成功以後,可以通過以下命...
linux環境下的一種退出後快速返回的方法
在做專案開發的時候,shell 環境是很重要的,一旦汙染了環境 如,改變了某個關鍵路徑,或修改了配置指令碼,就需要校正,一般的做法就是 exit 當前環境,重新登入,再 source 環境重來。重新利用source 來設定環境這些都是必須的,如何返回到退出 exit 時的目錄是有技巧的,特別是處在乙...
windows下使用openssl的一種方法
舉個例子,如使用sha1,開發時引用標頭檔案 include sha.h 工程屬性裡新增需要的標頭檔案路徑 c program files openssl 0.9.8i include c program files openssl 0.9.8i crypto c program files ope...