USB langattomassa lähiverkossa Diplomityöseminaariesitelmä 2.6.2005 Antti Huopaniemi antti.huopaniemi@pp.inet.fi 040-5000495
Motivaatio kotona langaton lähiverkko kannettavat työasemat: Windows 2000, Windows XP/Linux, Linux, myös yksi PDA erinäisiä USB-laitteita: monitoimikone (tulostin/skanneri/faksi/kopiokone), CD-polttoasema, digikamera USB-laitteen käyttö vaatii fyysisen liittämisen, kömpelöä miksei yleiskäyttöistä langatonta USB:tä?
Kysymyksiä onko ylipäätänsä mahdollista toteuttaa USB langattomassa lähiverkossa? mitä esteitä tai rajoituksia langaton lähiverkko aiheuttaa? mitä tarvitaan USB:n toteuttamiseksi langattoman lähiverkon yli? miten paikallisesti liitetylle USB-laitteelle tarkoitettu data voidaan ohjata verkkoon? suorituskyky, viive, luotettavuus, tehokkuus? hallinta, samanaikaisuus? voiko langattomassa lähiverkossa oleva USB-laite toimia ikään kuin se olisi paikallisesti liitetty (samat laiteajurit, ei muutoksia sovelluksiin)? Miten tässä tapauksessa tietoturva ja palvelujen löytäminen?
Työhön... Ei halutunlaista ratkaisua olemassa, joten: selvitä, miten USB toimii selvitä, miten I/O toimii Windows 2000/XP ja Linux-käyttöjärjestelmissä selvitä, miten em. käyttöjärjestelmät tukevat USB:tä ja miten USB-laitteet tulevat osaksi käyttöjärjestelmän kytke-ja-käytä-, virranhallinta- ja valvontatomintoja datan ohjaus verkkoon paikallisen laitteen sijasta toteutettu verkkokäyttöjärjestelmissä, voiko hyödyntää? voiko hyödyntää olemassa olevia palvelunhakuprotokollia? voisiko ongelman ratkaista jollakin muulla verkkoteknologialla?
USB-väylä teollisuusstandardi oheislaitteiden liittämiseksi tietokoneisiin monipuolinen mutta yksinkertainen, halpa, suorituskykyinen 1,4 miljardia USB-laitetta toimitettu helmikuuhun 2003 mennessä, arvio 4,3 miljardia USB-laitetta vuoteen 2007 mennessä, vuonna 2007 arvoidaan toimitettavan 860 miljoonaa laitetta (Lähde: In-Stat/MDR, helmikuu 2003) väylän nopeudet: low-speed: 1,5 Mbit/s, full-speed: 12 Mbit/s ja high-speed: 480 Mbit/s kaapelin maksimipituus: 5 m (3 m low-speed), voi syöttää myös virran laitteelle (5 V, max 500 mA) käyttötarkoitukset: kaiuttimet, mikrofonit, puhelimet, modeemit, näppäimistöt, hiiret, tabletit, ohjainsauvat, keskittimet, digitaalikamerat, muistitikut, CD/DVD-asemat, tulostimet, skannerit
USB-”oheislaite”
USB-topologia max. 127 laitetta! Lähde: Universal Serial Bus Protocol Specification, s. 16
USB-siirtomenetelmät halllinta (control transfer): oheislaitteen hallintaan ja määritysten asettamiseen/lukemiseen, ei datan siirtoon. Tiedonsiirto luotettava. bulkki (bulk transfer): ei-aikakriittiseen tiedonsiirtoon, motto: ”siirrä, kun ehdit”. Tiedonsiirto luotettava. Esimerkki: tulostimet, skannerit keskeytys (interrupt transfer): periodinen, rajoitettu latenssi. Tiedonsiirto luotettava. Esimerkki: näppämistöt, hiiret isokroninen (isochronous transfer): periodinen, ennalta sovittu kaistan tarve ja latenssi. Virhetilanteessa ei uudelleenlähetystä, oletuksena pieni bittivirhetiheys. Esimerkki: multimediasovellukset
USB-laitteen ohjelmarajapinnat
USB I/O Lähde: Universal Serial Bus Protocol Specification, s. 59
USB I/O Lähde: Universal Serial Bus Protocol Specification, s. 63
Langattomat lähiverkot eli WLAN IEEE 802.11-standardi 802.11a: max. nopeus 54 Mbit/s, toimii 5 GHz-taajuudella, modulointi OFDM 802.11b: max. nopeus 11 Mbit/s, toimii 2.4 GHz-taajuudella, modulointi DSSS. Tunnetaan myös nimellä Wi-Fi. 802.11g: max. nopeus 54 Mbit/s, toimii 2.4 GHz-taajuudella, modulointi joko DSSS tai OFDM. tietoturva: WEP, TKIP, CCMP, IEEE 802.1X
Microsoft Windows 2000/XP I/O-komponentit Lähde: Solomon & Russinovich: Inside Microsoft Windows 2000, s. 528
Microsoft Windows 2000/XP I/O kaikki laite-I/O kohdistuu virtuaalitiedostoihin jokaisella tiedostolla tiedosto-objekti, joka sisältää mm. attribuutit tiedostonimi ja laiteobjekti laiteobjekti esittää laitetta järjestelmässä. Laiteobjektissa viittaus ajuriobjektiin, joka sisältää tarvittavat tiedostojärjestelmän operaatiot (avaa, sulje, lue, kirjoita,...) PDO (Physical Device Object): USB-väylän ja väyläajurin näkemä laitteen laiteobjekti FDO (Functional Device Object): laiteajurin näkemä laitteen laiteobjekti FiDO (Filter Driver Object): suodatinajurin näkemä laitteen laiteobjekti
Microsoft Windows 2000/XP I/O Lähde: Solomon & Russinovich: Inside Microsoft Windows 2000, s. 598 Oney: Programming the Microsoft Windows Driver Model, s. 85
Linux-ydin Lähde: Rubini & Corbet: Linux Device Drivers, s. 5
Linux I/O jokaisella tiedostolla tiedosto-objekti, joka sisältää viittauksen (f_op) VFS-tiedosto-operaatioihin, joita laite tukee versio 2.4 ja uudemmissa /devfs-virtuaalitiedostojärjestelmä VFS:n alla, jolloin tiedosto-objekti viittaa suoraan laiteajurin listaan toteutetuista VFS-operaatioista, VFS-operaatiot kohdistetaan virtuaalitiedostoon vanhemmissa monimutkaisempi ratkaisu: fyysiset laitetiedostot, laitteen tunnistus pää- ja alinumeroiden (major number/minor number) avulla
Linux I/O – devfs
Linux I/O – pre devfs fd f_op File Object Device Driver Process open fops f_dentry read write release Dentry Object d_inode def_blk_fops (def_chr_fops) f_op Inode Object open fops read write i_sb release Superblock Object blkdevs (chrdevs) 1 name fops Disk File name 2 fops ...
Esimerkki uudelleenohjauksesta – Microsoft CIFS Lähde: Solomon & Russinovich: Inside Microsoft Windows 2000, s. 804
Microsoft Windows 2000/XP USB-ajuripinot Lähde: Microsoft Windows Driver Development Kit
Microsoft Windows 2000/XP USB-laiteobjektipinot Lähde: Microsoft Windows Driver Development Kit
Linux USB-alijärjestelmä
Digi International AnyWhere USB Lähde: Digi International AnyWhere USB-esite
Cypress WirelessUSB SoC (System-on-a-Chip), joka voidaan integroida USB-laiteohjaimiin toimii 2,4 GHz-taajuudella nopeus 62,5 kbit/s kantama 10-50 m riippuen mallista tuki vain HID-laitteille Lähde: Cypress WirelessUSB LS Radio Module Datasheet
NAIST USB/IP Project Vain Linux-ympäristö! Lähde: NAIST USB/IP Project – WWW-sivu
Wireless USB (WUSB) USB-väylän laajennus nopeaan langattomaan verkkoon käyttää UWB-teknologiaa, taajuusalue 3.1-10.6 GHz max. nopeudella 480 Mbit/s kantama 3 m, 110 Mbit/s-nopeudella kantama 10 m tietoturva ja virranhallinta huomioitu yhteensopiva langallisen USB:n kanssa Lähde: Intel Corporation
Esitetty ratkaisu
Esitetty ratkaisu
Palvelun löytäminen ja varaaminen
Putken laajentaminen
Suorituskyky ja luotettavuus langattoman lähiverkon käytännön nopeus vain noin puolet nimellisnopeudesta <-> USB full-speed (12 Mbit/s) ja high-speed (480 Mbit/s) seuraukset alhaisemmasta nopeudesta ja latenssista? USB-spesifikaation määrittelemät maksimiviiveet hallintaputket: ok, eivät aikakriittisiä bulkkiputket: ok, eivät aikakriittisiä. Ylikuormitus? keskeytysputket: toimivat, mutta eivät ehkä täytä käyttäjän vastevaatimuksia isokroniset putket: ongelmallisia, viive ja ylikuormitus? sovelluksen ja laiteajurin ajastimet? luotettavuus: TCP kuljetusprotokollana, uudelleenlähetys virhetilanteessa
Tietoturva
Johtopäätökset onko ylipäätänsä mahdollista toteuttaa USB langattomassa lähiverkossa? kyllä, vrt. NAIST USB/IP Linux-ympäristössä. Windows-ympäristössä dokumentoimattomat funktiot ja tietorakenteet saattavat tuottaa ongelmia. mitä esteitä tai rajoituksia langaton lähiverkko aiheuttaa? aikakriittiset sovellukset, jotka hyödyntävät keskeytys- ja isokronista siirtoa, eivät ehkä toimi halutulla tavalla. Yleensäkin suurta hetkellistä kaistanleveyttä vaativa siirto ongelmallinen. mitä tarvitaan USB:n toteuttamiseksi langattoman lähiverkon yli? esitetty ratkaisussa miten paikallisesti liitetylle USB-laitteelle tarkoitettu data voidaan ohjata verkkoon? suorituskyky, viive, luotettavuus, tehokkuus? USB-spesifikaation viivevaatimukset täyttyvät. Laiteajurien ja sovelluksien viiveen sieto? Luotettavuus saavutetaan TCP-kuljetusprotokollalla suorituskyvyn kustannuksella.
Johtopäätökset hallinta ja samanaikaisuus? toteutettava yhteistyönä Service Discovery/Access Control- ja Remote USB Bus/Host Controller Driver/Remote USB Driver-ohjelmien välillä voiko langattomassa lähiverkossa oleva USB-laite toimia ikään kuin se olisi paikallisesti liitetty (samat laiteajurit, ei muutoksia sovelluksiin)? Miten tässä tapauksessa tietoturva ja palvelujen löytäminen? voi, laitteen fyysisen liittämisen sijasta valitaan ohjelmallisesti haluttu resurssi. Laitteen fyysisen irrottamisen sijasta vapautetaan ohjelmallisesti kyseinen resurssi. Nämä toiminnot lataavat/poistavat muistista alkuperäiset laiteajurit. Modifioidut USB-ajurit tukevat käyttöjärjestelmän kytke-ja-käytä-, virranhallinta- ja valvontatoimintoja. hallinnan helppous ja hyvä tietoturva ristiriitaisia tavoitteita.