USB重定向(轉載)
第一期中,我們一起簡要的看了下傳統PC和桌面雲下USB重定向和USB設備重定向方式的差異,瞭解了桌面雲下外設兼容性問題來源的根源-USB設備本身驅動不規範/不支持,
或者虛擬機驅動實現上與USB設備對接存在疏漏。
本期我們來詳細的瞭解下傳統PC和桌面雲的外設工作原理
目前,在通用操作系統上,USB外設佔主流,下面就以USB攝像頭舉例說明其兩種重定向技術的區別。
傳統PC
先認識一下傳統(PC機模式)USB外設工作的原理
從上圖可以瞭解到,所有USB外設正常工作,在軟件層面依賴的是USB總線驅動。一個應用需要使用USB外設必須與USB設備驅動進行交互,而設備驅動的工作
完全依賴USB總線驅動來交互設備數據,與硬件交互都是由總線驅動來代理完成。
桌面雲
在桌面雲環境下實現對USB外設的支持,可以有兩種方式,一種是基於USB總線的虛擬化重定向,稱之爲USB端口重定向,即替換掉USB總線驅動;另外一種
是USB設備驅動的重定向,稱之爲設備重定向,即替換掉USB設備驅動。
上圖所示,即爲USB端口重定向方式,它通過在虛擬機和客戶端各內置一個虛擬USB總線驅動,實現原物理下USB總線驅動的拉遠。而設備對應的真實USB設備驅動安裝
並運行在虛擬機中,與虛擬機USB總線驅動進行交互,這樣對虛擬機中的USB設備驅動來說,並不會感知到所控制的設備實際上在TC遠端,同樣應用程序也不會感知到
這個差異。因爲USB端口重定向與具體的設備和應用無關,直接將USB端口重定向到桌面虛擬機中,所以USB端口重定向具有良好的設備兼容性。但同時,也正是因爲這個原因,USB端口重定向也有一定的侷限性,由於沒有經過設備驅動層的壓縮和預處理,對於某些掃描儀和攝像頭等圖像類應用,可能會導致帶寬過大,網絡時延敏感等問題。在這種情況下,需要使用設備重定向技術。
桌面雲下USB重定向各模塊作用(如上圖)
USB客戶端:負責發現和斷開客戶端設備,接收服務端總線數據轉發到設備,以及獲取設備的總線數據轉發到服務端
虛擬USB驅動:作爲一個虛擬的功能驅動,負責雙向透傳總線數據包
USB服務端:負責獲取服務端的總線數據包轉發到客戶端,以及接受客戶端迴應的總線數據包轉發到虛擬總線驅動
虛擬USB總線驅動:作爲一個虛擬的總線驅動,向上和真實的各類USB功能驅動交互,負責轉發各類USB設備的總線數據包,以及將USB 服務傳遞進來的數據包
透傳到上層功能驅動。