Annotation of 43BSDReno/contrib/isode-beta/doc/duug/duug.tex, revision 1.1

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

unix.superglobalmegacorp.com

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