<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>manifold</title>
<link rel="alternate" type="text/html" href="http://www.dynamicobjects.com/manifold/" />
<modified>2004-12-19T13:24:09Z</modified>
<tagline>self-organizing resource location and discovery</tagline>
<id>tag:www.dynamicobjects.com,2004:/manifold//13</id>
<generator url="http://www.movabletype.org/" version="3.121">Movable Type</generator>
<copyright>Copyright (c) 2004, diego</copyright>
<entry>
<title>the 30,000 ft. view</title>
<link rel="alternate" type="text/html" href="http://www.dynamicobjects.com/manifold/archives/2004/12/the_30000_ft_vi.html" />
<modified>2004-12-19T13:24:09Z</modified>
<issued>2004-12-19T13:10:00Z</issued>
<id>tag:www.dynamicobjects.com,2004:/manifold//13.3029</id>
<created>2004-12-19T13:10:00Z</created>
<summary type="text/plain">(cross-posted from this entry on my personal weblog) As a follow-up to my thesis abstract, I wanted to add a sort of introduction-ish post to explain a couple of things in more detail. People have asked for the PDF of...</summary>
<author>
<name>diego</name>

<email>diego@dynamicobjects.com</email>
</author>
<dc:subject>explanations</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.dynamicobjects.com/manifold/">
<![CDATA[<p><i>(cross-posted from <a href="http://www.dynamicobjects.com/d2r/archives/003005.html">this entry</a> on my personal weblog)</i></p>

<p>As a follow-up to my <a href="http://www.dynamicobjects.com/manifold/archives/2004/12/manifold_abstra.html">thesis abstract</a>, I wanted to add a sort of introduction-ish post to explain a couple of things in more detail. People have asked for the PDF of the thesis, which I haven't published yet, for a simple reason: everything is ready, everything's approved, and I have four copies nicely bound (two to submit to TCD) but... there's a signature missing somewhere in one of the documents, and they're trying to fix that. Bureaucracy. Yikes. Hopefully that will be fixed by next week. When that is done, right after I've submitted it, I'll post it here (or, more likely, I'll create a site for it... I want to maintain some coherency on the posts and here it gets mixed up with everything else). </p>

<p>Anyway, I was saying. Here's a short intro.</p>

<p><b>Resource Location, Resource Discovery</b></p>

<p>In essence, <i>Resource Location</i> creates a level of indirection, and therefore a decoupling, between a resource (which can be a person, a machine, a software services or agents, etc.) and its location. This decoupling can then be used for various things: mapping human-readable names to machine names, obtaining related information, autoconfiguration, supporting mobility, load balancing, etc. </p>

<p><i>Resource discovery</i>, on the other hand, facilitates search for resources that match certain characteristics, allowing then to perform a location request or to use the resulting data set directly. </p>

<p>The canonical example of Resource Location is DNS, while Resource Discovery is what we do with search engines. Sometimes, Resource Discovery will involve a Location step afterwards. Web search is an example of this as well. Other times, discovery on its own will give you what you need, particularly if the result of the query contains enough metadata and what you're looking for is related information.</p>

<p>RLD always involves search, but the lines seemed a bit blurry. When was something one and not the other? What defines it? My answer was to look at <i>usage patterns</i>.</p>

<p><b>It's all about the user</b></p>

<p>It's the user's needs that determine what will be used, how. The user  isn't necessarily a person: more often than not, RLD happens between systems, at the lower levels of applications. So, I settled on the usage patterns according to two main categories: locality of the (local/global) search, and whether the search was exact or inexact. I use the term "search" as an abstract action, the action of locating something. "Finding a book I might like to read" and "Finding my copy of Neuromancer among my books" and "Finding reviews of a book on the web" are all examples of search as I'm using it here.</p>

<p><i>Local/Global</i>, defining at a high level the "depth" that the search will have. This means, for the current search action, the <i>context</i> of the user in relation to what they are trying to find. </p>

<p><i>Exact/Inexact</i>, defining the "fuziness" of the search. Inexact searches will generally return one or more matches; Exact searches identify a single, unique, item or set.</p>

<p>These categories combined define four main types of RLD.</p>

<p>Examples: DNS is Global/Exact. Google is Global/Inexact. Looking up my own printer on the network is Local/Exact. Looking up <i>any</i> available printer on the network is Local/Inexact.</p>

<p>Now, none of these concepts will come as a shock to anybody. But writing them down, clearly identifying them, was useful to define what I was after, served as a way to categorize when a system did one but not the other, and to know the limits of what I was trying to achieve.</p>

<p><b>The Manifold Algorithms</b></p>

<p>With the usage patterns in hand, I looked at how to solve one or more of the problems, considering that my goal was to have something where absolutely no servers of any kind would be involved.</p>

<p>Local RLD is comparatively simple, since the size of the search space is going to be limited, and I had already looked at that part of the problem with my <a href="http://www.dynamicobjects.com/papers/nom-med-hoc.pdf">Nom system for ad hoc wireless networks</a>. Looking at the state of the art, one thing that was clear was that every one of the systems currently existing or proposed for global RLD depends on infrastructure of some kind. In some of them, the infrastructure is self-organizing to a large degree, one of the best examples of this being the <a href="http://i3.cs.berkeley.edu/">Internet Indirection Infrastructure</a> (i3). So I set about to design an algorithm that would would work at global scales with guaranteed upper time bounds, which later turned out to be an overlay network algorithm (which ended up being based on a hypercube virtual topology), as opposed to the broadcast type that Nom was. For a bit more on overlays vs. broadcast networks, check out my <a href="http://www.dynamicobjects.com/papers/w4spot.pdf">IEEE article on the topic</a>.</p>

<p>Then the question was whether to use one or the other, and it occurred to me that there was no reason I couldn't use both. It is possible to to embed a multicast tree in an overlay and thus use a single network, but there are other advantages to the broadcast algorithm that were pretty important in completely "disconnected" environments such as wireless ad hoc networks. </p>

<p>So Nom became the local component, <i>Manifold-b</i>, and the second algorithm became <i>Manifold-g</i>. </p>

<p>So that's about it for the intro. I know that the algorithms are pretty crucial but I want to take some time to explain them properly, and their implications, so I'll leave that for later. </p>

<p>As usual, comments welcome!</p>]]>

</content>
</entry>
<entry>
<title>abstract</title>
<link rel="alternate" type="text/html" href="http://www.dynamicobjects.com/manifold/archives/2004/12/manifold_abstra.html" />
<modified>2004-12-19T13:24:20Z</modified>
<issued>2004-12-19T13:07:42Z</issued>
<id>tag:www.dynamicobjects.com,2004:/manifold//13.3028</id>
<created>2004-12-19T13:07:42Z</created>
<summary type="text/plain">(cross-posted from this entry on my personal weblog) Sorry about the use of the &quot;royal &apos;we&apos;&quot; but this is pretty much a copy/paste of the abstract from the dissertation. Also, maybe it takes some flights of fancy in terms of...</summary>
<author>
<name>diego</name>

<email>diego@dynamicobjects.com</email>
</author>
<dc:subject>publications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.dynamicobjects.com/manifold/">
<![CDATA[<p><i>(cross-posted from <a href="http://www.dynamicobjects.com/d2r/archives/002997.html">this entry</a> on my personal weblog)</i></p>

<p>Sorry about the use of the "royal 'we'" but this is pretty much a copy/paste of the abstract from the dissertation. Also, maybe it takes some flights of fancy in terms of possibilities, but that's the point of research, isn't it? </p>

<p>Anyway, here goes:</p>

<p><b>Self-Organizing Resource Location and Discovery</b></p>

<p>by Diego Doval (abstract - 30 September, 2003)</p>

<p>Networked applications were originally centered around backbone inter-host communication. Over time, communications moved to a client-server model, where inter-host communication was used mainly for routing purposes. As network nodes became more powerful and mobile, traffic and usage of networked applications has increasingly moved towards the edge of the network, where node mobility and changes in topology and network properties are the norm rather than the exception. </p>

<p>Distributed self-organizing systems, where every node in the network is the functional equivalent of any other, have recently seen renewed interest due to two important developments. First, the emergence on the Internet of peer-to-peer networks to exchange data has provided clear proof that large-scale deployments of these types of networks provide reliable solutions. Second, the growing need to support highly dynamic network topologies, in particular mobile ad hoc networks, has underscored the design limits of current centralized systems, in many cases creating unwieldy or inadequate infrastructure to support these these new types of networks.</p>

<p>Resource Location and Discovery (RLD) is a key, yet seldom-noticed, building block for networked systems. For all its importance, comparatively little research has been done to systematically improve RLD systems and protocols that adapt well to different types of network conditions. As a result, the most widely used RLD systems today (e.g., the Internet's DNS system) have evolved in ad hoc fashion, mainly through IETF Request For Comments (RFC) documents, and so require increasingly complex and unwieldy solutions to adapt to the growing variety of usage modes, topologies, and scalability requirements found in today's networked environments.</p>

<p>Current large-scale systems rely on centralized, hierarchical name resolution and resource location services that are not well-suited to quick updates and changes in topology. The increasingly ad hoc nature of networks in general and of the Internet in particular is making it difficult to interact consistently with these RLD services, which in some cases were designed twenty years ago for a hard-wired Internet of a few thousand nodes.</p>

<p>Ideally, a resource location and discovery system for today's networked environments must be able to adapt to an evolving network topology; it should maintain correct resource location even when confronted with fast topological changes; and it should support work in an ad hoc environment, where no central server is available and the network can have a short lifetime. Needless to say, such a service should also be robust and scalable. </p>

<p>The thesis addresses the problem of generic, network-independent resource location and discovery through a system, <i>Manifold</i>, based on two peer-to-peer self-organizing protocols that fulfill the requirements for generic RLD services. Our Manifold design is completely distributed and highly scalable, providing local discovery of resources as well as global location of resources independent of the underlying network transport or topology. The self-organizing properties of the system simplify deployment and maintenance of RLD services by eliminating dependence on expensive, centrally managed and maintained servers.</p>

<p>As described, Manifold could eventually replace today's centralized, static RLD infrastructure with one that is self-organizing, scalable, reliable, and well-adapted to the requirements of modern networked applications and systems.</p>]]>

</content>
</entry>

</feed>