[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference azur::mcc

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.RTitleUserPersonal
Name
DateLines
2213.1manager's answerTOOK::MATTHEWSFri Jan 31 1992 09:3130
    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.2Applications Architecture - for the PING directiveMOLAR::ROBERTSKeith Roberts - DECmcc Toolkit TeamFri Jan 31 1992 17:2118
  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.3Maybe this could help... JOPPA::BALLMon Feb 03 1992 11:3433
/* -------------------------------------------------------------------------- */
/* ////////////////////////// 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
/* -------------------------------------------------------------------------- */
/* ////////////////////////////////////////////////////////////////////////// */
/* -------------------------------------------------------------------------- */