Download area
The larger thesis
|
The INternet FileSystem maps the DNS or other network namespaces
into the host filesystem,
such that
one may conceptually
cd /inet/edu/columbia/www/~vg96/papers,
for instance,
and expect to be able list the contents with
ls
or
browse them with, say
browse ..
More usefully, perhaps,
one could use this unification of the network and filesystem namespaces
to cross-compile, remote-deploy "applets" by simply copying them
and setting appropriate permissions etc.
The scheme sounds a bit like
Plan9,
but notice that
even Plan9 stopped short of unifying
the network namespace.
The reason,
as far as I can figure out,
is that
there seems to be no way to think of the DNS
as the primary global addressing mechanism
on which
other forms of address,
including IP,
could depend.
The problem is three-fold:
-
The existence of a manually coordinated IP space
was assumed in the design of the DNS,
such that
it prevents the DNS from being operated
without IP (or an equivalent addressing mechanism).
This is better explained in my thesis.
-
If a DNS-like namespace can be had
as a primary addressing mechanism,
without incurring penalties elsewhere,
then
the need for a globally coordinated IP gets questioned,
and
that would be too fundamental an issue.
-
It is hard to think so fundamentally differently
without a model or a prototype to work with.
INFS is an experimental step to address the third aspect.
Even with INFS itself,
there's clearly a Pandora's box of
user interface and network application redesign
opportunities waiting to be opened,
which will take much work
and need tons of discussion.
I am more immediately concerned with
-
reduction of overall code footprint and context switches,
-
general IPv6/v4 transparency for applications,
-
and weaning applications and uses from IP addresses,
so that we may introduce self-management of IP addresses
on network, provider and Internet scales.
To get the basic idea across and to set the ball rolling,
here's
version 1.0,
in which
you still need to say
cat <pathname>/tcp:22,
for example,
to see the SSH header,
or
echo -e "GET / HTTP/1.0\n\n" | rw ./tcp:80
to dump index.html.
|