A substantial part of the "IPng" debate was devoted to the choice of
an address size. A recurring concept was that of "assignment
efficiency", which most people involved in the discussion expressed
as a the ratio of the effective number of systems in the network over
the theoretical maximum. For example, the 32 bits IP addressing plan
could in theory number over 7 billions of systems; as of today, we
have about 3.5 millions of addresses reported in the DNS, which would
translate in an efficiency of 0.05%.
But this classic evaluation is misleading, as it does not take into
account the number of hierarchical elements. IP addresses, for
example, have at least three degrees of hierarchy: network, subnet
and host. In order to remove these dependencies, I propose to use a
logarithmic scale for the efficiency ratio:
log (number of objects)
H = -----------------------
available bits
The ratio H is not too dependent of the number of hierarchical
levels. Suppose for example that we have the choice between two
levels, encoded on 8 bits each, and one single level, encoded in 16
bits. We will obtain the same efficiency if we allocate in average
100 elements at each 8 bits level, or simply 10000 elements in the
single 16 bits level.
Note that I use base 10 logs in what follows, because they are easier
to compute mentally. When it comes to large numbers, people tend to
use "powers of 10", as in "IPng should be capable of numbering 1 E+15
systems". It follows from this choice of units that H varies between
0 and a theoretical maximum of 0.30103 (log base 10 of 2).