river-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Firmstone <j...@zeus.net.au>
Subject Re: Implementing means to allow NAT-ed clients to provide services [was roadmap]
Date Thu, 04 Feb 2010 00:04:16 GMT
The initial implementation will include the URL of the relevant ICMS, 
however I'd like to make the location of the ICMS discoverable using 
lookup so the ICMS location can change over time.

Peter Firmstone wrote:
> Hi Sim & Gregg,
>
> I just wanted to break this issue out of the original thread and 
> summarise our findings to provide a way forward, for solving one of 
> the original questions posed.
>
> I want the implementation to be invisible to existing client and 
> service implementation and to just work.
>
> I would like to start by implementing the Natblaster technique of 
> traversing NAT's with TCP, using JAVA.  I'm not 100% how to fit this 
> in with JERI, however the following classes appear relevant.
>
>    * net.jini.jeri.connection.ServerConnectionManager
>    * net.jini.jeri.connection.ConnectionManager
>
>
> I will need new ServerEndpoint and Endpoint implementations, some 
> observations:
>
>    * The Server will need to be aware of the Client's Public NAT IP
>      Address and recieve port.
>    * The Client will need to be aware of the Server's Public NAT IP
>      Address and recieve port.
>    * A public service will need to be provided - Initial Connection
>      Mediator Service (ICMS)?
>    * The Client will need to contact the Initial Connection Mediator
>      Service and request a connection to a Nat-ed Service.  This would
>      need to be performed as an implementation detail of the
>      Endpoint.newRequest() method.
>    * The NAT-ed Service would need to be listening using the
>      ServerEndpoint implementation, which would be polling the ICMS to
>      maintain a connection.
>    * The ServerEndpoint implementation would listen for and intercept
>      connection negotiation requests.
>    * The ServerEndpoint implementation would pass the communication
>      through to the callback object once the connection is established.
>    * Once a connection session was negotiated successfully, the client
>      Endpoint.newRequest() method would return.
>    * TLS will need to be utilised.
>
>
> Any helpful advise would be much appreciated, this should allow the 
> marshalled object to find it's way home.
>
> BR,
>
> Peter.
>
> Resources:
>
>    * http://netresearch.ics.uci.edu/kfujii/jpcap/doc/index.html --
>      Multi Platform Java library for reading and writing packets, java
>      equivalent of libpcap and libnet.    
> * http://natblaster.sourceforge.net/paper/natblaster.pdf  --
>      Techniques for traversing NAT with TCP peer to peer, includes a
>      implementation in C.
>
>
>
>


Mime
View raw message