Gregg Wonderly wrote:
Peter Firmstone wrote:
Sim IJskes - QCG wrote:

BTW pluggable marshallers, this could provide us for a place to put an auto-exporter in. We could with annotations/interfaces signal verify the intent. (i'm sure i'm not the first one thinking that).
This is going to be interesting, especially considering NAT's will change ports randomly, the Marshalled Object / Proxy instance won't know their way home, they'll probably need to find their location on an event que or something like that.

To break through unrouted paths due to NAT, it would probably be better to rely on connectivity reversal in the endpoint implementations. A call through the endpoints in one direction, could cause traffic in the opposing direction to request a remote inbound connection, and then use that connection.
Thanks Gregg, I thought that too, but there are some issues, see the paper below, both NAT's have to think that they initiated the connection and there are a number of tricks to get the connection started that require a public third party.


The problem is that when a service exports a marshalled proxy instance into a lookup server, the unmarshalling of (an instance of) the proxy is invisible to the service.

So I might have to delay obtaining a marshalled proxy instance until the connection is set up? How do I request a new proxy instance directly from the service?

A DNS-SD Registrar (GlobalLookupService, I need a good name) smart proxy could potentially download the marshalled proxy directly from the service to the client (not sure how to do that either, got any ideas?).

My earlier comment about having a Marshalled ServiceItem Service with a hash lookup based on serviceID, might need to perform the Entry Comparisons for a DNS-SD Registrar (DNS-SD can't match entries), the Marshalled Proxy contained within would be useless.

Perhaps we need our own implementation of a Reflective Proxy that can find it's way home? I have the basic reflective proxy object implementation that I stripped from harmony, I could alter that. That way we'd be using local code to find the way home. Maybe I should call him ET?

By utilising the OSGi Conditions for Permissions, certain permissions can be denied once the connection is lost, until the Service can be can re verify it's proxy and be authenticated.


I haven't been able to read all of the details of what you all have discussed because some of the words are not sinking in.
Let me know which one's I'll try to better explain it.


However, the bigger issue is the NAT traversal issue. If there are not fixed port numbers and port forwarding through the NATing device, I'm not sure there is a solution that doesn't involve a proxying host (which you all did discuss).
It appears that the TCP/IP link can keep the connection by advising either side of the dynamic port changes. See the report (link below), I'm not 100% confident, that I have interpreted this correctly, I hope it can actually do this, if it does, it will save a lot of hassle.


That becomes a bottle neck and a resource that is difficult to manage.
My thoughts exactly, read this report (see link), there is a TCP p2p alternative that will provide a high degree of success for most NAT routers / firewalls. There's a c implementation for Linux that requires root permissions (involves the Administrator, why adoption is low). It only needs a third party to get the connection started. We need a java implementation, see my earlier posting. The proxying host could be a fall back if this fails. This method would have no trouble with the typical home NAT device, however it addresses enterprise NAT devices also and that is a major concern.

This report details how to create a reliable TCP p2p NAT link between private networks that handles dynamic ports changes at both ends (the endpoints notify each other of the changes with TCP).

http://natblaster.sourceforge.net/paper/natblaster.pdf

See my earlier post "Re: roadmap - ICE Interactive Connectivity Establishment" for other references also.

Maybe we need an endpoint implementation which knows how to use uPnP for port forwarding configuration on consumer routers? More and more software is using uPnP for port forwarding.
Checked it out, the home routers are the easiest to break through, it's the enterprise stuff that's difficult, their uPnP is usually turned off.

Microsofts Home Server knows how to do this, and there are others that I've seen doing this to provide appropriate port forwarding changes.

Gregg Wonderly

Cheers,

Peter.

Reply via email to