For services with direct access to the internet, or an open listening port on a 
firewall, etc, standard connections work.

For a service behind a firewall, even if it registers its proxy with an 
internet registrar, cannot be contacted at all by clients on the other side of 
the firewall.

Stun, turn and ice are about getting the firewall to open a port, udp is the 
easiest to open, tcp can be tunnelled over udp.  Once the connection is 
established it should work the same as a standard socket, apart from some 
activity to keep it alive. This work is driven by voip.

It would be nice to make it configuration free, eg try standard connection 
first, if that cannot be established, attempt stun turn ice, if that doesn't 
work, give up.

There's a mostly java library available called icedjava which might be worth 
looking into.

I'll finish concurrent policy in the next few weeks, then start looking into 
icedjava and DNS-SRV based Discovery for getting river out onto the internet.  
NB. We could use DNS-SRV for locating codebase repositories too, which negates 
the need for expensive http replication, although that can wait till later.

At the minimum to be useful over the internet, we need to enable network 
connections to be established, this is where icedjava or something similar come 
in, all the existing endpoint implementations should work on top. 

Any interested parties feel free to join in.

Cheers,

Peter.

----- Original message -----
> The use of a constraint for the end point that would apply the appropriate
> transport configuration would seem to be an easy way to cover the issue.
>
> A socket factory, since that is a pluggable mechanism, would solve the 
> problem,
> but since for TCP, we could turn on the transport layer option, it seems to 
> me,
> that adding a constraint, and then changing River's existing endpoints to
> support that if they can, and log an assertion when they can not, would make
> life easier for users so that they don't have to understand more about the low
> levels of River just to get a useful feature.
>
> Gregg
>
> On 6/27/2011 5:46 AM, Peter wrote:
> > Yeah, you're right.
> >
> > Thinking about it, it's probably lower level than the endpoint 
> > implementations
> > too.
> >
> > STUN, TURN and ICE is really what it's about and existing infrastructure
> > exists,  so a custom SocketFactory might be the soln, seeing as SSLEndpoint
> > doesn't depend on SSLSocketFactory this seems appropriate.
> >
> > Cheers,
> >
> > Peter.
> >
> > ----- Original message -----
> > > I just don't like incidental side-effects like these.
> > >
> > > DGC has a very specific job to do, keeping a firewall port open is a
> > > separate thing and ought to be tackled elsewhere IMHO.
> > >
> > > Simplistically, DGC is running atop a connection created via some
> > > transport protocol (e.g. http) just as the core invocation protocols
> > > do. If one were to put "keep-alive" in there, it should be at the
> > > transport level (e.g. http or tcp) not in the higher level protocols.
> > >
> > > Cheers,
> > >
> > > Dan.
> > >
> > > On 26 June 2011 21:51, Peter Firmstone<j...@zeus.net.au>  wrote:
> > > > Just wondering, could DGC be useful for keeping a port open on a 
> > > > firewall?
> > > >
> > > > EG: Ping an endpoint occasionally to keep it alive while a lease exists?
> > > >
> > > > The client doesn't know which port is open on a firewall, this 
> > > > connection
> > > > is set up by the firewall to allow replies from an external host to be
> > > > received by a client behind a firewall.
> > > >
> > > > If a client provides a handback object to a service, the service can
> > > > continue to contact the client via that handback object, while the
> > > > connection remains alive and the firewall port open.
> > > >
> > > > Thoughts?
> > > >
> > > > Cheers,
> > > >
> > > > Peter.
> > > >
> >
> >
>

Reply via email to