Sei sulla pagina 1di 114

UNIVERSIDAD VERACRUZANA

Facultad de Contadura y Administracin


Redes Inalmbricas en Linux

MONOGRAFA
Qu para obtener el Ttulo de:

Licenciado en Sistemas
Computacionales Administrativos
Presenta:

Arturo Sarabia Vargas


Asesor:

M.C. Rubn lvaro Gonzlez Bentez


Coasesor:

M.E. Patricia Arieta Melgarejo


Cuerpo Acadmico:

Tecnologas de la Informacin y
Organizaciones Inteligentes en la Sociedad
del Conocimiento
Xalapa-Enrquez, Veracruz

Septiembre 2007

UNIVERSIDAD VERACRUZANA
Facultad de Contadura y Administracin
Redes Inalmbricas en Linux

MONOGRAFA
Qu para obtener el Ttulo de:

Licenciado en Sistemas
Computacionales Administrativos
Presenta:

Arturo Sarabia Vargas


Asesor:

M.C. Rubn lvaro Gonzlez Bentez


Cuerpo Acadmico:

Tecnologas de la Informacin y
Organizaciones Inteligentes en la Sociedad
del Conocimiento
Xalapa-Enrquez, Veracruz

Septiembre 2007

II

III

AGRADECIMIENTOS

QUIERO AGRADECER PRINCIPALMENTE A MI


MADRE POR HABERME DADO LA VIDA,
BRINDARME TODO SU AMOR Y ESFUERZO PARA
QUE YO LOGRARA CONCLUIR MIS SUEOS, POR
BUSCAR SIEMPRE MI BIENESTAR, SALUD Y
FELICIDAD A COSTA DE SACRIFICIOS, TE
QUIERO CON TODO MI CORAZN MAMITA,
GRACIAS.
A MI NOVIA, POR SER MI ARNS EN EL
MOMENTO ADECUADO, DARME UNA INMENSA
FELICIDAD DIA TRAS DIA Y POR SER LA
PERSONA MAS NOBLE QUE CONOZCO; TE AMO
CON TODO MI CORAZN, GRACIAS MI AMOR.

IV

NDICE
Captulo 1 LINUX

...

1.1

ETIMOLOGA

1.2

HISTORIA

1.3

DISTRIBUCIONES LINUX
1.3.1

Comparativa de algunas distribuciones Linux

. 11

1.4

COMO SE INSTALAN

17

1.5

APLICACIONES DE LOS SISTEMAS LINUX . 18

1.6

LA ESCALA DEL DESARROLLO DE "LINUX" . 19

1.7

EN LINUX EL MERCADO . 20

1.8

GNU/LINUX COMO SISTEMA DE PROGRAMACIN

1.9

LINUX EN LA ADMINISTRACIN PBLICA

.. 21

. 22

1.10 COMO USAR UN MDULO PROGRAMADO PARA LINUX . 23

Captulo 2

2.1

TCP/IP EN LINUX 33

TCP/IP

34

2.1.1 Niveles en la pila TCP/IP 34

2.1.2 Familia de protocolos de Internet 37

2.2

TCP/IP LINUX

38

2.2.1 IPv4 41
2.2.2 Desperdicio de direcciones

2.3

. 41

EL SISTEMA OPERATIVO Y LA COMUNICACIN 42


2.3.1 Envo TCP/IP

43

2.3.2 Recepcin TCP/IP 44


2.3.3 Sockets sobre TCP/IP en Linux: Fuentes y Estructuras de Datos. 46
2.3.4 Creacin de un Socket

. 47

2.3.5 Ubicacin de las Funciones ejecutadas para enviar un mensaje a


travs de Sockets en Linux

73

2.3.6 Convenientes e Inconvenientes de la comunicacin con TCP/IP en


Linux ... 74

Captulo 3

3.1

LAS WIRELESS LAN EN LINUX ........ 75

LAS WIRELESS LAN

......... 76

VI

3.1.1 Principios de las redes WLAN

3.2

3.1.1.1

Cmo trabajan

3.1.1.2

Configuraciones de red para radiofrecuencia .. 78

3.1.1.3

Chipset

..... 77

...... 79

LAS WIRELESS LAN EN LINUX ...... 79


3.2.1 Chipset Prism
3.2.1.1

3.3

..... 77

...... 79

Funcionamiento

...... 80

3.2.2 Chipset Hermes

...... 81

3.2.3 Chipset Atheros

......... 81

EJEMPLO DE LA INSTALACIN DE UNA TARJETA INALAMBRICA EN

LINUX

........... 82

Captulo 4

MODIFICACIONES A UN DRIVER PARA CALIDAD DE SERVICIO.

.............. 85

4.1

STATELESS WIRELESS AD HOC NETWORKS


4.1.1 Resumen
4.1.2 Introduccin

86

........ 86
...... 87

4.1.3 Qu son las redes Ad Hoc?

..... 87

4.1.4 Retos a superar en Ad Hoc.

.. 88

4.1.5 QoS en Redes Ad Hoc.

..... 89

4.1.6 Caractersticas de los enlaces con QoS para esquemas de


tiempo real ........ 90
4.1.7 Servicios diferenciados (DiffServ)

.. 91

VII

4.1.8 Modelo SWAN: Service Differentiation in Stateless Wireless Ad


Hoc Networks .......... 92
4.1.9 Hardware and Software requirement
4.1.10 Metodologa

.. 92

...... 93

4.1.11 Resultados y conclusiones

...... 94

VIII

NDICE DE IMGENES
Fig. 1 Linus Torvalds, creador del kernel

....... 7

Fig. 2 Sharp Zaurus, un computador de bolsillo con Linux. ... 10


Fig. 3 Escritorio KDE 3.4.2 corriendo sobre Gentoo Linux (2.6.13-r9) corriendo un
cliente IRC Konversation, un cliente p2p aMule y un reproductor musical Amarok.
.............. 18
Fig. 4 Richard Stallman, creador del proyecto GNU

........ 20

Fig. 5 Procedimientos del ncleo que interaccionan .... 31


Fig. 6 Procedimientos del ncleo que interaccionan ........ 32
Fig. 7 Varios algoritmos de control de congestin seleccionables al compilar Linux
(versin 2.6.17.4)

........... 39

Fig. 8 Pilas de protocolos ........... 42


Fig. 9 Pila de protocolos y la forma en que interactan al enviar paquetes .. 43
Fig. 10 Pila de protocolos y la forma en que interactan al recibir paquetes 44
Fig. 11 Pila de protocolos y mdulos que los componen

45

Fig. 12 Bibliotecas que se utilizan en Linux para manejar sockets 46


Fig .13 Creacin de estructura de datos .. 47
Fig. 14 Creacin de un socket

.. 48

Fig. 15 Creacin de un socket 2 .. 48


Fig. 16 Estructura de un socket .. 48
Fig. 17 Estructura del protocolo de transmisin . 49
Fig. 18 Estructura de un socket .. 50
Fig. 19 Estructura compuesta por una serie de operaciones para implementar los
protocolos TCP y UDP

51

Fig. 20 Escritura del sistema de archivos en Linux

.... 52

Fig. 21 Diagrama explicativo de la interaccin entre el socket, protocolo y el


sistema de archivos

53

Fig. 22 Uso de la memoria del sistema 54


Fig. 23 Estructura de envi

54

Fig. 24 Almacenamiento de punteros a funciones en un vector


Fig. 25 Definicin de la estructura de archivos a utilizar

55

56

IX

Fig. 26 Asociacin del socket con el fichero


Fig. 27 Estructuras creadas a partir del socket

56
57

Fig. 28 Forma de interaccin entre las estructuras creadas 55


Fig. 29 Protocolo enviado con las caractersticas del paquete

. 58

Fig. 30 Estructura del buffer

....... 59

Fig. 31 Estructura del buffer.

....... 60

Fig. 32 Secuencia de envo

....... 61

Fig. 33 Estructura del proceso de envi del mensaje ... 61


Fig. 34 Rectngulo no. 5 tcp_transmit_skb

... 62

Fig. 35 Se procede a enviar el mensaje mediante un socket

63

Fig. 36 Estructura del envi del mensaje mediante un socket

64

Fig. 37 Continuacin de la figura 36

....... 65

Fig. 38 Estructura en donde se toma la decisin de enviar o encolar el o los


paquetes............ 66
Fig. 39 Diagrama del proceso de salida del paquete .... 67
Fig. 40 ip_queue_xmit()

... 68

Fig. 41 estructura de cdigo en la que ip_queue_xmit() construye la cabecera IP


................. 69
Fig. 42 La rutina dev_queue_xmit() se encarga de la transmisin del sk_buff
correspondiente a cada paquete, a travs de la tarjeta de red (a travs de una
llamada a su controlador .......... 70
Fig. 43 La rutina dev_queue_xmit() se encarga de la transmisin del sk_buff
correspondiente a cada paquete, a travs de la tarjeta de red (a travs de una
llamada a su controlador .......... 71
Fig. 44 Diagrama explicativo de la interaccin

... 72

Fig. 45 Ubicacin de las funciones ejecutadas para enviar un mensaje a travs de


sockets en Linux

.......... 73

Fig. 46 Metodologa del modelo aplicado

.... 94

Fig. 47 Resultados obtenidos con el modulo admission control

95

Fig. 48 Resultados obtenidos con el modulo admission control

96

Fig. 49 resultados con un trfico mayoritariamente de tiempo real 96


Fig. 50 resultados con un trfico mayoritariamente de tiempo real 97

NDICE DE TABLAS
Tabla 1. Linux

.......... 9

Tabla 2. Comparacin general de las distribuciones de Linux

11

Tabla 3. Comparacin tcnica de las distribuciones de Linux.

13

Tabla 4. Datos extras de las distribuciones de Linux.

.... 15

Tabla 5. Comandos necesarios para el manejo de mdulos.

23

Tabla 6. Pila de protocolos modelo OSI ...

34

Tabla 7 Una interpretacin simplificada de la pila

35

XI

INTRODUCCION

Existen distintos estndares que definen distintos tipos de redes


inalmbricas. Esta variedad produce confusin en el mercado y descoordinacin
en los fabricantes. Para resolver este problema, los principales vendedores de
soluciones inalmbricas (3com, Airones, Intersil, Lucent Technologies, Nokia y
Symbol Technologies) crearon en 1999 una asociacin conocida como WECA
(Wireless Ethernet Compability Aliance, Alianza de Compatibilidad Ethernet
Inalmbrica) . El objetivo de esta asociacin fue crear una marca que permitiese
fomentar ms fcilmente la tecnologa inalmbrica y asegurase la compatibilidad
de equipos.
De esta forma en abril de 2000 WECA certifica la interoperatibilidad de equipos
segn la norma IEEE 802.11b bajo la marca Wi-Fi (Wreless Fidelity, Fidelidad
Inalmbrica). Esto quiere decir que el usuario tiene la garanta de que todos los
equipos que tenga el sello Wi-Fi pueden trabajar juntos sin problemas
independientemente del fabricante de cada uno de ellos. Se puede obtener un
listado completo de equipos que tienen la cetificacin Wi-Fi en Alliance - Certified
Products.
En el ao 2002 eran casi 150 miembros de la asociacin WECA. Como la norma
802.11b ofrece una velocidad mxima de transferencia de 11 Mbps ya existen
estndares que permiten velocidades superiores, WECA no se ha querido quedar
atrs. Por ese motivo, WECA anunci que empezara a certificar tambin los
equipos IEEE 802.11a de la banda de 5 Ghz mediante la marca Wi-Fi5.
La norma IEEE.802.11 fue diseada para sustituir a las capas fsicas y MAC de la
norma 802.3 (Ethernet). Esto quiere decir que en lo nico que se diferencia una
red Wi-Fi de una red Ethernet, es en la forma como los ordenadores y terminales
en general acceden a la red; el resto es idntico. Por tanto una red local
inalmbrica 802.11 es completamente compatible con todos los servicios de las
redes locales de cable 802.3 (Ethernet).
Las Redes Inalmbricas facilitan la operacin en lugares donde la computadora no
puede permanecer en un solo lugar, como en almacenes o en oficinas que se
encuentren en varios pisos.

No se espera que las redes inalmbricas lleguen a remplazar a las redes


cableadas. Estas ofrecen velocidades de transmisin mayores que las logradas
con la tecnologa inalmbrica. Mientras que las redes inalmbricas actuales
ofrecen velocidades de 54 Mbps, las redes cableadas ofrecen velocidades de 100
Mbps y se espera que alcancen velocidades de hasta 1000 Mbps. Los sistemas de
Cable de Fibra Optica logran velocidades an mayores.
Sin embargo se pueden mezclar las redes cableadas y las inalmbricas, y de esta
manera generar una "Red Hbrida" y poder resolver los ltimos metros hacia la
estacin. Se puede considerar que el sistema cableado sea la parte principal y la
inalmbrica le proporcione movilidad adicional al equipo y el operador se pueda
desplazar con facilidad dentro de un almacn o una oficina.
Las redes inalmbricas en Linux son un problema; la culpa no es Linux, si no los
fabricantes que no se preocupan por lanzar drivers para este sistema. Los
empaques de los routers, y otros dispositivos inalmbricos, no especifican el chip
que utilizan, pequeo detalle que ayudara a los usuarios Linux, pues as pueden
adquirir fcilmente un modelo con chip compatible con Linux.
Por lo tanto la finalidad de esta monografa es proporcionar la documentacin
necesaria para instalar una tarjeta de red inalmbrica en Linux, que se pueda
utilizar para su anlisis, posibles mejoras mediante la implementacin de cdigo
propio y poder hacer una comparacin con la propuesta de calidad de servicio
proporcionada por SWAN (Stateless Wireless Ad hoc Networks) el cual es un
proyecto encaminado a las redes inalmbricas mviles proporcionando servicios
con calidad (QoS) en redes Ad Hoc o punto a punto.
Los sistemas inalmbricos se han convertido en el segmento de mayor y ms
rpido crecimiento en las telecomunicaciones, donde su principal consecuencia
han sido dotar de movilidad a los nodos de la red al liberarlos de sus conexiones
fsicas, adems tambin estn empezando a ofrecer mltiples servicios con
calidad (QoS) como una conversacin telefnica, la transferencia de ficheros,
acceso a la web o la realizacin de videoconferencia, sin restricciones de lugar y
de tiempo. Estos ejemplos de comunicacin inalmbrica espontnea entre
dispositivos se denomina redes Ad Hoc, permitiendo a los dispositivos establecer

la comunicacin, en cualquier momento y en cualquier lugar. En realidad, la


formacin de redes Ad Hoc como tal no es nueva, sino lo es nuevo es la forma de
configuracin y uso de sus elementos. Una aproximacin para otorgar calidad de
servicio es la de diferenciar entre el conjunto de paquetes que circulan por la red
clasificando los paquetes en un nmero pequeo de tipos de servicios y utiliza
mecanismos de prioridad para proporcionar una calidad de servicio adecuada al
trfico. Este estudio preliminar se realizo aplicando servicios diferenciados con el
modelo SWAN en el entorno del simulador ns2. SWAN es un modelo de red sin
estados, el cual usa algoritmos de control distribuidos para entregar servicios
diferenciados en MANET de una manera escalable y robusta. Estos algoritmos
aplican controles basados en retroalimentaciones para soportar servicios de
tiempo real soft y servicios diferenciados en redes inalmbricas Ad Hoc. El
modelo usa el rate control (rc) para trafico UDP y TCP best effort, y un admission
control (ac) para trafico UDP de tiempo real. SWAN aplica la notificacin explicita
de congestionamiento (ECN) para regular dinmicamente trafico de tiempo real
admitido. El novedoso aspecto de este modelo es que no requiere de QoS en la
capa MAC.

CAPITULO I
LINUX

1.1 Etimologa
Linux se refiere estrictamente al ncleo Linux, pero es comnmente
utilizado para describir al sistema operativo tipo Unix (que implementa el estndar
POSIX), que utiliza primordialmente filosofa y metodologas libres (tambin
conocido como GNU/Linux) y que est formado mediante la combinacin del
ncleo Linux con las bibliotecas y herramientas del proyecto GNU y de muchos
otros proyectos/grupos de software (libre o no libre). El software que suelen incluir
consta de una enorme variedad de aplicaciones, como: entornos grficos, suites
ofimticas, servidores web, servidores de correo, servidores FTP, etctera.
Coloquialmente se aplica el trmino "Linux" a stas. Algunas personas opinan que
es incorrecto denominarlas distribuciones Linux, y proponen llamarlas sistema
GNU/Linux. Otras personas opinan que los programas incluidos proceden de
fuentes tan variadas que proponen simplificarlo denominndolo simplemente a
"Linux".
Linux (pronunciacin IPA: /lnks/) es la denominacin de un sistema operativo
tipo-Unix y el nombre de un ncleo. Es uno de los paradigmas ms prominentes
del software libre y del desarrollo del cdigo abierto, cuyo cdigo fuente est
disponible pblicamente y cualquier persona puede libremente usarlo, estudiarlo,
redistribuirlo y, con los conocimientos informticos adecuados, modificarlo.
Los primeros sistemas Linux se originaron en 1992, al combinar utilidades de
sistema y bibliotecas del proyecto GNU con el ncleo Linux, completando un
sistema tambin conocido como GNU/Linux. Desde fines de 1990 Linux ha
obtenido el apoyo de diversas empresas multinacionales del mundo de la
informtica, tales como IBM, Sun Microsystems, Hewlett-Packard y Novell.
Linux es usado como sistema operativo en una amplia variedad de plataformas de
hardware y computadores, incluyendo los computadores de escritorio (PCs x86 y
x86-64, y Macintosh y PowerPC), servidores, supercomputadores, mainframes, y
dispositivos empotrados as como telfonos celulares.
La marca Linux (Nmero de serie: 1916230) pertenece a Linus Torvalds y se
define como "un sistema operativo para computadoras que facilita su uso y
6

operacin". Existen grupos de usuarios del sistema Linux en casi todas las reas
del planeta
La pronunciacin correcta (para cualquier idioma) es muy cercana a como se
pronuncia en espaol: /l.nux/ o /lnks/ (Alfabeto Fontico Internacional).

1.2 Historia

Fig. 1 Linus Torvalds, creador del kernel

La historia de Linux est fuertemente vinculada a la del proyecto GNU. El


proyecto GNU, iniciado en 1983, tiene como objetivo el desarrollo de un sistema
Unix completo compuesto enteramente de software libre. Hacia 1991, cuando la
primera versin del ncleo Linux fue liberada, el proyecto GNU haba producido
varios de los componentes del sistema operativo, incluyendo un intrprete de
comandos, una biblioteca C y un compilador, pero an no contaba con el ncleo
que permitiera completar el sistema operativo.
El ncleo creado por Linus Torvalds, quien se encontraba entonces estudiando en
la Universidad de Helsinki, llen el hueco final que el sistema operativo GNU
exiga. Subsecuentemente, miles de programadores voluntarios alrededor del
mundo han participado en el proyecto, mejorndolo continuamente. Torvalds y
otros desarrolladores de los primeros das de Linux adaptaron los componentes de

GNU y de BSD, as como de otros muchos proyectos como Perl, Apache, Python,
etc. para trabajar con el ncleo Linux, creando un sistema operativo
completamente funcional procedente de muchsimas fuentes diferentes, la
mayora libres.

1.3 Distribuciones Linux


Tabla 1 Linux

El logotipo oficial del ncleo Linux es el pingino Tux


Desarrollador

Varios

Familia de S.O.

Unix-like

Modelo de desarrollo

Open source

Ncleo

Linux

Tipo de ncleo

Monoltico

Licencia

GPL/LGPL/BSD/Otras

Estado actual

En desarrollo

Fig. 2 Sharp Zaurus, un computador de bolsillo con Linux.

Una distribucin es un conjunto de aplicaciones reunidas por un grupo, empresa o


persona para permitir instalar fcilmente un sistema Linux. Es un sabor de Linux.
En general se destacan por las herramientas para configuracin y sistemas de
paquetes de software a instalar.
Existen numerosas distribuciones Linux (tambin conocidas como "distros"),
ensambladas por individuos, empresas y otros organismos. Cada distribucin
puede incluir cualquier nmero de software adicional, incluyendo software que
facilite la instalacin del sistema. La base del software incluido con cada
distribucin incluye el ncleo Linux y las herramientas GNU, al que suelen
adicionarse tambin varios paquetes de software.
Las herramientas que suelen incluirse en la distribucin de este sistema operativo
se obtienen de diversas fuentes, incluyendo de manera importante proyectos de
cdigo abierto o libre, como el GNU y el BSD o el KDE. Debido a que las
herramientas de software libre que en primera instancia volvieron funcional al
ncleo de Linux provienen del proyecto GNU que desde 1983 haba liberado
software que pudo ser usado en el proyecto de Linux de 1991, Richard Stallman
(fundador del proyecto GNU) pide a los usuarios que se refieran a dicho sistema
como GNU/Linux. A pesar de esto, la mayora de los usuarios continan llamando
al sistema simplemente "Linux" y las razones expuestas por Richard Stallman son

10

eterno motivo de controversia. La mayora de los sistemas "Linux" incluyen


tambin herramientas procedentes de BSD y de muchos otros proyectos como
Mozilla, Perl, Ruby, Python, PostgreSQL, MySQL, Xorg, casi todas con licencia
GPL o compatibles con sta (LGPL, MPL) otro aporte fundamental del proyecto
GNU.
Usualmente se utiliza la plataforma XFree86 o la X.Org para sostener interfaces
grficas.

1.3.1 Comparativa de algunas distribuciones Linux


Existen numerosas distribuciones Linux. Cada una de ellas puede incluir
cualquier cantidad de software adicional (libre o no), como algunos que facilitan
la instalacin del sistema y una enorme variedad de aplicaciones, entre ellos,
entornos grficos, suites ofimticas, servidores web, servidores de correo,
servidores FTP, etctera.
La base de cada distribucin incluye el ncleo Linux, con las bibliotecas y
herramientas del proyecto GNU y de muchos otros proyectos/grupos de
software, como BSD.

Tabla 2 Comparacin general de las distribuciones de Linux.


Fecha de
Empresa

la
primera

ltima
Predecesor

GNU/Linux

Fedora
Core

Precio ()

Licencia

Pblico

Pas

estable

P.R.

Debian

versin

Proyecto

agosto de

Debian

1993

Proyecto

noviembre

Fedora Linux,

Fedora

de 2003

Red Hat Linux

N/A

4.0
(Etch)

Gratis

cualquier
DFSG

Ver. 7 /
Junio
2007

Desktop,
Workstation,
Server
Workstation,

Gratis

GPL

Server,

Mun
dial

EEU
U

Pblico

11

Gentoo

Mandriva
Linux

Fundacin

marzo de

Gentoo

2002

Mandriva

julio de
1998

Enoch

Mandrake
Linux/Conectiva
y Lycoris Xls

rxart, rxart

de 2001

Linux

Pixart

Slackware

Patrick

julio de

Volkerding

1993

2006.1

Gratis

GPL

Server,

Gratis
2007.1

(edicin

Spring

para

Desktop,
GPL

3.0

16

Workstation,
Server

descargar)

GPL

11.0

Gratis

GPL

Mun
dial

Workstation,

Arge

Server

ntina

Workstation,
SLS

Mun
dial

Pblico

octubre

Rxart

Linux

Workstation,

Server,

EEU
U

Pblico
Descarga
gratuita

SUSE

Novell,

marzo de

Linux

OpenSUSE

1994

Jurix

10.3

disponible
Ed.

Workstation,
GPL

Profesional:

Server,

Mun

Desktop,

dial

Pblico

51,95

Ubuntu

Canonical

octubre

Ltd.

de 2004

7.04
Debian

(Feisty
Fawn)

Gratis
LiveCD

Desktop,
GPL

Workstation,
Server

Tabla 2. Comparacin general de las distribuciones de Linux (continuacin).

12

Mun
dial

Tabla 3. Comparacin tcnica de las distribuciones de Linux.


API
Sistem
Kernel

a de
fichero
s

Sistemas
de
ficheros
compatib

principal

Herramie
Arquitect
ura

les

nta de

Administra

actualizac

dor de

in de

Paquetes

paquetes

y
lenguaje
para
Aplicacio
nes
Grficas

API
principal
y
lenguaje
para
Aplicacio
nes CLI

x86, x8664, IA64,

Debian
GNU/Lin
ux

Linux
2.6.18

ext3

ext2, JFS,

PowerPC,

XFS,

SPARC,

FAT,

SPARC64

dpkg,

NTFS,

, Alpha,

Synaptic,

ISO 9660,

MIPS,

UDF,

ARM, PA-

NFS,

RISC,

ReiserFS

Mac/VME

APT

Adept, APT

pre-LSB
con C,
Varias

otros
(estndar

y Aptitude

POSIX)

68k,
S/390
ext2,

Linux
Fedora
Core

ReiserFS,

2.6.18
Fed.C

ext3

ore

FAT, ISO
9660,
UDF,

Verid 9

pre-LSB
x86, x86-

up2date,

64, i386,

yum, APT

PowerPC

(limitado)

con C,
RPM, yum

Varias

(estndar
POSIX)

NFS
ext2,
ReiserFS,

Rxart

Linux
2.6.34

ext3

FAT, ISO
9660,
UDF,

pre-LSB
x86, x86-

up2date,

64, i386,

net, APT

PowerPC

(limitado)

con C,
DEB, ASK

Varias

Linux

a Linux

2.6.17

ext3

otros
(estndar
POSIX)

NFS
Mandriv

otros

ext2, JFS,

x86

XFS,

(i586),

urpmi

RpmDrake

Varias

pre-LSB
con C,

13

FAT,

x86-64,

otros

NTFS,

PPC

(estndar

ISO 9660,

POSIX)

UDF,
NFS,
ReiserFS
JFS,
Linux

Reiser

Slackwa

2.4.33

FS,

re Linux

ext3/ex

2.6.18

t2

XFS,
FAT,
NTFS,
ISO 9660,

pre-LSB

Swaret,
x86, IA64,

Slapt-get,

installpkg y

S/390

otros no

upgradepkg

con C,
Varias

(estndar

oficiales

UDF,

otros
POSIX)

NFS
ext2,
ext3, JFS,
XFS,
openSU
SE

Linux
2.6.18.

ext3

YaST2

pre-LSB
con C,

FAT,

x86, IA64,

(Misma

NTFS,

x86-64,

Versin de

ISO 9660,

PowerPC

YaST

(estndar

Avanzada)

POSIX)

UDF,

RPM, YaST

Varias

otros

NFS,
Reiser4
JFS,
Ubuntu

Linux
2.6.20

XFS,
ext3

NTFS,
ISO 9660,
ReiserFS

pre-LSB

dpkg,
x86, x8664

APT

Synaptic,
APT y
Aptitude

con C,
Varias

otros
(estndar
POSIX)

Tabla 3. Comparacin tcnica de las distribuciones de Linux (continuacin).

14

Tabla 4. Datos extras de las distribuciones de Linux.

Paquetes

Debian
GNU/Linux

18000

Instalacin

Administrador de

Navegador

grfica

archivos

web

S (a partir de la
4.0 "Etch")

Nautilus, Konqueror

Iceweasel,
Konqueror

Entorno

Gestor de

Tema

grfico

ventanas

visual de

principal

principal

escritorio

GNOME

Metacity,
KWin

a elegir

Suite ofimtica

OpenOffice.org,
KOffice, GNOME Office

ClearLook
Fedora
Core

Mozilla
5000

Nautilus, Konqueror

Firefox,
Epiphany

GNOME,

Metacity,

KDE

Kwin

s
(GNOME)
Bluecurve

OpenOffice.org,
KOffice, GNOME Office

(KDE)

Mandriva
Linux

Rxart
Linux

Slackware
Linux

Konqueror,
4000

Konqueror

Mozilla

KDE

KWin

la Ora

OpenOffice.org

KDE

KWin

Rxart

OpenOffice.org

varios

a elegir

a elegir

KOffice

Firefox

Konqueror,
2000

Konqueror

Mozilla
Firefox

muchos

No

Konqueror

Mozilla
Firefox,

Seamonkey

Mozilla
Firefox,
SUSE
Linux

Konqueror
12500

Nautilus

(en KDE),
Epiphany

Gnome,
KDE

Metacity

ClearLook

OpenOffice.org,

KOffice, GNOME Office

(en
GNOME)

Ubuntu

menos de
18000

Nautilus

Tabla 4. Datos extras de las distribuciones de Linux (continuacin).

Mozilla
Firefox

GNOME

Metacity

Human

OpenOffice.org,
GNOME Office

1.4 Cmo se instala Linux


Linux en la actualidad es un sistema operativo fcil de instalar, tan solo
basta con descargar la imagen iso de una distribucin como Debian, SuSE,
Ubuntu o Yellow Dog (la mayora son gratuitas) y grabarla en un CD o DVD.
Existen versiones linux para mquinas x86 (abarca desde computadoras 386,
pentium I, celeron, hasta pentium IV), tambin para 64 bits (los nuevos
procesadores, aunque tambin trabajan con linux para x86), y para procesadores
PowerPc (ppc) de las computadoras Apple Macintosh.
El resto es tan fcil como instalar Windows, incluso algunas distribuciones
permiten entrar al escritorio linux sin necesidad de instalar el sistema operativo
(desde el CD), para luego usarlo o instalarlo desde el escritorio. Este es el caso de
Ubuntu y Kubuntu y las versiones ms actualizadas, insertas el cd/dvd dentro de la
computadora, reinicias y en uno o dos minutos ests en el escritorio del sistema
operativo Linux. Estas versiones son tambin llamadas Live, del ingls "en vivo".
Actualmente Linux es un sistema fcil de usar. Cada distribucin trae programas
seleccionados por los autores de la distribucin incluidos en el cd o en el dvd, y se
pueden instalar tanto al comienzo de la instalacin como luego de haber instalado
el sistema. Se puede instalar en computadoras que se consideren "obsoletas",
pero esto puede resultarle complicado a un usuario novato.

17

1.5 Aplicaciones de los sistemas Linux

Fig. 3 Escritorio KDE 3.4.2 corriendo sobre Gentoo Linux (2.6.13-r9) corriendo un cliente IRC
Konversation, un cliente p2p aMule y un reproductor musical Amarok.

Con la adopcin por numerosas empresas fabricantes de PCs, muchas


computadoras son vendidas con distribuciones GNU/Linux pre-instaladas, y
"GNU/Linux" ha comenzado a tomar su lugar en el vasto mercado de las
computadoras de escritorio.
Con entornos de escritorio, "GNU/Linux" ofrece una interfaz grfica alternativa a la
tradicional interfaz de lnea de comandos de Unix. Existen en la actualidad
18

numerosas aplicaciones grficas, ya sean libres o no, que ofrecen funcionalidad


que est permitiendo que GNU/Linux se adapte como herramienta de escritorio.
Algunas distribuciones permiten el arranque de Linux directamente desde un disco
compacto (llamados LiveCDs) sin modificar en absoluto el disco duro de la
computadora en la que se ejecuta Linux. Para este tipo de distribuciones, en
general, los archivos de imagen (archivos ISO) estn disponibles en Internet para
su descarga.
Otras posibilidades incluyen iniciar el arranque desde una red (ideal para sistemas
con requerimientos mnimos) o desde un disco flexible o disquete o de unidades
de almacenamiento USB.

1.6 La escala del desarrollo de "Linux"


Un estudio sobre la distribucin Red Hat 7.1 revel que sta en particular
posee ms de 30 millones de lneas de cdigo real. Utilizando el modelo de
clculo de costos COCOMO, puede estimarse que esta distribucin requerira
8.000 programadores por ao para su desarrollo. De haber sido desarrollado por
medios convencionales de cdigo cerrado, hubiera costado ms de mil millones de
dlares en los Estados Unidos.
La mayor parte de su cdigo (71%) perteneca al lenguaje C, pero fueron
utilizados muchos otros lenguajes para su desarrollo, incluyendo C++, Bash, Lisp,
Ensamblador, Perl, Fortran y Python.
Alrededor de la mitad de su cdigo total (contado en lneas de cdigo) fue liberado
bajo la licencia GPL en su versin 2.
El ncleo Linux contena entonces 2,4 millones de lneas de cdigo,
correspondiente al 8% del total, demostrando que la vasta mayora del sistema
operativo no pertenece al ncleo del mismo.
En un estudio posterior, Counting potatoes: the size of Debian 2.2, el mismo
anlisis fue hecho para Debian GNU/Linux versin 2.2. Esta distribucin contiene
ms de 55 millones de lneas de cdigo fuente, y habra costado 1.900 millones de

19

dlares (ao 2000) el desarrollo por medios convencionales (no libres); y el ncleo
Linux continua siendo de unas 2,5 millones de lneas.

1.7 En Linux el mercado

Fig. 4 Richard Stallman, creador del proyecto GNU

La creciente popularidad de Linux se debe a las ventajas que presenta ante


otros tipos de software. Entre otras razones se debe a su estabilidad, al acceso a
las fuentes (lo que permite personalizar el funcionamiento y auditar la seguridad y
privacidad de los datos tratados), a la independencia de proveedor, a la seguridad,
a la rapidez con que incorpora los nuevos adelantos tecnolgicos (IPv6,
microprocesadores de 64 bits), a la escalabilidad (se pueden crear clusters de
cientos de computadoras), a la activa comunidad de desarrollo que hay a su
alrededor, a su interoperatibilidad y a la abundancia de documentacin relativa a
los procedimientos.
Hay varias empresas que comercializan soluciones basadas en Linux: IBM, Novell,
Red Hat, Rxart, Cannonical (Ubuntu), Rxart, as como miles de PYMES que
ofrecen productos o servicios basados en esta tecnologa.
Dentro del segmento de supercomputadoras, la 5 ms grande de Europa,
denominada MareNostrum, fue desarrollada por IBM y est basada en un cluster
20

Linux ([1]). Ella se encuentra alojada en Barcelona y es gestionada por la


"Universitat Politcnica de Catalunya" (UPC). A fines de 2006, de acuerdo al
TOP500.org, encargado de monitorear las 500 principales supercomputadoras del
mundo: 371 usaban una distribucin basada en GNU/Linux, 81 Unix, 32 SLES
(una variante de Unix), 13 nicos con Linux y 3 Mac. Ninguna usaba Windows.
Linux, adems de tener una amplia cuota en el mercado de servidores de internet,
debido entre otras cosas a la gran cantidad de soluciones que tiene para este
segmento, tiene un creciente campo en computadoras de escritorio y porttiles.
Prueba de ello es que es el sistema base que se ha elegido para el proyecto
OLTPC, que tiene como objetivo llevar una LapTop a cada nio de pases como
China, Brasil, Argentina y Uruguay y est patrocinado por la iniciativa del MIT y
firmas como AMD, Google y Sun Microsystems.

1.8 GNU/Linux como sistema de programacin


La coleccin de utilidades para la programacin de GNU es con diferencia
la familia de compiladores ms utilizada en Linux. Tiene capacidad para compilar
C, C++, Java, Ada, entre otros muchos lenguajes. Adems soporta diversas
arquitecturas mediante la compilacin cruzada, lo que hace que sea un entorno
adecuado para desarrollos heterogneos.
Hay varios IDEs disponibles para Linux incluyendo, Anjuta, KDevelop, NetBeans
IDE y Eclipse. Adems existen editores extensibles como pueda ser Emacs que
hoy en da siguen siendo ampliamente utilizados. GNU/Linux tambin dispone de
capacidades para lenguajes de guin (script), aparte de los clsicos lenguajes de
programacin de shell, la mayora de las distribuciones tienen instalado Python,
Perl, PHP y Ruby.

21

1.9 Linux en la Administracin Pblica


Hay una serie de administraciones pblicas que han mostrado su apoyo al
software libre, sea migrando total o parcialmente sus servidores y sistemas de
escritorio, sea subvencionndolo. Como ejemplos se tiene a:
Alemania pagando por el desarrollo del Kroupware. Adems ciudades como
Mnich, que migr sus sistemas a SuSE Linux, una distribucin alemana
especialmente orientada a KDE.
Cuba donde el gobierno ha establecido una indicacin oficial para introducir de
manera progresiva el software libre y en particular GNU/Linux y en el que la red de
Salud Pblica, Infomed, fue pionera en su uso.
China, con su acuerdo con Sun Microsystems para distribuir millones de Java
Desktop (una distribucin de GNU/Linux basada en GNOME y especialmente bien
integrada con java)
Brasil, con una actitud generalmente positiva, y, por ejemplo, con el desarrollo de
los telecentros
En Espaa, algunos gobiernos autonmicos estn desarrollando sus propias
distribuciones no slo para uso administrativo sino tambin acadmico. As
tenemos LinEx en Extremadura, Augustux en Aragn, GuadaLinex en Andaluca,
LliureX en La Comunidad Valenciana, Molinux en Castilla-La Mancha, MAX en La
Comunidad de Madrid, Linkat en Catalua y Trisquel en la Comunidad de Galicia,
por el momento. Todas estas distribuciones tienen en comn el hecho de estar
basadas en Debian, o alguno de sus derivados, como Ubuntu.
Venezuela donde por decreto, se estableci el uso preferencial del software libre y
GNU/Linux en toda la administracin pblica, incluyendo ministerios y oficinas
gubernamentales y se est fomentando la investigacin y el desarrollo de software
libre.
Chile, donde el Ministerio de Educacin y la Universidad de la Frontera (ubicada
en Temuco) crearon EduLinux, una distribucin que hoy est en ms de 1500
escuelas chilenas y funcionando en ms de un 90% de las bibliotecas chilenas.
Actualmente las Fuerzas Armadas chilenas estn planificando la creacin de una

22

distribucin militar que interconecte a las ramas de la defensa chilena. El gobierno


de ese pas aprob el uso del software libre en la administracin pblica, anulando
as un contrato previo con Microsoft para el mantenimiento de las redes y de los
equipos en escuelas y bibliotecas chilenas.
Repblica Dominicana, promociona el uso y proliferacin del Software libre en el
campo educativo y cientfico. Dispone de dos fundaciones, una en la capital de
Santo Domingo y la otra en la ciudad de Santiago. Codigolibre.org
Mxico el Gobierno del Distrito Federal dentro de sus polticas y lineamientos en
materia de Informtica da preferencia al uso del Software Libre. La Delegacin
Tlalpan crea la distribucin Gobierno GDF/Linux.

1.10 Como usar un mdulo programado para Linux


Despus de haber ledo la resea completa sobre Linux, Supongamos que
ya he programado mi driver, ahora cmo lo uso?
Para empezar diremos que slo el superusuario puede insertar y quitar mdulos
del kernel, las razones para esto son evidentes, se podria hacer un driver que se
dedicase a borrar todos los ficheros del disco duro, como este cdigo se ejecuta
en el kernel, podemos saltarnos todas las comprobaciones de permisos de
escritura y borrar todo lo que queramos, aunque est protegido contra escritura.
En la tabla 5 aparecen los nombres de los comandos necesarios para el manejo
de mdulos (que slo puede ejecutar root).
Tabla 5. Comandos necesarios para el manejo de mdulos.

Insmod mi_modulo Inserta el mdulo mi_modulo en el kernel


rmmod mi_modulo Saca del kernel el mdulo mi_modulo
modinfo

Muestra informacin sobre el mdulo.

modprobe

Automatiza/facilita la gestin de mdulos.

23

depmod

Determina las dependencias entre mdulos.


Muestra los mdulos que estn actualmente insertados en

Lsmod

el kernel, junto con algunos datos adicionales sobre el


estado de los mismos.

24

CARGAR MDULOS
1.

Compilar el ncleo con los parmetros de configuracin que permiten trabajar


con mdulos.
*
* Loadable module support
*
Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y

2.

Disear e implementar un manejador como mdulo cargable.

2.1 Definir nmero mayor y menor para el dispositivo:


#define manejador_MAYOR nn
#define manejador_MINOR xx
2.2 Definir operaciones de entrada salida para el dispositivo:
static int manejador_fs_read (struct inode *inode, struct file *file,
char *buf, int nbytes );
2.3 Definir la estructura: file_operations
static struct file_operations manejador_fops =
{
NULL,
manejador_fs_read,
NULL,
NULL,
NULL,
NULL,
25

NULL,
NULL,
NULL,
NULL
};
2.4 Disear la funcin de inicializacin del modulo y descarga:
int manejador_init (void)
{
.....
}
#ifdef MODULE
/* funcin de inicio del modulo */
int init_module (void)
{
return manejador_init ();
}
/* Funcin de descarga del mdulo */
void cleanup_module (void)
{
unregister_chardev (mayor device, manejador);
printk (manejador modulo no se puede descargar \n);
}
#endif
2.5 Disear la funcin de lectura del manejador:
static int manejador_fs_read (struct inode *inode, struct file *file, char *buf, int
26

nbytes)
{
...
}
3.

Compilar el modulo con las directivas: D__KERNEL__ y DMODULE

4.

Crear el archivo especial para este manejador:


#mknod /dev/manejador

5.

c mayor_device menor_device

Insertarlo en el ncleo:
#insmod manejador

6.

Ver lista de mdulos cargados:


#lsmod

7.

Utilizarlo:
#modprobe

8.

Quitarlo del ncleo:


#rmmod manejador

MDULOS DEL NCLEO


Hay componentes del ncleo que siempre tienen que estar en memoria como el
planificador de la CPU.
Sin embargo otros componentes solo tienen que estar en memoria cuando se
necesitan, como el manejador de un CDWriter; un sistema de ficheros Minix, NFS;
27

un manejador de protocolo PPP.


Estas partes del ncleo que pueden cargarse o descargarse dinmicamente en
memoria, mientras el ncleo se esta ejecutando se llaman MDULOS.
Ventajas de los mdulos:
1. La incorporacin de nuevos manejadores al ncleo es mas fcil, se pueden
compilar, cargar, probar, o quitar como mdulos antes de integrarlos en le
ncleo.
2. Si el manejador est integrado en el ncleo, cada vez que hagamos
modificaciones en el manejador hay que recompilar todo el ncleo y
reiniciar.
3. El ncleo no ocupa tanta memoria principal, quedando libre para las
aplicaciones.
Desventajas:
1. Cada vez que se requiere o ya no se necesita un mdulo hay que pagar el
coste de leer o escribir en disco.
2. El cdigo del ncleo se incrementa con el sistema de manejo de mdulos.
La opcin que activa que el ncleo maneje los mdulos es:
Enable loadable module suport (CONFIG_MODULES) [Y/n/?]
Si se desea instalar un componente como mdulo, hay que declararlo en la
configuracin del ncleo, ejemplo instalar el sistema de ficheros MSDOS.

28

DOS FAT fs support (CONFIG_FAT_FS) [M/n/y/?] M


MSDOS fs support (CONFIG_MSDOS_FS) [M/n/y/?] M
VFAT (Windows-98) fs support (CONFIG_VFAT_FS) [m/n/y/?] M
Una vez compilado el ncleo se compilan los mdulos, la secuencia puede ser:
make config
make dep
make clean
make zImage
make modules
make modules_install
Finalizado este proceso, los mdulos se encuentran el /lib/modules.
Los mdulos se compilan como cualquier programa pero son enlazados como
imgenes recargables, esto es no estn asociadas a ninguna direccin.
Podemos ver los smbolos exportados por el ncleo en /proc/ksyms o utilizando el
comando ksyms.
Cada mdulo debe contener unos procedimientos que los manejan, incluyendo
uno de inicializacin cuando se carga el mdulo y otro de borrado cuando se quita
del ncleo.
Los comandos del sper usuario para manejar manualmente los mdulos son:

insmod instalar un mdulo

lsmod lee el contenido de /proc/modules y muestra los mdulos cargados


en memoria, (nombre, nmero de pginas del mdulo y procesos que los
utilizan).
29

ejemplo de listado al ejecutar lsmod


Module:

#pages:

Used by:

msdos

1 (autoclean)

vfat

1 (autoclean)

fat

[vfat msdos] 2 (autoclean)

rmmod quitar un mdulo

Carga automtica de mdulos por demanda del ncleo


Cuando se monta un sistema de ficheros que no est integrado en el ncleo, el
ncleo solicita al programa kerneld que cargue los mdulos necesarios para este
sistema de ficheros montado.
La carga dinmica y automtica de mdulos precisa que se compile el ncleo con
la opcin CONFIG_KERNELD y los IPC System V.
Se precisa al arrancar el sistema lanzar el programa demonio kerneld, que lee las
peticiones del ncleo y realiza la carga o descarga de los mdulos necesarios. Se
ejecuta como un proceso de usuario y establece un canal de comunicacin
basado en mensajes (IPC) con el ncleo, por el cual el ncleo solicita mediante
mensajes un modulo al programa modprobe. Se utilizan los programas depmod y
modprobe.
DEPMOD, genera un archivo de dependencias de los smbolos encontrados en los
mdulos.
MODPROBE, es el programa para manejo de mdulos, requiere privilegios de
root.

30

Los procedimientos del ncleo que interaccionan con modprobe y la estructura de


datos principal, (se encuentran en include/linux/module.h y kernel/module.c) son:

request_module
Es la funcin llamada por el ncleo cuando este percibe, por la solicitud de
un proceso, la necesidad de cargar un mdulo.

exec_modprobe
Es el programa que aade el mdulo solicitado al ncleo, es llamado por
kerneld.

struct module

module
module_list

module

next

next

ref

ref

symtab

symtab

name

name

size

size
symbol_table

symbol_table

size

size

n_symbols

n_symbols

n_refs

n_refs

Fig. 5 Procedimientos del ncleo que interaccionan

31

mdulo
Ncleo

Ncleo

request_module (mdulo)

kerneld
disco
modprobe (mdulo)

mdulo

Fig. 6 Procedimientos del ncleo que interaccionan

Los ficheros que tratan con los mdulos son:


incluye/linux/module.h
kernel/module.c
contienen la estructura struc module
y las llamadas al sistema utilizadas por modprobe y los comandos insmod, lsmod
y rmmod son:
sys_create_module
sys_init_module
sys_delete_module
sys_get_kernel_syms

32

CAPITULO II
TCP/IP EN LINUX

33

2.1 TCP/IP
2.1.1 Niveles en la pila TCP/IP
Hay algunas discusiones sobre como encaja el modelo TCP/IP dentro del
modelo OSI. Como TCP/IP y modelo OSI no estn delimitados con precisin no
hay una respuesta que sea la correcta.
El modelo OSI no est lo suficientemente dotado en los niveles inferiores como
para detallar la autntica estratificacin en niveles: necesitara tener una capa
extra (el nivel de Interred) entre los niveles de transporte y red. Protocolos
especficos de un tipo concreto de red, que se sitan por encima del marco de
hardware bsico, pertenecen al nivel de red, pero sin serlo. Ejemplos de estos
protocolos son el ARP (Protocolo de resolucin de direcciones) y el STP
(Spanning Tree Protocol). De todas formas, estos son protocolos locales, y
trabajan por debajo de las capas de Interred. Cierto es que situar ambos grupos
(sin mencionar los protocolos que forman parte del nivel de Interred pero se sitan
por encima de los protocolos de Interred, como ICMP) todos en la misma capa
puede producir confusin, pero el modelo OSI no llega a ese nivel de complejidad
para ser ms til como modelo de referencia.
La siguiente Tabla intenta mostrar la pila TCP/IP y otros protocolos relacionados
con el modelo OSI original:
Tabla 6. Pila de protocolos modelo OSI

7 Aplicacin

ej. HTTP, DNS, SMTP, SNMP, FTP, Telnet, SSH y SCP, NFS,
RTSP, Feed, Webcal

6 Presentacin

ej. XDR, ASN.1, SMB, AFP

5 Sesin

ej. TLS, SSH, ISO 8327 / CCITT X.225, RPC, NetBIOS

4 Transporte

ej. TCP, UDP, RTP, SCTP, SPX

3 Red

ej. IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF

34

Enlace

de ej. Ethernet, Token Ring, PPP, HDLC, Frame Relay, RDSI,

datos

ATM, IEEE 802.11, FDDI

1 Fsico

Normalmente,

ej. cable, radio, fibra ptica

los

tres

niveles

superiores

del

modelo

OSI

(Aplicacin,

Presentacin y Sesin) son considerados simplemente como el nivel de aplicacin


en el conjunto TCP/IP. Como TCP/IP no tiene un nivel de sesin unificado sobre el
que los niveles superiores se sostengan, estas funciones son tpicamente
desempeadas (o ignoradas) por las aplicaciones de usuario. La diferencia ms
notable entre los modelos de TCP/IP y OSI es el nivel de Aplicacin, en TCP/IP se
integran algunos niveles del modelo OSI en su nivel de Aplicacin. Una
interpretacin simplificada de la pila se muestra debajo:
Tabla 7 Una interpretacin simplificada de la pila

ej.
5 Aplicacin

HTTP,

FTP,

DNS

(protocolos de enrutamiento como BGP y RIP, que por varias


razones funcionen sobre TCP y UDP respectivamente, son
considerados parte del nivel de red)
ej.

TCP,

UDP,

RTP,

SCTP

4 Transporte (protocolos de enrutamiento como OSPF, que funcionen sobre IP,


son considerados parte del nivel de red)
Para
3 Interred

TCP/IP

este

es

el

Protocolo

de

Internet

(IP)

(protocolos requeridos como ICMP e IGMP funcionan sobre IP,


pero todava se pueden considerar parte del nivel de red; ARP no
funciona sobre IP

2 Enlace

ej. Ethernet, Token Ring, etc.

1 Fsico

ej. medio fsico, y tcnicas de codificacin, T1, E1

35

Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde
administradores para las tarjetas de red ms populares hasta SLIP/PPP, que
permiten acceder a una red TCP/IP por el puerto serie. Tambin se implementan
PLIP (para comunicarse por el puerto de la impresora) y NFS (para acceso remoto
a ficheros). Y tambin se han portado los clientes de TCP/IP, como FTP, telnet,
NNTP y SMTP.
Linux dispone de los dos principales protocolos de red para sistemas UNIX:
TCP/IP y UUCP. TCP/IP (para los aficionados a los acrnimos, Transmission
Control Protocol/Internet Protocol) es un conjunto de protocolos de red que
permite a sistemas de todo el mundo comunicarse en una nica red conocida
como Internet. Con Linux, TCP/IP y una conexin a la red, puede comunicarse con
usuarios y mquinas por toda Internet mediante correo electrnico, noticias
(USENET news), transferencias de ficheros con FTP y mucho ms. Actualmente
hay muchos sistemas Linux conectados a Internet.
La mayora de las redes TCP/IP usan Ethernet como tipo de red fsica de
transporte. Linux da soporte a muchas tarjetas de red Ethernet e interfaces para
ordenadores personales, incluyendo el adaptador Ethernet D-Link de bolsillo para
ordenadores porttiles.
Pero dado que no todo el mundo tiene una conexin Ethernet en casa, Linux
tambin proporciona SLIP (Serial Line Internet Protocol), el cual permite
conectarse a Internet a travs de un mdem. Para poder usar SLIP, necesitar
tener acceso a un servidor de SLIP, una mquina conectada a la red que permite
acceso de entrada por telfono. Muchas empresas y universidades tienen
servidores SLIP disponibles. De hecho, si su sistema Linux dispone de conexin
Ethernet y de mdem, puede configurarlo como servidor de SLIP para otros
usuarios.
NFS (Network File System) permite fcilmente compartir ficheros con otras
mquinas de la red. FTP (File Transfer Protocol) permite la transferencia de
ficheros entre mquinas.
Si tiene experiencia con aplicaciones TCP/IP en otros sistemas UNIX, Linux le
ser muy familiar. El sistema proporciona la interface estndar de programacin
por "sockets", lo que virtualmente permite que cualquier programa que use TCP/IP
36

pueda ser llevado a Linux. El servidor Linux de X tambin soporta TCP/IP,


permitiendo ver aplicaciones que estn corriendo en otros sistemas sobre su
pantalla.
UUCP (UNIX-to-UNIX Copy) es un viejo mecanismo usado para transferir ficheros,
correo electrnico y noticias entre mquinas UNIX. Clsicamente las mquinas
UUCP conectan entre ellas mediante lneas telefnicas y mdem, pero UUCP es
capaz de funcionar tambin sobre una red TCP/IP. Si no tiene acceso a una red
TCP/IP o a un servidor SLIP, puede configurar su sistema para enviar y recibir
ficheros y correo electrnico usando UUCP.

2.1.2 Familia de protocolos de Internet


La familia de protocolos de Internet es un conjunto de protocolos de red que
implementa la pila de protocolos en la que se basa Internet y que permiten la
transmisin de datos entre redes de computadoras. En ocasiones se la denomina
conjunto de protocolos TCP/IP, en referencia a los dos protocolos ms importantes
que la componen: Protocolo de Control de Transmisin (TCP) y Protocolo de
Internet (IP), que fueron los dos primeros en definirse, y que son los ms utilizados
de la familia. Existen tantos protocolos en este conjunto que llegan a ser ms de
100 diferentes, entre ellos se encuentra el popular HTTP (HyperText Transfer
Protocol), que es el que se utiliza para acceder a las pginas web, adems de
otros como el ARP (Address Resolution Protocol) para la resolucin de
direcciones, el FTP (File Transfer Protocol) para transferencia de archivos, y el
SMTP (Simple Mail Transfer Protocol) y el POP (Post Office Protocol) para correo
electrnico, TELNET para acceder a equipos remotos, entre otros.
El TCP/IP es la base de Internet, y sirve para enlazar computadoras que utilizan
diferentes sistemas operativos, incluyendo PC, minicomputadoras y computadoras
centrales sobre redes de rea local (LAN) y rea extensa (WAN). TCP/IP fue
desarrollado y demostrado por primera vez en 1972 por el departamento de
defensa de los Estados Unidos, ejecutndolo en ARPANET, una red de rea
extensa del departamento de defensa.

37

La familia de protocolos de internet puede describirse por analoga con el modelo


OSI, que describe los niveles o capas de la pila de protocolos, aunque en la
prctica no corresponde exactamente con el modelo en Internet. En una pila de
protocolos, cada nivel soluciona una serie de problemas relacionados con la
transmisin de datos, y proporciona un servicio bien definido a los niveles ms
altos. Los niveles superiores son los ms cercanos al usuario y tratan con datos
ms abstractos, dejando a los niveles ms bajos la labor de traducir los datos de
forma que sean fsicamente manipulables.
El modelo de Internet fue diseado como la solucin a un problema prctico de
ingeniera. El modelo OSI, en cambio, fue propuesto como una aproximacin
terica y tambin como una primera fase en la evolucin de las redes de
ordenadores. Por lo tanto, el modelo OSI es ms fcil de entender, pero el modelo
TCP/IP es el que realmente se usa. Sirve de ayuda entender el modelo OSI antes
de conocer TCP/IP, ya que se aplican los mismos principios, pero son ms fciles
de entender en el modelo OSI.

2.2 TCP/IP Linux


El cdigo de TCP en Linux se escribi de forma independiente al resto de
implementaciones. Hay que tener en cuenta que, al estar bajo licencia GPL, no
podra haber usado el cdigo de los sistemas BSD, ya que stos usaban la
licencia BSD original (con la clusula de publicidad), incompatible con la GPL.
Esta clusula se quit mucho ms tarde, en 1999.
Todos los detalles de implementacin de TCP en Linux estn visibles y explicados
en su cdigo fuente. La parte relacionada con TCP en IPv4 est en el directorio
net/ipv4/. Aqu se encuentran ficheros importantes, como:
tcp_ipv4.c
tcp_input.c
tcp_output.c
En net/ipv6/ est el cdigo para implementar TCP sobre IPv6. Es una adaptacin
del cdigo para IPv4.
38

En un sistema en ejecucin, varios parmetros de TCP se pueden ver y


modificar

mediante

los

ficheros

del

directorio

/proc,

por

ejemplo

/proc/sys/net/ipv4/

Existen varios libros que explican los detalles de implementacin de TCP/IP en


el ncleo Linux y analizan su cdigo. Uno de ellos, que describe hasta la
versin 2.4, es:
Wehrle, Klaus; Pahlke, Frank; Ritter, Hartmut; Muller, Daniel; Bechler,
Marc (2004), Linux Network Architecture, Prentice Hall. ISBN 0131777203.

Fig. 7 Varios algoritmos de control de congestin seleccionables al compilar Linux


(versin 2.6.17.4)

Como entrar al men descrito en la figura 7 (at make menuconfig</menu>):


Asegrese

que

usted

tiene

"

Prompt

para

desarrollo

y/o

cdigo/controladores incompleto " activo


Activar:

"Networking"

->

"Networking

options"

->

"TCP:

advanced

congestion control"
Entonces entre "TCP congestion control"
The default settings are: BIC-TCP with new Reno as a fallback

39

Linux implementa muchos algoritmos de control de congestin. Por ejemplo, est


SACK, Westwood+, Reno, NewReno, FACK (forward acknowledgement), ECK, HTCP, y varios ms. Desde la version 2.6.19 se usa por defecto CUBIC con
NewReno como salvaguarda.
Se puede cambiar el algoritmo usado por defecto ajustando las opciones de
compilacin, tal como se ve en la imagen adjunta. Aunque al ser modular, tambien
puede

ser

cambiado

en

caliente

modificando

/proc/sys/net/ipv4/tcp_congestion_control.
Linux 2.4 usando el algoritmo SACK (acuse de recibo selectivo) consigue un
rendimiento mayor que otros sistemas que tambin usan SACK (como OpenBSD y
FreeBSD), segn Comparando las implementaciones modernas (2004/2005), se
ve que han evolucionado por caminos distintos, pero que todas aguantan bien la
congestin de red (a diferencia de la implementacin original de BSD). Segn las
pruebas, Linux 2.6 el que mejor rendimiento da (de entre FreeBSD 5.3, OpenBSD
3.5, y Windows XP Service Pack 2).
Como el desarrollo de Linux es un proceso abierto al pblico, en Internet se
encuentran pginas que explican los problemas que daba su implementacin de
TCP, y cmo se han solucionado. Por ejemplo: mejora de rendimiento en la
versin 2.0.36 (marzo 1999), problemas de TCP detectados al hacer una
comparativa (1999), ajustes para 2.4 y 2.6 (febrero 2006), problemas en los
algoritmos de TCP en Linux 2.6.16.3 (junio 2006), entre otros. Es habitual que
estos fallos se detecten cuando alguien est escribiendo un documento tcnico o
comparativa. En caso de comportamiento extrao, un estudio del cdigo fuente
sirve para confirmar las sospechas y poder corregir el error en Linux.

40

2.2.1 IPv4
IPv4 es la versin 4 del Protocolo IP (Internet Protocol). Esta fue la
primera versin del protocolo que se implement extensamente, y forma la
base de Internet.
IPv4 usa direcciones de 32 bits, limitndola a 232 = 4.294.967.296 direcciones
nicas, muchas de las cuales estn dedicadas a redes locales (LANs). Por el
crecimiento enorme que ha tenido del Internet (mucho ms de lo que esperaba,
cuando se dise IPv4), combinado con el hecho de que hay desperdicio de
direcciones en muchos casos, ya hace varios aos se vio que escaseaban las
direcciones IPv4.
Esta li|mitacin ayud a estimular el impulso hacia IPv6, que esta actualmente
en las primeras fases de implementacin, y se espera que termine
reemplazando a IPv4.

2.2.2 Desperdicio de direcciones


El desperdicio de direcciones IPv4 se debe a varios factores. Uno de
los principales es que inicialmente no se consider el enorme crecimiento que
iba a tener Internet; se asignaron bloques de direcciones grandes (de 16,7
millones de direcciones) a pases, e incluso a empresas.
Otro motivo de desperdicio es que en la mayora de las redes, exceptuando las
ms pequeas, resulta conveniente dividir la red en subredes. Dentro de cada
subred, la primera y la ltima direccin no son utilizables; de todos modos no
siempre se utilizan todas las direcciones restantes. Por ejemplo, si en una
subred se quieren acomodar 80 hosts, se necesita una subred de 128
direcciones (se tiene que redondear a la siguiente potencia de 2); en este
ejemplo, las 48 direcciones restantes ya no se utilizan.

41

2.3 El Sistema Operativo y la Comunicacin


La diferencia entre los requisitos de las aplicaciones y las caractersticas
(y necesidades) del hardware de comunicacin hacen necesaria la existencia
de una interfaz a travs de la que las aplicaciones accedan a los servicios de
comunicacin entre computadores a travs de la red (network communication).
En el sistema operativo suelen incluirse los servicios que permiten la
comunicacin entre computadores.
Esta comunicacin se encuentra en la base de servicios de red como WWW,
ftp, rlogin, NFS, e-mail,.... y el tipo de red utilizada es irrelevante para el
usuario.
En Linux los protocolos ms frecuentemente utilizados para la comunicacin
son los TCP/IP. Otros:
En la figura 8 vemos que en la Capa de enlace se muestran los protocolas que
se utilizan con mayor frecuencia en Linux. SLIP (Serial Line Interface Protocol),
PLIP (Parallel Line Interface Protocol), PPP (Point to Point Protocol), AX.25
(Comunicacin por radio), IPX (Protocolo desarrollado por Novell).

Fig. 8 Pilas de protocolos.

42

Linux implementa los protocolos del conjunto TCP/IP.


El acceso a los servicios de red se suele realizare a travs de los sockets.
Los Sockets BSD son una interfaz de programacin abstracta que se implementa
sobre la capa de sockets INET, y sta, a su vez, sobre la capa de transporte
TCP/UDP.

2.3.1 Envo TCP/IP

Fig. 9 Pila de protocolos y la forma en que interactan al enviar paquetes

La figura 9 ilustra el proceso que se realiza capa por capa para hacer el envo de
un paquete, desde la escritura del socket hasta que el paquete sale al medio.

43

2.3.2 Recepcin TCP/IP

Fig. 10 Pila de protocolos y la forma en que interactan al recibir paquetes

La figura 10 ilustra el proceso que se realiza capa por capa para hacer la
recepcin de un paquete, desde que el paquete llega del medio, hasta que la
aplicacin dispone de los datos para su uso.

44

Fig. 11 Pila de protocolos y mdulos que los componen

El acceso a los servicios de red se suele realizare a travs de los sockets. La


figura 11 muestra la capa de sockets y Los Sockets BSD que son una interfaz de
programacin abstracta que se implementa sobre la capa de sockets INET, y sta,
a su vez, sobre la capa de transporte TCP/UDP.

45

2.3.3 Sockets sobre TCP/IP en Linux: Fuentes y Estructuras de Datos

Fig. 12 Bibliotecas que se utilizan en Linux para manejar sockets.

La figura 12 muestra las bibliotecas empleadas en Linux para utilizar lo sockets


necesarios para el envo y recepcin de paquetes necesitados por las aplicaciones
del usuario.

46

Fig .13 Creacion de estructura de datos

Tarjeta de red o NIC (Network Interface Controller, Controlador de Interfaz de Red


en espaol) mostrada en la figura 13, es una tarjeta de expansin que permite a
una DTE (Data Terminal Equipment) ordenador o impresora acceder a una red y
compartir recursos entre dos o ms equipos (discos duros, cdrom, etc). Hay
diversos tipos de adaptadores en funcin del tipo de cableado o arquitectura que
se utilice en la red (coaxial fino, coaxial grueso, etc.), pero, actualmente el ms
comn es del tipo Ethernet utilizando un interfaz o conector RJ45.

2.3.4 Creacin de un Socket


Proceso ilustrado en la figura 14:
1. Llamada a la funcin socket() de la biblioteca BSD
2. Se origina la llamada al sistema, sys_socket() (en net/socket.c)
3. Esta funcin utiliza la funcin sock_create() (en net/socket.c)

47

Fig. 14 Creacion de un socket

Mediante inet_create(struct socket *sock, int protocol), como se muestra en la


figura 15 (net/ipv4/af_inet.c)

Se asigna memoria a la estructura sock

Se inicializan los valores correspondientes a TCP o UDP para la estructura


proto

Se inicializan los valores correspondientes a familia, protocolo, etc. en la


estructura sock

Fig. 15 Creacion de un socket 2

48

Fig. 16 Estructura de un socket

En la figura 16 se muestra el bloque de cdigo que contiene la informacin del


estado del socket y las estructuras hacia las que apunta.

49

Fig. 17 Estructura del protocolo de transmisin

En la figura 17 est el bloque de cdigo para elaborar la estructura del protocolo


de transmisin, declarado proto_ops.

Fig. 18 Estructura de un socket

50

La figura 18 muestra el cdigo correspondiente a la estructura de un socket en la


que se utilizan apuntadores que se dirigen hacia estructuras como: proto,
sk_buff_head_recive_queue, sk_buff_head_write_queue.

Fig. 19 Estructura compuesta por una serie de operaciones para implementar los protocolos TCP y
UDP

En la figura 19 se muestra el cdigo de la estructura compuesta por apuntadores


que van a ser utilizados en los protocolos tcp y udp.

51

Fig. 20 Escritura del sistema de archivos en Linux

En informtica, un inodo, nodo-i (figura 20), nodo ndice o i-node en ingls


es una estructura de datos propia de los sistemas de archivos tradicionalmente
empleados en los sistemas operativos tipo UNIX como es el caso de Linux. Un
inodo contiene las caractersticas (permisos, fechas, ubicacin, pero NO el
nombre) de un archivo regular, directorio, o cualquier otro objeto que pueda
contener el sistema de ficheros.

52

Fig. 21 Diagrama explicativo de la interaccin entre el socket, protocolo y el sistema de archivos.

En la figura 21 se presenta la interaccin existente entre las estructuras antes


creadas.
1,2 (figura 22): write(socket,data, length) llama a sys_write() componente del
VFS, que comprueba caractersticas del socket, sock_write() transfiere los
parmetros de la escritura a la estructura de mensaje y llama a sock_sendmsg()
obtiene la direccin del socket a partir de su identificador, como se muestra en la
figura 22 y 23.

53

Fig. 22 Uso de la memoria del sistema

Fig. 23 Estructura de envio

54

Fig. 24 Almacenamiento de punteros a funciones en un vector.

El descriptor de un socket es similar a un descriptor de fichero: se pueden utilizar


llamadas estndar al sistema para operar con ficheros. Los punteros utilizados
para las distintas operaciones de fichero se almacenan en un vector como se
muestra en la figura 24.

55

Fig. 25 Definicin de la estructura de archivos a utilizar

En la figura 25 se muestran el cdigo de la estructura archivo (struct file)


declarando las variables a utilizar y las estructuras con las que se va a conectar.

Fig. 26 Asociacin del socket con el fichero

56

Despus de crear las estructuras, file y files_struct, se busca la estructura socket


asociada con el fichero a travs de la funcin scki_lookup(), se convierten los
parmetros a la estructura del mensaje completando la correspondiente cabecera
(msghdr) y se llama a la funcin sock_sendmsg() situada en la biblioteca
/net/socket.c, como se muestra en el cdigo de la figura 26.

Fig. 27 Estructuras creadas a partir del socket

En el cuadro numero 3 de la figura 27 se utiliza inet_sendmsg() (figura 28): utiliza


sock para llamar a la funcin de envo segn el protocolo (proto tiene un puntero a
la funcin de envo)
En el cuadro numero 4 de la figura 27 se utiliza tcp_sendmsg(): reserva memoria
para los paquetes, trocea en MTU, crea la estructura sk_buff, y comprueba
disponibilidad en receptor.
Al crear un socket se crean, entre otras, las estructuras de datos socket, sock,
inode, proto_ops y proto, como se muestra en la figura 27.

57

Fig. 28 Forma de interaccin entre las estructuras creadas

Fig. 29 Protocolo enviado con las caractersticas del paquete

Extrae de socket el puntero que apunta a una estructura sock (socket INET)
A travs de la estructura sock se llama a la funcin de envo de protocolo: El
campo prot de la estructura sock tiene los punteros de funcin para TCP (o UDP).
Es decir sk->prot->sendmsg(sk,msg,size) se traduce a tcp_sendmsg (figura 29).
58

struct sk_buff {
/* These two members must be first. */
struct sk_buff * next;
/* Next buffer in list
struct sk_buff * prev;
/* Previous buffer in list
struct sk_buff_head * list;
/* List we are on
struct sock
*sk;
/* Socket we are owned by
struct timeval stamp;
/* Time we arrived
struct net_device *dev;
/* Device we arrived on/are leaving by
/* Transport layer header */
union
{
struct tcphdr *th;
struct udphdr *uh;
struct icmphdr *icmph;
struct igmphdr *igmph;
struct iphdr *ipiph;
struct spxhdr *spxh;
unsigned char *raw;
} h;
/* Network layer header */
union
{
struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
struct ipxhdr *ipxh;
unsigned char *raw;
} nh;

*/
*/
*/
*/
*/
*/

/* Link layer header */


union
{
struct ethhdr *ethernet;
unsigned char *raw;
} mac;
struct dst_entry *dst;
/*

/*
* This is the control buffer. It is free to use for every
* layer. Please put your private variables there. If you
* want to keep them across layers you have to do a skb_clone()
* first. This is owned by whoever has the skb queued ATM.
*/
char
cb[48];
unsigned int len;
/* Length of actual data
*/
unsigned int data_len;
unsigned int csum;
/* Checksum
*/
unsigned char __unused,
/* Dead field, may be reused
*/
cloned,
/* head may be cloned (check refcnt to be sure). */
pkt_type,
/* Packet class
*/
ip_summed; /* Driver fed us an IP checksum
*/
__u32
priority;
/* Packet queueing priority
*/
atomic_t
users;
/* User count - see datagram.c,tcp.c
*/
unsigned short protocol;
/* Packet protocol from driver.
*/
unsigned short security;
/* Security level of packet
*/
unsigned int truesize;
/* Buffer size
unsigned char *head;
* Head of buffer
unsigned char *data;
/* Data head pointer
unsigned char *tail;
/* Tail pointer
unsigned char *end;
* End pointer
void
(*destructor)(struct sk_buff *);/* Destruct function

*/
*/
*/
*/
*/
*/

};

Fig. 30 Estructura del buffer

59

En la figura 30 se muestra el cdigo para crear struct sk_buff, que es la


estructura del buffer utilizado para almacenar momentneamente los datos que
llegan y se utiliza la biblioteca /include/linux/skbuff.h.
Todos los protocolos utilizan el mismo sk_buff. Los protocolos de transporte y los
drivers crean estructuras de paquete para los datos que les llegan. stos se
gestionan a travs de los buffers que se muestran en la figura 31.

Fig. 31 Estructura del buffer.

60

Fig. 32 Secuencia de envo


int tcp_sendmsg(struct sock *sk, struct msghdr *msg, int size)
{
struct iovec *iov;
struct tcp_opt *tp;
struct sk_buff *skb;
int iovlen, flags;
int mss_now;
int err, copied;
long timeo;
tp = &(sk->tp_pinfo.af_tcp);
lock_sock(sk);
TCP_CHECK_TIMER(sk);
flags = msg->msg_flags;
timeo = sock_sndtimeo(sk, flags&MSG_DONTWAIT);
/* Wait for a connection to finish. */
if ((1 << sk->state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT))
if((err = wait_for_tcp_connect(sk, flags, &timeo)) != 0) goto out_err;
/* This should be in poll */
clear_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);

Fig. 33 Estructura del proceso de envio del mensaje

61

El

mtodo

tcp_sendmsg()

mostrado

en

la

figura

32

visualizado

estructuralmente en la figura 33 ubicado en la biblioteca /net/ipv4/tpc.c realiza las


siguientes acciones:

Reserva memoria de sistema para los paquetes llamando a la la funcin


tcp_alloc_pskb()

Trocea los datos en unidades MTU y crea una estructura sk_buff para
almacenar cada MTU. Se copian los datos desde la memoria de usuario a
las estructuras sk_buff. Mediante csum_and_copy_from_user() se realiza
la copia y el clculo del cdigo de eror. Las estructuras sk_buff para un
mismo mensaje estn enlazadas.

Llama a tcp_write_xmit() para controlar que el receptor tiene disponible


una ventana de recepcin (segn el algoritmo de control de flujo de ventana
deslizante) y cuando se tiene el visto bueno (se utiliza un timer) se llama a
tcp_transmit_skb()

Fig. 34 cuadro no. 5 tcp_transmit_skb

62

El cuadro 5 de la figura 34, corresponde a tcp_transmit_skb() que es el compone


de la cabecera TCP para cada sk_buf y contiene la informacin del sock (se llama
segn el nmero de paquetes). Decide si se encolan o se envan (figura 35).

Fig. 35 Se procede a enviar el mensaje mediante un socket

63

int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb)


{
if(skb != NULL) {
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
struct tcp_skb_cb *tcb = TCP_SKB_CB(skb);
int tcp_header_size = tp->tcp_header_len;
struct tcphdr *th;
int sysctl_flags;
int err;
#define SYSCTL_FLAG_TSTAMPS
#define SYSCTL_FLAG_WSCALE
#define SYSCTL_FLAG_SACK

0x1
0x2
0x4

sysctl_flags = 0;
if (tcb->flags & TCPCB_FLAG_SYN) {
tcp_header_size = sizeof(struct tcphdr) + TCPOLEN_MSS;
if(sysctl_tcp_timestamps) {
tcp_header_size += TCPOLEN_TSTAMP_ALIGNED;
sysctl_flags |= SYSCTL_FLAG_TSTAMPS;
}
if(sysctl_tcp_window_scaling) {
tcp_header_size += TCPOLEN_WSCALE_ALIGNED;
sysctl_flags |= SYSCTL_FLAG_WSCALE;
}
if(sysctl_tcp_sack) {
sysctl_flags |= SYSCTL_FLAG_SACK;
if(!(sysctl_flags & SYSCTL_FLAG_TSTAMPS))
tcp_header_size += TCPOLEN_SACKPERM_ALIGNED;
}
} else if (tp->eff_sacks) {
/* A SACK is 2 pad bytes, a 2 byte header, plus
* 2 32-bit sequence numbers for each SACK block.
*/
tcp_header_size += (TCPOLEN_SACK_BASE_ALIGNED +
(tp->eff_sacks * TCPOLEN_SACK_PERBLOCK));
}
th = (struct tcphdr *) skb_push(skb, tcp_header_size);
skb->h.th = th;
skb_set_owner_w(skb, sk);

Fig. 36 Estructura del envio del mensaje mediante un socket

64

/* Build TCP header and checksum it. */


th->source
= sk->sport;
th->dest
= sk->dport;
th->seq
= htonl(tcb->seq);
th->ack_seq
= htonl(tp->rcv_nxt);
*(((__u16 *)th) + 6)
= htons(((tcp_header_size >> 2) << 12) | tcb->flags);
if (tcb->flags & TCPCB_FLAG_SYN) {
/* RFC1323: The window in SYN & SYN/ACK segments
* is never scaled.
*/
th->window = htons(tp->rcv_wnd);
} else {
th->window = htons(tcp_select_window(sk));
}
th->check
= 0;
th->urg_ptr
= 0;
if (tp->urg_mode &&
between(tp->snd_up, tcb->seq+1, tcb->seq+0xFFFF)) {
th->urg_ptr
= htons(tp->snd_up-tcb->seq);
th->urg
= 1;
}
if (tcb->flags & TCPCB_FLAG_SYN) {
tcp_syn_build_options((__u32 *)(th + 1),
tcp_advertise_mss(sk),
(sysctl_flags & SYSCTL_FLAG_TSTAMPS),
(sysctl_flags & SYSCTL_FLAG_SACK),
(sysctl_flags & SYSCTL_FLAG_WSCALE),
tp->rcv_wscale,
tcb->when,
tp->ts_recent);
} else {
tcp_build_and_update_options((__u32 *)(th + 1),
tp, tcb->when);
TCP_ECN_send(sk, tp, skb, tcp_header_size);
}
tp->af_specific->send_check(sk, th, skb->len, skb);

Fig. 37 Continuacin de la figura 36

En las figuras 36 y 37 se muestra el cdigo de la funcin tcp_transmit_skb(), el


cual se encuentra en la biblioteca /net(ipv4/tcp_output.c y Construye la cabecera
TCP y calcula el cdigo de error (checksum) para cada sk_buff con la informacin
disponible en sock. Se llama a esta funcin tantas veces como paquetes existan.

65

Fig. 38 Estructura en donde se toma la decisin de enviar o encolar el o los paquetes

Funcin

tcp_transmit_skb()

que

se

encuentra

en

la

biblioteca

/net(ipv4/tcp_output.c, este llama a tcp_send_skb() (fig. 38) que decide si enva o


encola los paquetes aadiendo la correspondiente estructura sk_buff a la lista
enlazada (en los dos sentidos) con los paquetes pendientes de envo.
La funcin tcp_send_skb() tambin se encarga de actualizar el nmero de
secuencia de los paquetes (con la informacin disponible en sock)
Finalmente, tcp_transmit_skb() llama a ip_queue_xmit()

66

Fig. 39 Diagrama del proceso de salida del paquete

En el cuadro 6 de la figura 39 que corresponde a la funcin ip_queue_xmit() la


cual se encarga de poner la cabecera IP y llamar a dev_queue_xmit() para que
vaya transmitiendo cada paquete (figura 40).
En el cuadro 7 de la figura 39 que corresponde a la funcin dev_queue_xmit()
acta sobre la estructuras sk_buff de los paquetes pendientes.
La rutina socket() de la biblioteca de C devuelve un descriptor de fichero, las
llamadas a las funciones del sistema de E/S read() y write() pueden utilizarse.
Cuando un proceso se comunica a travs de la red utiliza las funciones que
proporciona la capa de sockets BSD. Esta capa se encarga de tareas similares a
las del sistema de ficheros virtuales y permite administrar una estructura de datos
general para los sockets.
Debajo est la capa de sockets INET que gestiona los extremos de comunicacin
para los protocolos TCP y UDP. Estos se manejan a travs de estructuras de
datos sock (sockets INET). Segn el tipo de socket, la capa que hay debajo es la
capa TCP, UDP, o directamente la capa IP. Debajo de la capa IP estn los
dispositivos, a los que la capa IP pasa los paquetes finales. Se asume que los
67

procesos que se comunican han creado sus sockets y se encuentran conectados


unos con otros a travs de connect() o accept().

Fig. 40 ip_queue_xmit()

68

int ip_queue_xmit(struct sk_buff *skb)


{
struct sock *sk = skb->sk;
struct ip_options *opt = sk->protinfo.af_inet.opt;
struct rtable *rt;
struct iphdr *iph;
/* Make sure we can route this packet. */
rt = (struct rtable *)__sk_dst_check(sk, 0);
if (rt == NULL) {
u32 daddr;
/* Use correct destination address if we have options. */
daddr = sk->daddr;
if(opt && opt->srr)
daddr = opt->faddr;
/* If this fails, retransmit mechanism of transport layer will
* keep trying until route appears or the connection times itself
* out.
*/
if (ip_route_output(&rt, daddr, sk->saddr,
RT_TOS(sk->protinfo.af_inet.tos) | RTO_CONN | sk->localroute,
sk->bound_dev_if))
goto no_route;
__sk_dst_set(sk, &rt->u.dst);
sk->route_caps = rt->u.dst.dev->features;
}
skb->dst = dst_clone(&rt->u.dst);
if (opt && opt->is_strictroute && rt->rt_dst != rt->rt_gateway)
goto no_route;

/* OK, we know where to send it, allocate and build IP header. */


iph = (struct iphdr *) skb_push(skb, sizeof(struct iphdr) + (opt ? opt->optlen : 0));
*((__u16 *)iph)
= htons((4 << 12) | (5 << 8) | (sk->protinfo.af_inet.tos & 0xff));
iph->tot_len = htons(skb->len);
iph->frag_off = 0;
iph->ttl
= sk->protinfo.af_inet.ttl;
iph->protocol = sk->protocol;
iph->saddr = rt->rt_src;
iph->daddr = rt->rt_dst;
skb->nh.iph = iph;
/* Transport layer set skb->h.foo itself. */
if(opt && opt->optlen) {
iph->ihl += opt->optlen >> 2;
ip_options_build(skb, opt, sk->daddr, rt, 0);
}
return NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
ip_queue_xmit2);
no_route:
IP_INC_STATS(IpOutNoRoutes);
kfree_skb(skb);
return -EHOSTUNREACH;
}

Fig. 41 estructua de cdigo en la que ip_queue_xmit() contruye la cabecera IP

69

En la figura 41 se enuncia el cdigo de la funcin ip_queue_xmit() que se


encuentra en la biblioteca /net/ipv4/ip_output.c y construye la cabecera IP, busca
la ruta, aade el cdigo de error (checksum), fragmenta y llama a
dev_queue_xmit() (fig. 42).

Fig. 42 La rutina dev_queue_xmit() se encarga de la transmisin del sk_buff correspondiente a


cada paquete, a travs de la tarjeta de red (a travs de una llamada a su controlador

70

int dev_queue_xmit(struct sk_buff *skb)


{
struct net_device *dev = skb->dev;
struct Qdisc *q;
if (skb_shinfo(skb)->frag_list &&
!(dev->features&NETIF_F_FRAGLIST) &&
skb_linearize(skb, GFP_ATOMIC) != 0) {
kfree_skb(skb);
return -ENOMEM;
}
/* Fragmented skb is linearized if device does not support SG,
* or if at least one of fragments is in highmem and device
* does not support DMA from it.
*/
if (skb_shinfo(skb)->nr_frags &&
(!(dev->features&NETIF_F_SG) || illegal_highdma(dev, skb)) &&
skb_linearize(skb, GFP_ATOMIC) != 0) {
kfree_skb(skb);
return -ENOMEM;
}
/* If packet is not checksummed and device does not support
* checksumming for this protocol, complete checksumming here.
*/
if (skb->ip_summed == CHECKSUM_HW &&
(!(dev->features&(NETIF_F_HW_CSUM|NETIF_F_NO_CSUM)) &&
(!(dev->features&NETIF_F_IP_CSUM) ||
skb->protocol != htons(ETH_P_IP)))) {
if ((skb = skb_checksum_help(skb)) == NULL)
return -ENOMEM;
}

/* Grab device queue */


spin_lock_bh(&dev->queue_lock);
q = dev->qdisc;
if (q->enqueue) {
int ret = q->enqueue(skb, q);
qdisc_run(dev);
spin_unlock_bh(&dev->queue_lock);
return ret == NET_XMIT_BYPASS ? NET_XMIT_SUCCESS : ret;
}
/* The device has no queue. Common case for software devices:
loopback, all the sorts of tunnels...
Really, it is unlikely that xmit_lock protection is necessary here.
(f.e. loopback and IP tunnels are clean ignoring statistics counters.)
However, it is possible, that they rely on protection
made by us here.
Check this and shot the lock. It is not prone from deadlocks.
Either shot noqueue qdisc, it is even simpler 8)
*/
if (dev->flags&IFF_UP) {
int cpu = smp_processor_id();
if (dev->xmit_lock_owner != cpu) {
spin_unlock(&dev->queue_lock);
spin_lock(&dev->xmit_lock);
dev->xmit_lock_owner = cpu;

Fig. 43 La rutina dev_queue_xmit() se encarga de la transmisin del sk_buff correspondiente a cada


paquete, a travs de la tarjeta de red (a travs de una llamada a su controlador)

71

En la figura 43 se encuentra el cdigo de la funcin dev_queue_xmit() la cual se


encuentra en la biblioteca /net/core/dev.c y se encarga de:

La rutina dev_queue_xmit() se encarga de la transmisin del sk_buff


correspondiente a cada paquete, a travs de la tarjeta de red (a travs de
una llamada a su controlador.

La funcin acta sobre las estructuras sk_buff de todos los paquetes


pendientes de envo de todas las aplicaciones que necesitan enviar a travs
del mismo dispositivo.

Las estructuras sk_buff se encuentran enlazadas a travs de una lista (en


una sola direccin) (Fig. 44).

Fig. 44 Diagrama explicativo de la interaccin

72

2.3.5 Ubicacin de las Funciones ejecutadas para enviar un mensaje a


travs de Sockets en Linux

Fig. 45 Ubicacin de las funciones ejecutadas para enviar un mensaje a travs de sockets en Linux

Otras estructuras o punteros que se incluyen en esta estructura de la figura 45


son:
-

Cabecera de la cola de recibidos

Cabecera de la cola de enviados

Direccin fuente para el socket

Colas extras para paquetes de respaldo, errneos, etc.

Opciones TCP para el socket

73

2.3.6 Convenientes e Inconvenientes de la comunicacin con TCP/IP


en Linux.
Para culminar el captulo 2 de esta monografa, voy a enlistar de las
ventajas y desventajas de la transmisin de datos mediante TCP/IP en Linux:
Ventajas:
Ofrece interfaz de programacin (API): Sockets BSD
Transporte fiable
Proteccin entre aplicaciones
Control de flujo
Gestin de multitarea y multiusuario
Desventajas:
Cambios de contexto
Transferencias de datos entre el espacio de usuario y las estructuras
utilizadas por el sistema operativo
Tiempo que consume la ejecucin de las rutinas que implementan los
protocolos.

74

CAPITULO III
LAS WIRELESS LAN EN LINUX

75

3.1 LAS WIRELESS LAN


En los ltimos aos se ha producido un crecimiento espectacular en lo
referente al desarrollo y aceptacin de las comunicaciones mviles y en concreto
de las redes de rea local (Wireless LANs). La funcin principal de este tipo de
redes es la proporcionar conectividad y acceso a las tradicionales redes cableadas
(Ethernet, Token Ring...), como si de una extensin de stas ltimas se tratara,
pero con la flexibilidad y movilidad que ofrecen las comunicaciones inalmbricas.
El momento decisivo para la consolidacin de estos sistemas fue la conclusin del
estndar IEEE 802.11 el mes de junio de 1997. En este estndar se encuentran
las especificaciones tanto fsicas como a nivel MAC que hay que tener en cuenta a
la hora de implementar una red de rea local inalmbrica. Otro de los estndares
definidos y que trabajan en este mismo sentido es el ETSI HIPERLAN.
WLAN (ingls < Wireless Local Area Network) es un sistema de comunicacin de
datos inalmbrico flexible muy utilizado como alternativa a las redes LAN
cableadas o como extensin de stas. Utiliza tecnologa de radiofrecuencia que
permite mayor movilidad a los usuarios al minimizar las conexiones cableadas.
Las WLAN van adquiriendo importancia en muchos campos, como almacenes o
para manufactura, en los que se transmite la informacin en tiempo real a una
terminal central. Tambin son muy populares en los hogares para compartir el
acceso a Internet entre varias computadoras.

La norma 802.11 ha sufrido diferentes extensiones sobre la norma para obtener


modificaciones

mejoras.

De

esta

manera,

tenemos

las

siguientes

especificaciones:
802.11 Especificacin para 1-2 Mbps en la banda de los 2.4 GHz, usando salto de
frecuencias( FHSS) o secuencia directa (DSSS).
802.11b Extensin de 802.11 para proporcionar 11Mbps usando DSSS.

76

Wi-Fi (Wireless Fidelity) Promulgado por el WECA para certificar productos


802.11b capaces de interoperar con los de otros fabricantes.
802.11a Extensin de 802.11 para proporcionar 54Mbps usando OFDM.
802.11g Extensin de 802.11 para proporcionar 20-54Mbps usando DSSS y
OFDM. Es compatible hacia atrs con 802.11b. Tiene mayor alcance y menor
consumo de potencia que 802.11a.

3.1.1 Principios de las redes WLAN


3.1.1.1

Cmo trabajan

Se utilizan ondas de radio para llevar la informacin de un punto a otro


sin necesidad de un medio fsico guiado. Al hablar de ondas de radio nos
referimos normalmente a portadoras de radio, sobre las que va la informacin,
ya que realizan la funcin de llevar la energa a un receptor remoto. Los datos
a transmitir se superponen a la portadora de radio y de este modo pueden ser
extrados exactamente en el receptor final.
A este proceso se le llama modulacin de la portadora por la informacin que
est siendo transmitida. Si las ondas son transmitidas a distintas frecuencias
de radio, varias portadoras pueden existir en igual tiempo y espacio sin
interferir entre ellas. Para extraer los datos el receptor se sita en una
determinada frecuencia, frecuencia portadora, ignorando el resto. En una
configuracin tpica de LAN sin cable los puntos de acceso (transceiver)
conectan la red cableada de un lugar fijo mediante cableado normalizado. El
punto de acceso recibe la informacin, la almacena y la transmite entre la
WLAN y la LAN cableada. Un nico punto de acceso puede soportar un
pequeo grupo de usuarios y puede funcionar en un rango de al menos treinta
metros y hasta varios cientos. El punto de acceso (o la antena conectada al
punto de acceso) es normalmente colocado en alto pero podra colocarse en
cualquier lugar en que se obtenga la cobertura de radio deseada. El usuario
final accede a la red WLAN a travs de adaptadores. Estos proporcionan una
77

interfaz entre el sistema de operacin de red del cliente (NOS: Network


Operating System) y las ondas, mediante una antena.

3.1.1.2

Configuraciones de red para radiofrecuencia

Pueden ser de muy diversos tipos y tan simples o complejas como sea
necesario. La ms bsica se da entre dos ordenadores equipados con tarjetas
adaptadoras para WLAN, de modo que pueden poner en funcionamiento una red
independiente siempre que estn dentro del rea que cubre cada uno. Esto es
llamado red de igual a igual (peer to peer). Cada cliente tendra nicamente
acceso a los recursos del otro cliente pero no a un servidor central. Este tipo de
redes no requiere administracin o preconfiguracin.
Instalando un Punto de Acceso se puede doblar la distancia a la cul los
dispositivos pueden comunicarse, ya que estos actan como repetidores. Desde
que el punto de acceso se conecta a la red cableada cualquier cliente tiene acceso
a los recursos del servidor y adems gestionan el trfico de la red entre los
terminales ms prximos. Cada punto de acceso puede servir a varias mquinas,
segn el tipo y el nmero de transmisiones que tienen lugar. Existen muchas
aplicaciones en el mundo real con un rango de 15 a 50 dispositivos cliente con un
solo punto de acceso.
Los puntos de acceso tienen un alcance finito, del orden de 150 m en lugares u
zonas abiertas. En zonas grandes como por ejemplo un campus universitario o un
edificio es probablemente necesario ms de un punto de acceso. La meta es
cubrir el rea con clulas que solapen sus reas de modo que los clientes puedan
moverse sin cortes entre un grupo de puntos de acceso. Esto es llamado roaming.
iuparticulares de topologas, el diseador de la red puede elegir usar un Punto de
Extensin (EPs) para aumentar el nmero de puntos de acceso a la red, de modo
que funcionan como tales pero no estn enganchados a la red cableada como los
puntos de acceso. Los puntos de extensin funcionan como su nombre indica:
extienden el alcance de la red retransmitiendo las seales de un cliente a un punto
78

de acceso o a otro punto de extensin. Los puntos de extensin pueden


encadenarse para pasar mensajes entre un punto de acceso y clientes lejanos de
modo que se construye un puente entre ambos.
Uno de los ltimos componentes a considerar en el equipo de una WLAN es la
antena direccional. Por ejemplo: si se quiere una Lan sin cable a otro edificio a 1
km de distancia. Una solucin puede ser instalar una antena en cada edificio con
lnea de visin directa. La antena del primer edificio est conectada a la red
cableada mediante un punto de acceso. Igualmente en el segundo edificio se
conecta un punto de acceso, lo cual permite una conexin sin cable en esta
aplicacin.

3.1.1.3

Chipset

El Circuito Integrado Auxiliar o Chipset es un conjunto de circuitos integrados que


se encarga de realizar las funciones que el microprocesador delega en ellos.
Chipset traducido literalmente del ingls significa conjunto de circuitos integrados.
Se designa circuito integrado auxiliar al circuito integrado que es perifrico a un
sistema pero necesario para el funcionamiento del mismo. La mayora de los
sistemas necesitan ms de un circuito integrado auxiliar.
Contiene todas las instrucciones necesarias para operar la tarjeta inalmbrica.

3.2 LAS WIRELESS LAN EN LINUX


3.2.1 Chipset Prism
El chipset Prism es un circuito auxiliar integrado de los ms antiguos en el
mercado, desde que en el ao 1998 la empresa Intersil lo cre ha ido
evolucionando hasta convertirse en uno de los ms potentes chipsets en el medio.
El chipset Prism es uno de los ms usados por usuarios de GNU/Linux as como
BSD gracias a la integracin a la que goza este chipset ya que todos los
documentos del comit de evaluacin; notas, diseos de referencia, informes y
79

resmenes tcnicos sobre el chipset se pueden conseguir de forma gratuita en la


pgina web de Intersil

3.2.1.1

Funcionamiento

Tomemos el esquema de la primera versin del Chipset Prism para explicar su


funcionamiento:
La controladora MAC(situada a la derecha en el esquema) ya que realiza la mayor
parte de las operaciones bsicas del protocolo 802,11 es la encargada de
determinar si se puede utilizar la tarjeta en modo monitor (RFMON) y de la
insercin y manipulacin de marcos en los paquetes as como indicar si la tarjeta
puede cumplir la funcin de punto de acceso
La controladora MAC de los chipsets Prism 2,0 o superior posee un motor WEP
que agiliza el trabajo con este tipo de criptografa ahorrando ciclos de CPU al
ordenador.
Prism I

---- 802,11 original

Prism II ---- 802,11b


Prism III ---- 802,11a/b
Prism Indigo - 802,11
Prism GT ---- 802,11b/g
Prism Duette - 802,11a/b
Prism Nitro -- red IEEE 802.11g mejorada
Prism World Radio --802,11a, b, d, g, h, i y j

80

3.2.2 Chipset Hermes


El Chipset Hermes est desarrollado por Lucent. Es un chipset de cdigo cerrado,
no obstante Lucent public una parte del cdigo fuente necesario para controlar
las funciones bsicas de las tarjetas ORiNOCO, a partir del cual se cre el
controlador wvlan_cs. Actualmente el controlador wvlan_cs ha sido reemplazado
por el orinoco_cs.
Gran parte de las tarjetas con chipset Hermes poseen un conector de antena
superior a los MMCX de los chipset Prism o Aironet lo que hace que los problemas
de conexin antena/tarjeta sean casi nulos.
ORiNOCO 11a/b/g ComboCard
ORiNOCO 11a/b/g PCI Card

3.2.3 Chipset Atheros


Atheros WLAN chipsets destaca tecnologas de punta para ampliar la gama y
reducir el consumo de electricidad de redes inalmbricas 802.11. Cuando son
incorporados en dispositivos WLAN, los chipsets Atheros ofrecen a los usuarios
finales una amplia gama, una mayor duracin de la pila, e instrumentos de
direccin de red que la ayudan a reducir el costo, funcionamiento y posesin de
redes inalmbricas.

81

3.3 EJEMPLO DE LA INSTALACIN DE UNA TARJETA


INALAMBRICA EN LINUX
Hardware
Tarjeta SMC2335W, EZ Connect 2.4Ghz/5Ghz Universal Wireless Cardbus
Adapter
Software
Mdulo MadWifi para el ncleo Linux para la tarjeta con chipset Atheros
Situandote en el directorio /usr/src, crea un directorio para el mdulo madwifi y
situate dentro de l:
$md madwifi
$cd madwifi
Para obtener el mdulo de madwifi, como no hay en este momento una versin
publicada fuera del cvs, hay que utilizar este repositorio para obtener la versin en
curso, con el comando:
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi
Preparando los fuentes del ncleo antes de compilar madwifi. Para compilar un
mdulo necesitas los ficheros de cabeceras del nucleo instalados en tu equipo.
Supn que tienes instalado el ncleo 2.4.25 para Intel Pentium II, III y superiores
en Debian del paquete que viene ya listo para instalar, vers que tienes instalado
el paquete:
kernel-image-2.4.25-1-686
Baja el paquete con las fuentes de esa versin del nucleo y descomprimelo:
$cd /usr/src
$apt-get install kernel-source-2.4.25
$tar jxvf kernel-source-2.4.25.tar.bz2
Adems, deja el fichero de opciones de compilacin con el que se esta trabajando
en el directorio del nucleo descomprimido, como si lo hubieras usado realmente
para compilar el nucleo... esto te deja este directorio del nucleo practicamente
igual que si hubieras hecho una compilacin del nucleo (pero sin los ficheros
temporales y sin el resultado final de la compilacin, claro):
82

cp /boot/config-2.4.25-1-686 /usr/src/kernel-image-2.4.25/.config
modificar /etc/kernel-pkg.conf e incluir en el "do_clean := No"
recompilar el nucleo: make-kpkg --revision=custom.1.0 kernel_image
Enlaza ahora el directorio donde est el nucleo con el directorio build del directorio
de modulos que estn en uso en tu actual nucleo:
ln -s /usr/src/kernel-source-2.4.25 /lib/modules/2.4.25-1-586tsc/build
Compilando el mdulo madwifi
Ponte en el directorio donde lo descomprimiste antes, y ejecuta make:
cd /usr/src/madwifi
make
make install
Ya est listo el mdulo.
Asegurate de que est conectada la tarjeta (conectala y si usas pcmcia_cs vers
algo como lo siguiente en tu syslog):
May 14 00:32:10 gordon kernel: cs: cb_alloc(bus 1): vendor 0x168c, device
0x0012
May 14 00:32:10 gordon kernel: PCI: Enabling device 01:00.0 (0000 -> 0002)
May 14 00:32:10 gordon cardmgr [419] : socket 0: ?CardBus hotplug device
Ya que pcmcia_cs no conoce nada sobre tu tarjeta, no carga el modulo, as que lo
cargas a mano:
modprobe ath_pci
y el syslog reflejar algo como esto:
May 14 00:32:33 gordon kernel: ath_hal: 0.9.8.6
May 14 00:32:34 gordon kernel: wlan: 0.7.3.1 BETA
May 14 00:32:34 gordon kernel: ath_pci: 0.8.5.4 BETA
May 14 00:32:34 gordon kernel: ath_pci: cache line size not set; forcing 8
May 14 00:32:34 gordon kernel: Setup queue (0) for WME_AC_BK
May 14 00:32:34 gordon kernel: Setup queue (1) for WME_AC_BE
May 14 00:32:34 gordon kernel: Setup queue (2) for WME_AC_VI
May 14 00:32:34 gordon kernel: Setup queue (3) for WME_AC_VO
May 14 00:32:34 gordon kernel: ath0: mac 4.2 phy 3.0 5ghz radio 1.7 2ghz radio
2.3
83

May 14 00:32:34 gordon kernel: ath0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps
24Mbps 36Mbps 48Mbps 54Mbps
May 14 00:32:34 gordon kernel: ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
May 14 00:32:34 gordon kernel: ath0: turbo rates: 6Mbps 9Mbps 12Mbps 18Mbps
24Mbps 36Mbps 48Mbps 54Mbps
May 14 00:32:34 gordon kernel: ath0: 802.11 address: 00:01:24:60:0d:6d
May 14 00:32:34 gordon kernel: ath0: Atheros 5211: mem=0x10400000, irq=11
Si quieres que el mdulo se cargue siempre al arrancar (por simplificar, no podrs
quitar y poner la tarjeta como lo haces habitualmente con una pcmcia que si est
contemplada por pcmcia_cs), aade este mdulo en /etc/modules:
ath_pci
Configurar la interface ath0 (ojo, no eth con e, si no con a)
Manualmente:
iwconfig ath0 essid redlibre mode managed rate auto
pump -i ath0
(necesitas tener instalado pump, claro, para obtener una direccion ip
automaticamente de tu servidor dhcp), o bien:
ifconfig ath0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255
En el fichero /etc/network/interfaces:
auto ath0
iface ath0 inet static
address 10.0.0.1
network 10.0.0.0
netmask 255.255.255.0
broadcast 10.0.0.255
#mode 3 para 802.11g, 2 para 802.11b y 1 para 802.11a
#mode no es necesario, la tarjeta chequea en buscando un ap por todos los
canales
#up /sbin/iwpriv ath0 mode 3
up /sbin/iwconfig ath0 essid "redlibre" mode managed rate auto

84

CAPITULO 4
MODIFICACIONES A UN DRIVER
PARA CALIDAD DE SERVICIO.
SWAN
(Stateless Wireless Ad hoc Networks)

85

4.1 Stateless Wireless Ad hoc Networks


4.1.1 Resumen
Los sistemas inalmbricos se han convertido en el segmento de mayor y
ms rpido

crecimiento

en

las

telecomunicaciones,

donde

su

principal

consecuencia han sido dotar de movilidad a los nodos de la red al liberarlos de sus
conexiones fsicas, adems tambin estn empezando a ofrecer mltiples
servicios con calidad (QoS) como una conversacin telefnica, la transferencia de
ficheros, acceso a la web o la realizacin de videoconferencia, sin restricciones de
lugar y de tiempo. Estos ejemplos de comunicacin inalmbrica espontnea entre
dispositivos se denomina redes Ad Hoc, permitiendo a los dispositivos establecer
la comunicacin, en cualquier momento y en cualquier lugar. En realidad, la
formacin de redes Ad Hoc como tal no es nueva, sino lo es nuevo es la forma de
configuracin y uso de sus elementos [6]. Una aproximacin para otorgar calidad
de servicio es la de diferenciar entre el conjunto de paquetes que circulan por la
red clasificando los paquetes en un nmero pequeo de tipos de servicios y utiliza
mecanismos de prioridad para proporcionar una calidad de servicio adecuada al
trfico. Este estudio preliminar se realizo aplicando servicios diferenciados con el
modelo SWAN [1] en el entorno del simulador ns2. SWAN es un modelo de red
sin estados, el cual usa algoritmos de control distribuidos para entregar servicios
diferenciados en MANET de una manera escalable y robusta. Estos algoritmos
aplican controles basados en retroalimentaciones para soportar servicios de
tiempo real soft y servicios diferenciados en redes inalmbricas Ad Hoc. El
modelo usa el rate control (rc) para trafico UDP y TCP best effort, y un admission
control (ac) para trafico UDP de tiempo real. SWAN aplica la notificacin explicita
de congestionamiento (ECN) para regular dinmicamente trafico de tiempo real
admitido. El novedoso aspecto de este modelo es que no requiere de QoS en la
capa MAC.

86

4.1.2 Introduccin
Los sistemas inalmbricos han capturado la atencin y la imaginacin del publico,
y se han convertido en el segmento de mayor y ms rpido crecimiento en las
telecomunicaciones, donde su principal consecuencia han sido dotar de movilidad a los
nodos de la red al liberarlos de sus conexiones fsicas (cableado), dichos nodos pueden
funcionar de encaminadores y de anfitriones (Host).
Los sistemas inalmbricos tambin estn empezando a ofrecer mltiples servicios con
calidad (Quality of Service QoS-) como una conversacin telefnica, la transferencia de
ficheros, acceso a la web o la realizacin de videoconferencia, sin restricciones de lugar y
de tiempo. Estos ejemplos de comunicacin inalmbrica espontnea entre dispositivos o
nodos podra ser definido de manera informal como un esquema, al que a menudo se
denomina formacin de redes Ad Hoc, que permite a los dispositivos establecer la
comunicacin, en cualquier momento y en cualquier lugar. En realidad, la formacin de
redes Ad Hoc como tal no es nueva, sino lo es nuevo es la forma de configuracin, de uso
y de sus elementos. [6]

4.1.3 Qu son las redes Ad Hoc?


Las redes Ad Hoc consisten en nodos mviles interconectados con enlaces
de comunicacin inalmbricos multisaltos que a diferencia de las redes
inalmbricas convencionales, las redes Ad Hoc no tienen una infraestructura fija
de red o administracin central, donde la topologa de estas redes cambia
dinmicamente con nodos mviles entrando o saliendo de la red, y con
consecuencias de que algunos enlaces de comunicacin llegan a ser invlidos [4],
por ello uno de los principales objetivos en este tipo de redes es encontrar una
trayectoria que tenga suficientes recursos para satisfacer las limitaciones del
retardo, ancho de banda, calidad de los datos multimedia (video, audio, etc) y/o
otras mtricas [5] enviando paquetes hacia otros nodos y ejecutar las aplicaciones
del usuario, adicionalmente tambin todos los nodos pueden ser mviles
dinmicamente, creando una red inalmbrica auto-creciente, auto-organizada y
auto-administrada. [6] Por lo tanto, las comunicaciones en estas redes se crearan
nicamente por interacciones entre sus nodos mviles inalmbricos, usando esas
87

interacciones para proporcionar el control de flujo necesario y funciones de


administracin, [4] pero siendo la comunicacin degradada en alguno casos por la
movilidad de sus nodos. Es decir, los nodos pueden entrar y salir de reas de
mayor interferencia, o alejarse repentinamente de una zona de cobertura de otro
nodo con el cual estableca una comunicacin. Adems, contrariamente a las
redes cableadas, el nmero de integrantes en una red de nodos mviles, puede
variar bastante dinmicamente, al punto de saturar dicha red.

4.1.4 Retos a superar en Ad Hoc.


De una forma resumida y no por orden de importancia, son numerosos los
retos que deben superarse para alcanzar los beneficios prcticos de las redes Ad
Hoc inalmbricas, tales como:

Encaminamiento efectivo (Throughput alto, perdida nula o baja de


paquetes, etc.)

Mtodos de control de acceso al medio ( o canal)

Administracin mvil

Seguridad

La calidad de servicio (QoS) de las aplicaciones multimedia, que es


afectada principalmente por el retardo y por la administracin del disponible
ancho de banda, entre otros factores. [4]

Conseguir elementos / equipos con potencia extremadamente baja para


evitar tener que recargar frecuentemente la batera.

Dispositivos de poco peso debido a que son porttiles y deben poder


llevarse encima (wearable).

Conseguir bajos costos en el mercado

Resolver el problema de las interferencias.


88

Conseguir interoperabilidad entre los diferentes equipos que estn


movindose dentro en la red, a travs de un eficiente modelo y protocolo de
encaminamiento.

Creacin de contenidos.

Los factores ambientales juegan un papel muy importante, no solo


limitando la distancia entre dos nodos, sino agregndole ruido, interferencia
y variedad de terrenos que obstruyen la seal. [6]

4.1.5 QoS en Redes Ad Hoc


El concepto de calidad de servicio (QoS) ha sido propuesto para evaluar las
prestaciones cuantitativas y cualitativas de un conjunto de requerimientos de
servicio que sern encontrados, otorgados y mantenidos por la red mientras
transporta un paquete desde el origen al destino, siendo una funcin de la red
satisfacer ese grupo de requerimientos en trminos de retardo esttico extremo a
extremo (end-to-end), disponibilidad de ancho de banda, probabilidad de prdidas
de paquetes en una conexin.[3]. Por ejemplo en multimedia esto puede incluir
calidad de imgenes, o tiempo de respuesta, al hecho que una imagen fue
producida o fue una respuesta a un estimulo ocurrido. La QoS puede estar
delimitada por un conjunto de condiciones, las cuales pueden ser:

Link constraints: especifican la restriccin en el uso de los enlaces, p.e.


tener ancho de banda disponible para cierta aplicacin.

Path constraints: especifica los requerimientos QoS extremo a extremo en


una simple trayectoria.

Tree constraints: especifica los requerimientos para un rbol multicast. [8]

El costo de transporte y el rendimiento total de la red pueden ser incluidos como


parmetros. El costo generalmente se describe en trminos monetarios por
proceso o en trmino de tiempo usado en un proceso. Es frecuentemente el caso
de que el costo ser usado para poner los lmites superiores e inferiores a las

89

otras caractersticas. El costo de un enlace tambin puede ser en funcin de la


utilizacin del buffer o ancho de banda. El costo total de una ruta (rbol) es el total
del costo de todos los enlaces en la trayectoria. La optimizacin del problema es
encontrar la trayectoria con menor costo entre todas las rutas factibles.
Obviamente que los recursos en la red de deben estar disponibles durante la
invocacin del servicio para la garanta QoS. La primera tarea esencial es
encontrar una adecuada ruta a travs de la red, entre el origen y el destino que
tendr los recursos necesarios disponibles para encontrar las caractersticas de
QoS para el servicio deseado. La tarea de reservacin recursos (pedir, identificar y
terminar) es el otro ingrediente indispensable de QoS. [4]

4.1.6 Caractersticas de los enlaces con QoS para esquemas de


tiempo real
Para tener trfico en tiempo real como voz, video en vivo, debe mantenerse
bajo cierto lmites el retardo total y la varianza del retardo, el cual se puede lograr
reduciendo hasta donde sea posible el nmero de saltos, o encaminadores
intermedios en el camino. Con cambios potencialmente impredecibles de topologa
en una red Ad Hoc este objetivo es difcil de lograr.
Aunque existen aplicaciones en tiempo real Blandas (soft) presentan cierta
tolerancia en cuanto a que los mensajes lleguen despus de su deadline.
Muchas de las aplicaciones multimedia estn en esta categora. Pero las
aplicaciones de Tiempo Real Duras (hard) permiten imponer cualquier restriccin
para establecer la comunicacin, pero una vez establecida no se permite que
ningn mensaje llegue despus de su deadline y mucho menos que se pierda
mensajes. En esta categora estn las aplicaciones industriales por ejemplo que
controlan robots o sistemas de seguridad.
Una aproximacin para otorgar calidad de servicio es diferenciar entre el conjunto
de paquetes que circulan por la red. Cuando se desarroll el concepto de
conmutacin de paquetes, se aplic un servicio de mejor esfuerzo, el cual trata los
paquetes sin hacer ninguna diferenciacin entre los diferentes tipos de flujos.
90

Todos los paquetes reciben la misma prioridad al momento de ser procesados por
el planificador de paquetes el cual se encarga de decidir cual paquete es el que va
a pasar primero al enlace. De esta manera, los paquetes son ms sensibles a los
retardos.
Una manera de mejorar este esquema del mejor esfuerzo, es tratar a los paquetes
de manera diferente, tomando la decisin de cmo procesarlo dependiendo del
contenido del encabezado del paquete. Los campos que son de utilidad en el
encabezado para el manejo del paquete son los campos de direccin fuente y
destino, el puerto de origen y destino, tipo de servicio (ToS) y el protocolo. El
encaminador basndose en estos datos puede tomar una decisin de cmo
procesar el paquete. Sin embargo, cuando la cantidad de paquetes es muy grande
varios cientos o miles de paquetes por segundo- esto puede repercutir en el
rendimiento del encaminador.
Si existen similitudes entre diferentes paquetes, es posible clasificar los paquetes
en grupos y tomar decisiones de cmo procesar los paquetes dependiendo del
grupo al que pertenezca un paquete. Este mecanismo se logra reservando ciertos
bits en el encabezado del paquete de hecho el campo de tipo de servicio del
protocolo Ipv4 estaba reservado para este propsito- y definir en l, el tipo de
servicio que se le debe aplicar al paquete de acuerdo a las polticas que se hayan
especificado para ese propsito. [7]

4.1.7 Servicios diferenciados (DiffServ)


El modelo de Servicios Diferenciados se basa en trfico sin reservacin.
Este modelo clasifica los paquetes en un nmero pequeo de tipos de servicios y
utiliza mecanismos de prioridad para proporcionar una calidad de servicio
adecuada al trfico. El objetivo principal de este mecanismo es asignar el ancho
de banda a diferentes usuarios en una forma controlada durante periodos de
congestin. Este mecanismo se aplica igualmente a aplicaciones tradicionales
basadas sobre TCP, tales como transferencia de archivos, accesos a bases de
datos o Servidores de Web, y nuevas clases de aplicaciones tales como audio o
video en tiempo real. [9] Los Servicios Diferenciados pueden proveer a los
91

usuarios, una expectativa predecible del servicio que las redes le proveer en
tiempos de congestin, y permite que diferentes usuarios obtengan diferentes
niveles de servicio de la red. [3]

4.1.8 Modelo SWAN: Service Differentiation in Stateless Wireless Ad


Hoc Networks
El objetivo de este punto es realizar estudios preliminares aplicando
servicios diferenciados con el modelo SWAN [1] en el entorno del simulador ns2.
SWAN es un modelo de red sin estados, el cual usa algoritmos de control
distribuidos para entregar servicios diferenciados en MANET de una manera
escalable

robusta.

Estos

algoritmos

aplican

controles

basados

en

retroalimentaciones para soportar servicios de tiempo real soft y servicios


diferenciados en redes inalmbricas Ad Hoc. El modelo usa el rate control (rc)
para trafico UDP y TCP best effort, y un admission control (ac) para trafico UDP de
tiempo real. SWAN aplica la notificacin explicita de congestionamiento (ECN)
para regular dinmicamente trafico de tiempo real admitido. El novedoso aspecto
de este modelo es que no requiere de QoS en la capa MAC. [2]
A continuacin se presenta la configuracin de la pc en la que fueron realizdas las
pruebas:

4.1.9 Hardware and Software requirement

Laptops/mini-laptops
At least Three Laptops: One for Server (source node), Intermediate node,
Client (destination node) with Intel Pentium or higher.

Wireless Adapter Card


For SWAN Admission Controller, D-Link Wireless Adapter Card (IEEE
802.11) is needed Wireless Adapter Card should be configured to AdHoc
mode. Linksys or Orinoco card may work as well.

For SWAN Rate Controller, Aironet Wireless Adapter Card (IEEE 802.11) is
needed.
92

Operating System
SWAN Project Testbed runs on Linux Kernel version 2.2.18. (RedHat Linux
7.3)

Complier
The SWAN Testbed is compiled by gcc compiler. Tcl/Tk 8.x is also needed.

Others
The libpcap package is needed. If /usr/include/pcap doesn't exist, you
should install it. (For download and installation, see 2.)

MpegTv is used

for streaming video at destination node for SWAN Admission Controller.

4.1.10

Metodologa

El modelo se aplico en un entorno de simulacin MANET con protocolo


AODV (Fig. 46), evaluando los parmetros de: Throughput, Retardo medio y
Paquetes perdidos.
El entorno de simulacin considera los siguientes escenarios:
Fuentes de video: 1 y 19 (Trafico de tiempo real)
Fuentes de FTP: 1 y 19 (Trafico de tiempo no real)
rea de simulacin: 500x2500 mts.
100 nodos
Tiempo de simulacin de 100 seg.
Tiempo de pausa de 20 seg.
Movimiento Random Waypoint (RWP)

93

Fig. 46 Metodologa del modelo aplicado

4.1.11

Resultados y conclusiones

a) 19 Fuentes de tiempo real (video) y 1 de tiempo no real (FTP)


Se observa que cuando esta activado el admission control (ac), el
throughput de tiempo real aumenta debido a que se le da prioridad, y por lo tanto
su retado medio y cantidad de paquetes perdidos disminuyen. Fig. 47
94

Fig. 47 Resultados obtenidos con el modulo admission control

95

Fig. 48 Resultados obtenidos con el modulo admission control

b) Fuente de tiempo real (video) y 19 de tiempo no real (FTP).


Se puede observar que aqu tambin al igual que el punto anterior, el aplicar la
diferenciacin de servicio mejora o disminuye las prestaciones evaluadas con un
trafico

mayoritariamente

de

tiempo

no

real.

Fig.

49.

Fig. 49 resultados con un trafico mayoritariamente de tiempo real

96

Fig. 50 resultados con un trfico mayoritariamente de tiempo real

97

CONCLUSIN

98

Con las WLANs la red, por s misma, es mvil y elimina la necesidad de


usar cables y establece nuevas aplicaciones aadiendo flexibilidad a la red, y lo
ms importante incrementa la productividad y eficiencia en las empresas donde
est instalada. Un usuario dentro de una red WLAN puede transmitir y recibir voz,
datos y vdeo dentro de edificios, entre edificios o campus universitarios e inclusive
sobre reas metropolitanas a velocidades de 11 Mbit/s, o superiores.
Pero no solamente encuentran aplicacin en las empresas, sino que su extensin
a ambientes pblicos, en reas metropolitanas, como medio de acceso a Internet
o para cubrir zonas de alta densidad de usuarios (hot spots) en las prximas redes
de tercera generacin (3G) se ven como las aplicaciones de ms inters durante
los prximos aos Muchos de los fabricantes de ordenadores y equipos de
comunicaciones como son los PDAs (Personal Digital Assistants), mdems,
terminales de punto de venta y otros dispositivos estn introduciendo aplicaciones
soportadas en las comunicaciones inalmbricas.
Las nuevas posibilidades que ofrecen las WLANs son: permitir una fcil
incorporacin de nuevos usuarios a la red, ofrecer una alternativa de bajo costo a
los sistemas cableados, adems de la posibilidad para acceder a cualquier base
de datos o cualquier aplicacin localizada dentro de la red.
Dentro del enorme horizonte de las comunicaciones inalmbricas y la computacin
mvil, las redes inalmbricas van ganando adeptos como una tecnologa madura y
robusta que permite resolver varios de los inconvenientes del uso del cable como
medio fsico de enlace en las comunicaciones, muchas de ellas de vital
importancia en el trabajo cotidiano.
La tecnologa WLAN es una tecnologa madura perfectamente aplicable y
funcional hoy en da a un coste asequible pero haciendo especial hincapi, en que
si se decide implantar, se deben tomar medidas de seguridad.
Entre las medidas de seguridad que se deben tomar, las ms bsicas son una
correcta configuracin de la red para impedir el acceso a la misma de usuarios no
autorizados y hacer que la informacin circule de forma cifrada. Los dos mbitos
de aplicacin son en la empresa como sustitucin a las redes cableadas y en la
otra cara de la moneda est el surgimiento incipiente de las redes ciudadanas, que
se apoyan en esta tecnologa y en el software libre.
99

Realizando una profunda comparacin de la gama de redes inalmbricas con las


LANs

cableadas,

se

llega

la

conclusin

que

ambos

sistemas

de

telecomunicacin no son en absoluto excluyentes sino complementarios, ya que


es el sistema inalmbrico el que funciona con el usuario final, pero este sistema se
basa en los sistemas almbricos.
Con las redes inalmbricas se ofrece como gran prestacin el ahorro del costoso
cableado del edificio. Como punto negativo se tiene que comentar el inconveniente
de transmitir por un medio que cuenta con interferencias y otros factores no
propicios, lo que dificulta poder alcanzar velocidades comparables con las de las
redes almbricas.
En un futuro se puede prever la integracin de las dos tecnologas, es decir la
tecnologa almbrica y la inalmbrica, de manera que se aplique la que mejor
resultado tenga en cada uno de los casos que se presenten.
Para redes inalmbricas mviles, las prestaciones de los protocolos de
encaminamiento son afectadas por muchos factores, como la tecnologa
empleada, el comportamiento del nivel de enlace, movilidad, dispersin y
velocidad de los nodos, etc. Por otro lado el modelo SWAN tuvo buenas
prestaciones al tener baja tasa de paquetes perdidos, pero mostr un incremento
en el retardo medio y jitter debido a su naturaleza reactiva con tamao de
paquetes de 512 bytes. Sus prestaciones se mantuvieron mas estables y
eficientes en los escenarios altamente dinmicos. Tambin se observo que la
aplicacin de servicios diferenciados en MANET, mejora las prestaciones del
trafico en tiempo real, teniendo una mejor calidad de servicio extremo extremo.
Como resultados se espera que el lector de este trabajo haya sido capaz de
instalar el sistema operativo Linux, as como tambin, de instalar su tarjeta de red
inalmbrica para poder realizar sus pruebas y, basndose en los resultados aqu
mostrados, tener un punto de referencia con el que pueda comparar sus propios
datos.
Los resultados mostrados en el ltimo captulo esta basados en un experimento
mediante un simulador de redes y una configuracin punto a punto (Ad Hoc), y se
espera que en el futuro se implementen algoritmos que provean de calidad de
servicio a las redes de tipo infraestructura con salida a internet, alcanzando, con
100

esto, evitar al mximo perdida de informacin y por lo tanto optimizar la


transmisin de datos.

101

BIBLIOGRAFIA
Instant Byte S.L., http://www.instantbyte.com , ejemplo de Linux, 20 de julio de
2007.
http://sopa.dis.ulpgc.es/ii-aso/portal_aso/practicas/modulo.htm, 28 de agosto de
2007.
http://es.wikipedia.org/wiki/Linux, 15 de marzo de 2007
[1] G-S. Ahn, T. Campbell, A. Veres and L. Sun, Stateless Wireless Ad Hoc
Networks (SWAN). http://www.comet.columbia.edu/swan/draft-ahn-swan-manet00.txt. Columbia University, October 2002.
[2] G-S. Ahn, T. Campbell, A. Veres and L. Sun, SWAN: Service Differentiation in
Stateless Wireless Ad Hoc Networks, Proc. IEEE INFOCOM'2002, New York,
New York, 2002.
[3] S. Andreozzi, DiffServ simulations using the Network Simulator: Requirements,
Issues and Solutions, Masters Thesis, University of Pisa, 2001
[4] S. Chakrabarti and A. Mishra, QoS issues in Ad Hoc Wireless Networks, IEEE
Communication Magazine, February 2001.
[5] S. Chen and K. Nahrstedt, Distributed QoS routing with imprecise state
information, In 7th Int. Conf. on Computer Communications and Networks (IC3N),
October 1998, Urbana ,IL
[6] M. Fording, P. Johansson and P. Larsson, Wireless Ad Hoc Networking The
Art of Networking without a network , Ericsson Review Num 4, 2000
[7] P. Pieda, J. Ethridge, M. Baines and F. Shallwani, A Network Simulator
Differentiated Services Implementation, Open IP, Nortel Networks, July 26, 2002.
[8] A .Qayyum, L. Viennot and A. Laouiti, Multipoint relaying: An efficient
technique for flooding in mobile wireless networks, 35th Annual Hawaii
International Conference on System Sciences (HICSS'2002).
[9] V. Rexhepi, G. Karagiannis and G. Heijenk, "A Framework for QoS and Mobility
in the Internet Next Generation, EUNICE 2000 proceedings, September 2000.
Beck, M., et al.:Linux Kernel Programming. Tercera Edicin. Addison Wesley,
2002.
102

Herbert, T.F.:The Linux TCP/IP Stack: Networking for Embedded Systems.


Charles River Media, 2004 (Captulo 6)

103

Potrebbero piacerti anche

  • Memorias de Burbuja
    Memorias de Burbuja
    Documento2 pagine
    Memorias de Burbuja
    Milton Octavio García
    Nessuna valutazione finora
  • Practica2 Manual Sockets
    Practica2 Manual Sockets
    Documento39 pagine
    Practica2 Manual Sockets
    Artemio Sanchez
    Nessuna valutazione finora
  • Practica2 Manual Sockets
    Practica2 Manual Sockets
    Documento39 pagine
    Practica2 Manual Sockets
    Artemio Sanchez
    Nessuna valutazione finora
  • Detector de Humedad
    Detector de Humedad
    Documento10 pagine
    Detector de Humedad
    Milton Octavio García
    Nessuna valutazione finora
  • 1 4Tarea3JAVA
    1 4Tarea3JAVA
    Documento2 pagine
    1 4Tarea3JAVA
    Milton Octavio García
    Nessuna valutazione finora
  • Clase 21 Ago Red
    Clase 21 Ago Red
    Documento2 pagine
    Clase 21 Ago Red
    Milton Octavio García
    Nessuna valutazione finora
  • Clase 21 Ago Red
    Clase 21 Ago Red
    Documento2 pagine
    Clase 21 Ago Red
    Milton Octavio García
    Nessuna valutazione finora
  • Previo Quìmica 2
    Previo Quìmica 2
    Documento4 pagine
    Previo Quìmica 2
    Milton Octavio García
    Nessuna valutazione finora
  • Termo
    Termo
    Documento2 pagine
    Termo
    Milton Octavio García
    Nessuna valutazione finora
  • Diseño de Cartas ASM
    Diseño de Cartas ASM
    Documento26 pagine
    Diseño de Cartas ASM
    Milton Octavio García
    Nessuna valutazione finora
  • Práctica 1 Ciencia
    Práctica 1 Ciencia
    Documento11 pagine
    Práctica 1 Ciencia
    Milton Octavio García
    Nessuna valutazione finora
  • Cuestionario p8
    Cuestionario p8
    Documento1 pagina
    Cuestionario p8
    Milton Octavio García
    Nessuna valutazione finora
  • Ejercicios y Teoría
    Ejercicios y Teoría
    Documento10 pagine
    Ejercicios y Teoría
    Milton Octavio García
    Nessuna valutazione finora