On Mon, 31 Dec 2007, Gonzalo Camarillo wrote:

Hi Ali and Gonzalo,

sorry for catching up late.

Hi Ali,

HIP includes an ICE-based NAT traversal mechanism. If two nodes use HIP, they will perform ICE at the HIP level, not at the application level. Using application-level ICE to negotiate the use of HIP between nodes, per your email below, is cumbersome. The use of HIP can be negotiated in simpler ways.


Basically I agree with Gonzalo here, but to be more specific...

In a "normal" (no overlay, no extra mods to ICE or HIP) HIP scenario, sending some data to a HIT would trigger an I1. Either with or without UDP encapsulation, depending on local policies. When I1 is sent without UDP, the hipd could speed up the connection set-up in the case there are no NATs between the two machines. However, the ICE module would not know when to stop the connectivity tests, because it wasn't HIP-aware in this case. Also, this "optimization" would be unnecessary in the case there are NATs between the two hosts because the HIP messages would be just dropped.

In another non-overlay scenario, where ICE is HIP-aware, we could define that ICE and HIP module can interact with each other. Sending STUN messages to a HIT would trigger a I1 packet without UDP encapsulation and upon success the HIP module could abort the ICE connectivity tests gracefully. One benefit of this would be that we would skip the UDP encapsulation altogether, but the benefit is neglectible.

As indicated by the other discussion thread, applying HIP-aware ICE in HIP-enabled overlays may have some caveats related to handling of multiple overlays. Anyway, there should be a distinction between getting a direct connection to the peer (using ICE) vs. routing through the overlay. I think this could be implemented e.g. using a socket option.

With regards to the use of HIP in overlays, the simplest way would be to deploy overlays where all nodes use HIP and overlays where none of the nodes use HIP. However, some people have expressed interest in having mixed overlays where some nodes use HIP while others don't. If people are interested in doing this, we will have to look into ways to negotiate its use within the overlay.

With regards to the use of HIP in overlays, the simplest way would be to deploy overlays where all nodes use HIP and overlays where none of the nodes use HIP. However, some people have expressed interest in having mixed overlays where some nodes use HIP while others don't. If people are interested in doing this, we will have to look into ways to negotiate its use within the overlay.

Regarding to Ali's original suggestion on detecting localhost and peer support, I think localhost support would be easy. Connecting to a HIT is one way detect it, but it may include a timeout. Other ways are to go through the addresses of host using e.g. getaddrinfo() and check if there are any ORCHIDs there. Perhaps the quickest way is to create a socket with PF_HIP family and check for errors in the return value.

--
Miika Komu                                       http://www.iki.fi/miika/

_______________________________________________
P2PSIP mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/p2psip

Reply via email to