[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Fwd: I-D ACTION:draft-nordmark-shim6-esd-00.txt]
marcelo bagnulo braun wrote:
Perhaps an option could be to get the identifiers and the locator from
the direct DNS when the fqdn is resolved AND also perform the reverse
mapping from the ID to the locator set, to verify that the information
is there.
So, when the fqdn is resolved, the host has all the information and can
proceed with the communication establishment. But also, if after
performing the reverse lookup it discovers that it is not properly
populated, some kind of error message can be returned, so that the admin
of the zone is informed.
In this way, you can periodically verify the reverse zone, but reduce
the cost involved in the verification operation. I mean there are two
costs involved in the verification: the packet overhead due to the query
and the added latency of waiting to obtain the locator information. IMHO
the second one is the most problematic. With this option we would be
eliminating the second one and just keeping the first one.
The above might work, but not clear what happens when there are slight
differences in the two sets.
But when I thought about this a while back, I also ended up with some
concerns about authority and security to speak for the ID->locator mapping.
For instance, if one application looks up www.foo.example and finds that
the ID is X and the locators are L1, L2, L3. TCP gets X as the ULID, and
the X->{L1, L2, L3} is installed in the shim layer.
A bit later some other application on the host looks up www.bar.example
and finds that the ID is also X, but that the locator set is different.
This could be a case of both domains being hosted on the same server, or
it could be a security attack.
Thus at a minimum, when there is a a conflict like this, one could have
to check the reverse map. But what happens should the reverse lookup
fail (NXDOMAIN) or time out when we do the deferred lookup?
Should we fail the original communication (to www.foo.example)? Fail
both the original and the new attempt (to www.bar.example).
Having it fail immediately might be more predictable.
So there are some difficult tradeoffs.
agree but i guess that it is easy to determine that in the NAT case (in
the general case). I mean, if the other end sees a public address and we
are using a private address, then the private address is unreachable
from the peer and must be substituted with the public one received in
the option.
If not sure it is easy.
Take a multihomed host with two NICs and 2 prefixes on each.
The host has 4 locators; L1 and L2 on NICa and L3, L4 on NICb.
It finds out that when it is sending using L1 as the source, the
receiver sees the packets coming from L1'.
Thus this mean that L1' is a replacement for L1? Probably (at least when
talking to that destination). But does it also replace L2? I have no idea.
Should it have any impact on the locators on the second NIC.
If both v4 addresses received are public, then this is TE and both are ok.
How can you tell if an IP address is public or not? While checking for
the 3 RFC 1918 ranges might capture 90%, I think there is NATting going
on even when the address space behind the NAT is global IPv4 address space.
(The problem is that now some very big sites are starting to use public
addresses when they run out of private addresses
(http://www.arin.net/policy/proposals/2004_3.html) which would break the
simplicity of the approach. But even in this case, the local host should
be able to know which are the addresses reserved for private use and
apply the same heuristic mentioned above
Another reason why you can't *syntactically* check whether an IPv4
address is NATted or not.
Doesn't the remote host need to know as well?
yes, but shim is supposed to be able to deal with failures and the NAT
loosing its state can be seen as a failure. So, the shim will be able to
recover from this and even recreate the NAT state. Probably we need some
additional logic to be smart enough to identify that what is going on is
that the nat is loosing state and increase the keepalive frequency.
I mean, in the case of the shim, the communication can be recovered from
a nat loosing state and the state in the nat can be easily recovered.
Yes, there is definitely a lot of extra work needed to make this a full
fledged NAT traversal mechanism. Which is why I don't want to spend time
on it.
So what we need is a locator selection algorithm that is likely to take
into account the same issues that RFC3484 does, but with different
trade-offs being made, right?
Right.
Erik