vhost-user 分爲服務端和客戶端,以下時序爲libvirtd和vpp進行協商,協商過程中不管libvirtd作爲vhost-user的服務端或者客戶端,都由libvirtd主動使用Unix Socket套接字發起協商
vhost-user協商時序:
vm libvirtd --------------------------> vpp
VHOST_USER_GET_FEATURES
返回FEATURES: 5844926464
---------------------
VHOST_USER_GET_PROTOCOL_FEATURES
返回PROTOCOL_FEATURES: 3
---------------------
VHOST_USER_SET_PROTOCOL_FEATURES
設置PROTOCOL_FEATURES: 3
---------------------
VHOST_USER_GET_QUEUE_NUM
返回QUEUE_NUM: 16
---------------------
VHOST_USER_SET_OWNER
---------------------
VHOST_USER_GET_FEATURES
返回FEATURES: 5844926464
---------------------
VHOST_USER_SET_VRING_CALL
設置vring 0 的callfd回調: vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
設置vring 1 的callfd回調: vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 0 的enabled爲1
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 1 的enabled爲1
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 0 的enabled爲1
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 1 的enabled爲1
---------------------
VHOST_USER_SET_FEATURES
設置FEATURES: 5639274496
---------------------
VHOST_USER_SET_MEM_TABLE
根據memory.regions設置vui->region_mmap_addr
---------------------
VHOST_USER_SET_VRING_NUM
設置vring 0 的qsz
---------------------
VHOST_USER_SET_VRING_BASE
設置vring 0 的last_avail_idx爲0
---------------------
VHOST_USER_SET_VRING_ADDR
設置vring 0 的desc、used、avail結構體,last_used_idx、last_avail_idx、used->idx爲0
---------------------
VHOST_USER_SET_VRING_KICK
設置vring 0 的kick回調函數爲 vhost_user_kickfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
設置vring 0 的callfd回調:vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_NUM
設置vring 1 的qsz
---------------------
VHOST_USER_SET_VRING_BASE
設置vring 1 的last_avail_idx
---------------------
VHOST_USER_SET_VRING_ADDR
設置vring 1 的desc、used、avail結構體,last_used_idx、last_avail_idx、used->idx爲0
---------------------
VHOST_USER_SET_VRING_KICK
設置vring 1 的kick回調函數爲 vhost_user_kickfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
設置vring 1 的callfd回調函數爲 vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 0 的enabled爲1
---------------------
VHOST_USER_SET_VRING_ENABLE
設置vring 1 的enabled爲1