Beauty indeed - one more beautiful aspect to the VIPA!

APAR PQ37421, "SUPPORT TO ALLOW MULTIPLE DISSIMILAR SERVERS TO USE THE SAME TCPPORT", "closed" date 2000-04-26, introduces the function and provides an example - the example being - wouldn't you know it? - port 23 and TELNET:

<quote>

This new function APAR adds the BIND keyword to the PORT statement. The BIND keyword followed by the IP address causes the TCP/IP stack to substitute the specified IP address in the bind when an application binds to the reserved port with an address of INADDR_ANY. Multiple PORT statements for the same TCP port using different server jobnames and specifying BIND with different IP addresses can allow multiple servers to bind to the same port on the same stack without changing the servers.

This function can allow the TN3270 server and OS/390 Unix telnet to both listen on port 23. The IP address following the BIND keyword can be a real address or a virtual IP address (VIPA). Static and dynamic VIPAs are supported. For example,

     23 TCP INTCLIEN BIND 9.67.113.109   ;3270 TELNET
     23 TCP OMVS     BIND 9.67.116.55    ;UNIX TELNET

...

</quote>

Note that, rather than use just one VIPA, the example uses a VIPA for both server instances. This is much to be encouraged since, in a way, it implies that VIPAs are already in use in order to profit from their undoubted benefits. Thus the example may be regarded as an extension of the wise use of VIPAs. It differs from - and I would say is superior to - the REXECD and RSHD example in Edward's earlier post.

Note that, if the invocation of the server program has parameters which allow a specific IP address to be specified - typically in addition to the usual option to allow a non-standard port number to be specified - this can be an alternative to the use of the PORT statement BIND parameter. If both are specified the invocation parameter will take precedence since the PORT statement BIND parameter will only substitute an IP address in the BIND structure in place of INADDR_ANY (or, in effect, 0.0.0.0).

Here is an extract from an article with the concatenated headers "NCP and 3745/46 Today | Summer 2001, OS/390, z/OS, TCP/IP, Parallel Sysplex, Section II: Network Technology, OS/390 and z/OS TCP/IP in the Parallel Sysplex Environment - Blurring the Boundaries", which covers the topic of so-called "Server Bind Control" with a quite detailed outline!

<quote>

Server Bind Control

Server Bind Control actually addresses two different requirements. The first requirement concerns different and incompatible server application instances identified by the same well-known port number, when no such server instance can be configured to use a specific IP address. One example would be OTELNET and TN3270, both of which use well-known port 23 and accept requests from any IP address (binding to INADDR_ANY in socket terms), but which use different application protocols. If the servers use the same application protocol, normal port-sharing functions would allow the server instances to coexist on the same TCP/IP stack.

However, the stack balances connections between server instances sharing the same port, and has no way to know that a client needs to use one particular server over another. Before Server Bind Control, this requirement was addressed through the use of different TCP/IP stack instances, associating one server instance type with one stack, and the other server instance type with the other stack, such that DNS/WLM returns only addresses appropriate for the name of the particular server type. Note that if the server instances themselves could bind to different IP addresses, there would be no problem running both server instances on a single stack, because the destination IP address would uniquely identify the type of server, and the DNS could be configured to supply the correct IP address for each server type.

Server Bind Control allows the OS/390 TCP/IP stack to be configured to address this. A modification to the PORT configuration statement allows an IP address to be specified and associated with a particular job name. If the server job binds its listening socket to a particular IP address, nothing new occurs. However, if the server job binds its listening socket to INADDR_ANY, OS/390 TCP/IP converts the bind to use only the specified IP address. In the example above, OTELNET would be configured for one IP address, and TN3270 would be configured for a different address, with an appropriate DNS name to IP address configuration. Both servers can now run on the same TCP/IP stack using the same well-known port, and clients are automatically directed to the required server instance.

Note that this also addresses the concern identified above with some UDP server applications. If such a server application is configured to the TCP/IP stack to be bound to a specific IP address, the problem of SOURCEVIPA causing a response to use a source address that is different from the one specified on the corresponding previous request goes away, because the socket is bound solely to the designated address.

The specified address can also be a Dynamic VIPA, and need not already be active on the stack at the time that the application establishes its listening socket. In other words, applications that bind to INADDR_ANY can now use application-initiated Dynamic VIPAs, with all the benefits of such use, including the ability to restart the application on another OS/390 image (with an appropriate TCP/IP configuration already in place) and have the Dynamic VIPA move with the application. This configuration is available for both TCP and UDP applications, because the PORT statement differentiates between the two.

</quote>

Normally if I see someone either in IBM-MAIN or IBMTCP-L - obviously only the threads which catch or retain my attention - suffering under the delusion that they are obliged to pluck a non-standard port number out of the aether in order to run one of two server applications in order to connect with which the client will default to trying to use the same port number, I endeavour to encourage the use of VIPAs and the PORT statement entry BIND parameter so kindly introduced by IBM with APAR PQ37421 - so long ago. One more time won't hurt!

Chris Mason

----- Original Message ----- From: "Edward Jaffe" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Saturday, August 04, 2007 12:38 AM
Subject: Re: OMVS


Mark Zelden wrote:
So if I opened a dos window on my win-doze system and wanted to use
telnet to get into z/OS UNIX (or used a telnet client), how would it know where to go to?


Which server you get depends on entirely which host IP address you use when you connect. That's the beauty of it.

--
Edward E Jaffe

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to