Linux平台使用網路加速卡提高轉寄效能

來源:互聯網
上載者:User
一直以來,Linux給人的印象都是伺服器層級的,雖然有人拿它當案頭,也有手機使用它,但這都是少數,幾乎從來都沒有人拿它放在骨幹網上當路由器,哪怕是接入層都少到幾乎沒有人使用Linux。Netfilter機制可以改變這個事實,因為Netfilter機制太強悍了,它幾乎可以讓你完全重新定製協議棧的行為。
        不要以為只有iptables之類的防火牆/NAT軟體才使用Netfilter,其實Netfilter是一個統一的過濾架構,它的本質在於可以在協議棧的某些地方截獲資料包,然後你怎麼去處理截獲的資料包,那就是你自己的事了,對於iptables而言,它只是執行一系列的match,然後執行一個target,然而Netfilter還可以做得更多。
        很早就聽過網路加速器,但是一直覺得光靠軟體,最佳化一些演算法,是絕對不可能造成效能統計資料的數量級的提升的,肯定需要某種硬體的協助,即便Cisco這樣的專業層級的裝置,也是使用了大量的ASIC晶片來轉寄報文的,實際上就是使用了某種硬體的cache機制。如果這些硬體也能插入運行Linux的網關內,那麼Linux的網路轉寄效能勢必也會大幅提高。然而硬體插上去很簡單,如何讓軟體配合硬體工作呢?我們知道硬體沒有軟體的配合就是一堆廢品,因此必須要讓插入的加速卡在軟體的指導下工作起來,這又談何容易啊,我們不得不修改協議棧的代碼。
        幸運的是,Linux上有Netfilter,這樣事情就簡單多了。如何操作加速卡硬體,那是硬體廠商的事情,買來的硬體如果沒有開發手冊,那其實也是一堆廢品。因此買來的硬體一定要有一個開發手冊,起碼要提供在各個平台上都能使用的API,適當得可以再給一些Demo,這樣我們就可以根據API和Demo比葫蘆畫瓢的完成新硬體的接入了。對於某些平台,你可能需要為新硬體新開發一個協議棧,這純粹是為了對接硬體的,然而對於Linux平台,內建的Netfilter架構可以幫你輕鬆完成和加速卡的對接。大體的架構如所示:

很多硬體網路加速卡內建了千兆乃至萬兆乙太網路卡,這意味著加速卡驅動本身就包含乙太網路卡驅動。這樣事情就更簡單了,一般而言,硬體驅動都是廠商提供的,你要做的就是根據廠商的API來操作硬體就行了,這些代碼不用單獨置於一個程式中,而是接在Netfilter的函數裡面就可以了,我們可以單獨開發一個nf_hook_ops,也可以修改現有的,比如說按照,廠商提供了線速轉寄ASIC晶片,那麼如何?一個基於流的快速轉寄呢?實際上我們可以修改ip_conntrack_in以及confirm函數,使它將初始化好的nf_conn資訊不再存於核心記憶體,而是通過API存於硬體,實際上大多數情況只有一個流的頭包會到達核心,其它的後續包直接由ASIC轉寄出去,對於頭包則繼續向上,如果到達filter表則將filter結果也存入硬體,這樣就真的儼然一個硬體Firewall了,隨後將路由資訊(主要是出口裝置資訊)也存入硬體,這樣硬體加速卡就完全具備了轉寄一個資料包所需要的所有資訊了,接下來的包進而被直接硬體轉寄,無需再進入核心。
        本質上,所謂的硬體加速卡就是一系列的Cache Line,這些都是硬體實現的,它們容量巨大,不是軟體所能比的。它們將軟體上的比如路由表,arp表,策略表等一系列的靜態表格映射成了一系列的Cache Line,加上複雜的邏輯開關進而實現快速轉寄。此為硬體加速卡的特性之一,之二就是提供豐富且易用的API來減輕研發人員的開發工作量,接下來就是開發人員的平台選擇了,選擇Linux可以使得工作量減少到最低限。有了網路加速器以及Linux,任何人都有能力自己DIY一台效能超猛的網關,目前正想淘一塊最便宜的加速卡,然後使用最便宜的已經被淘汰的PC機,加上免費的Linux,如此一來,...即便如此,我也沒有什麼辦法搞壓力測試...
        如今的硬體越來越可定製策略了,很多本來應該由軟體完成的複雜的策略都可以由硬體來完成了,這正得益於整合電路工藝水平的提高,面對硬體越來越強悍,似乎複雜的軟體越來越跟不上步伐了,近期在做OpenVPN的壓力測試,我心中十分忐忑,我不想用太高端的硬體,因為它幾乎不能給OpenVPN的效能帶來大幅的提升,反而更是讓人覺得是OpenVPN拖了後腿...置於百兆環境,使用OpenVPN傳輸加密資料和不使用OpenVPN傳輸資料的差異僅僅是加密和不加密的差別,效能幾乎僅僅受影響於CPU的加密頻寬(沒必要使用加密卡),然而置於千兆環境,兩者的效能差別則是數量級的差別,除了CPU的加密還有什麼拖垮了OpenVPN,是其本身的軟體架構。因此軟體遠遠跟不上硬體的發展了。到底為什麼造成了如此尷尬的局面,在應用如此豐富的今天,是否應該仔細思考一下了。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.