[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | DECmcc user notes file. Does not replace IPMT. |
Notice: | Use IPMT for problems. Newsletter location in note 6187 |
Moderator: | TAEC::BEROUD |
|
Created: | Mon Aug 21 1989 |
Last Modified: | Wed Jun 04 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 6497 |
Total number of notes: | 27359 |
2213.0. "Low-overhead way to determine if DECnet is alive" by CUJO::HILL (Dan Hill-Net.Mgt.-Customer Resident) Tue Jan 28 1992 14:46
One of my customer's many requirements for network management involves
a quick means of determining if a node is alive or not. This is
currently accomplished using a program which speaks several protocols,
depending on the node being monitored.
Because NML is so incredibly slow and has such high overhead
requirements for this simple task, the monitoring program simply does a
channel assign to the remote node and checks for the existance of
DECnet OBJECT 255. If "No such object" error is returned, then DECnet
is proven to be alive. If not, then problems exist.
( Please see the code that follows below )
ADVANTAGES:
1. Very fast means of determining if DECnet is alive.
2. Zero overhead, as opposed to THREE NML process (initially) for
every DECmcc Director requesting DECnet IV info from the node.
3. Serves the "node-is-alive quick-check" requirement very nicely.
DISADVANTAGES:
1. Some day OBJECT 255 will be used.
QUESTIONS:
1. How hard would it be to incorporate this code into the DECnet
Phase IV AM?
2. If incorporating this feature is out of the question, what is
the possibility of acquiring the DECnet IV AM source to be
customized for our customer only, perhaps producing a new
AM for this purpose only, supported by our group ?
---------------------------------------------------------------------
Routine Check if DECnet is Alive
---------------------------------------------------------------------
Author: Jim Gay (CUJO::GAY)
----------------------------
(rest of program precedes this routine)
/*
* If node name from table uses DECnet then assign to it
*/
if((node_table[index1].flags == 3) &&
(node_table[index1].scan_decnet == 1))
{
decnet_old_state = node_table[index1].decnet_state;
sprintf(Nml_Name,"%s::"\"255=\"".node_table(index1.decnet_addr
ess);
Nml_Dsc.Length = strlen(Nml_Name);
Nml_Dsc.Address = &Nml_Name;
Status = SYS$ASSIGN (&Nml_Dsc,
&Nml_Chan,
0,0);
if (Status == SS$_NOSUCHOBJ)
{
node_table[index1].decnet_state = 1;
}
else
{
node_table[index1].decnet_state = 0;
}
if(decnet_old_state != node_table[index1].decnet_state)state_chan
ged_flag = 1;
}
(rest of program follows this routine)
---------------------------------------
As you can see in the last line, a flag can even be set to determine
if the node's state has changed. This could be used to allow icons to
change color when a node is "dead", and to clear when the node is
"alive" again.
T.R | Title | User | Personal Name | Date | Lines |
---|
2213.1 | manager's answer | TOOK::MATTHEWS | | Fri Jan 31 1992 09:31 | 30 |
| Dan, It would not be too hard to include your code fragment in
DNA4 AM. However, we would need to make some modifications to
make it work in the CMA threads environment we exist in. We
would need to run a verification for memory leaks to make sure
we didn't break something.
I think this is an excellent suggestion for post v1.2. I expect
that you are going to be frustrated with that answer. Let me
explain. We are freezing all code changes to DNA4 AM on Feb. 14.
The people who are doing DNA4 AM changes are working 10+ hour
days to get everything that is currently scheduled done. We also
need to minimize the risk of last minute changes for any
component breaking the systems builds. There is no way I can
justify adding additional work 2 weeks before a functional
freeze.
I can consider doing further work after the freeze and putting it
in a seperate CMS branch and once V1.2 has been shipped rolling
the new branch into the main line. For a specific customer (ie.
yours), we can then have a special DNA4 AM that represents
your functionality increase.
That accomplishes your immediate need. Once we have fully tested
the change in the customer site, we can make the upgraded DNA4 AM
available internal to DEC for additional testing, etc.
If this is an acceptable solution please contact me via mail and
lets work out the details.
wally
|
2213.2 | Applications Architecture - for the PING directive | MOLAR::ROBERTS | Keith Roberts - DECmcc Toolkit Team | Fri Jan 31 1992 17:21 | 18 |
|
For v1.2 the toolkit has prepared the Example FM which implements the
PONG directive. Simply put, the Example FM calls the Sample AM's
SHOW IDENT directive and times the response. If it takes too long you
get an event. The code is pretty generic.
I would like to see an architected directive called PING (or maybe theres
a better name). This directive would be generic and function pretty much
as I described for the Example FM. Every global entity would get this
directive for free -- that is they don't have to write any special code to
get it. Their Show Identifiers directive would 'tickle' their entity.
The call could be timed out, resulting in a timeout-event; entity dead.
Now -- if you have a better technology specific way of determining if your
entity is alive, then *you* implement the PING directive yourself. You just
have to follow the guidelines of the PING directive.
/keith
|
2213.3 | Maybe this could help...
| JOPPA::BALL | | Mon Feb 03 1992 11:34 | 33 |
| /* -------------------------------------------------------------------------- */
/* ////////////////////////// Simple Check ////////////////////////////////// */
/* -------------------------------------------------------------------------- */
Hi -
I'd like a stab at this. The DNA4-AM currently has code to do
this work. We could just remove those sections needed and take Keith's
suggestion and create a ping directive. The steps are as follows straight from
the AM.
( 1 ) Build a network control block
( 2 ) Connect to the entity
( a ) Check the various status if not normal
( b ) Check to see if this is a phaseiv or phasev node
( 3 ) update our table accordingly
/* ----------------------------- */
/* //// We could stop here //// */
/* ----------------------------- */
---> OR MORE <---
( 4 ) send our message which is a SHOW IDENT to the NODE4
( 5 ) Read our reply from that NODE4
( 6 ) update our table accordingly
- darryl
/* -------------------------------------------------------------------------- */
/* ////////////////////////////////////////////////////////////////////////// */
/* -------------------------------------------------------------------------- */
|