Habilitación del TCP/IP en z/OS bajo Hercules en Windows

La presente entrada explica como habilitar el TCP/IP bajo z/OS, de forma que podamos conectarnos vía TCP/IP a una sesión TSO y demás servicios

1.1 Modos de Operación de Terminal

Hercules ofrece un servidor de Telnet propio, de forma que podamos tener sesiones TSO y de consolas utilizando el TCP/IP que da el propio Hercules, pero tiene varias limitaciones, y la primera de ellas reside básicamente en que las direcciones de sesión son direcciones definidas en el IODF (700 la master console, 701 sesión TSO, 900, 901, etc), y dependen enteramente de que estas sesiones estén definidas en el fichero HERCULES.CNF.

La otra limitación es que para el z/OS esas sesiones son sesiones directas no-SNA, al igual que se definirían en una OSA-ICC, o en unidades de control de terminales 2074, o las más antiguas IBM 3174 que conectaban vía coaxial a cada terminal, y evidentemente, cada sesión tiene una dirección HARDWARE para el sistema.

Pero si queremos tener un pool de terminales que se conecten vía TCP/IP, usando una OSA real de mainframe, debemos habilitar en el interior del z/OS la pila TCP/IP, definir una IP o una VIPA para el z/OS, etc, y claro, estos terminales son más flexibles de configurar que los tradicionales no-SNA, por lo que en este documento explicaré como crear desde cero un dispositivo que Hercules emulará como un canal OSA-CTC y sus posteriores definiciones bajo z/OS.

La teoría de funcionamiento, se resume bastante bien en este diagrama:

    +----------------------------------------------------------------------+
    |                                                                      |
    |                    E Q U I P O   W I N D O W S                       |
    |                                                                      |
    |                                                                      |
    | +----------------+  00-00-5E-A8-00-04                                |
    | |   Hercules     |  +------------------+                             |
    | | -------------- |  |  ADAPTADOR       |              +--------------|
    | |   Z/OS         |  |  "virtual"       |(FishPack dll)|  WinPCap     |      (hacia otros equi-
    | |   TCP/IP       |  |   HERCULES       |<------------>|   device     |      pos, Internet,
    | | -------------- |  |                  |              |   driver     |            etc...)
    | |    CTCA        |  |(192.168.254.2544)|              + - - - - - -  +
    | |(192.168.254.254)| +-----+------------+              |  Adaptador   |         +--------------+
    | +------+----------+       |                           |    REAL      *-------->|192.168.254.1 |
    |        |                  |        +----------------->|  Windows     |   (LAN) |  Gateway     |
    |        +------------------+        |  (Winsock dll)  |192.168.254.118|         +--------------+
    |          (TunTap32 dll)            |                 +---------------+        00-02-48-8B-8D-60
    |                                    |                  00-80-B3-E1-DF-69
    |                          +---------V-------+                         |
    |                        +-|                 |                         |
    |                      +-| |  (Aplicaciones  |                         |
    |                      | | |   Windows)      |                         |
    |                      | | |                 |                         |
    |                      | | +-----------------+                         |
    |                      | +-----------------+                           |
    |                      +-----------------+                             |
    |                                                                      |
    +----------------------------------------------------------------------+

 

Nuestro PC tiene la IP 192.168.254.118. La idea es que el z/OS tenga la IP 192.168.254.254, y eso lo conseguimos creando una tarjeta “virtual” de red que conecte ambos equipos. Para ello, será necesario instalar una serie de programas y librerías bajo Windows para crear dicho interfaz. Una vez realizada esta instalación, se crea el interfaz bajo z/OS y posteriormente se configura el TCP/IP de z/OS para que salga con la IP correcta.

Por tanto, tenemos varios pasos pata hacer, y que iremos viendo en este documento.

1.2 Definiendo en el HCD nuestra OSA-CTC

Una vez dentro de nuestro Hercules, y con las sesiones de TSO abiertas, dentro del ISPF existe una opción de menú llamada M More y al dar intro, nos llevará a otro menú. La opción 3 nos llevará al HCD (Hardware Configuration Dialog) donde podremos retocar la configuración hardware del z/OS.

En nuestro caso concreto, vamos a definir un dispositivo CTC que tenga las direcciones 2000 a 2001 (el CTC necesita 2 direcciones, una para lectura y otra para escritura).

Seguiremos los siguientes pasos:

1.- Nos iremos al menú 1 Define, y de ahí, a la opción 4 (Control Units).

Fig. 1: Hardware Configuration Dialog

Fig. 2: Definición de la configuración

2.- Si pulsamos PF11 (Add), nos aparecerá un dialogo en el cual nos insta a crear un fichero temporal de definición de hardware, así que lo creamos y le diremos en que disco guardarlo –ZASYS1 en nuestro caso-.

Fig. 3: Creación del fichero de definición

Fig. 4: Creación de la Control Unit

3.- Crearemos la unidad de control con la dirección 2000 y le diremos que es un CTC (Channel To Channel), y la asignaremos a nuestra configuración actual

Fig. 5: Asignación de la Unidad de control a nuestro procesador

Fig. 6: Unidad de control creada.

4.- Si ponemos una “/” podremos acceder a sus opciones, entre otras la de trabajar con sus dispositivos, así que elegiremos esta opción para crear los dos dispositivos necesarios, el 2000 y el 2001.

Fig. 7: Trabajar con los dispositivos

Fig. 8: Lista de dispositivos

5.- Si pulsamos la tecla PF11, podremos añadir los dos dispositivos, con la dirección 2000, el número de dispositivos diremos que son 2 y del tipo CTC.

Fig. 9: Definición de los dos dispositivos.

Fig. 10: Conexión al z/OS

Y los conectaremos al z/OS para definir su comportamiento y si tienen esotéricos –en nuestro caso, el CTC no tiene nombres esotéricos de ningún tipo-.

Fig. 11: Selección de conexión al z/OS

Fig. 12: Valores por defecto de conexión

Fig. 13: Asignación de esotéricos (no tiene)

Fig. 14: Dispositivo creado

6.- En este punto, crearemos un nuevo IODF reflejando la nueva configuración, seleccionando la opción 2 Activate or process configuration data y luego un 1 Build production I/O definition file.

Fig. 15: Activar la configuración

Fig. 16: Creamos el IODF

7.- Elegiremos como nombre el SYS1.IODF02, ya que el que hemos partido era el SYS1.IODF01 y ese es el actual IODF que no nos interesa tocar.

Fig. 17: Nuevo IODF

8.- Una vez creado el SYS1.IODF02, crearemos un NUEVO miembro en el SYS1.IPLPARM, con el fin de arrancar sobre él la siguiente vez. Lo hacemos así por si hubiera errores de IPL, de este modo podremos volver al IODF anterior sin mayor problema. Para ello, copiaremos el miembro actual, LOADCS y lo llamaremos LOADTC (TC de TCP/IP) y tendrá el siguiente contenido:

IODF     02 SYS1                                           

SYSCAT   ZASYS1113CCATALOG.Z110.MASTER

SYSPARM  CS

IEASYM   00

PARMLIB  USER.PARMLIB                                 ZASYS1

PARMLIB  ADCD.Z110.PARMLIB                            ZARES1

PARMLIB  SYS1.PARMLIB                                 ZARES1

NUCLEUS  1

SYSPLEX  ADCDPL

 

El sistema seguirá arrancando en CS (Cold Start) pero deberemos cambiar el LOADPARM del Hercules a 0A82TCM1, en vez del actual, que es el 0A82CSM1

1.3 Configurando el TCP/IP dentro de nuestro z/OS

Los pasos siguientes nos ayudarán a configurar correctamente el TCP/IP de nuestra instalación.

A este respecto, al principio del documento hemos dejado claro que la dirección del z/OS será la de 192.168.254.254 y que, evidentemente, debe ser distinta a la de nuestro PC (192.168.254.118), ya que el z/OS se comportará como si fuera una máquina virtual dentro de nuestro PC. Con esto en mente, desde el ISPF navegaremos por los miembros de configuración el TCP/IP y realizaremos los siguientes pasos:

1.- en z/OS versión 1.10, los miembros de configuración del TCP/IP residen en un dataset particionado llamado ADCD.Z110.TCPARMS. Esto lo he visto porque el proceso que lanza el TCP/IP bajo z/OS está en la PROCLIB y se llama TCPIP. Si vemos su contenido, resulta que las configuraciones apuntan a ese dataset, así que no hay mas vuelta de hoja: Vemos que los miembros a “retocar” son el PROF1 y el TCPDATA. Así que los retocamos, entrando a editar dichos miembros.

Fig. 18: Miembro TCPIP de la PROCLIB

2.- Dentro de PROF1, en la parte de DEVICE, vamos a comentar todos los que hay (poniendo un ; delante en la columna 1) y vamos a definir el dispositivo que utilizará el sistema. En puntos anteriores hemos visto que el dispositivo se ha definido en la dirección 2000, así que editaremos lo siguiente:

DEVICE CTCA1  CTC   2000  

LINK CTC1  CTC      1 CTCA1

3.- Mas abajo, nos iremos a la zona HOME y comentaremos todo lo que hay, y añadiremos esta línea:

                          

HOME                      

                           

   192.168.254.254   CTC1 

4.- En la zona GATEWAY, editaremos las rutas con el fin de que encuentre nuestra puerta de enlace y tengamos comunicación desde el exterior:

GATEWAY                                                                

;

; Direct Routes – Routes that are directly connected to my interfaces.

;

; Network  First Hop  Link Name Packet Size  Subnet Mask  Subnet Value

; 192.168.252    =         OSDL      1500      0

  192.168.254  =        CTC1      576  0                              

; 130.50       =         TR1     2000     0.0.255.0    0.0.10.0

; 193.5.2      =         ETH1    1500     0

; 9            =         FDDI1   4000     0.255.255.0  0.67.43.0

; 193.7.2.2    =         SNA1    2000     HOST

   defaultnet 192.168.254.254    CTC1   576  0

5.- Por último, en la zona inferior, está la parte de START. Por tanto, comentaremos todo lo demás e insertaremos la siguiente línea:

START CTCA1

Esto hará lanzar el driver CTCA1 cuando se lance el TCP/IP.

6.- Si abrimos el miembro TCPDATA, solo nos debe preocupar el HOSTNAME, que de momento lo dejaremos como está (ADCD).

Con esto editado, podemos cerrar el z/OS y el Hercules.

1.4 Configuración OSA-CTC en Hercules

Para que Hercules y por consiguiente, z/OS, pueda arrancar nuestro nuevo dispositivo CTC con la dirección 2000, debemos añadirlo a la configuración de Hercules. Por tanto, editaremos el fichero HERCULES.CNF y añadiremos la siguiente línea:

2000-2001    CTCI  192.168.254.254  192.168.254.118

 

Siendo, como hemos explicado, 192.168.254.254 la IP que tomará el z/OS y 192.168.254.118 la IP de nuestra máquina. Así el CTC sabrá a dónde dirigir el tráfico.

NOTA: Recordemos también cambiar el valor LOADPARM por 0A82TCM1, ya que de lo contrario, nuestro IODF con la nueva configuración no entrará en acción.

1.5 Instalación de librerías Windows FISHPACK y WinPcap

Para crear el driver específico virtual de red, nos valdremos de una herramienta llamada WinPcap. Para ello, nos iremos a la web http://www.winpcap.org y nos descargaremos la herramienta:

 

 

 

 

 

 

Fig. 19: Descarga de WinPcap

Una vez descargada, procederemos a instalar la herramienta, lanzando el asistente.

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 20: Asistente de instalación WinPcap

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 21: Bienvenida al asistente

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 22: Acuerdo de licencia

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 23: Arrancaremos el driver en tiempo de inicio de Windows

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 24: Instalación realizada

Con este sencillo paso, ya tenemos el driver virtual de red en Windows.

 

Lo siguiente ahora es instalar las librerías DLL de Fish. Para ello, nos vamos a su web http://www.softdevlabs.com/Hercules/hercgui-index.html y nos descargamos dos ZIPs: El FishLib (Executables Only), que se descarga desde http://www.softdevlabs.com/Hercules/FishLib-2.7.1.564-bin.zip

 

 

 

 

 

 

 

 

 

 

 

Fig., 25: Descarga de FishLib

Y luego el CTCI-W32, que está en http://www.softdevlabs.com/Hercules/ctci-w32-index.html y se descarga desde http://www.softdevlabs.com/Hercules/CTCI-W32_3.2.1.160_bin.zip

 

 

 

 

 

 

 

 

 

 

Fig. 26: Descarga de CTCI-W32

 

Una vez descargados, descomprimiremos la carpeta BIN de ambos ZIPs dentro de la MISMA CARPETA que está Hercules instalado, es decir, bajo C:Archivos de programaHerculesHercules 3.07 (32 Bit). También se puede descomprimir en otra parte y añadir un PATH desde Windows, pero esto es la opción más simple y que da menos problemas.

 

NOTA: Si nuestra instalación fuera de 64 bits, deberíamos descomprimir la carpeta x64.

1.6 Arranque final Hercules y z/OS

En estos momentos, debemos asegurarnos que Hercules ha cogió los drivers y las DLL de FISH, así que en cuanto lancemos el Hercules, deberíamos ver las siguiente líneas en el momento que detecta cargar el CTCI en la dirección 2000:

D:MAINFRAMEHERCULESTunTap32.dll version 3.2.1.160 initiated

HHCCT073I 1400: TUN device tun0 opened

 

Si aparece que el dispositivo tun0 está abierto, significa que WinPcap ya está trabajando. Por tanto, en este punto podemos hacer IPL a Hercules, siguiendo el procedimiento habitual.

Una vez arrancado todo, si hacemos un PING desde nuestro PC y a la dirección de nuestro z/OS (192.168.254.254), y responde, entonces todo funciona, enhorabuena!!!

Fig. 27: Ping satisfactorio al z/OS

Por tanto, y como broche final, definiremos en nuestro emulador una nueva sesión, a la que configuraremos la IP de z/OS

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 28: Configuración IP del emulador 3270

 

 

 

 

 

 

 

 

 

 

Fig. 29: Entrada al TSO por TCP/IP –sesión número SC0TCP01-

 

En fin, espero que me haya explicado bien. En estos precisos momentos, tenemos 2 sistemas IP funcioanndo: El propio del Hercules -sesiones locales VTAM- y el propio de z/OS -sesiones IP-.Asi que en estos momentos z/OS es una máquina mas en nuestra red y por tanto, podemos configurar en un futuro todos los servicios que queramos (DB2, CICS-Sockets, FTP, WAS, MQ, etc.).

Por ultimo, como el wordpress me desformatea todo el documento, adjunto para la descarga el mismo articulo pero en pdf: Habilitación TCP/IP bajo z/OS en Hercules bajo Windows

Hasta mas ver!!

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.