[comp.os.mach] port death notifications and nmserver

hue@netcom.UUCP (Jonathan Hue) (08/23/89)

Can anyone tell me the reason the net message server delays port death
notifications?  There is a delay between the time it receives a port
death notification locally, and the time it tells other net message
servers about it.  Why not just tell them immediately?


-Jonathan

Daniel.Julin@CS.CMU.EDU (08/23/89)

> Excerpts from netnews.comp.os.mach: 23-Aug-89 port death notifications
> an.. Jonathan Hue@netcom.UUCP (276)


> Can anyone tell me the reason the net message server delays port death
> notifications?  There is a delay between the time it receives a port
> death notification locally, and the time it tells other net message
> servers about it.  Why not just tell them immediately?


> -Jonathan

The fundamental problem is that in order to deliver port death
notifications reliably, the netmsgserver managing receive rights for one
network port would really need to have a list of all the hosts that hold
send rights for that port. Since one host holding send rights can give
send rights to another host without contacting the host holding receive
rights, we have always felt that maintaining such a list would create an
unacceptable overhead. 

So we have made a compromise: when it receives a local port death
notification, the netmsgserver immediately broadcasts a port death
message over the network. If all concerned network servers receive that
broadcast message, all is fine, and they immediately generate a port
death notification for their local clients. For netmsgservers that miss
that broadcast, and for the case when a whole machine crashes without
having a chance to send port death messages, there is another mechanism:
port checkups. Each host periodically (about every 5 mins) polls all the
hosts that hold receive rights for ports that it holds send rights for.
This checkup message contains a list of all the ports that the target
host is believed to manage. If any discrepancy is found, a port search
procedure is initiated, and the appropriate port death notifications are
generated if needed.

The upshot of this scheme is that, if you are lucky, you'll get port
death notifications at once. If you are not, you'll get the notification
five minutes later. Note that if you try to send a message to a dead
port, you will quickly get a port death notification, because a port
search procedure will be triggered by the fact that the intended
receiver does not know about the port. In practice, this behaviour has
never seemed to cause difficulties.

Note also that there are two common problems that will cause broadcast
messages to always be lost:
- if your netmsgserver cannot correctly figure-out the address to use
for broadcatss on your network
- if you have a complex network with gateways, routers, repeaters, or
whatever, and those devices do not transfer broadcasts between subnets. 

-- Daniel --