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.





Reply via email to