LCUP show stopper
"Kurt D. Zeilenga" <[email protected]> Mon, 02 Jun 2003 16:11:08 -0700
| Newsgroups | gmane.ietf.ldup |
|---|---|
| Message-ID | <[email protected]> |
To LCUP, Let us try to describe what we consider to be the primary show-stopping issue in the draft-ietf-ldup-lcup proposal. For convenience, we will refer to this below as LCUP. LCUP expects server implementations to maintain sufficient history so that they provide incremental refreshes of content instead of full reloads on subsequent client requests. For subsequent client request, full reloads should be the exception not the norm. We argue that full reloads will actually be more of the norm, certainly not limited to rare exceptions. As you know, we think it is not reasonable to require servers maintain history information in order to support LCUP. That forces a particular design choice which may be counter to other design factors, such as scalability. However, we will focus our discussions on servers which choose to maintain some amount of historical information. We think LCUP misjudges the completeness of history information that would need to be maintained to avoid reloads in the general case and the complexity of computing the clients state based upon that history (in order to determine what "deletes" need to be sent). Complete history implies that server can compute the client's state and generate the smallest amount of traffic to converge the client's state to server's state based upon the information contained in the cookie. Of course, if we were to assume complete history, we could do much better than sending complete copies of entries. Sufficient history implies that the server is able to determine which entry update and delete messages need to be delivered to the client to converge its state to that of the server. Determining which entries need updating requires no history, the server can simply send all entries presently meeting the search criteria that have been updated since the previous request (based upon time stamps). However, determining which delete messages to send requires history. Minimally, the server needs to a) maintain history about deleted entries and b) track the time each entry was modified and/or renamed, and send a delete message for each entry deleted or modified since the previous content was provided. That is, without additional history, the server has to assume that all deletes, modifications, and renames affected entries to leave the result set. This is problematic as the server has to force a reload as a result of modifications which are not and were not ever of interest to the application. That is, when a client is interested in 100 entries of a 1,000,000 entry context and 10,000 (1%) were modified since the last refresh, the server would have to prove most of these 10,000 entries were not previously in the result set otherwise return an error indicating a full reload was required. This is because 1 update (1% of 100) and 9,999 delete messages are likely far more traffic than 100 full entry messages. Now, a server could maintain additional information about entry renaming. Then it could prove which entries could not possibly be in the search's scope and trim out those "deletes". However, unless it maintained history of entry modifications (and other changes in entry visibility based upon other factors), the server would still have to send deletes for all modified entries which are in scope regardless of whether they currently match the search criteria. That is, without entry modification history, if the scope was subtree covering 10% of the context (as described above), then 9000 of the deletes could be eliminated. The server would still have to send 1 update + 999 deletes. If we assume 1K entry size (common for many directories), that's about the same amount of traffic as required for a full reload. As another example, let's look at two general history maintenance mechanism common in existing servers, tombstones and changelogs. LDAP servers supporting these mechanisms generally do not maintain history of old attribute types and values of modified or deleted entries and, hence, cannot compute after an update operation an entry's previous state. If the server cannot compute the entry's previous state, it cannot generally compute whether that entry was previously in the LCUP result set. It must assume that it was. Hence, even where no or few modified or deleted entries were previously in the result set, the server is forced to either send delete messages for all of these entries or cause a full reload. LCUP does not provide a reasonably efficient solution for the LDAP servers maintaining history information through common practices. The first example was intended to be illustrative of one of many use scenarios. As a general solution to the client update problem, we believe LCUP needs to work well in a wide variety of use scenarios having different characteristics in factors like total number of entries, the amount of changes, the percent of in-scope entries, the percent of entries in the result set and average entry size. The second example was intended to illustrate that history information currently maintained in today's LDAP servers is not "sufficient history" for LCUP purposes. Basically, LCUP requires vendors to maintain "sufficient history" (significantly more than servers currently maintain today for other purposes) when in many use scenarios that history is ineffective in reducing traffic. And in use scenarios where that history might be effective, the protocol doesn't allow the server to fully take advantage of that history (because it doesn't support entry change deltas). It is our opinion that LCUP is generally not more suitable than persistent search solutions it was intended to replace, while coming at a significantly higher implementation cost (the cost of maintaining/using "sufficient history"). After 3 years of LCUP engineering, we don't yet have "running code". Our (Jong and Kurt's) own efforts to develop a LCUP prototype were stopped shortly after we concluded LCUP was unsuitable. We are currently pursuing a technical alternative. Kurt and Jong