[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:loc/id vs HIP (was: tunneling [Was: Agenda for Vienna])
On donderdag, mei 22, 2003, at 06:51 Europe/Amsterdam, Pekka Savola
wrote:
I don't really want to use the words "long term" as that might make
people think there is no point in working on it / waiting for it. But
it should solve the problem rather definitively, so in that sense it
is
long term. [...]
I disagree: I don't think loc/id, a solution like HIP for instance,
would
solve the whole problem. Care to elaborate?
Elaborate why you disagree? That's going to be hard...
Multihoming works by having two or more valid paths through the network
between two hosts. (Valid = no administrative blocks, just having some
wire isn't enough, you must also be able to route over it.) Then if one
path disappears, the communication continues over the other. If we
can't have routing take care of this switch, the most obvious way is to
have different addresses that are each tied to a path. But then we're
changing addresses in mid-session, which our transport protocols can't
handle. Enter the loc/id separation: the transport protocols and
applications get a stable identifier to work with, but we get to change
the underlying locator when there are outages. Assuming we take care of
details such as how outages are detected and how the
locator<->identifier mapping is set up, this should solve the
multihoming problem once and for all.
Locator/identifier separation is also very useful if we want to
implement a new namespace. Loc/id in itself doesn't require a new
namespace. Either locators and identifiers can overlap (i.e., any IPv6
address can be either or even both) or we split the IPv6 address space
in two, with parts for both purposes. This is mostly a deployment
tradeoff.
About HIP. I've been reading the new architecture document. It seems it
pretty much does the whole loc/id thing, although it doesn't really
mention failover. The problem however is that HIP does much more than
just multihoming. Maybe there is some synergy between multihoming and
mobility, but I don't see the advantages of leaping multihoming,
mobility and encryption on one big pile. In the end, that's going to
mean you're going to do at least one of those not very well.
And then there is simple economics: how are you going to convince
someone who multihomes in IPv6 to switch to IPv6 and then adopt HIP to
retain multihoming functionality? This means lots of additional
expenses because of the crypto hardware (if you can't do line rate
crypto you're a sitting duck for crypto DoS) and the additional
bandwidth for all the extra headers. Don't think it's so bad? I think
it is. The HIP header is at least 40 bytes. Then you need ESP, which is
at least 8 bytes (probably more like 16), an initialization vector and
padding. But of course just encrypting isn't enough, you really should
be doing authentication as well... Ignoring that for a moment the total
is 64 - 95 bytes when using a block cipher with 16 byte blocks. This
makes a TCP ACK 136 bytes. In plain IPv4 it's only 40 bytes... The
average pacet size is typically around 500 bytes. With HIP and IPv6
adding some 92 bytes, this eats away 16% of the available bandwidth.
On a related note, I've been thinking about ways to do something about
all this outrageous overhead but being able to have some per-packet
additional info at the same time. It occurs to me that much of the
stuff we're thinking about putting in each packet really doesn't have
to be in _each_ packet. Having identifiers and such in every 32th
packet or once every 5 seconds or so should be more than enough.