Active Names Applications
We have implemented a number of sample applications within the
Active Names framework:
- Replicated Service Location: There
are currently a number of techniques for replicated
access to web services, ranging from support through the
existing naming system, DNS Round Robin, to router
modifications, Cisco's Distributed Director. Active
Names provide a unified framework for the implementation
of location and load balanced access to web
servers. By interposing at the top of the protocol
stack, Active Names can easily utilize end-to-end
application performance in making load balancing
decisions. One simple active policy that
outperforms existing static load balancing schemes, uses
a decaying histogram of previous performance to available
replicas in addition to distance from available replicas
(measured by number of routing hops) to bias the load
balancing decision.
- Mobile Distillation: The current
approach to customizing web resources (such as images) to
individual client requirements is to associate a proxy
with web requests; the proxy is then responsible for
performing the appropriate transformation before
returning the resource to the client. To conserve
wide-area bandwidth consumption however, it can often be
more efficient to perform transformations at the
server. For example, if a transformation is
designed to reduce the size of an image by a factor of
6-10, performing the transformation at the server and
then transmitting the smaller image to a proxy/client
will save significant bandwidth relative to transmitting
the full size image to a proxy before performing the
transformation. Of course, if a server is
CPU-saturated, it may decide to hand-off transformation
independent of any bandwidth savings. We implement
distillation through Active Names and provide hooks to
reason about the proper network location to perform a
given computation.
- Composable Active Caches: An
inherent limit to increasing cache hit rates is that
caches only store static documents. Documents that
are dynamically generated (e.g., a price request to an
e-commerce site) or that require a side-effect (logging
of accesses for hit counting) cannot be safely stored in
web proxy caches. Because Active Names allow for
the execution of both service and client-specific code at
arbitrary points in the network, including proxy caches,
they support caching of documents that are currently not
cacheable (and hence contribute to low proxy hit rates)
with current techniques. For example, an Active
Name program can maintain local state within a proxy to
track the number of accesses to a given resource to
periodically transmit hit counts to the server.
Similarly, a replica of a product catalog may be
replicated in a proxy cache allowing Active Name programs
to perform price lookups on behalf of services.
Because such Active Names are fundamentally agents of the
service provider, they are able to maintain cache
consistency in a service-specific manner, for example
updating the price catalog every night at midnight.
Through Active Names and after methods, individual client
and service provided extensions are composable, meaning
that multiple computations can run on behalf of different
principals in accessing a resource.
We are currently in the process of investigating the
development of the following additional applications within the
Active Names framework:
- Network Address Translation: Rather
than forcing routers to maintain hard state between the
mapping of old style IPv4 addresses and newer IPv6
addresses, Active Names can maintain address mappings on
a per connection basis Such mappings can be torn
down by Active Name programs once a connection
terminates. This process is similar to the process
of mapping physical to virtual pages of memory while a
page is active.
- Property-Based Name Queries: An
Active Name can encapsulate requests such as "print
this document in color on transparencies to a printer
that is lightly loaded". It would then be the
job of the program to locate an appropriate printer to
carry out the task. This application of Active
Names is related to infrastructure in place for
"directory access", such as X.500 and LDAP.
- Video Gateways: Building on the work
done in the context of Active Services by Amir, et al.,
we are extending our mobile distillation code to support
flexible transformation of video for clients with
variable network connectivity.
- Mobility: Active Names naturally
support the flexible location of wide-area resources as
clients physically migrate. Active Names can
provide service-specific consistency and failover by
maintaining enough application-level state to seamlessly
transfer a connection from one replica to a more
appropriate (because of bandwidth or cost considerations)
replica as the client moves. Similar support can be
provided to mobile software agents that wish to access a
consistent API's from multiple hosts as they move from
site to site and administrative domain to administrative
domain.