INFS: The INternet FileSystem

SourceForge Logo

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:

  1. 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.
  2. 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.
  3. 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.

Last updated: 2002-10-27