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