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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 班戈县| 霸州市| 八宿县| 凉山| 五大连池市| 息烽县| 泗水县| 饶阳县| 通榆县| 乳源| 偏关县| 莱芜市| 瑞昌市| 衡山县| 应城市| 尉氏县| 秭归县| 富顺县| 章丘市| 巢湖市| 锡林郭勒盟| 东平县| 林口县| 昔阳县| 汉阴县| 乐昌市| 景谷| 陇西县| 确山县| 海盐县| 武威市| 衡南县| 城固县| 古田县| 屯昌县| 内丘县| 拉萨市| 铜川市| 页游| 平原县| 方城县|