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