pingpang

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

          先說一下應用環境:

          采用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發送來的包。

          posted on 2012-07-19 22:23 往事隨風 閱讀(1901) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平陆县| 旺苍县| 南溪县| 宜兴市| 垣曲县| 布尔津县| 任丘市| 临清市| 沽源县| 满洲里市| 鄢陵县| 三门峡市| 门头沟区| 宣武区| 左云县| 区。| 东乡| 古浪县| 澄城县| 涪陵区| 淮阳县| 灌云县| 西吉县| 赣州市| 元朗区| 湖南省| 库伦旗| 和静县| 苏州市| 永胜县| 额尔古纳市| 崇信县| 友谊县| 革吉县| 霍林郭勒市| 来宾市| 瑞丽市| 苍溪县| 聂荣县| 富源县| 正定县|