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