Hi Bruce,

On Dec 23, 2007 4:33 AM, Gonzalo Camarillo <[EMAIL PROTECTED]> wrote:
Regarding your question about Sections 3.2 and 3.3 when RELOAD is the peer protocol and HIP BONE is used for connection management, the idea is to use HIP, instead of RELOAD, to perform connection management. All the other functions RELOAD typically performs are still performed by RELOAD.

RELOAD defines the CONNECT primitive and the TUNNEL primitive. If HIP is being used, you would use the CONNECT primitive of HIP (i.e., an I1 packet) *instead* of the CONNECT primitive of RELOAD. The same way, you would use the TUNNEL primitive of HIP (i.e., a HIP message) *instead* of the TUNNEL primitive of RELOAD.

On 9 Jan 2008, at 00:16, Bruce Lowekamp wrote:

This is where I still get confused, and I think this is a pretty big architectural issue. The combination of 3.2, 3.3, and 6 still leave some questions in my mind as to exactly what is being proposed, so let me try to form up an example for discussion purposes.

Briefly, what I had in mind when writing the HIP BONE draft was your "HIP routing table" approach below. While I agree with you that at the architectural level the question is relatively big, I think that when you go to the implementation level the actual difference between the "HIP routing table" and "HIP link layer" approaches will be quite small. The key issue here is whether it is possible to divide the work between a "routing table" and a "forwarding table". I don't know the proposed peer protocols well enough to be able to answer that question. If it indeed is possible to make such a division, then I think the difference between "HIP routing table" and "HIP link layer" almost disappears. Otherwise the situation gets hairier, as you apparently suggest below.

But let's have a look at your example:
Suppose I have an overlay with the following connections between peers (labeled with their peerid):

1 ------ 5 ------ 10

So 1 has 5 in its routing table (and thus a direct connection) but not 10. 5 has direct connections to 1 and 10. I'm assuming recursive routing and am not being precise with a DHT algorithm for the purposes of this example.

10 is responsible for a resource, 9, that 1 wants to query for. In a non-HIP DHT implementation, 1 sends a query "to" 9. It looks up for the closest match in its routing table and discovers it is 5, then it sends the message to 5. 5 performs a similar lookup and discovers that its closest match is 10, so it forwards the query to 10.

Going with the HIP-BONE, approach, as I understand the "HIP is IP and the peer protocol is OSPF" idea, I see two approaches that would meet that requirement:

- the peer protocol loads enough information into the HIP layer that the HIP layer on peer 1 knows that the next hop for a message bound for "9" is 5. I will refer to this as the hip routing table approach.

In this approach I would call the "information loaded into the HIP layer" as the forwarding table.

- the peer protocol sets the next-hop for the query to "5" based on its own routing table, and lets the HIP layer forward it. I will refer to this as the hip link layer approach.

The only difference that I can see between the previous one and this one is that here there are no explicit routing table. Hence, instead of doing the typical thing routers do, i.e., to compute a forwarding table from the routing table as a "batch job" the forwarding decision is performed "lazily" on demand.

The hip routing table approach looks great from a layering perspective, but implementation looks to be very hard.

Why? Do you allude that the various overlay routing protocols are sufficiently different from the IP routing protocols so that one cannot compute a forwarding table? Or is there some other implementation problem that you are thinking about?

Since there are multiple DHT (and unstructured overlay) algorithms with different routing rules, there would have to be a pluggable routing algorithm loaded into the HIP layer by the DHT algorithm or there needs to be an upcall from the HIP layer into the peer protocol layer to query for the next-hop for messages.

So, you do seem to be saying that it is impossible to process the DHT- layer routing information into a consistent forwarding table format that can be used by a single look-up algorithm. Now, I have to confess that I don't understand this argument at all. Given that for each packet the forwarding decision has to eventually be made, the time complexity of computing a forwarding decision must be manageable (sub-linear w.r.t the number of nodes in the overlay). Hence, are you saying that there is no reasonable representation of the forwarding table, i.e., that the space complexity will be overwhelming? But then I don't understand either, as my understanding is that with e.g. Bloom filters you can represent an random collection of sets with in a relatively small space. [In the case of Bloom filters we of course have the question of false positives, but I cannot see a big problem if some packets get briefly duplicated on the overlay. Intuitively, That doesn't seem to add much to the already pretty high inefficiency of the overlay.]

In the hip link layer approach, the peer protocol layer knows that the current set of next-hop candidates are, and it runs the DHT routing algorithm in the conventional sense, telling the HIP layer what the next hop for a message is. This seems like a much simpler approach to implement, but limits the usefulness of HIP.

I agree with you that this would limit the usefulness of HIP. However, if there is a forwarding table, then the practical level difference between the "HIP routing table" and "HIP link layer" boils down to on which layer you store the forwarding table.

So the first question is whether HIP-BONE is intended to specify one of these approaches, and if so, which one? I believe it's the hip routing table approach.


Well, at the time of writing I couldn't see such a difference. Hence, perhaps the "right" answer to this question is "neither". Instead, while HIP BONE in its current form doesn't specify either of the approaches, it alludes towards a "third" approach, i.e., towards separating the routing and forwarding tables, which makes the implementation-level difference very small. Hence, from that point of view, HIP BONE would allow either architectural choice.

Next, let's take the case of 3.3, "lightweight message exchange." As I understand 3.3, it should work fine in the hip routing table approach for both application and peer protocol message exchanges. In the hip link layer approach, peer protocol messages can be delivered this way, but application messages cannot (they would require a direct connection).

I don't quite understand what you are saying.  Would you please clarify?

Next, how about CONNECT messages. Suppose that now peer 1 wants to establish a direct connection to peer 10 for some reason. Your email indicates that there will be no CONNECT messages as in RELOAD, but instead there will only be I1 etc messages. Let's just assume that the peer protocol has some way of indicating that it wants to be able to send messages directly to another peer rather than over the overlay.

I'm following so far.

So in the hip routing table approach, the I1 etc messages are routed via 5 using HIP to 10 and eventually a new direct connection is established.

Well, depending on many factors, it may be only a subset of the HIP base exchange messages that would be routed over the overlay (through node 5); some of them (like perhaps R2) could perhaps be sent directly, at least in some cases. So, there is some flexibility here, but at least I don't quite understand the situation in cases where both 1 and 10 are behind NATs.

In the hip link layer approach, the peer protocol would have to insert the I1 into a peer message and forward
it itself.  That would work, but it's a bit cumbersome.

Again, I don't understand. Why would the peer protocol need to insert I1 into a peer message?

What continues to confuse me, and what I think is the hardest architectural question here, is how the issue I mentioned above: "there would have to be a pluggable routing algorithm loaded into the HIP layer by the DHT algorithm or there needs to be an upcall from the HIP layer into the peer protocol layer to query for the next-hopfor messages" is solved.

As I indicated above, my idea was to separate the routing table and forwarding table. Right now I cannot see why it would not work, but maybe I'm just ignorant about the various overlay routing protocols.

<snipping the rest>

--Pekka Nikander


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

Reply via email to