解決dpdk kni能夠啓動,卻不能收發數據包的問題

最近一個項目是基於dpdk開發lvs,但是又不想重寫ospf等控制協議,於是決定使用DPDK的KNI接口來做dpdk與內核的之間的數據通道。即使用KNI虛擬出一個網卡,供內核及其其他相關程序使用。

但是在使用kni的過程中出現了問題,就是KNI模塊正常啓動,虛擬網卡vEth0也能夠正常出現,但是這個網卡卻不能正常收發數據包。分析問題之後,發現KNI網卡到內核的數據不能傳輸,kni網卡到dpdk 物理網卡的通道正常。於是經過多次嘗試,最終確定爲是linux內核版本太低了,我用的dpdk2.0.2,需要2.6.34以上的版本。

而我的linux內核版本是2.6.32,後來使用3.10的內核啓動後就能夠一次成功。


dpdk內核版本的問題已經不是第一次遇到了,之前有一次dpdk編譯總是報錯,最終發現是因爲內核版本的問題,內核中沒有定義某個變量,導致編譯錯誤,換了個內核之後就成功了。

經驗:對於dpdk 的開發和使用,需要認真閱讀官方的運行環境要求,否則會出各種問題。在開發dpdk相關的產品的時候儘量選擇高版本的linux內核,3.0以上的爲好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章