GRServer and GRClientGRServer and GRClient GR enables anonymous communication Packets can be routed via intermediary nodes before arriving at their destination More nodes can increase security How does a node find other available nodes? GRServer: Use a server to keep track of the nodes. GRClient: Make nodes report to the server
GRSocks Existing applications aren’t designed to use GR networks, but we want the applications to use them. Network packets need to be transferred from the application to a GR node. What can we use to do this? Proxy server (SOCKSv5 for most functionality) Virtual network driver is another option
Requirements GRServer Allow nodes to register Notice when nodes leave the network Notify registered nodes when nodes join and leave the network GRClient Register Send keep alive packets to prove connection Keep a local list of nodes in the network and update it when notified GRSocks Design and create SOCKSv5-compliant proxy server Integrate with GR node client software
GRClient and GRServer Outcome Produced GRClient and GRServer software Documented with JavaDoc and source code comments GRServer test – over 50 hours, up to 30 nodes at a time.
GRSocks Outcome Produced SOCKSv5 compatible proxy server software Server is robust, works with browsers, mail clients, Skype, µTorrent, and many more. No integration with GR node
Challenges GRClient & GRServer Apache MINA Network framework Concurrency Inter-thread communication Communication Keeping team up to date GRSocks RFC1928 Ambiguities in specification Testing BIND and UDP ASSOCIATE Interface Not completed
Demonstration Enjoy this nice picture while I load the video…