官方文檔查看地址:
http://doc.dpdk.org/guides/prog_guide/service_cores.html
PDF下載地址:
https://www.intel.com/content/www/us/en/embedded/technology/packet-processing/dpdk/dpdk-programmers-guide.html
本篇難度係數:
翻譯:☆☆☆☆☆
理解:★★☆☆☆
45.Vhost Library
vhost庫實現了一個用戶空間virtio net服務器,允許用戶直接操作virtio環。換句話說,它允許用戶從VM virtio net設備獲取/放置數據包。要實現這一點,vhost庫應該能夠:
- 訪問客戶內存:
對於QEMU,這是通過使用-object memory-backend-file,share=on,...
選擇。這意味着QEMU將創建一個文件作爲guest RAM。share=on
選項允許另一個進程映射該文件,這意味着它可以訪問guest RAM。 - 瞭解有關vring的所有必要信息:
諸如可用環存儲在何處之類的信息。Vhost定義一些消息(通過Unix域套接字文件傳遞),告訴後端它需要知道如何操作vring的所有信息。
45.1Vhost API概述
以下是一些關鍵的Vhost API函數的概述:
rte_vhost_driver_register(path, flags)
該函數將一個vhost驅動程序註冊到系統中。path指定Unix域套接字文件路徑。
目前支持的標誌是:RTE_VHOST_USER_CLIENT
當給出該標誌時,DPDK vhost-user將充當客戶機。請看下面的解釋。RTE_VHOST_USER_NO_RECONNECT
當DPDK vhost-user作爲客戶機時,它將繼續嘗試重新連接到服務器(QEMU),直到成功爲止。這在兩種情況下是有用的:- 當QEMU尚未啓動時。
- 當QEMU重新啓動時(例如由於客戶OS重新啓動)。
默認情況下啓用此重新連接選項。但是,可以通過設置此標誌關閉它。
RTE_VHOST_USER_DEQUEUE_ZERO_COPY