Como configurar un driver LCS bajo Hercules y z/OS

El articulo de hoy me ha impulsado escribirlo porque hay ciertos comportamientos extraños dentro del Driver CTCI-W32 bajo Windows que escribi como se configuraban en su día que no me gustan un pelo, y dado que dicho driver da problemas y Fish, el creador de los mismos, anda muy liado para sacar un buen update para plataformas Windows 2008 y Windows 7, he experimentado otro tipo de modulos de comunicaciones.

Uno de los comportamientos mas raros del driver CTCI-W32 era cuando querias hacer ping al z/OS de tu Hercules desde una subred distinta. El ping se demorada 3 segundos, exactamente 3, no entendiendo el por qué. Por lo tanto, era literalmente imposible abrir una sesión TSO por la lentitud de las comunicaciones. Lo curioso es que mientras estuvieras dentro de la misma subred del Hercules, las comunicaciones iban muy muy finas, como si estuvieras accediendo a un verdadero Host.

Otro tema muy curioso era que todos los equipos podian hacer ping a tu hercules y a tu z/OS, pero desde tu misma maquina corriendo Hercules no podias hacer ping a tu z/OS, dependiendo del tipo de tarjeta de red que tuvieras o el driver de red de Windows. Curioso, no puedo acceder desde mi propia maquina que es la que estoy ejecutando Hercules y z/OS. Abriendo una cuestión en la lista de Hercules, que se llega a ella desde  hercules-390 en yahoogroups punto com, en los grupos de usuarios Yahoogroups, me solventaron la cuestión, por la forma en que han cambiado los drivers NDIS de Windows; CTCI-W32 se habla con ellos por protocolo NDIS 5.x y Windows 7 y Windows 2008 han cambiado el protocolo a NDIS 6.x, por lo que hay problemas con el “checksum offloading” o la forma en que el sistema calcula la suma de comprobación de los paquetes que envía a a red. Por lo tanto, para poder hacer ping a tu hercules si te encuentras en este caso, debes o bien instalar la ultima de versión de los drivers de tu tarjeta de red, y si eso no lo soluciona, entrar en las propiedades avanzadas de tu tarjeta (Via el Administrador de Dispositivos de Windows) y deshabilitar las siguientes líneas:

-Descarga de suma de comprobación IPv4,
-Descarga de suma de comprobación TCP (IPv4) y
-Descarga de suma de comprobación UDP (IPv4)

Nueva Tarjeta de red Emulada Hercules: LCS o LAN Channel Station

Por todo ello, desde la misma lista, al ver el conjunto de comportamientos raros que tenía en el sistema, me recomendaron cambiar el tipo de enlace emulado de CTCI a un LCS o LAN Channel Station, es decir, un dispositivo IBM 3088 o IBM 3172 Interconnect Controller, que son los primeros modelos de tarjetas de red que salieron al mercado para mainframe, antes de crearse el dispositivo Open System Adapter u OSA.

Un LCS es mejor sistema de comunicaciones que CTCI, ya que CTCI solo trabaja con tráfico TCP/IP. Sin embargo, LCS soporta TCP/IP y tráfico SNA nativo si lo quisieramos, y por lo tanto, su configuración también es mas compleja en función de las características que queramos disponer. De hecho, al igual que pasa con la OSA/SF, deberiamos generar un fichero OAT y definir las direcciones, LUs y rutas que queramos manejar. Para mas informacion, leed la web del fichero de configuración de Hercules en su apartado LCS.

En nuestro caso, como solo vamos a configurar para trafico IP, no hará falta en meternos en rollos de OATs y demás, por lo que cambiar nuestra configuración Hercules y TCPIP de z/OS es mas sencilla de lo que parece.

Cambios en HERCULES.CNF

Para que Hercules emule nuestro LCS, debemos editar el hercules.cnf y cambiar nuestra configuración. Si antes teniamos CTCI, cambiariamos esta línea:

0E20.2    CTCI  192.168.1.100  192.168.1.3

, siendo 192.168.1.100 la IP del z/OS y 192.168.1.3 la IP de nuestra máquina física, por:

0E20.2  LCS  -n 192.168.1.3  192.168.1.100

, siendo 192.168.1.3 la IP de nuestro equipo físico y 192.168.1.100 la IP de z/OS (el orden de definición cambia, y atentos al parámetro -n).

Cambios en PROFILE.TCPIP de z/OS

Evidéntemente, al no tener en Hercules definido el CTCI, tenemos que cambiar el driver que lanzamos y poco mas. El extracto de lo que hay que cambiar sería lo siguiente:

1.- Comentamos las líneas de nuestro antiguo driver:

;DEVICE CTCA1  CTC    E20
;LINK CTC1  CTC    0 CTCA1

2.- Añadimos las dos líneas de nuestro nuevo driver:

DEVICE  LCS1  LCS       E20  AUTORESTART
LINK    ETH1  ETHERNET  0    LCS1

3.- Cambiamos el resto de los datos de la HOME, GATEWAY, etc, de CTC1 -antiguo- a ETH1 -nuevo-.

HOME
192.168.1.100  ETH1

GATEWAY
192.168.1.1  =         ETH1    1492     HOST
defaultnet 192.168.1.1       ETH1  1492  0

BEGINROUTES
ROUTE  192.168.1.0  255.255.255.0  =            ETH1  MTU 1492
ROUTE  DEFAULT                     192.168.1.1  ETH1  MTU 1492
ENDROUTES

4.- Y por último, cambiamos el START del driver viejo por el nuevo, comentando:

;START CTCA1

y añadiendo:

START LCS1

Con esto, ya estaría. Pararíamos la pila TCPIP del z/OS con P TCPIP desde la consola maestra y la volveríamos a lanzar con un S TCPIP, y voilá, el driver nuevo asumiría el control, y punto.

NOTA: El driver LCS NO requiere de cambios en el IODF. El driver CTC que creamos para CTCI, nos sirve perfectamente para LCS.

About Urtzi Larrieta

Director de Proyectos de entornos Mainframe, AIX y AS/400, llevo mas de 10 años trabajando para el sector servicios y banca, así como proyectos de sistemas, renovación tecnológica, estrategias de backup, y consultoría de sistemas.