Chapter 2. Req. and Spec. 4
In addition to the absence of memory leaks, the program should be designed such that
it should not wait at any one section of code. This is especially important for the server
side of the application, where it is possible that multiple requests are being made. If
the server stops accepting requests in order to wait for a packet (one that may never
arrive), no other clients may make necessary requests. This situation is detrimental to
handling mission-critical data, and so considerations should be made to ensure that the
program does not halt for any reason. Similarly, the code should be modular. Because
it is possible that any code may be re-used in another application, abstracted code
allows for portability of the system while minimizing need to re-write code. Additionally,
modularity allows for easier bug fixes – any issues may be isolated and fixed with minimal
impact on the rest of the system.
At its core, a file transfer protocol should provide enough functionality to transfer a
file onto a server as well as retrieve a file from a server. Especially with space com-
munication, the transfer should complete quickly enough so enough transactions may
be completed in an alloted time. The amateur radio links used in communication with
CubeSats impose constraints on data rate as well as how quickly a packet may be de-
termined to time out. The latter concern leads to problems in current file transfer
protocols, which contain assumptions on the rount-trip time (RTT) of packets that are
too low for space communication. Because of this, ARSFTP should allow for these much
longer RTT without wrongfully assuming dropped packets, since doing so would waste
available transfer time and lower overall link utilization through needless retransmission.
Similarly, ARSFTP should complete transfers in noticably less time than FTP after the
introduction of packet loss. This time varies by the length of file, chosen size of indi-
vidual packets, and data rate of line, but the time difference should increase as file size
increases.
Since it is likely over the course of a mission to require more from a FTP server than a
simple transfer of files, more capabilities need to be introduced. For instance, it is useful
to find a current listing of the contents of specific directories in order to locate specific
files. To accomodate to this want, directory listing functionality should be implemented.
This should be done efficiently so that the directory listing does not consume all of the
available bandwidth. Additionaly, if an unwanted file were to be accidentally placed
on a server, or a file existed that was too large and needed to be removed, it would be
useful to remotely issue one command to remove the file and, as such, file removal should
be implemented. Lastly, it is important to group files into categories and download a