Linux 4.0+核心對硬體交換模組的支援(HW Switch Offload),hwoffload

來源:互聯網
上載者:User

Linux 4.0+核心對硬體交換模組的支援(HW Switch Offload),hwoffload
Linux核心最近躍進到了4.x時代,初看沒啥大的動作,但是對於我而言,最令人興奮的還是它對硬交換模組的支援。這也是為全面迎合SDN做好準備的第一步。
Linux上的路由與交換Linux誕生於網路,天生對網路擁有全面且強大的支援,即便再複雜的協議,再封閉的技術,幾乎都可以找到對應的Linux實現。然而這並不是說Linux網路就天下無敵了,它存在很多不合理的地方。
       Linux擁有對路由的強大支援,在資料平面,你可以很輕鬆地實現一種路由尋找演算法,在控制平面,你也可以在使用者態實現任何已有的或者你自己設計的路由協議,然而,這一切都是軟的,也就是說,都是CPU來完成的。
       當我們知道路由和交換的區別之後,就會發現,Linux一直以來都沒有實現真正的交換,起碼在通用介面層面上沒有一個合理的解決方案。Linux的bridge模組?算了吧,它只是實現了一個軟橋接器,和真正交換器不沾邊的。
Linux對硬體交換的支援記得去年的時候,我曾經拿到過一塊交換板,可以直接插在主板的PCI-E上,當時必須使用廠商特定的驅動程式以及配合VLAN技術才能將其用起來。其實很多的交換器可能都採用了Linux作為管理平面和控制平面,然後配置自己的定製硬體和定製驅動來使用。
       我曾經想過一種辦法用Netfilter技術實現對硬體交換模組的支援,但是,CPU還是要被中斷的,整個流程是CPU將資料包拉到bridge或者IP層,然後再交回硬體...正確的方式是根本不用中斷CPU,完全通過硬體來轉寄資料包,只有資料和本地協議棧相關的時候,才中斷CPU。而這個思路,意味著你必須重寫驅動。
       總之,沒有一個統一的介面,這就意味著如果你自己想設計一塊交換板,沒有比較好的標準可循,即便有,可能你也要自己編寫或者複製粘貼大量的驅動代碼,這將嚴重影響研發效率。
Linux 4.0的switchdev一切壞訊息在Linux 4.0核心中終結。
       Linux 4.0引入了一個switchdev架構,它代表一類擁有“交換”能力晶片的多網口裝置的抽象。其中每一個網口就是一個port,在switchdev架構中被註冊成一個net_device。除此之外,核心中內建了一個rocker driver,示範了一個實際的裝置驅動的實現。整個switchdev的如下所示:



注意,理想化的實現中,OpenFlow控制器可以直接將流表注入到裝置中,從而指導裝置直接進行資料包交換。流表的內容超級複雜,不是本文的目標,但是相信在後一個核心版本中會出現相關的Document。
       採用了硬體交換模組的Linux BOX和原來的截然不同了,它更像是一個高端的專業網路裝置,類似Cisco那樣的。它看起來就是下面的樣子:


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.