Changeset 9 for doc/AssociazioneMultipla.tex
- Timestamp:
- May 15, 2007, 3:08:08 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/AssociazioneMultipla.tex
r8 r9 4 4 \usepackage[T1]{fontenc} 5 5 \usepackage[utf8]{inputenc} 6 \usepackage[pdftex,bookmarks,colorlinks,citecolor=green, linkcolor=red, 7 urlcolor=blue]{hyperref} 8 9 % testo colorato 10 %\usepackage{color} 11 % riferimenti incrociati dinamici 12 % \usepackage{varioref} 6 \usepackage[pdftex,bookmarks,colorlinks]{hyperref} 13 7 14 8 % SoujaK … … 17 11 %bookmarks=false]{hyperref} 18 12 19 \title{Associazione multipla simultanea \\ di un \textit{client}802.11}20 \author{Andrea Rappini, Alessio Romagnoli,\\MarcoSolieri, Andrea Simeone}13 \title{Associazione multipla simultanea di~un~\textit{client}~802.11} 14 \author{Andrea~Rappini, Alessio~Romagnoli,\\Marco~Solieri, Andrea Simeone} 21 15 22 16 \makeindex … … 29 23 \begin{abstract} 30 24 La diffusione di reti \textit{wireless} è in forte crescita a causa della sua 31 comodità e della diffusa disponibilità di connessioni ad Internet con ampie 32 larghezze di banda. Sfruttare contemporaneamente la connessione alla 33 molteplicità di reti spesso presente permetterebbe un utilizzo migliore di tali 34 risorse, migliorando il \textit{throughput} e incrementandone l'affidabilità. 35 36 Lo studio intende quindi analizzare le effettive possibilità di realizzazione di 37 un'estensione delle comuni implementazioni dello standard IEEE 802.11 che 38 permetta al singolo \textit{client} in ambiente GNU/Linux l'associazione 39 simultanea a differenti reti \textit{wireless}. 25 comodità e della larga disponibilità di connessioni ad Internet con ampie 26 larghezze di banda. 27 Sfruttare contemporaneamente la connessione alla molteplicità di reti spesso 28 presente permetterebbe un utilizzo migliore di tali risorse, migliorando il 29 \textit{throughput} aggregato e incrementandone l'affidabilità. 30 31 Si intende dapprima introdurre il lettore allo scenario nel quale è stato 32 condotto lo studio, evidenziandone gli aspetti salienti che riguardano lo 33 standard IEEE 802.11 e le sue interpretazioni. 34 In un secondo momento si presenteranno non solo le proposte risolutive 35 individuate, ma anche spunti per ulteriori ottimizzazioni. 40 36 \end{abstract} 37 38 \clearpage 39 \tableofcontents 41 40 42 41 \clearpage … … 50 49 più BSS (cioè l'insieme di nodi costituenti una rete \textit{wireless}). 51 50 52 Nel presente documento si intende dapprima introdurre il lettore allo scenario 53 nel quale è stato condotto lo studio, evidenziandone gli aspetti salienti che 54 riguardano lo standard IEEE 802.11 e le sue interpretazioni. In un secondo 55 momento si presenteranno non solo proposte risolutive, ma anche spunti 56 accessori. 51 Si analizzano le effettive possibilità di realizzazione di un'estensione delle 52 comuni implementazioni dello standard IEEE 802.11 che permetta al singolo 53 \textit{client} in ambiente GNU/Linux l'associazione simultanea a differenti 54 reti \textit{wireless}. 57 55 58 56 \subsection{Scopi} 59 57 \label{sec:scopi} 60 58 L'intento più evidente è quello di aumentare la connettività del 61 \textit{client}, 62 permettendogli connessioni simultanee a reti altrimenti isolate ed eventualmente 63 consentendo al \textit{client} di agire in qualità di ponte. 59 \textit{client}, permettendogli connessioni simultanee a reti altrimenti isolate 60 ed eventualmente consentendogli di agire in qualità di ponte fra di esse. 64 61 Qualora i punti di accesso resi contemporaneamente utilizzabili riferiscano (più 65 62 o meno direttamente) alla medesima rete, allora la molteplicità si traduce in 66 63 ridondanza e, conseguentemente, in affidabilità. 67 I più coraggiosi potranno sfruttare le multi-connettività in oggetto come punto68 di partenza per la realizzazione di politiche di gestione al fine di64 I più coraggiosi potranno infine sfruttare le multi-connettività in oggetto come 65 punto di partenza per la realizzazione di politiche di gestione al fine di 69 66 massimizzare il \textit{throughput} aggregato. 70 67 … … 86 83 GNU/Linux; 87 84 \item [facilità implementativa] 88 ridurre gli sforzi per l'effettiva messa in 89 opera; 85 ridurre gli sforzi per l'effettiva messa in opera; 90 86 \item [trasparenza] 91 virtualizzare le interfacce di rete associate ad ogni 92 connessione per minimizzare l'impatto.87 virtualizzare le interfacce di rete associate ad ogni connessione per 88 minimizzare l'impatto per l'utente come per il sistema. 93 89 \end{description} 94 90 … … 126 122 \paragraph{Autenticazione} 127 123 A causa della natura condivisa del mezzo trasmissivo, l'accesso alla rete 128 sarebbe aperto a qualunque stazione richieda di associarsi. IEEE ha quindi129 elaborato una strategia di regolazione dell'accesso richiedendo la mutua 130 identificazione di entrambi gli estremi di ogni comunicazione. Tale procedura, 131 definita autenticazione, risulta pertanto essere un prerequisito della stessa 132 associazione. 124 sarebbe aperto a qualunque stazione richieda di associarsi. 125 IEEE ha quindi elaborato una strategia di regolazione dell'accesso richiedendo 126 la mutua identificazione di entrambi gli estremi di ogni comunicazione. 127 Tale procedura, definita autenticazione, risulta pertanto essere un prerequisito 128 della stessa associazione.\\ 133 129 Il processo può diventare oneroso in termini di tempo a causa dei \textit{frame} 134 130 da scambiare e dell'elaborazione necessaria (si pensi ai calcoli crittografici … … 146 142 \paragraph{802.11i} 147 143 \label{80211i} 148 L'estensione \texttt{i} dello standard intende migliorare il livello di 149 sicurezza e confidenzialità introducendo nuovi protocolli e metodologie. 144 L'estensione 802.11i \cite{80211i} dello standard intende migliorare 145 il livello di sicurezza e confidenzialità introducendo nuovi protocolli e 146 meccanismi. 150 147 Tutti i suoi metodi di autenticazione basati su autenticatori esterni 151 148 (\textit{server} RADIUS) provengono dallo standard 802.1x, che riguarda proprio 152 il controllo d'accesso a reti dell'insieme 802 (Ethernet, Token- Ring \ldots).149 il controllo d'accesso a reti dell'insieme 802 (Ethernet, Token-ring \ldots). 153 150 Questo genere di comunicazioni viene quindi effettuato a strati di rete 154 151 superiori coinvolgendo marginalmente il livello 802.11 in oggetto. … … 162 159 efficiente rispetto ai consumi energetici, dal momento che i dispositivi 163 160 portatili alimentati a batteria sono tutt'altro che rari. 164 Le stazioni che supportano tale funzionalità hanno la facoltà di165 ``addormentarsi'' durante i periodi di inattività. In questi momenti, gli166 eventuali dati ad esse destinati vengono conservati dal BSS\footnotemark per un 167 invio successivo, essendo esso stato precedentemente avvisato dello stato delle168 stazioni in questione.161 Le stazioni che supportano tale funzionalità hanno infatti la facoltà di 162 ``addormentarsi'' durante i periodi di inattività. 163 In questi momenti, gli eventuali dati ad esse destinati vengono conservati dal 164 BSS\footnotemark per un invio successivo, essendo esso stato precedentemente 165 avvisato dello stato delle stazioni in questione. 169 166 I BSS, quindi, annunciano periodicamente la presenza delle trasmissioni in 170 167 attesa, indicandone i destinatari con un messaggio chiamato TIM che è presente 171 all'interno di alcuni dei \textit{beacon} . Conseguentemente le stazioni in172 risparmio energetico sono tenute a risvegliarsi in corrispondenza di questi173 in tervalli regolari, per poi richiedere l'invio tramite un apposito tipo di174 \textit{frame} (il \texttt{PS-Poll}).168 all'interno di alcuni dei \textit{beacon} (cfr. \ref{sec:vincolitemporali}. 169 Conseguentemente le stazioni in risparmio energetico sono tenute a risvegliarsi 170 in corrispondenza di questi intervalli regolari, per poi richiedere l'invio 171 tramite un apposito tipo di \textit{frame} (il \texttt{PS-Poll}). 175 172 \footnotetext{In realtà sarebbe doveroso fare una distinzione fra le reti 176 173 infrastrutturate e quelle indipendenti (o \textit{ad hoc}), nelle quali la … … 180 177 \subsubsection{Vincoli temporali} 181 178 \label{sec:vincolitemporali} 182 Come già anticipato precedentemente (nella sezione \ref{salti}), il183 \textit{client} avrà l'illusione di essere contemporaneamente associato ai BSS 184 di interesse tramite continui salti fra di essi; per questo motivo risulta 185 importante chiarire quali siano ivincoli temporali che lo standard gli impone.179 Come già anticipato (sezione \ref{salti}), il \textit{client} avrà l'illusione 180 di essere contemporaneamente associato ai BSS di interesse tramite continui 181 salti fra di essi; per questo motivo risulta importante chiarire quali siano i 182 vincoli temporali che lo standard gli impone. 186 183 La padronanza di queste informazioni è di grande rilevanza, sia perché dovranno 187 184 essere rispettate dal \textit{client} anche in seguito alle modifiche che 188 185 verranno proposte nel presente studio, sia perché potranno essere tenute 189 presenti per raffinamenti volti a migliorare l'efficienza delle soluzioni. 186 presenti per raffinamenti volti a migliorare l'efficienza delle soluzioni (si 187 veda, più avanti, la sezione \ref{sec:ottimizzazioni}. 190 188 191 189 L'accesso al mezzo trasmissivo, a causa della sua stessa natura condivisa, è 192 190 regolato da convenzioni stabilite dallo standard che consentono una 193 191 ripartizione equa di questa risorsa. 194 195 192 Tali regolamentazioni di natura temporale si fondano sulla reciproca 196 193 sincronizzazione delle stazioni che condividono il mezzo fisico, raggiunta … … 210 207 211 208 Trattasi non solo dei \textbf{TIM} (cfr. \ref{sec:risparmioenergetico}), ma 212 anche degli annunci d iinizio dei periodi liberi da contesa presenti nelle reti209 anche degli annunci d'inizio dei periodi liberi da contesa presenti nelle reti 213 210 infrastrutturate, lassi di tempo durante i quali l'accesso al mezzo è 214 211 coordinato da un gestore centrale. 215 Esso risiede tipicamente nell'\textit{access -point} e provvede a coordinare le212 Esso risiede tipicamente nell'\textit{access point} e provvede a coordinare le 216 213 comunicazioni in maniera spesso più efficiente rispetto a quando il 217 214 coordinamento è distribuito. … … 224 221 \label{sec:wext} 225 222 La portabilità in ambienti GNU/Linux è stata ricercata usando come punto di 226 riferimento le Linux Wireless Extensions (per brevità \text tt{wext}). Il227 progetto intende mettere ordine in uno scenario spesso dominato228 dall'eterogeneità, proponendo delle interfacce unificate per i driver di 229 sistema delle varie soluzioni \textit{hardware} disponibili. Nel momento in cui 230 si scrive sono ancora pochi i driver che si sono completamente uniformati a 231 questo insieme di interfacce, ma questa scelta è stata dettata dalla speranza 232 che essediventino presto lo standard \textit{de facto}.223 riferimento le Linux Wireless Extensions (per brevità \textsc{wext}). 224 Il progetto intende mettere ordine in uno scenario spesso dominato 225 dall'eterogeneità, proponendo delle interfacce unificate per i driver di sistema 226 delle varie soluzioni \textit{hardware} disponibili. 227 Nel momento in cui si scrive non tutti i \textit{driver} che si sono 228 completamente uniformati a questo insieme di interfacce, ma la speranza che esse 229 diventino presto lo standard \textit{de facto}. 233 230 234 231 Accanto alle API di programmazione sono stati sviluppati anche gli … … 244 241 facendo riferimento al modello ISO/OSI, al livello fisico e a quello MAC 245 242 (\textit{Medium Access Control}), implementati dai produttori tramite 246 l'accoppiata \textit{hardware}/\textit{firmware}. MAC viene solitamente 247 realizzato così a basso livello per rispondere alle esigenze di velocità 248 e precisione temporale di cui si accennava in \ref{sec:vincolitemporali}. 249 È importante sottolineare, quindi, che qualunque idea risolutiva dello 250 studio in questione non potrà prescindere dalle modalità di interazione 251 (interfacce e impostazioni) consentite dalla specifica implementazione di MAC. 252 Questo discorso diventa tanto più importante quanto la soluzione perseguita si 243 l'accoppiata \textit{hardware}/\textit{firmware}. 244 MAC viene solitamente realizzato così a basso livello per rispondere alle 245 esigenze di velocità e accuratezza temporale di cui si accennava in 246 \ref{sec:vincolitemporali}. 247 È importante sottolineare, quindi, che qualunque idea risolutiva dello studio in 248 questione non potrà prescindere dalle modalità di interazione (interfacce e 249 regolazioni) consentite dalla specifica implementazione di MAC. 250 Questa dipendenza diventa tanto più rilevante quanto la soluzione perseguita si 253 251 discosta dalla rigidità dello standard. 254 252 255 La revisione 802.11i, che estende lo standard migliorando la sicurezza da esso 256 offerta, definisce nuove funzionalità per il livello MAC che possono invece 257 essere tranquillamente implementate all'esterno del \textit{firmware}. 253 La revisione 802.11i (introdotta in \ref{80211i}, che estende lo standard 254 migliorando la sicurezza da esso offerta, definisce nuove funzionalità per il 255 livello MAC che possono invece essere tranquillamente implementate all'esterno 256 del \textit{firmware}. 258 257 259 258 \subsubsection{Libertà d'azione} 260 259 \label{sec:libertàdazione} 261 Le più diffuse implementazioni di 802.11 sono peròquantomai lontane dalle260 Le più diffuse implementazioni di 802.11 sono quantomai lontane dalle 262 261 libertà di azione sperabili poiché il \textit{firmware} risulta essere 263 262 scarsamente programmabile, consentendo poco più delle interazioni necessarie al 264 normale funzionamento. Esempi di soluzioni \textit{chipset} che siano265 controcorrente, e pertanto interessanti, vengono riportati da 266 \refname{guidadefinitiva}: Atheros\footnotemark e Broadcom. 267 \footnotetext{L'unico (dei due) provato dagli autori, con driver 268 \ texttt{MADWiFi}.}263 normale funzionamento. 264 Esempi di soluzioni \textit{chipset} che siano contrarie a questa tendenza, e 265 pertanto interessanti, vengono riportati da \cite{defguide}: Atheros e Broadcom; 266 il primo dei due, provato direttamente dagli autori, sarà oggetto della sezione 267 \ref{sec:casoreale}. 269 268 270 269 A complicare ulteriormente la situazione intervengono le limitazioni imposte 271 270 dalle autorità delle comunicazioni di molti Paesi (si pensi all'FCC 272 statunitense), 273 %http://ftp.fcc.gov/Bureaus/Engineering_Technology/Orders/2001/fcc01264.pdf 274 che richiedono la distribuzione dei trasmettitori radio 275 con \textit{firmware} in forma necessariamente binaria per scongiurare 271 statunitense\footnotemark), che richiedono la distribuzione dei trasmettitori 272 radio con \textit{firmware} in forma necessariamente binaria per scongiurare 276 273 violazioni dei limiti di utilizzo delle frequenze. 277 274 \footnotetext{Per maggiori informazioni si veda:\\ 275 \url{http://ftp.fcc.gov/Bureaus/Engineering_Technology/Orders/2001/fcc01264.pdf 276 }} 278 277 279 278 \subsubsection{Interpretazione dello standard} 280 279 \label{sec:interpretazionedellostandard} 281 280 282 Nemmeno le più fedeli realizzazioni di 802.11 supportano la283 preautenticazione (\refname{guidadefinitiva}), quindi i servizi di 284 a utenticazione e associazione risultano indissolubilmente legati, vanificando285 ogni possibilità di realizzare autenticazione multipla.281 Nemmeno le più fedeli realizzazioni di 802.11 (come segnala \cite{defguide}) 282 supportano la preautenticazione , quindi i servizi di autenticazione e 283 associazione risultano indissolubilmente legati, vanificando ogni possibilità di 284 realizzare nativamente autenticazioni multiple. 286 285 Di conseguenza, il superamento di questo limite, vincolante per realizzare 287 associazion e multipla simultanea, sarà, in tutta la sua complessità, compito286 associazioni multiple simultanee, sarà, in tutta la sua complessità, compito 288 287 dell'implementatore della soluzione proposta in \ref{sec:soprailfirmware}. 289 288 290 Un'altra eventuale limitazione dovuta all'interpretazione dello standard291 può derivare dalla libertà concessa riguardo la stessa implementazione del 292 supporto alla gestione energetica.289 Un'altra eventuale (e poco probabile) limitazione dovuta all'interpretazione 290 dello standard può derivare dalla libertà concessa riguardo la stessa 291 implementazione del supporto alla gestione energetica. 293 292 294 293 \subsection{Caso reale} 295 294 \label{sec:casoreale} 296 295 297 Le schede \texttt{Atheros} costituiscono una realtà attraente per i fini dello298 studio, in particolare per ciò che concerne le libertà d'azione concesse di cui 299 al\ref{sec:libertàdazione}.300 Il driver \texttt{MADWiFi}è in grado sfruttare in maniera interessante le296 Le schede Atheros costituiscono una realtà attraente per i fini dello studio, in 297 particolare per ciò che concerne le libertà d'azione concesse di cui al 298 \ref{sec:libertàdazione}. 299 Il driver MADWiFi è in grado sfruttare in maniera interessante le 301 300 potenzialità fornite da questo \textit{chipset}, offrendo funzionalità non 302 301 troppo distanti dagli scopi del presente. 303 302 304 \subsubsection{Il \textit{chipset} \texttt{Atheros}}303 \subsubsection{Il \textit{chipset} Atheros} 305 304 \label{sec:atheros} 306 305 307 I \textit{chipset} \texttt{Atheros}equipaggiano i dispositivi 802.11 di alcuni306 I \textit{chipset} Atheros equipaggiano i dispositivi 802.11 di alcuni 308 307 fra i maggiori produttori di \textit{hardware} per la connettività, come 309 \texttt{Linksys}, \texttt{NETGEAR}, \texttt{D-Link}, \texttt{Orinoco}, 310 \texttt{Proxim} o \texttt{3Com}. 311 312 Il suo \textit{firmware} consente un grado di interazione di estensione 308 Linksys, NETGEAR, D-Link, Orinoco, Proxim o 3Com. 309 Il suo \textit{firmware} consente un grado di interazione dall'estensione 313 310 incomparabile, esponendo un'interfaccia in grado di offrire controllo anche su 314 311 dettagli generalmente offuscati. … … 317 314 sovrastrato (reso disponibile in sola forma binaria) atto a limitare 318 315 l'interfaccia al fine di impedire utilizzi non conformi alle vigenti 319 regolamentazioni sugli apparecchi radio. Tale componente, denominato320 \texttt{HAL} (\textit{Hardware Abstraction Layer}), interviene limitando le 321 radiofrequenze operative del dispositivo, continuando comunque a concedere le 322 libertà auspicate.323 324 \subsubsection{Il \textit{driver} \texttt{MADWiFi}}316 regolamentazioni sugli apparecchi radio. 317 Tale componente, denominato HAL (\textit{Hardware Abstraction Layer}), 318 interviene limitando le radiofrequenze operative del dispositivo, continuando 319 comunque a concedere le libertà auspicate. 320 321 \subsubsection{Il \textit{driver} MADWiFi} 325 322 \label{sec:madwifi} 326 A partire dallo scorso anno la spinta innovatrice di \texttt{Atheros} ha avuto 327 riscontro anche nel progetto \texttt{MADWiFi}, i driver liberi per piattaforme 328 Linux sviluppati inizialmente da Sam Leffler. Le novità introdotte dal nuovo 329 \texttt{HAL} sono state sfruttate aggiungendo una serie di funzionalità di 330 grande rilevanza. Il carattere rivoluzionario rende il progetto, come spesso 331 capita, piuttosto instabile ma assai vitale. 323 A partire dallo scorso anno la spinta innovatrice di Atheros ha avuto riscontro 324 anche nel progetto MADWiFi, i driver liberi per piattaforme Linux sviluppati 325 inizialmente da Sam Leffler. 326 Infatti le novità introdotte dal nuovo HAL sono state sfruttate aggiungendo una 327 serie di funzionalità di grande rilevanza. 328 Il carattere rivoluzionario rende il progetto, come spesso capita, piuttosto 329 instabile ma assai vitale. 332 330 333 331 L'aspetto indubbiamente più interessante è l'introduzione della modalità 334 332 \textbf{VAP} (\textit{Virtual Access Point}), grazie alla quale è possibile 335 333 virtualizzare il dispositivo creando molteplici interfacce di rete operanti 336 concorrentemente in maniera indipendente.334 concorrentemente. 337 335 Questa funzionalità è implementata facendo uso del medesimo livello fisico, 338 336 vincolando così l'operatività dei VAP sullo stesso canale trasmissivo. 339 337 Ciononostante, la rosa delle possibilità rimane ben assortita, permettendo la 340 338 creazione di molteplici \textit{access point} e/o una (e al più una) stazione in 341 modalità \text tt{managed} o \texttt{ad-hoc}.342 La nota modalità \text tt{monitor} viene inoltre resa inseribile in una qualsiasi339 modalità \textit{managed} o \textit{ad-hoc}. 340 La nota modalità \textit{monitor} viene inoltre resa inseribile in una qualsiasi 343 341 delle configurazioni appena descritte, con la semplice aggiunta di un VAP di 344 342 questo tipo. … … 348 346 essi locali (e virtualizzati) o esterni. 349 347 350 Le interfacce virtuali create saranno esposte ed utilizzate comodamente in piena 351 trasparenza, essendo presentate come ordinarie interfacce di rete aderenti alle 352 \textit{Wireless Extensions}. 353 354 L'alto grado di controllo permesso dal \textit{firmware} \texttt{Atheros} si 355 propaga fino all'utente attraverso il \textit{driver} grazie ai suoi numerosi 356 parametri specifici, che si ricordano essere gestibili tramite il comando 357 \texttt{iwpriv} degli \textit{Wireless Tools}. Un ulteriore strumento a riga di 358 comando, \texttt{wlanconfig}, completa le necessità di amministrazione proprie 359 di questo \textit{driver}, permettendo creazione, distruzione e cambio di 360 modalità dei VAP. 348 Le interfacce virtuali create possono essere utilizzate comodamente in piena 349 trasparenza, essendo aderenti alle \textit{Wireless Extensions}. 350 351 L'alto grado di controllo permesso dal \textit{firmware} Atheros si propaga fino 352 all'utente attraverso il \textit{driver} grazie ai suoi numerosi parametri 353 specifici, che si ricordano essere gestibili tramite il comando \texttt{iwpriv} 354 degli \textit{Wireless Tools}. 355 Un ulteriore strumento a riga di comando, \texttt{wlanconfig}, completa le 356 necessità di amministrazione proprie di questo \textit{driver}, permettendo 357 creazione, distruzione e cambio di modalità dei VAP. 361 358 362 359 \section{Soluzioni} … … 601 598 \ldots). 602 599 603 \end{description} 600 \end{description} 601 602 \clearpage 604 603 605 604 \section{Ringraziamenti} 606 605 \label{sec:ringraziamenti} 607 608 \clearpage 609 \tableofcontents 610 % \printindex 611 612 % \bibliography{Bibliografia} 613 % \bibliographystyle{alpha} 614 % \nocite{*} 606 Vittorio Ghini, docente del corso di ``Laboratorio di programmazione di rete'', 607 per averci proposto l'occasione di condurre questo studio e per l'entusiasmo 608 che ha saputo trasmetterci.\\ 609 Luciano Bononi, docente del corso di ``Sistemi di reti \textit{wireless}'', per 610 gli indirizzamenti offerti.\\ 611 Sam Leffler, autore di MADWiFi, per le conferme a proposito della soluzione 612 sopra il \textit{firmware} con schede Atheros.\\ 613 Jouni Malinen, autore di \texttt{wpa\_supplicant}, per i chiarimenti riguardo 614 alcuni aspetti dell'autenticazione di 802.11i. 615 616 \bibliography{Bibliografia} 617 \bibliographystyle{alpha} 618 \nocite{*} 615 619 616 620 \end{document}
Note: See TracChangeset
for help on using the changeset viewer.