USB langattomassa lähiverkossa

Download Report

Transcript USB langattomassa lähiverkossa

USB langattomassa lähiverkossa
Diplomityöseminaariesitelmä
2.6.2005
Antti Huopaniemi
[email protected]
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
Host
Root Hub
Tier 1
Tier 2
Hub 1
Hub 2
Hub 3
Hub 4
Function
Hub 5
Hub 6
Function
Function
Function
Function
Tier 3
Tier 4
Tier 5
Function
Tier 6
Hub 7
Compound
Device
max. 127 laitetta!
Function
Tier 7
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
Device
Configuration 1
Pipe
Interface 1
Pipe
Interface 2
Configuration 2
Pipe
Interface 1
USB I/O
Client
Software
Data
USBD Interface
IRPs
USBD
HCD Interface
HCD
Transfers
Transaction
Transactions
Transaction List
Transaction
IRP: I/O Request Packet
USBD: USB Driver
Host
Controller
HCD: Host Controller Driver
Packets
USB
Lähde: Universal Serial Bus Protocol Specification, s. 59
USB I/O
Pipe
IRP 1
Frame
1
Transaction
1-0
Pipe
Transaction
1-1
Token, Data
Handshake
(1-0)
Transaction
1-2
Token, Data
Handshake
(2-0)
IRP 2
Frame
2
Transaction
2-0
Transaction
2-1
Token, Data
Handshake
(2-1)
Transaction
2-2
Token, Data
Handshake
(1-1)
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/Okomponentit
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
The System Call Interface
Memory
mgmt
Filesystems
Device
control
Networking
Concurrency,
multitasking
Virtual
memory
Files and
directories:
the VFS
Ttys and
device
access
Connectivity
Architecture
independent
code
Memory
manager
Process
mgmt
CPU
File system
types
Character
devices
Block
devices
Memory
Disks
and
CDs
Network
subsystems
IF drivers
Consoles
etc.
Kernel
subsystems
Features
implemented
Software
support
Network
interfaces
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
Header Files
fd
Process
f_op
File
Object
f_dentry
Dentry
Object
Device and
Driver Identification
USB Device
Structure
Probe Function
d_inode
Disconnect Function
Open Function
Inode
Object
Read Function
i_sb
Write Function
Superblock
Object
Release Function
Delete Function
Disk
File
Supported VFS
File Operations
USB Device Driver
Definition
Initialization and Exit
Functions
Device Driver
Linux I/O – pre devfs
fd
Process
f_op
File
Object
Device
Driver
fops
f_dentry
open
read
write
release
Dentry
Object
d_inode
def_blk_fops
(def_chr_fops)
f_op
Inode
Object
fops
open
read
write
i_sb
release
Superblock
Object
blkdevs
(chrdevs)
name
1
Disk
File
fops
name
2
fops
...
Esimerkki uudelleenohjauksesta – Microsoft CIFS
Client
application
Kernel32.dll
Ntdll.dll
User Mode
User Mode
Kernel Mode
Kernel Mode
Cache
Manager
Redirector
FSD
Cache
Manager
Protocol driver
(TDI transport)
Protocol driver
(TDI transport)
Server FSD
Local FSD
(NTFS, FAT)
Network
Disk
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ä
Applications
User-space libraries:
jUSB, libusb
System Call Interface
User Space
VFS
Block Devices
Kernel Space
Char Devices
Net
Devices
ioctls
USBFS
USB Device Drivers / Class Drivers
USB Core
UHCI Host Controller
Driver
OHCI Host Contoller
Driver
PCI Bus Driver
EHCI Host Controller
Driver
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
Client
Server
Virtual Connection
Management
Device Control Manager
Device Control Manager
USB Device Drivers
Stub Driver
USB Requests
USB Core Driver
Virtual Host Controller
Interface (VHCI) Driver
USB Core Driver
USB Host Controller Driver
USB Host Controller
Vain Linux-ympäristö!
USB Devices
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
IP
Networking
(UPnP)
Non-IP
Peer-to-Peer
(W1394)
Other
Applications
Convergence Layer
Common
UWB
Radio
Platform
Peripheral
Interconnect
(WUSB)
WiMedia
IEEE 802.15.3 UWB MAC
MBOA
IEEE 802.15.3a UWB Phy
Lähde: Intel Corporation
Esitetty ratkaisu
Service Discovery / Access Control Client
System Call Interface
Service Discovery / Access Control Server
System Call Interface
File System Driver
File System Driver
USB Device/
Class Drivers
TCP/IP
Remote USB
Bus / Host
Controller Driver
Network Driver
Network Driver
PCI Bus
Function
USB Bus/Host
Controller
Driver
USB Logical
Device
PCI Bus
Network
Interface
Card
Client
Remote USB
Device Driver
TCP/IP
Network
Interface
Card
USB Host
Controller
Server
USB Bus
Interface
USB Device
Esitetty ratkaisu
Service Discovery / Access Control Client
System Call Interface
Service Discovery / Access Control Server
System Call Interface
File System Driver
File System Driver
USB Device/
Class Drivers
TCP/IP
Remote USB
Bus / Host
Controller Driver
Network Driver
Remote USB
Device Driver
Function
USB Bus/Host
Controller
Driver
USB Logical
Device
TCP/IP
Network Driver
PCI Bus
PCI Bus
Network
Interface
Card
Client
Pipe Bundle (to an interface)
Default Pipe (to Endpoint Zero)
Network
Interface
Card
USB Host
Controller
Server
USB Bus
Interface
USB Device
Palvelun löytäminen ja varaaminen
Service Discovery / Access Control Client
System Call Interface
Service Discovery / Access Control Host
System Call Interface
File System Driver
File System Driver
USB Device/
Class Drivers
TCP/IP
Remote USB
Bus / Host
Controller Driver
Network Driver
TCP/IP
Function
USB Core
USB Logical
Device
Network Driver
PCI Bus
PCI Bus
Network
Interface
Card
Client
Remote USB
Device Driver
Network
Interface
Card
USB Host
Controller
Server
USB Bus
Interface
USB Device
Putken laajentaminen
Service Discovery / Access Control Client
System Call Interface
Service Discovery / Access Control Host
System Call Interface
File System Driver
File System Driver
USB Device/
Class Drivers
TCP/IP
Remote USB
Bus / Host
Controller Driver
Network Driver
TCP/IP
Function
USB Core
USB Logical
Device
Network Driver
PCI Bus
PCI Bus
Network
Interface
Card
Client
Remote USB
Device Driver
Network
Interface
Card
USB Host
Controller
Server
USB Bus
Interface
USB Device
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
Service Discovery / Access Control Client
System Call Interface
Service Discovery / Access Control Host
System Call Interface
File System Driver
File System Driver
USB Device/
Class Drivers
TCP/IP
Remote USB
Bus / Host
Controller Driver
Network Driver
TCP/IP
Function
USB Core
USB Logical
Device
Network Driver
PCI Bus
PCI Bus
Network
Interface
Card
Client
Remote USB
Device Driver
Network
Interface
Card
USB Host
Controller
Server
USB Bus
Interface
USB Device
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?
– esitetty ratkaisussa
•
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.