Nel trasformare un desktop locale in uno remoto, una delle configurazioni più delicate e che richiedono molta attenzione riguarda l’utilizzo delle periferiche da parte dell’utente. L’utilizzatore del sistema ha spesso bisogno di utilizzarne di varie tipologie e ad oggi lo standard di connessione utilizzato tra queste e il sistema è lo standard USB (Universal Serial Bus).
Lo standard USB si è diffuso rapidamente perché permette in maniera semplice di connettere differenti tipologie di periferiche. Lo sviluppo del protocollo ha portato inoltre la velocità della connessione ad aumentare progressivamente (dagli iniziali 1,5 Mb/s agli attuali 10Gb/s).
In ambito virtuale, una delle possibilità che l’utente ha di utilizzare le proprie periferiche USB è quella di servirsi della tecnologia “USB redirection”. Per spiegare in maniera semplice di come funziona tale tecnologia è importante capire prima come funzionano le periferiche USB in un sistema standard.
Ogni periferica si dichiara al sistema come appartenente ad una classe specifica di dispositivi. Lo strato software che si occupa della specifica connessione della periferica al sistema operativo si chiama driver. A seconda della classe, il driver andrà ad implementare le necessarie funzionalità richieste dal sistema. Quindi il sistema, per eseguire un’operazione su una periferica, invocherà un metodo definito nel protocollo USB e implementato nel driver specifico della stessa.
Portiamo questa situazione in ambito desktop remoto: il client installato sulla macchina in cui è fisicamente collegata la periferica si occupa di incapsulare tutto il protocollo USB all’interno di protocolli di rete e trasferirlo direttamente alla macchina virtuale. L’agent installato nella macchina virtuale dovrà effettuare l’operazione contraria, quindi sarà incaricato di estrarre i pacchetti USB dai pacchetti di rete utilizzati nel protocollo di trasporto e inviarli al sistema operativo. Il sistema operativo della macchina virtuale crederà perciò di avere collegato fisicamente la periferica USB.
L’operazione di specificare quali periferiche esportare attraverso questa tecnologia è un’operazione spesso da configurare con policy o impostazioni particolari e richiede una parte di studio per capire, oltre alle policy necessarie lato server, anche gli identificativi (vendor ID, product ID, classe) delle varie periferiche. Questa operazione è resa molto semplice in ThinOX, il sistema operativo Praim, e nella nuova versione 2.6.6 di Agile, che permettono, dopo aver collegato una periferica USB al sistema, di scegliere “agilmente” se esportare la periferica tramite questa tecnologia.
Questa tecnologia, che sembra essere la soluzione totale a tutte le problematiche di periferica in ambito desktop virtuale, soffre però di alcuni limiti. In particolare, la latenza creata dall’infrastruttura di rete rende spesso poco utilizzabile questa tecnologia per ambiti multimediali o ambiti di sicurezza. Negli anni i vari vendor di tecnologia che permettono la remotizzazione del desktop sono andati a sviluppare dei canali dedicati per la comunicazione delle varie tipologie di periferiche, così da poter ottimizzare il flusso e garantire maggior compatibilità con l’ambito di utilizzo. Questa differente modalità di utilizzo cambia radicalmente il ruolo del driver della periferica e richiederebbe un corposo approfondimento, per ora mi limito ad elencare quali tipologie di periferiche hanno un virtual channel dedicato: dischi USB, audio/video, scanner, stampanti, smart card, tavolette grafometriche.