3.4. El controlador PLIP

Parallel Line IP (PLIP) es una forma barata de trabajar en red cuando sólo quiere conectar dos máquinas. 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 sólo con puertos de impresoras unidireccionales; las ocho líneas de datos pueden ser usadas sólo para enviar datos desde el PC al periférico, pero no al contrario. [1] El diseño de Cyrnwr del PLIP trabajaba evitando esta limitación mediante el uso de las 5 líneas de estado del puerto para la entrada, lo cual limitaba a transferir todos los datos sólo como nibbles (medios bytes), pero permitía la transferencia bidireccional. Este modo de operación 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 adición del PLIP “mode 1.”

Los núcleos Linux version 2.0 e inferiores sólo soportan PLIP mode 0, y existe un controlador para puerto paralelo mejorado en forma de parche para el núcleo 2.0, y como parte estándar del codigo del núcleo 2.2, para realizar operaciones en PLIP mode 1. [2] A pesar de las últimas versiones del código de PLIP, el controlador continúa siendo compatible con la implementacion de Crynwr del PLIP, como por ejemplo el controlador PLIP del NCSA telnet .[3] Para conectar dos máquinas usando PLIP, necesitas un cable especial que se vende en las tiendas como Cable de Impresora Nulor o cable Laplink Turbo. Puede, además, hacer usted mismo uno fácilmente; Apéndice B aquí le muestran cómo.

El controlador PLIP para Linux es el resultado del trabajo de muchas personas. Actualmente esta mantenido por Niibe Yutaka.[4] Si es compilado dentro del núcleo, éste creara una interfaz de red para cada uno de los posibles puertos de impresora, plip0 corresponderá al puerto paralelo lp0, plip1, corresponderá al lp1, etc. El mapeado de interfaces a puertos cambia de los núcleos 2.0 a los núcleos 2.2. En los 2.0, el mapeado estaba especificado en el fichero drivers/net/Spacd.c del código fuente del núcleo. El mapeado por defecto en este fichero es:

InterfaceI/O PortIRQ
plip00x3BC7
plip10x3787
plip20x2785

Si configuró su puerto de impresora de una forma diferente, tiene que cambiar estos valores en drivers/net/Space.c dentro del código fuente del núcleo Linux y compilar un núcleo nuevo.

En los núcleos 2.2, el controlador PLIP usa el controlador compartido de puerto paralelo “parport” desarrollado por Philip Blundell.[5] El controlador nuevo asigna en serie los nombres a los dispostivos de red PLIP, como pasa con los controladores Ethernet o PPP, por lo tanto el primer dispositivo PLIP creado es plip0, el segundo es plip1, etc... Los puertos paralelos hardware son también asignados en serie. Por omisión, el controlador de puerto paralelo intentará detectarlos con una rutina de autoverificación, guardando la información física del dispositivo en el orden en que la encuentra. Ésto es mejor que decirle con parámetros al núcleo la E/S. Puede hacer ésto introduciendo la información en el módulo parport_pc.o cuando lo carga, o si tiene compilado el controlador dentro del núcleo, usando lilo como hemos explicado antes La IRQ de cada dispositivo puede cambiarse después escribiendo un nuevo valor en el fichero que le corresponda: /proc/parport/*/irq.

Configurar los parámetros de E/S en un núcleo 2.2 cuando cargamos un módulo es sencillo. Por ejemplo, para decirle al controlador que tienes dos puertos paralelos de PC en las direcciones E/S 0x278 y 0c378 y los IRQs 5 y 7, respectivamente, tendrá que cargar el módulo con los siguientes argumentos:
    modprobe parport_ pc io=0x278,0x378 irq=5,7
Los argumentos correspondientes para un controlador ya compilado en el núcleo son:
    parport=0x278,5 parport=0x378,7
Puede usar la orden append de lilo para mandar esos argumentos al núcleo cada vez que arranque.

Cuando el controlador PLIP es inicializado, cada arranque, si éste esta dentro del núcleo, o cuando el módulo plip.o es cargado, cada puerto paralelo tendráa un dispositivo de red plip asociado. El plip0 será asignado al primer dispositivo de puerto paralelo, plip1 al segundo, etc... Puede evitar manualmente la asignacióon automática enviando otro parámetro al núcleo. Por ejemplo, para asignar el parport0 al dispositivo de red plip0, y el parport1 al dispositivo de red plip1, usará los argumentos del núcleo:
    plip=parport1 plip=parport0

Este mapeado no significa que aparte no pueda usar esos puertos paralelos para imprimir u otros propóositos. El controlador PLIP sólo usa el dispositivo de puerto paralelo cuando la correspondiente interfaz esté activada.

Notas

[1]

¡Luche para limpiar el nombre del haking! Use siempre “cracker” cuando se refiera 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 términos.

[2]

El parche del adaptador de puerto paralelo mejorado para el núcleo 2.0 está disponible en http://www.cyberelk.demon.co.uk/parport.html.

[3]

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

[4]

Niibe puede ser localizado en gniibe@mri.co.jp.

[5]

Puede contactar con Philip en Philip.Blundell@pobox.com.