What is Rollback?
The idea behind Rollback is to create a powerful set of software to enable social backup
in a safe and secure manner. What is social backup? It is a way to backup all your data to your friends computer(s) who are part of your social circle. Your social
circle can be defined as your set of friends on Facebook or other social networking sites. The framework for Rollback is very generic and is not limited to backup. One could for instance use the framework to implement the following:
- Let your digital photo frame display images/video from your friends machine in real time.
- View your photos/documents on your phone streamed right from your home machine.
The following features have been implemented and tested.
- Local Backup
- Create backups locally.
- Schedule backups
- Automatic email notification when backup finishes.
- View complete history
- Filters - Filters to include/exclude certain kinds of files and folders.
- Incremental Backup.
- Reliable Session required for remote backup.
- Reliable data transmission over UDP implemented. Needs to be optimized (See Issue Tracker for more details).
How does it work.
Rollback is designed as a distributed system without the need for dedicated central servers for data transfer. The only role of a central server is for DNS lookup of Rollback nodes. The DNS servers can be setup by anyone as long as they are reachable over the
internet. Data is transferred between machines directly over UDP (Yes UDP), without the need for a central server even over firewalls.
A user at home typically has his/her computer behind a firewall (provided by the home routers). This is a great feature because it prevents random machines from the internet connecting to your machine and spreading viruses. This feature poses a problem for
distributed backup because nodes behind firewall's cannot talk to each other unless routers are configured to open specific ports, which requires significant technical know how.
The firewall problem can be overcome with a clever use of UDP. UDP is connectionless protocol hence it does not care where its packets come from. This does not mean the firewall automatically lets in anonymous packets. The firewall still needs to see a UDP
packet going outside before it will let any packets in. The steps are as follows.
- Rollback node talks to the Rollback DNS server(which is open to the public) over UDP and registers itself every few minutes. This does two things. First accomplishes two things.
- Rollback DNS server saves the incoming IP and port number in its DNS entries along with other information. This is called the
"RollbackRoute" which is the combination of <External IP: External port> as seen by the Rollback DNS server
- Firewall(s) protecting the Node have opened a path to the outside world. This allows UDP packets from other sources to be sent if the packets come through the "RollbackRoute".