Annotation of 43BSDReno/contrib/isode-beta/doc/duug/duug.ms, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.