Annotation of 43BSDReno/contrib/isode-beta/doc/duug/duug.ms, revision 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.