Re: [JXTA discuss] IP mobility
Mohamed Abdelaziz <[email protected]> Thu, 21 Jul 2005 15:39:42 -0700
| Newsgroups | gmane.comp.java.jxta.general |
|---|---|
| Message-ID | <[email protected]> |
I revisited the tcp transport and it appears that the incoming server thread can deal with a closed ServerSocket (due to an ip address change), and continue accepting connections, however I don't see any code which updates a peers access point advertisement with the new physical address. It's very likely that back channels are used to establish communication. otherwise the sending peer would have been able resume communication just fine without having to re-resolve the pipe. ps -- query for pipe --> pl pl -- connects to ps, sends pipe resolver response --> ps ps -- uses back channel (the above connection) to create a messenger --> pl IncomingUnicastServer needs to detect this change (beyond closure detection), and notify the endpoint router of the change. Then we would have "hot mobility" support. I'll see what can be done, at which point I will look for you to run some tests. Mohamed Giorgos Georgakoudis wrote: > Hello, > > Mohamed we had a conservation yesterday about how the network > interface changes reflect on jxta. If I remembered correctly on direct > connections you mentioned that the jxta java binding cannot cope with > ip changes but using a relay peer there is no problem. Please correct > me if I am wrong. When using a relay, other peers can send a message to a peer's virtual address (the relay) when physical addresses are invalid. Retrieving messages (outbound connections) are not affected by any interface address change. > > I created a test program where there is PipeListener and a PipeSender. > Without a relay peer I started the communication (PipeSender sends a > hello message every 2 seconds). Then I disconnected and reconnected > the PipeListener (observing an IP change) and it works! The only > "trick" I used is that a create an OutputPipe for every hello > message I sent using createOutputPipe() in PipeService with a timeout > that retries when it fails to create one using the same pipe > advertisement that I discovered before otherwise by creating one > OutputPipe since the beginning of the comm I would get an exception > saying Pipe Closed. So internally Jxta routing protocol gets informed > about the network interface changes for a give peer id, right? > > Best regards, > > Giorgis Georgakoudis > -- http://blogs.sun.com/roller/page/hamada http://weblogs.java.net/blog/hamada