Hal,

This response has been due for nearly a month. I needed to be sure about the
PPT SYST attribute before responding - see the SYST thread - and then I got
waylaid with other stuff - sorry.

If you had two machines (Central Electronic Complexes (CECs) is the formal
language I believe), couldn't LPARs on one be the backup for LPARs on
another in a parallel sysplex? Maybe that'll feature in your "hot takeover".
In other words I'm looking at the hierarchy of failure situations:

1. application
2. operating system
3. LPAR
4. machine

You said you suffered from 1 (your IPL solution also covers 2) and 4 but
never 3. Here I'm mentioning that dynamic VIPA can help you with 4 even if a
fast IPL covers 1, 2 and 3. I guess it depends on your application but I
would expect that, in many/most cases, restarting an application on another
LPAR waiting with a live operating system was faster than IPLing.

I've taken the simple view that one application has one IP address. Your use
of the word "application" seems to consider composite "applications" with
internal client-server relationships where components might be split onto
different LPARs.

> The applications do not BIND as far as we can see, ...

I think I'm right in saying there is always a "BIND". Certainly for "server"
programs[1], that is those programs where the initial contact is from the
communicating partner, there must be a known IP address (and port) which the
"client" making the connection (TCP)/initiating the transaction (UDP)
specifies in the initial packet. Setting up this IP address and port is
achieved by the bind() call.

[1] For "client" programs using the connect() call, there is an implicit
bind() call made "within" the connect() call.

Because there is always a bind() call and because the server program will
always specify INADDR_ANY, that is 0.0.0.0 - let us stick to traditional IP
V4 for now, as the IP address (except when there is some customization for a
specific address - which need not be specified), the PORT statement BIND
parameter can always be used to specify a dynamic VIPA so that the VIPA
becomes active with the program and becomes inactive with the program.

Have I misunderstood something here concerning the lack of "BIND"? This is
important since I wouldn't want anyone reading this to get confused over
something so basic and vital for the use of dynamic VIPA. Maybe there is an
issue with the only, as far as I know, alternative for server programming
with is the PASCAL API. It may be that the PORT statement BIND parameter
doesn't work with the PASCAL API.

It's good that your automated VIPADEFINE and VIPADELETE work for you. An
OBEY solution looks a bit complicated compared to the "official" way to
"move" a VIPA associated with an application rather than associated with the
LPAR itself. This is one of the following:

a. You can ensure that the associated VIPA is "active" when the application
is running by making the VIPA the value of the BIND parameter of the PORT
statement for the server application. The VIPA would be defined using a
VIPARANGE statement (VIPARANGE BIND in D TCPIP,,NETSTAT,VIPADYN messages)

b. Alternatively, you can ensure that the associated VIPA is "active" when
the application is running by adding a job step at the beginning of the
server application procedure which "activates" the VIPA. The job step would
contain the MODDVIPA program with "-c" specifying the VIPA. A job step
should also be added at the end containing the MODDVIPA program with "-d"
specifying the VIPA. This VIPA would also be defined using a VIPARANGE
statement. (VIPARANGE IOCTL in D TCPIP,,NETSTAT,VIPADYN messages)

c. An alternative to b is to have the application running on more that one
LPAR and use your automation simply to issue the appropriate MODDVIPA
command - or run a MODDVIPA procedure with suitable parameters.

OSPF picks up on a VIPA being added to the HOME list and advertises the
VIPA. As discussed in a spin-off topic in this thread you can ensure that
the VIPA is advertised all by itself to the "backbone" router - in a typical
network design - by use of the Advertise_VIPA_Route=HOME_ONLY parameter of
the generic VIPA OSPF_Interface statement. (As is made clear in the spin-off
conversation, I haven't actually tried this since the parameter is too new -
but I proposed it based on a clear hole in OMPROUTE support, a hole now
apparently filled.)

If you wish I can send you my report which attempts to describe VIPAs - at
the time of writing 2001. I detect you may have preferred to use MODDVIPA.
With the aid of this report - written out of frustration with the official
descriptions, so much good stuff so poorly described - you may find more
comfortable ways to "activate" and "deactivate" your VIPAs.

Since you regret that your applications do not support ARM, I guess you are
operating a parallel sysplex. It is not actually necessary that an
application incorporates support for ARM to be able to benefit from it. At
the time I was examining the possibilities of dynamic VIPAs, it was quite a
mystery to me that the ARM API was supplied but not some simple utilities so
that it could be used by applications that did not imbed the ARM function.
(This is in contrast to MODDVIPA where all of an API (the ioctl() call), a
command and an utility are supplied.) As a result of asking about the PPT
SYST attribute, I have been informed that an utility ARMWRAP had indeed been
created as part of a redbook (or redpaper) project either back in 2000 or
2002 - it's not quite clear when. Back in 2001, in order to verify the
suitability of ARM for use with dynamic VIPA, I created an ARM REGISTER
utility and an ARM DEREGISTER utility. These were actually quite simple
little assembler programs and, reading the notes I left for using these
programs, I see that the reason the utilities can be simple is that the
complicated stuff is contained in the ARM policy.

The reason I delayed this response is that I wanted to be sure that I could
talk about removing the PPT SYST attribute without leading anyone into
difficulties. (See the "SYST" topic thread.) It appears that SYST can be
removed as long as you add TIME=1440 (or NOLIMIT) to the EXEC statement for
the PPT (SCHEDxx) PGMNAME entry. If you need to use the ARMWRAP utility (or
the MODDVIPA utility) in an existing procedure, you will need to add a job
step *before* the existing step and a job step *after* the existing step.
This breaks one of the SYST rules, hence the need to remove it.

I can assure you that ARM works. If you call up www.ibm.com and enter
ARMWRAP in the Search field, you will get the ARM redpaper as the first
"hit". (The "Additional Material" link takes you where you can download the
ARMWRAP program.) How to "wrap" your existing program with the ARMWRAP
utility is explained in probably as much detail as you need in 6 pages.

VIPAs die only if OSPF in your routers says they are dead. I guess that's
what you meant :-) - but you don't use OSPF you have static routes so who
kills the routing entries pointing to the "dead" LPAR or, better expressed,
"moves" the routing entries to point to the "live" LPAR?

Where DNS can help in failure situations is in providing multiple
destination addresses for a particular name. Thus a well-written client
program can try the next address in the list in the structure returned by
the gethostbyname() call if there is a failure on the current address it is
trying. You don't need VIPAs for this - although the addresses which are
tried may well be static VIPAs.

Chris Mason

----- Original Message ----- 
From: "Hal Merritt" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Thursday, 23 February, 2006 5:45 PM
Subject: Re: TCP/IP over Cisco router CIP


> See imbedded.
>
> Note: I make the statement 'we have never had an LPAR failure' which is
> not completely true. We have had a machine failure, and we have had
> catastrophic failures of our most loved online application. In each case
> we simply IPL'ed and we were back on the air in much less time that it
> would take to move to another LPAR. That said, we *are* moving to some
> sort of 'hot takeover' strategy and we expect VIPA to be an important
> component.
>
> So, the statement is meaningful in this specific context.
>
> Hal
>
>
> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On
> Behalf Of Chris Mason
> Sent: Thursday, February 23, 2006 7:45 AM
> To: [email protected]
> Subject: Re: TCP/IP over Cisco router CIP
>
> Hal,
>
> I'm pretty sure you are using VIPA as I would expect but a couple of
> clarifications might help.
>
> I think you may have missed a word out in your sentence "So, you assign
> as
> many VIPA addresses as you need to each application." Perhaps this
> should be
> "So, you assign as many VIPA addresses as you need, one to each
> application." I can't see you would need multiple VIPAs for one
> application.
>
> >>All depends on the application. An application may have components
> that intercommunicate via IP and these components could wander from LPAR
> to LPAR. That would be two or even more: one to access the target
> component, and one for the component to access another component(s).
> IIRC, DB2 does this.
>
> You describe associating the existence of a VIPA with the application
> such
> that, when the application begins, the VIPA exists and, when the
> application
> ends, the VIPA no longer exists. Just as a matter of curiosity really,
> do
> you do this by means of the PORT statement BIND parameter - as John
> Giltner
> appears to - or do you use a job step which calls the MODDVIPA program
> or,
> possibly, some other automation based on the moddvipa command in order
> to
> introduce and remove the VIPA to and from the appropriate LPAR.
>
> >>>Even more simple. The applications do not BIND as far as we can see,
> so we use VIPADEFINE and VIPADELETE via canned OBEY files. These OBEY
> files are invoked via semi automated scripts or sometimes written,
> manual procedures. I could not get the MODVIPA process to work to suit
> me.
>
> And now I've thought of another question: Do you use the Automatic
> Recovery
> Manager (ARM) function in order to restart an application in another
> LPAR
> following a failure? To my mind dynamic VIPA and ARM tend to go
> together.
>
> >>Nope. That would be ideal, but, again, our applications do not support
> that. We have never had an LPAR failure, so we are not 100% sure this
> will work: the thought is that upon an LPAR failure, the VIPAs die right
> along with the operating system. The VIPADEFINEs would then be executed
> on the take over LPAR and we rock on. When the dead LPAR regains life,
> it comes up without the VIPAs active so there is no conflict.
>
> There was an issue with VIPAs and OMPROUTE OSPF dynamic routing. Ideally
> it
> should be possible to advertise a VIPA using a "host", single (the VIPA
> itself) address rather than a subnet range. When I examined setting this
> up
> in 2001, the last time I consulted on this topic, I seem to recall this
> ideal was not possible. Has anything changed or is it still necessary to
> assign, say, 4 addresses to each dynamic VIPA in order to advertise
> availability of individual dynamic VIPAs outside the LPAR? Of course,
> the
> waste may not really be a problem when assigning addresses from, say,
> network 10 in an intranet.
>
> >> Not an issue. We currently use only static routes. Not clear how the
> network folks deal with the wandering VIPAs. I am aware that there is a
> DNS in the mix somewhere.

----------------------------------------------------------------------
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