|
|
1.1 root 1: % -*-LaTeX-*-
2: % Converted automatically from troff to LaTeX by tr2tex on Wed Nov 1 11:45:09 1989
3: % tr2tex was written by Kamal Al-Yahya at Stanford University
4: % (Kamal%[email protected])
5:
6: % Then severly hacked by CJR
7:
8: \documentstyle{article}
9: %
10: % input file: duug.ms
11: %
12: % pic |troff -ms
13: %.nr PS 12
14: %.nr VS 14
15: %.ND
16:
17: \title{Directory navigation in the Quipu X.500 system}
18: \author{Paul Barker\\
19: Colin J. Robbins}
20: \date{12th October 1989}
21: \begin{document}
22: \maketitle
23:
24: \begin{abstract}
25: %.nh
26: OSI Directory Services have recently been standardised according to the
27: X.500 / IS 9594 standard. This first part of this paper gives a
28: brief overview of the Directory Services model.
29:
30: Quipu [1][2] is one of the first implementations of the X.500 standard and
31: has been developed at UCL.
32: \footnote{
33: The work was originally funded by under the European Strategic
34: Program for Research
35: into Information Technology (ESPRIT). Quipu was developed as a deliverable
36: for INCA, project 395. Quipu is currently funded by the U.K. Joint Network
37: Team.
38: }
39: Quipu is
40: publicly available as part of the ISODE [3] package.
41:
42: One of the key aspects of Directory Services not fully specified
43: in the standard is that of managing the distribution of the Directory. The
44: approach taken by the Quipu system in representing Directory knowledge and
45: handling Directory navigation across heterogeneous networks is described
46: here. The issues raised by this are discussed.
47:
48: KEYWORDS: OSI, Directory, Quipu, Distributed System, Navigation.
49: \end{abstract}
50:
51: \section{Introduction}
52:
53: The first part of this paper introduces
54: OSI Directory Services. These have recently been standardised according to
55: the CCITT
56: X.500 recommendations / ISO 9594 International Standards [4]. This paper
57: gives a very brief overview of the standards framework.
58:
59: The remainder of the paper discusses the approach taken by Quipu with regard
60: to directory navigation. The discussion focusses on how Quipu attempts to
61: provide a robust and efficient service, given less than fully reliable,
62: heterogeneous networks.
63: \section{Overview of Directory Services model}
64:
65: The OSI Directory is intended to support human user querying, allowing
66: users to find, inter alia, telephone and address information of
67: organisations and other users.
68:
69: It is also intended to support electronic
70: communication such as message handling systems and file transfer.
71: The Directory provides name to address mapping to support, for example, OSI
72: presentation address look-ups. Message handling systems will be provided with
73: support for user-friendly naming, security and
74: distribution lists.
75: \subsection{Directory characteristics}
76:
77: \begin{figure}
78: \begin{minipage}\columnwidth
79: \small
80: \input{figure1}\relax\centerline{\box\graph}
81: \end{minipage}
82: \end{figure}
83:
84: In essence the Directory is a database with certain key characteristics.
85: \begin{itemize}
86: \item[{1.}]
87: The Directory is intended to be very large and highly distributed. It is
88: anticipated that the Directory will be distributed largely on an
89: organisational basis.
90: \item[{2.}]
91: The Directory is hierarchically structured, the entries being arranged in
92: the form of a tree. Entries near the root of the tree will usually represent
93: objects such as countries and organisations, entries at or near the leaves
94: of the tree will represent people, equipment or application processes.
95: \item[{3.}]
96: Read and search operations will dominate over modification operations.
97: \item[{4.}]
98: Temporary inconsistencies in the data are acceptable. This greatly
99: facilitates the replication of data in the Directory by obviating concerns
100: about record locking and atomic operations.
101: \end{itemize}
102: \subsection{Directory Object Model}
103: The Directory can be decomposed into objects as in figure 1.
104: A user accesses the Directory by means of a
105: \it
106: Directory User Agent
107: \rm
108: (DUA).
109: The DUA communicates with the Directory by using
110: \it
111: Directory Access Protocol
112: \rm
113: (DAP).
114:
115: \begin{figure}
116: \begin{minipage}\columnwidth
117: \small
118: \input{figure2}\relax\centerline{\box\graph}
119: \end{minipage}
120: \end{figure}
121:
122: The Directory comprises a collection of
123: \it
124: Directory System Agents
125: \rm
126: (DSAs). Each
127: DSA has an associated database which holds some portion of the global
128: database. The
129: DSAs cooperate to provide the Directory Service. The DSAs communicate with
130: each other by using
131: \it
132: Directory System Protocol
133: \rm
134: (DSP).
135:
136: The distributed operation of the Directory is implemented by using one or
137: more of the following modes of operation:
138: \begin{itemize}
139: \item
140: Chaining is where a DSA passes an operation onto a further DSA, awaits the
141: response, and passes it back to the initiating DUA.
142: \item
143: Referral is where a DSA returns a reference to another DSA back to the
144: initiating DUA or DSA. This reference consists of the name of another DSA
145: which the operation might be passed to.
146: \item
147: Multicasting is where a request is broadcast to several DSAs, which may
148: then collectively resolve the request.
149: \end{itemize}
150: The combination of these modes of operation used by the Quipu implementation
151: are discussed later.
152: \subsection{Structure of the Directory}
153:
154: It was noted earlier that the Directory is organised
155: hierarchically in the form of
156: a tree. The Directory database is usually referred to as the
157: \it
158: Directory Information Tree
159: \rm
160: (DIT).
161:
162: The overall structure of the DIT is shown in figure 2.
163:
164: The hypothetical
165: entries illustrate the hierarchy of the Directory and how entries are named
166: within the Directory. At each point in the Directory, entries are
167: differentiated by unambiguous
168: \it
169: Relative Distinguished Names
170: \rm
171: (RDNs). Thus, in figure 2, ``C=GB'' and ``C=NL'' are RDNs under the root of the
172: DIT.
173: An entry's
174: \it
175: Distinguished Name
176: \rm
177: is derived by concatenating all the RDNs of the entries from the root of the
178: tree to the entry itself.
179:
180: Each entry may be further decomposed as shown in figure 3.
181: \begin{figure}
182: \begin{minipage}\columnwidth
183: \small
184: \input{figure3}\relax\centerline{\box\graph}
185: \end{minipage}
186: \end{figure}
187:
188: An entry comprises a set of attributes, which in turn consist of a type and
189: a value or set of values. It should be noted that an entry's distinguished
190: name is merely a special attribute type-value pair. For example, an entry
191: for a human being will have, inter alia, an attribute type
192: \it
193: Common Name.
194: \rm
195: This attribute will often be multi-valued. The Common Name attribute for
196: Steve Kille's entry might take the values ``Steve Kille'', ``Stephen E. Kille''
197: and ``S. Kille'' with ``Steve Kille'' being the distinguished value.
198:
199:
200: \subsection{Accessing the Directory}
201:
202: A user makes use of the Directory by means of the
203: \it
204: Directory Abstract Service.
205: \rm
206: The services provided are grouped into three
207: \it
208: ports,
209: \rm
210: the read port, the search port and the modify port.
211:
212: The read and search
213: ports provide querying facilities onto the Directory. It is possible to
214: read or compare an entry identified by its distinguished name. The powerful
215: search operation allows querying of entire sub-trees, returning specified
216: attributes for all entries which satisfy the criteria specified in the search
217: arguments. This allows entries to be identified by attributes other than
218: just the distinguished name and thus provides users with a highly flexible
219: mechanism for identifying entries and retrieving information
220: from the Directory.
221:
222: Modification operations allow the addition and removal of
223: entries from the DIT, the amendment of entries and the renaming of entries.
224: \subsection{Other aspects Of Directory Services}
225:
226: There are many aspects of the Directory Services standard which cannot be
227: described in detail. Such aspects include:
228: \begin{itemize}
229: \item
230: Access control
231: \item
232: Authentication
233: \item
234: Service controls
235: \item
236: Schemas
237: \item
238: Use of OSI
239: \end{itemize}
240:
241: \section{Distributed Operations in Quipu}
242:
243: The remainder of the paper focusses on the issue of distributed operations.
244: As the Directory is widely distributed,
245: \it
246: knowledge
247: \rm
248: must be maintained of how the DIT is distributed amongst the collection of
249: DSAs which comprise the Directory. The standard does not specify how this
250: knowledge should be represented in the Directory.
251: The approach followed by Quipu is discussed.
252:
253: It was noted earlier that the model allows for several modes of interaction
254: between DSAs as they cooperate to service requests made by DUAs; namely
255: chaining, referral and multicasting. The approach used by Quipu is discussed,
256: with particular reference to the problem of coping with the situation where
257: the DIT is fragmented into DSAs on disjoint networks.
258: \subsection{Directory Service requests requiring distributed operation}
259:
260: When considering the effects of directory distribution, there are four
261: possible results which can result from a request being presented by a DUA to
262: the DSA at the directory access point.
263: \begin{itemize}
264: \item[{i)}]
265: The request may be satisfied locally.
266: \item[{ii)}]
267: The ``local'' DSA may be able to determine that the request cannot be serviced
268: by any DSA. The directory knowledge indicates that the entry required would
269: be held in that DSA if such an entry existed. In this case the DSA would
270: return a
271: \it
272: name error
273: \rm
274: to the DUA.
275: \item[{iii)}]
276: A request is made to the local DSA which requires navigating down to
277: a sub-tree not
278: held locally. A set of references is acquired
279: indicating other DSAs which might be able to
280: satisfy the request.
281: \item[{iv)}]
282: A request is made which requires navigating to a higher point in the tree
283: than that held locally. The addresses of DSAs nearer the root must be found
284: from local tables.
285: \end{itemize}
286: The rest of the paper discusses how Quipu proceeds in cases iii and iv above.
287: \subsection{Representing directory knowledge}
288:
289: Case iii above requires the existence of knowledge information. This is
290: information which a DSA has about which entries it holds and how to locate
291: other entries in the Directory.
292: The standard does not specify how or where this knowledge is stored.
293: Quipu takes the approach that the OSI Directory itself should be used, and
294: stores the knowledge in the DIT.
295:
296: The first step in storing the knowledge is to give every DSA in the
297: directory an entry in the DIT which contains information about the DSA.
298: For example
299: the DSA holding the data for University College London has the
300: distinguished name ``(country=GB, commonname=Vicuna)'', and has the following attributes:-
301: {\small
302: \begin{verbatim}
303: presentationAddress= Internet=128.16.8.50+50987 | X121=23421920030045
304: description= A wild animal of the Alpaca family,
305: description= DSA running on vs1 holding full UCL bit of tree.
306: supportedApplicationContext= x500DAP & x500DSP & QuipuDSP
307: commonName= Vicuna
308: objectClass= quipuDSA & dSA & applicationEntity & top
309: \end{verbatim}\par}
310: The first thing to notice is the name. It is a Quipu convention that all
311: Quipu DSAs are named after endangered South American wildlife. Quipu was
312: originally developed under the aegis of the ESPRIT project, INCA.
313:
314: The above entry enables a DSA to determine the address or addresses of other
315: DSAs.
316: However, a DSA still needs to determine which DSA to
317: contact to answer a particular request. Quipu DSAs achieves this by requiring
318: that every non-leaf object
319: has a ``masterDSA'' attribute, the value of which is the DN of the DSA to
320: contact.
321: It is important to note that Quipu makes an important simplification of the
322: model in this respect. It is assumed that if an entry is held in a DSA,
323: then all sibling entries are held in that DSA. This assumption allows for a
324: relatively straightforward replication mechanism based on Quipu's getedb
325: mechanism. This is discussed in [1].
326:
327: In addition, Quipu has added the concept of
328: \it
329: slave
330: \rm
331: DSAs to the model.
332: These are DSAs which hold a shadow copy of some data, and are prepared
333: to answer requests regarding that data.
334: Thus a non-leaf entry may have ``slaveDSA'' attributes which give the DNs of
335: DSAs that hold such data.
336: \bf
337: \par\vspace{1.0\baselineskip}
338: A Caveat on naming DSAs
339: \rm
340: \begin{quote}
341: Using this approach, care must be taken to name the DSAs high enough in the
342: DIT to prevent looping.
343: For example, consider a DSA holding the subtree for ``(country=GB,
344: organisation=University College London)'' which is named
345: ``(country=GB, organisation=University College London, commonname=Vicuna)''.
346: If an operation attempted to list the subordinates of ``(country=GB,
347: organisation=University
348: College London)'', a referral would have to be made to the DSA
349: ``(country=GB, organisation=University College London, commonname=Vicuna)''.
350: This would require the
351: entry ``(country=GB, organisation=University College London,
352: commonname=Vicuna)'' to be read by the DSA.
353: To read this entry, the DSA would have to know how to navigate to
354: ``(country=GB, organisation=University College London)'' -- but does not know
355: how to do that,
356: without seeing the ``(country=GB, organisation=University College London,
357: commonname=Vicuna)''
358: entry!
359: Thus a (detectable) loop has been created.
360: To avoid this, DSAs should be named at the same level, or higher, in the DIT as
361: the entries they are holding.
362: This has the effect that there are lots of DSAs named at the higher
363: levels of the DIT.
364: \end{quote}
365:
366: When an operation cannot be satisfied locally,
367: a list of DSAs which either master or shadow the information will be
368: generated by looking at these attributes.
369: We will now consider how Quipu chooses DSAs from this list to resolve
370: the request.
371: \subsection{DSA selection criteria}
372:
373: It will be seen that randomly selecting a DSA from a list of possible DSAs
374: is not an optimal strategy. The reasons for this are discussed below.
375: Quipu uses a number of criteria when establishing which DSA it will forward
376: a request to. Rather than picking a single ``best'' DSA, Quipu sorts the list
377: of DSAs into an order of preference.
378: A simple insert sort algorithm is used which successively compares pairs
379: of DSAs to see which is the ``best''.
380:
381: It is worth noting here the reason why Quipu sorts the list of DSAs rather
382: than merely selecting the best DSA. As will be explained in some detail
383: shortly, a Quipu DSA is able to make some assumptions about another
384: DSA's behaviour if it knows that it is a Quipu DSA. The semantics of X.500
385: dictate that a subordinate reference contains a single DSA
386: if a request cannot be
387: satisfied at a given DSA. However, the syntax of X.500 allows more than one
388: DSA
389: to be named in a continuation reference. Quipu sometimes takes advantage
390: of this when communicating with other Quipu DSAs, by passing a
391: \it
392: Quipu-Specific Subordinate Reference
393: \rm
394: (QSSR) which references multiple DSAs. QSSRs cannot always be used
395: as some requests, for example
396: modification operations, and operations which specify the ``don't use copy''
397: service control, must be directed at the sole master DSA. In these cases a
398: standard subordinate reference is used.
399:
400: This section discusses the criteria
401: which are used. The order of discussion indicates the weight given
402: to the criteria. The less important criteria are only used if no preference
403: can be deduced from the more important.
404: \subsubsection{DAP only DSAs}
405:
406: DSAs which do not support DSP impose referral mode when other
407: considerations might tend to favour chaining. This restriveness means that
408: such DSAs are not favoured and any such DSAs
409: are placed at the bottom of the sorted DSAs list.
410: \subsubsection{Prefer a Quipu DSA}
411:
412: The first choice it to select a Quipu DSA.
413: The main reason for this is that the DSAs can then talk over their own
414: application context (rather than the standard X500 DSP context), which
415: allows them to make a few simplifying assumptions, e.g. QSSRs (although
416: the protocol used is the same).
417:
418: This is represented in the Directory by a DSA having the attribute type
419: \it
420: Supported Application Context
421: \rm
422: with a value ``quipuApplicationContext''.
423: \subsubsection{Prefer a reliable DSA}
424:
425: Experience with Quipu-5.0 in which a DSA was chosen effectively at random
426: (but for the same query the same ``random'' DSA would be picked!)
427: showed that the network connections to some DSAs were much more unreliable
428: than others.
429: As a result, a lot of time was spent attempting associations that were almost
430: certain to fail.
431: Thus a mechanism has been introduced which attempts to identify reliable
432: DSAs.
433:
434: To make this choice
435: every DSA holds the following information on each other DSA it tries to
436: contact:
437: \begin{itemize}
438: \item
439: Distinguished name of DSA
440: \item
441: Time of last attempt
442: \item
443: Time of last success
444: \item
445: No. of failures since last success
446: \end{itemize}
447: Every time an association is attempted to a DSA, its DSAInfo is found, and
448: the
449: \it
450: lastAttempt
451: \rm
452: field is set to the current time.
453: If the association succeeds
454: \it
455: lastSuccess
456: \rm
457: is set to the current time, and
458: \it
459: failures-since-last-success
460: \rm
461: is set to zero.
462: If the association fails
463: \it
464: failures-since-last-success
465: \rm
466: is incremented.
467:
468: The notion of
469: \it
470: recent
471: \rm
472: success or failure is used to decide which DSA to prefer. ``Recent'' is in
473: practice the value of the tailorable variable selected to age the cache of
474: connectivity information. It is not at present clear what the optimum
475: timeout period is for aging this information. This area requires further
476: experimentation.
477:
478: The following algorithm is then used to select the more reliable DSA.
479:
480: If both DSAs have been accessed successfully recently, prefer a DSA which
481: has suffered no recent communication failures.
482: If either communication with both DSAs has failed recently, or neither DSA
483: has a record of failure, then some other DSA selection criterion must be
484: used. No attempt is made to discriminate between DSAs on the basis of how
485: recently the successes or failures occurred.
486:
487: If only one of the DSAs has been successfully contacted recently, prefer
488: that DSA unless it also has a record of recent failure. In the case of a
489: recent failure, prefer the other DSA, unless it also failed recently in
490: which case no discrimination can be made.
491:
492: If neither DSA has been contacted successfully recently, some other
493: criterion must be used to choose between the DSAs.
494: \subsubsection{Prefer a close DSA}
495:
496: A close DSA may be preferable for a number of reasons.
497: Network charges may be lower, or non-existent, for proximate DSAs.
498: Physically close DSAs may often be connected by networks offering greater
499: bandwidth. Physically close DSAs may be separated by fewer gateways than
500: DSAs separated by great distances.
501:
502: The following sections suggest 3 ways a
503: \it
504: close
505: \rm
506: DSA may be selected.
507:
508: Clearly it is preferable to choose a DSA on the same local area network,
509: or using
510: the preferred network type if possible.
511: To make this decision, we need a method of addressing DSAs on different
512: networks, that is:
513: \begin{itemize}
514: \item[{i)}]
515: compatible with the standard, that is it can be stored in the ``presentation
516: address'' attribute of a DSA;
517: \item[{ii)}]
518: can supply sub network details.
519: \end{itemize}
520: OSI purists may well be alarmed at this point. Network layer details should
521: be hidden from applications. NSAPs should not contain routing information.
522:
523: However, at present, real users do not use OSI network services. Network
524: services are currently provided largely by TCP/IP and X.25 (1980) networks.
525: These network domains are themselves not fully connected. TCP/IP is often
526: used on LANs which are not connected to the Internet. X.25 domains exist,
527: such as the U.K.'s JANET, which are not fully connected to the international
528: X.25 networks.
529:
530: Until OSI network services are available to and used by almost all users, a
531: work-around solution is required. Kille [5] has defined a mapping between
532: the various network address spaces and OSI presentation addresses. This
533: uses a part of the Telex address space to hold the encoded addresses.
534:
535: Every DSA has a distinguished name and this can be used to select a potentially
536: close DSA.
537: For example, if our DSA is called ``(country=GB, Organisation=University
538: College London, commonname=Tamarin)'', and
539: we have a references to DSAs ``(country=US, commonname=Fruit Bat)'', and ``(country=GB, commonname=Vicuna)'',
540: then on the basis of distinguished names, ``(country=GB, commonname=Vicuna)''
541: is
542: \it
543: likely
544: \rm
545: to be closer.
546:
547: DSAs may be managed in Directory Management Domains (DMD) for accounting
548: purposes. If a DSA is in the same DMD as the requestor, then if may be best
549: to use this DSA in preference to a DSA in a different domain.
550:
551: Quipu does not currently use this as a selector, as the concept of DMD has
552: not been utilised fully in current pilot exercises, thus the selector would
553: always return ``no difference'' when comparing two DSAs.
554: \subsubsection{Need for experimentation}
555:
556: How successful this algorithm is in practice remains to be seen.
557: Quipu-6.0, which attempts to make the above decisions, is about to
558: be released.
559: However successful the algorithm proves to be, one may be fairly confident
560: that the method is better that a random selection.
561: \subsection{Chaining, referrals, multicasting}
562:
563: Having decided which DSA or DSAs to contact to follow references, the
564: decision of which intercation model to use still has to be made. This is
565: now considered.
566:
567: Quipu has a basic framework for interaction between DUA and DSA, and between
568: two DSAs. We will see later that are several situations which force
569: departure from this model.
570:
571: The basic model is as follows:
572: \begin{itemize}
573: \item[{}]
574: If the first DSA contacted cannot satisfy a request, it chains that request
575: on to a second DSA. If the second DSA cannot satisfy the request it sends a
576: referral back to the initial DSA which then chains the request to the
577: referenced
578: DSA. From the viewpoint of the DUA, the model is one of chaining. From the
579: viewpoint of the first DSA, the model is one of referral.
580:
581: \end{itemize}
582: The advantages of this model are as follows:
583: \begin{itemize}
584: \item[{i)}]
585: The work of the DUA is simplified by placing a heavy onus on the DSA at
586: the DUA's access point. All references are
587: followed by the DSA. The DUA only needs a single access point onto the
588: Directory.
589: \item[{ii)}]
590: A corollary of the access point DSA shouldering the burden of chasing
591: referrals is that the DSA is able to cache all the information that it
592: acquires from other DSAs. Caching can dramatically improve performance for
593: all the DUAs and DSAs which communicate with that DSA. Obviously care needs
594: to be exercised as the cache ages and caches have to be purged periodically.
595: Great care also needs to be taken that access control mechanisms are not
596: circumvented by the use of caching.
597: \item[{iii)}]
598: The DUA only needs to be on the same network as its access point DSA. Full
599: connectivity with the Directory can be achieved so long as that DSA can
600: contact other DSAs by chaining or referral. It should be noted that this
601: problem can be circumvented by the use of transport service bridges.
602: \item[{iv)}]
603: The model is a good basis for a charging policy.
604: The best model for charging would be one of DUA referral where all charges
605: could be assigned to the originating DUAs. For reasons already discussed
606: this is not the best model for a variety of other reasons. The DSA referral
607: model provides a reasonable, second best approach.
608: All DUA requests which
609: generate requests across wide area, chargeable networks, are initiated by a
610: single DSA which represents the DUA. It is clearly very difficult to
611: administer a charging policy for any model which allows for a
612: substantial amount of chaining.
613: To cope with this problem, Quipu in fact allows a DSA to ``defend'' itself
614: against chaining requests by setting a ``dsp\_chaining'' variable to ``off''.
615: \item[{v)}]
616: The DSA referral model allows more control over an operation and may be
617: beneficial if some DSAs are not highly reliable. Under the chaining model,
618: if knowledge is fairly minimal, unreliable DSAs may cause part of the DIT to
619: become detached and unreachable. Under the DSA referral model, a local
620: Directory administrator can try and guard against this by ensuring that
621: considerable knowledge is held locally.
622: \end{itemize}
623: It should be noted that the above model cannot always be adhered to. The
624: following reasons all require a different approach.
625: \begin{itemize}
626: \item[{}]
627: Service controls might, for example, be set such that chaining is prohibited
628: whereas the model indicates that a DSA should chain.
629: \item[{}]
630: Some DSA implementations only support DAP although supporting DSP is a
631: requirement of the standard. If such DSAs are referenced when a request
632: cannot be satisfied locally, the request can only be pursued further
633: by DUA referral.
634: \item[{}]
635: It is a fact of life, as noted earlier, that DSAs will
636: be run on disjoint networks. Ensuring that the Directory does not itself
637: become disjointed requires cognisance of the underlying networks when
638: assessing whether to chain or refer a directory request.
639: \item[{}]
640: A basic assumption of the model is that DSAs should trust each other.
641: However, such trust can in practice only be based on DSAs being able to
642: authenticate each other. Quipu does not currently use authentication
643: between DSAs for the following reasons: simple authentication is regarded as
644: being too simple to forge to be worthwhile; strong authentication is
645: time-consuming and requires a framework to manage the requisite certificates.
646: However, the performance of the encryption algorithms has been considerably
647: improved of late and strong authentication is being actively considered for
648: the next release of Quipu.
649: For this reason, Quipu will not perform modification
650: operations over DSP. Thus DSAs must send referrals back to a DUA, whatever
651: the model suggests is the preferred mode of interaction.
652: \end{itemize}
653: \subsection{Chaining preferred}
654: If the above model indicates that chaining is preferred, the following
655: algorithm is then used to finally select a DSA to contact:
656: \begin{itemize}
657: \item[{}]
658: The ordered list of DSAs is searched to see if there is a connection already
659: open to any of the DSAs. If there is, the request is forwarded to the first
660: such DSA on the list.
661: \item[{}]
662: If the DSA does not have a connection open to any of the DSAs in the list,
663: the DSA tries to open a connection to each DSA in turn until a connection
664: attempt is successful.
665: \item[{}]
666: If all connection attempts fail, the DSA then tries to send a referral. The
667: DSA attempts to select the first DSA in the list which appears to be on a
668: compatible network.
669: \item[{}]
670: If none of the DSAs in the list appear to be on a compatible network, a
671: referral is sent back which names the first DSA in the list.
672: \end{itemize}
673: \subsection{Referral preferred}
674: If the model indicates that referral is preferred, the following procedure
675: is used. It should be noted that the network compatibility testing is
676: crucial in creating a widely distributed Directory spread over
677: heterogeneous networks.
678: \begin{itemize}
679: \item[{}]
680: The DSA searched the list for any DSA with apparent network compatibility
681: with the calling DUA or DSA.
682: \item[{}]
683: If any DSA is found which appears to be on compatible network, then if
684: the initiating DSA is a Quipu DSA, the list of references are returned
685: to that DSA. If the initiator is not a Quipu DSA, then only the single,
686: ``network compatible'' reference is returned. If the initiating DSA is a Quipu
687: DSA and receives a list of DSAs, the procedure described earlier to sort the
688: DSAs into an order of preference, is followed. The initiating DSA must
689: discard any earlier lists of DSAs it had compiled or received earlier while
690: trying to
691: complete the operation, on receipt of a further list of references.
692: \item[{}]
693: If no DSA in the list appears to on a network compatible with the
694: originator, then an attempt is made to chain the operation, service controls
695: permitting. If chaining fails, a referral is sent to the originating DSA.
696: \end{itemize}
697: \subsection{Multicasting}
698: In general, Quipu does not need to multicast because of the assumption that all
699: sibling entries are held within a single DSA.
700: However there are two occasions when Quipu makes use of multicasting.
701: \begin{itemize}
702: \item[{i)}]
703: Subtree searches, where the subtree is held in multiple DSAs.
704: \item[{ii)}]
705: When following a non-specific subordinate references, generated by non-Quipu
706: DSAs.
707: \end{itemize}
708: \section{Conclusions}
709: The approach used by Quipu to store OSI Directory knowledge has been described.
710: It seems prudent that this information should be stored in the Directory
711: itself.
712:
713: The Directory is distributed across a large number of DSAs. These DSAs may
714: reside on disjoint networks. The approach taken by Quipu to solve this
715: problem has been discussed.
716:
717: Some replication of the Directory will tend to improve the Directory's
718: resilience to DSA failure and may also improve performance generally. The
719: mechanisms used by Quipu to determine which
720: DSA to forward requests to has been described.
721:
722: Some differences between the standard X.500 model and the Quipu
723: implementation have been noted. Quipu takes account of DSAs being
724: situated on disjoint networks. Furthermore, Quipu tries to provide a robust
725: and efficient service by noting DSA reliability, connectivity and proximity.
726:
727: \section{References}
728:
729: \begin{itemize}
730: \item[{[1]}]
731: ``The design of Quipu'', Stephen E. Kille, Research Note RN/89/19, Department
732: of Computer Science, University College London, March 1989.
733: \item[{[2]}]
734: ``The QUIPU Directory Service'', Stephen E. Kille, IFIP WG 6.5 Conference on
735: Message Handling Systems and Distributed Applications, pp173-186. North
736: Holland Publishing, October 1988.
737: \item[{[3]}]
738: ``The ISO Development Environment Users's Manual (Version 5.0)'',
739: Marshall T. Rose, The Wollongong Group, Palo Alto, March 1989.
740: \item[{[4]}]
741: ``The Directory - Overview of Concepts, Models and Services'', X.500 and ISO
742: 9594, 1988.
743: \item[{[5]}]
744: ``An interim approach to the use of network addresses'', Stephen E. Kille,
745: Research Note RN/89/19, Department of Computer Science,
746: University College London, March 1989.
747: \end{itemize}
748: \end{document}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.