也談USB重定向的方式

在桌面虛擬化的項目中,常常會遇到用戶提出的各自外設需求,這時產品對外設的兼容性就成爲了項目成敗的攔路虎

本文試圖用通俗易懂的語言講講USB外設重定向的工作流程,先看看普通PC上USB設備的工作流程

如題


usb硬件只將數據交給usb總線驅動,而應用程序只會把請求提交給本usb設備驅動處理,在usb設備驅動提交usb總線驅動處理

從上圖可以看出,能夠被虛擬化的只有USB設備驅動USB總線驅動兩個對象

這也是目前業界對USB設備虛擬化的兩大主流方式


一.  虛擬USB總線驅動的方案

又叫做USB端口重定向,工作流程如下圖

TC上所插USB設備數據通過TC的USB總線提交給虛擬USB驅動,虛擬USB驅動負責在TC總線和USB客戶端之間雙向傳輸數據,如實傳輸USB硬件的一切細節,對虛擬機來說,相當於在虛擬USB總線上插了一個USB硬件,假如在TC上插了一個閃迪的U盤,那在虛擬機看來就是有一個閃迪U盤插上來了,這時候虛擬機的系統會自動打相應的設備驅動

實質上,端口映射只是相當於將PC上USB工作流程裏的USB設備驅動到USB總線驅動之間的這段進行了拉長,通過中間加入幾個代理,最終還是將TC上USB外設的細節原原本本向虛擬機上的USB應用呈現,只是隱瞞了設備實際上是在遠端TC的事實,這樣應用根本感知不到和使用本地外設的差異,和運行在PC上是一樣的,因此,USB端口重定向具有良好的設備兼容性。

端口重定向也有一定侷限性,由於沒有經過設備驅動層的壓縮和預處理,對於某些掃描儀和攝像頭等圖像類應用,可能會導致帶寬過大,網絡時延敏感等問題


二.  虛擬USB設備驅動的方案

又稱爲USB設備重定向,工作流程如下圖


USB設備重定向是在應用層的實現,通過在虛擬機上創建一個虛擬的USB外設驅動(對操作系統來說,一個驅動意味着一個設備),來使應用程序獲得數據,對於整個系統來說,虛擬USB外設驅動和TC上的USB設備驅動本質上是兩個不同的USB設備,而USB服務端和USB客戶端負責維護兩個驅動之間的數據通道(類似於在兩個U盤之間互相拷貝數據)

顯而易見,設備重定向工作流程中的代理環節少了很多,因而數據傳輸速率更高,延時更低,更適合像USB攝像頭等數據流量比較大,同時對延時也比較敏感的外設

事實上,目前主流的遠程桌面協議如HDX,Spice等,都爲每一類外設提供從客戶端到虛擬機的映射,並在應用層提供專門的通道,將不同的流量隔離開來,如攝像頭、打印機、掃描類設備、智能卡設備等,甚至針對不同外設應用場景的需求,提供不同的傳輸Qos


設備重定向的問題主要在TC上的USB設備驅動和外設通道協議的USB客戶端之間,如果外設廠家提供的不是遵循外設協議標準的驅動,那麼USB客戶端可能會不能很好的將其識別到



參考資料

【外設那些事】傳統PC與桌面雲的區別 and 桌面雲外設兼容性     點擊打開鏈接

【外設那些事】USB重定向---再看原理      點擊打開鏈接




發佈了38 篇原創文章 · 獲贊 83 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章