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!!
Hola.
Tengo un problema en la asignación de la unidad de control al procesador porque no me aparece definido 1 procesador.
Al intentar hacerlo desconosco que Type, Model, serial, Network name, etc asignar
Puff, no entiendo nada de lo que has escrito. Que problema tienes exactamente? Que no sabes que tipo y modelo y numero de serie poner? Pues pon simplemente los que he puesto como ejemplo en el articulo, a saber:
CPUSERIAL 123456 # Numero de Serie CPU
MODEL 603 # Modelo de maquina
CPUMODEL 2094 # Tipo de maquina – un z9 EC
Esto esta en el anterior articulo, y es simplemente un ejemplo, puedes elegir muchos tipos y modelos de procesadores. Espero haberte ayudado.
Un saludo
El post me parece excelente como todos los que he visto en la WEB.
He llegado a este sitio porque tengo problemas para configurar el FTP desde Windows-XP al HOST (zOS1.10), y siguiendo el instructivo, sigo sin conseguirlo. Puedo ponerme en contacto contigo de alguna forma para que me eches un cable ?
Desde ya muchas gracias por tu tiempo.
Cual es realmente tu problema? Has podido acceder al TCP/IP del hercules y como numero de terminal 3270 has podido obtener un S0TCP0XX? Si es asi, el TCP/IP del z/OS funciona, si no puedes acceder al FTP es porque o bien el servicio esta caido (puedes hacer un Start FTPD desde la consola maestra) o que tienes un problema con el firewall de tu windows, que no te permite llegar al puerto 21 del Hercules.
Dentro del z/OS, en la opcion 6 Command, haz un PING a una ip de tu red. Si obtienes respuesta, significa que el TCP/IP no es el problema del z/OS, sera algo externo. No se, trata de darme mas datos para centrar el tiro.
Un saludo,
Estimado señor.
Todavía no he conseguido configurar el TCP / IP en Zos16, he leído varios tutoriales y no entender cómo y dónde hacer estas modificaciones. ¿Podría explicar este proceso más detallado.
Necesito que me des mas informacion. Tienes el z/OS bajo Hercules? No te da problema alguno el driver CTCI? El problema lo tienes dentro del TCP/IP del z/OS o lo tienes fuera?