616 Novell eDirectory 8.8 Administration Guidenovdocx (en) 11 July 2008The directory agent’s job is to provide a long-term persistent cache for advertised services, and toprovide a point of access for user agents to look up services. As a cache, the DA listens for SAs toadvertise new services, and caches those notifications. Over a short time, a DA’s cache will becomemore complete. Directory agents use an expiration algorithm to expire cache entries. When adirectory agent comes up, it reads its cache from persistent storage (generally a hard drive), and thenbegins to expire entries according to the algorithm. When a new DA comes up, or when a cache hasbeen deleted, the DA detects this condition and sends out a special notification to all listening SAs todump their local databases so the DA can quickly build its cache.In the absence of any directory agents, the UA will resort to a general multicast query that SAs canrespond to, building a list of the requested services in much the same manner that DAs use to buildtheir cache. The list of services returned by such a query is an incomplete and much more localizedlist than that provided by a DA, especially in the presence of multicast filtering, which is done bymany network administrators, limiting broadcasts and multicasts to only the local subnet.In summary, everything hinges on the directory agent that a user agent finds for a given scope.C.2.1 Novell Service Location ProvidersThe Novell version of SLP takes certain liberties with the SLP standard in order to provide a morerobust service advertising environment, but it does so at the expense of some scalability.For example, in order to improve scalability for a service advertising framework, we want to limitthe number of packets that are broadcast or multicast on a subnet. The SLP specification managesthis by imposing restrictions on service agents and user agents regarding directory agent queries.The first directory agent discovered that services the desired scope is the one that a service agent(and consequently, local user agents) will use for all future requests on that scope.The Novell SLP implementation actually scans all of the directory agents it knows about looking forquery information. It assumes a 300-millisecond round trip time is too long, so it can scan 10 serversin about 3 to 5 seconds. This doesn't need to be done if SLP is configured correctly on the network,and OpenSLP assumes the network is in fact configured correctly for SLP traffic. OpenSLP’sresponse timeout values are greater than that of Novell’s SLP service provider, and it limits thenumber of directory agents to the first one that responds, whether or not that agent’s information isaccurate and complete.C.2.2 User AgentsA user agent takes the physical form of a static or dynamic library that is linked into an application.It allows the application to query for SLP services.User agents follow an algorithm to obtain the address of a directory agent to which queries will besent. Once they obtain a DA address for a specified scope, they continue to use that address for thatscope until it no longer responds, at which time they obtain another DA address for that scope. Useragents locate a directory agent address for a specified scope by:1. Checking to see if the socket handle on the current request is connected to a DA for thespecified scope. (If the request happens to be a multipart request, there may already be a cachedconnection present on the request.)2. Checking its local known DA cache for a DA matching the specified scope.3. Checking with the local SA for a DA with the specified scope (and adding new addresses to thecache).