3.4. El driver PLIP

Parallel Line IP (PLIP) es una forma barata de trabajar en red cuando solo quiere conectar dos maquinas. Esta usa un puerto paralelo y un cable especial y llega a alcanzar velocidades desde los 10KB/s hasta los 20KB/s

PLIP fue desarrollada originalmente por Crynwr, Inc. Este dise�o fue muy ingenioso en su tiempo (o, si lo prefiere, un hack), porque el puerto paralelo original de los IBM PCs fue dise�ado para perder su tiempo solo con puertos de impresoras unidireccionales; las ocho lineas de datos pueden ser usadas solo para enviar datos desde el PC al periferico, pero no al contrario. [1] El dise�o de Cyrnwr del PLIP trabajaba evitando esta limitacion mediante el uso de las 5 lineas de estado del puerto para la entrada, lo cual limitaba a transferir todos los datos solo como nibbles (medios bytes), pero permitia la transferencia bidireccional. Este modo de operacion fue llamado PLIP “mode 0.” Actualmente, el puerto paralelo de los PCs permite la transmision de 8-bits de datos bidireccionalmente, y PLIP ha sido ampliado para acomodarse a esta situacion con la adicci�n del PLIP “mode 1.”

Los kernels Linux version 2.0 e inferiores solo soportan PLIP mode 0, y existe un driver para puerto paralelo mejorado en forma de parche para el kernel 2.0, y como parte estandar del codigo del kernel 2.2, para realizar operaciones en PLIP mode 1. [2] A pesar de las ultimas versiones del codigo de PLIP, el driver continua siendo compatible con la implementacion de Crynwr del PLIP, como por ejemplo el driver PLIP del NCSA telnet .[3] Para conectar dos maquinas usando PLIP, necesitas un cable especial que es vendido en las tiendas como Null Printer o cable Laplink Turbo. Puede, ademas, hacerse ustedmismo uno facilmente; Ap�ndice B aqui le muestran como.

El driver PLIP para linux es el resultado del trabajo de muchas personas. Actualmente esta mantenido por Niibe Yutaka.[4] Si es compilado dentro del kernel, este creara una interface de red para cada uno de los posibles puertos de impresora, plip0 correspondera al puerto paralelo lp0, plip1, correspondera al lp1, etc. El mapeado de interfaces a puertos cabia de los kernels 2.0 a los kernels 2.2. En los 2.0, el mapeado estaba especificado en el fichero drivers/net/Spacd.c del codigo fuente del kernel. El mapeado por defecto en este fichero es:

InterfaceI/O PortIRQ
plip00x3BC7
plip10x3787
plip20x2785

Si configuro su puerto de impresora de una forma diferente, tiene que cambiar estos valores en drivers/net/Space.c dentro del codigo fuente del kernel de Linux y construir un kernel nuevo.

En los kernels 2.2, el driver PLIP usa el “parport” driver compartido de puerto paralelo desarrollado por Philip Blundell.[5] El nuevo driver asigna en serie los nombres a los dispostivos de red PLIP, como pasa con los drivers Ethernet o PPP, por lo tanto el primer dispositivo PLIP creado es plip0, el segundo es plip1, etc.. Los puertos paralelos hardware son tambien asignados en serie. Por defecto, el driver de puerto paraleo intentara detectarlos con una rutina de autoverificacion, guardando la informacion fisica del dispositivo en el orden en que la encuentra. Esto es mejor que decirle con parametros al kernel la E/S. Puede hacer esto introduciendo la informacion en el modulo parport_pc.o cuando lo carga, o si tiene compilado el driver dentro del kernel, usando lilo como hemos explicado antes La IRQ de cada dispositivo puede cambiarse despues escribiendo un nuevo valor en el fichero que le corresponda: /proc/parport/*/irq.

Configurar los parametros de E/S en un kernel 2.2 cuando cargamos un modulo es sencillo. Por ejemplo, para decirle al driver que tienes dos puertos paralelos de PC en las direcciones E/S 0x278 y 0c378 y los IRQs 5 y 7, respectivamente, tendra que cargar el modulo con los siguientes argumentos:
    modprobe parport_ pc io=0x278,0x378 irq=5,7
Los argumentos correspondientes para un driver ya compilado en el kernel son:
    parport=0x278,5 parport=0x378,7
Puede usar el comando append del lilo para mandar esos argumentos al kernel cada vez que arranque.

Cuando el driver PLIP es inicializado, cada arranque si este esta dentro del kernel, o cuando el modulo plip.o es cargado, cada puerto paralelo tendra un dispositivo de red plip asociado. El plip0 sera asignado al primer dispositivo de puerto paralelo, plip1 al segundo, etc... Puede evitar manualmente la asignacion automatica enviando otro parametro al kernel. Por ejemplo, para asignar el parport0 al dispositivo de red plip0, y el parport1 al dispositivo de red plip1, usara los argumentos del kernel:
    plip=parport1 plip=parport0

Este mapeado no significa que aparte no pueda usar esos puertos paralelos para imprimir o otros propositos. El driver PLIP solo usa el dispositivo de puerto paralelo cuando la correspondiente interface este activada.

Notas

[1]

Luche para limpiar el nombre del haking! Use siempre “cracker” cuando se refieras a gente que intenta conscientemente saltarse la seguridad de un sistema, y “hacker” cuando se refiera a gente que encuentra una forma inteligente de solucionar un problema. Los hackers pueden ser crackers, pero nunca se debe confundirlos. Consulte el nuevo diccionario de hackers (popularmente llamado the Jargon file) para entender mejor el significado de los terminos.

[2]

El parche del adaptador de puerto paralelo mejorado para el kernel 2.0 esta disponible en http://www.cyberelk.demon.co.uk/parport.html.

[3]

El NCSA telnet es un popular programa para DOS que corre TCP/IP sobre Ethernet o PLIP, y soporta telnet y FTP.

[4]

Niibe puede ser localizado en [email protected].

[5]

Puede contactar con Philip en [email protected].